A модуль Haskell (т.е. источник файла), обычно содержит декларации формы some_var = expression
. Эта строка будет оценивать выражение (lazilly) и назначать его («привязать» его) к переменной some_var
. Если вы просто поместите выражение само по себе («обнаженное выражение»), компилятор не знает, что с ним делать. Поэтому вам нужно привязать его к некоторой переменной или сделать что-то еще с ней. Так, например, следующее complile:
sumSqaures = [let square x = x * x in (square 5, square 3, square 2)]
Теперь, это не очень полезный модуль, и в самом деле, если вы пытаетесь скомпилировать его как исполняемый (а не библиотеки), она не будет выполнена. Это связано с тем, что исполняемые файлы должны определять переменную, называемую main
. Так что если вы хотите полную программу, которая будет компилировать, вы можете попробовать это
main = print sumSqaures
sumSqaures = [let square x = x * x in (square 5, square 3, square 2)]
или даже просто линии
main = print [let square x = x * x in (square 5, square 3, square 2)]