Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 22.10.2021
Сообщений: 37

Реализация функции init

23.11.2021, 16:01. Показов 2225. Ответов 8

Студворк — интернет-сервис помощи студентам
Вот что-то попробовала сделать

Haskell
1
2
3
4
5
6
help :: [a] -> [[a]] -> Int -> [[a]]
help xs ks1 ks2  | ks2 < length xs = help xs (take ks2 xs : ks1) (ks2+1)
                 | otherwise =xs:init ks1
 
inits :: [a] -> [[a]]
inits xs = reverse $ help xs [[]] 0
мне нужно получить например из [1,2,3]
вот это [[],[1],[1,2],[1,2,3]]

но моя программа выдаёт это из любого списка: [[],[1]]

не могу найти ошибку

вот функция reverse, которую я использую:

Haskell
1
2
3
reverse :: [[a]] -> [[a]]
reverse [] = []
reverse (x:xs) = reverse xs ++ [x]
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.11.2021, 16:01
Ответы с готовыми решениями:

Ошибка при загрузке Ubuntu 14.04 LTS: run-init: /sbin/init: Permission denied
Здравствуйте! На компьютере установлена Uuntu 14.04 LTS (64 bit). После установки cups (для соединения с принтером) система перестала...

Реализация функции печати результатов предыдущей функции
Была написана программа с функцией, находящая результат выражения с аргументом, значения которого заданы параметром со значениями и шагом....

hibernate init()
Здравствуйте. Имеются 2 таблицы с связью OneToOne @Entity @Table(name = &quot;a&quot;) public class A{ @Id ...

8
Модератор
 Аватар для Curry
5158 / 3482 / 536
Регистрация: 01.06.2013
Сообщений: 7,549
Записей в блоге: 9
23.11.2021, 16:43
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Haskell
1
2
3
4
5
6
7
inits :: [a] -> [[a]]
inits xs = go 0 []
    where ln = length xs
          go i ys | i == ln = t
                  | otherwise = go (i+1) t
            where s = take i xs
                  t = ys ++ [s]
2
1 / 1 / 0
Регистрация: 22.10.2021
Сообщений: 37
23.11.2021, 16:46  [ТС]
Выдаёт вот это

inits [1,2,2]
*** Exception: overstepping
CallStack (from HasCallStack):
error, called at D:\Haskell\month2.hs:32:35 in main:Main
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
23.11.2021, 18:17
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Еще вариант:

Haskell
1
2
3
4
5
6
7
inits xs = [[]] ++ (h xs)
          where h xs = if xs==[] then [] else (h (init' xs))  ++ [xs]
 
init' [x]  = []
init' (x:xs) = x: (init' xs)
 
main = print $ inits [1,2,3]
2
1 / 1 / 0
Регистрация: 22.10.2021
Сообщений: 37
23.11.2021, 18:47  [ТС]
inits [1,2,3,4,5,6]

<interactive>:9:1: error:
* Variable not in scope: inits :: [a0] -> t
* Perhaps you meant `init' (imported from Prelude)

Добавлено через 22 минуты
inits [1,2,2,3,4,5,6]
теперь пишет так

Code
1
2
3
4
5
6
7
<interactive>:24:1: error:
    Ambiguous occurrence `inits'
    It could refer to
       either `Data.List.inits',
              imported from `Data.List' at D:\Haskell\min.hs:1:1-16
              (and originally defined in `base-4.15.0.0:Data.OldList')
           or `Main.inits', defined at D:\Haskell\min.hs:5:1
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,709
Записей в блоге: 14
23.11.2021, 19:02
ViktoriaPuchate, см. картинку. ссылка на проект
Миниатюры
Реализация функции init  
0
1 / 1 / 0
Регистрация: 22.10.2021
Сообщений: 37
23.11.2021, 19:14  [ТС]
может я неправильно реализую функцию (++)?

Haskell
1
2
3
4
5
6
7
(++) :: [a] -> [a] -> [a]
(++) [] s = s
(++) s [] = s
(++) (x:xs) (y:ys)  | null xs = x: y:ys
                    | null ys = x:xs
                    | null xs && null ys =[] 
                    | otherwise = x: (++) xs (y:ys)
0
Модератор
 Аватар для Curry
5158 / 3482 / 536
Регистрация: 01.06.2013
Сообщений: 7,549
Записей в блоге: 9
23.11.2021, 19:16
Цитата Сообщение от ViktoriaPuchate Посмотреть сообщение
Выдаёт вот это
Опять вы умудрились как то неправильно скопипастить. Талант!
Разумеется, я проверяю программы, которые выкладываю, и всё работает.
Цитата Сообщение от ViktoriaPuchate Посмотреть сообщение
теперь пишет так
зачем вы import Data.List добавили?
0
59 / 45 / 15
Регистрация: 03.12.2015
Сообщений: 196
23.11.2021, 21:38
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Или еще можно так
Haskell
1
2
inits :: [a] -> [[a]]
inits = map reverse.scanl (flip (:)) []
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2021, 21:38
Помогаю со студенческими работами здесь

Init = function
Всем привет я новичок и изучаю javascript. Помогите понять что значит инициализация - Init и точка перед этим словом, не удается прочитать...

No init for const!
Доброе утро, котаны!:) Вопрос - в джаве есть возможность сделать такую штуку final boolean someBool; someBool = true; То есть...

Функция init
В Prelude нашел два способа задания функции init: init = init (x:xs) = x : init xs init = errorEmptyList &quot;init&quot; ...

Реализовать init
всем прет, требуется по заданию реализовать функцию init которая возвращает список, состоящий из всех элементов заданного списка, кроме...

alloc init
В начале изучения obj-c возник такой вопрос в чем будет различие между такой записью: NSDate *now = ; и такой записью: NSDate *now...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru