Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
82 / 75 / 10
Регистрация: 12.08.2019
Сообщений: 81

Idris 1.3.3 Unexpected 'i'

19.09.2024, 14:42. Показов 1932. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил поставить Idris и начать пробовать писать простые вещи, но уже тут столкнулся с проблемой. Компилятор жалуется на простейшие воплощения инстансов классов, причём не на их содержание, а на кодовое слово "implementation".

Код
Кликните здесь для просмотра всего текста
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
module Grid
import Matrix
 
data Input = X | O
 
size : Nat
size = 3
 
implementation Show Input
    show X = "X"
    show O = "O"
 
implementation Eq Input
    X == X = True
    O == O = True
    _ == _ = False
 
grid : Type
grid = matrix size size (Maybe Input)
 
rows :: List (Vector size (Maybe Input))
rows = ?hole


Компилятор выдаёт следующее:
Кликните здесь для просмотра всего текста
Haskell
1
2
3
4
5
6
7
Type checking .\Grid.idr
Grid.idr:9:1:
  |
9 | implementation Show Input
  | ^
unexpected 'i'
expecting "->", "<==", ';', end of input, or where block


По всем законам здравого смысла, того же Haskell, у меня всё написано правильно, я такое на Хаскелле 1000 раз делал. В чём может быть ошибка?
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.09.2024, 14:42
Ответы с готовыми решениями:

Функция на Idris 2
Функция rotate из видоса: https://youtu.be/I-c32SMGKrw?t=3955 решил добавить ограничение в тип Vect rotate1 : Vect (2 + n) Int...

Пример типа с предикатом на Idris
Как создать тип с предикатом на Idris 2? а то непонятно где про это почитать. Моя версия не работает: data Pred1 : Type -&gt;...

Unexpected EOF while looking for matching `"' / syntax error: unexpected end of file
Пожалуйста помогите справиться с ошибкой или как настроить бесконечный цикл ? P.S. без оператора if (проверка пуста ли папка) скрипт...

6
Модератор
 Аватар для Curry
5158 / 3487 / 536
Регистрация: 01.06.2013
Сообщений: 7,564
Записей в блоге: 9
19.09.2024, 15:08
Я идрис особо не смотрел, но, там кажется, как и в haskell,
Haskell
1
instance Show Input where
К тому же, у вас в 21 строке двойное двоеточие, а это уже не haskell.
1
82 / 75 / 10
Регистрация: 12.08.2019
Сообщений: 81
19.09.2024, 15:23  [ТС]
Слово
Haskell
1
instance
Можно использовать на Идрисе, но компилятор советует этого не делать, т.к. оно существует в Идрисе, чтобы облегчить жизнь хаскеллистам. У меня есть модуль Matrix, где все инстансы записаны через слово
Haskell
1
implementation
(правда мне пришлось скрыть инстанс моноида, т.к. компилятор на него жалуется той же ошибкой, что и в шапке темы).

Исправив двойное двоеточие на одинарное в 21 строчке и заменив implementation на instance, особо ничего не поменялось, т.к. она идёт после проблемной 9 строчки.

Кликните здесь для просмотра всего текста
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
module Grid
import Matrix
 
data Input = X | O
 
size : Nat
size = 3
 
instance Show Input
    show X = "X"
    show O = "O"
 
implementation Eq Input
    X == X = True
    O == O = True
    _ == _ = False
 
grid : Type
grid = matrix size size (Maybe Input)
 
rows : List (Vector size (Maybe Input))
rows = ?hole


Кликните здесь для просмотра всего текста
Haskell
1
2
3
4
5
6
7
Type checking .\Grid.idr
Grid.idr:9:1:
  |
9 | instance Show Input
  | ^
unexpected 'i'
expecting "->", "<==", ';', end of input, or where block
1
Модератор
 Аватар для Curry
5158 / 3487 / 536
Регистрация: 01.06.2013
Сообщений: 7,564
Записей в блоге: 9
19.09.2024, 16:11
Так работает
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
data Input = X | O
 
size : Nat
size = 3
 
implementation Show Input where
    show X = "X"
    show O = "O"
 
implementation Eq Input where
    X == X = True
    O == O = True
    _ == _ = False
 
main : IO ()
main = print X
1
240 / 189 / 32
Регистрация: 02.07.2020
Сообщений: 142
20.09.2024, 02:48
implementation тоже необязательно. просто

Haskell
1
2
3
Show Input where
  show X = "X"
  show O = "O"
А вместо class, если что - interface.
Вообще, языки отличаются значительно: и синтаксисом, и особенно системой типов.
Полагаться только на знание Haskell вряд ли получится.
1
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
28.12.2024, 08:41
Так уже Idris 2 давно вышел, 1 уже устарел.
1
240 / 189 / 32
Регистрация: 02.07.2020
Сообщений: 142
30.12.2024, 22:53
Idris 2 очень крутой язык, прямо на порядок мощнее Idris. Вот только компилятор нестабильный пока до жути.
Чего стоит хотя бы вот это (обновлял экспериментальную версию несколько месяцев назад, так что м.б. уже пофиксили, но так-то и самому багу и баг-репорту соответственному - годы)

Haskell
1
2
3
total
absurdProof: 2 + 2 = 5
absurdProof = case () of False impossible
Первый обоснованно возразит, что с типами ты чего-то напутал, второй проглотит молча.
Это не позволяет лично мне им пользоваться для доказательств, т.к. тупо могу опечататься, и случайно доказать какую-нибудь чушь, а компилятор только кивнет.

Ну и пока даже до инструментария встроенного в компилятор первого, второму очень далеко. В общем когда-нибудь будет все круто, и первый уйдет на заслуженный покой, но пока оба нужны в арсенале.
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.12.2024, 22:53
Помогаю со студенческими работами здесь

Ошибки "Unexpected end of input" и "Unexpected token <"
Очень нужна помощь. Сам уже просто голову сломал. Видимо, я чего-то не понимаю... Задание простое: на php парсится валидный xml-файл...

unexpected $
Помогите пожалуйста &lt;? error_reporting(E_ALL); require 'config.inc.php'; require 'header.inc.php'; if (isset($_POST) &amp;&amp;...

Unexpected 'else'
Пишет Unexpected 'else', не знаю где ошибка for ($i=0; $i &lt; count($t); $i++) { echo &quot;&lt;option value=&quot;.$i.&quot;&gt;&quot;.$t; $kt =...

=1 was unexpected at this time
Привет, есть код: @Echo Off SetLocal EnableExtensions EnableDelayedExpansion set min=1 set max=10 set /a...

unexpected T_EXIT
Привет, подскажите пожалуйста что нужно исправить? Ошибка: Parse error: syntax error, unexpected T_EXIT in...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru