Несколько основных вопросов по конвертации кода SML в Haskell.
1) Я привык иметь локальные встроенные выражения в коде SML, например, тестовые выражения, распечатки и т. Д., Которые выполняют локальные тесты и выводят, когда код загружается (оценивается).
В Haskell кажется, что единственный способ получить результаты (оценку) - это добавить код в модуль, а затем перейти к main в другом модуле и добавить что-нибудь для вызова и печати результатов.
Это правильно? в GHCi я могу набирать выражения и видеть результаты, но можно ли это автоматизировать?
Мне неудобно переходить на главный уровень для каждой оценки теста - может быть, просто нужно сменить мою парадигму на лень.
2) в SML я могу выполнить сопоставление с образцом и унификацию возвращаемого результата, например,
val myTag(x) = somefunct(a,b,c);
и получите значение x после совпадения.
Можно ли сделать что-то подобное в Haskell легко, без написания отдельных функций извлечения?
3) Как создать конструктор с аргументом кортежа, т. Е. Безуспешно.
в SML:
Тип данных Thing = Информация о Int * Int;
но в Хаскеле я пытался;
Data Thing = Info (Int Int)
, что не получается. («Int применяется к слишком многим аргументам в типе: несколько Int»)
Карри версия отлично работает,
data Thing = Info Int Int
но я хотел без карри.
Спасибо.