В файле Haskell, объявление типа предоставляется отдельно от определений, как правило, на линии перед:
c :: Int -- Type declaration
c = 4 -- Definition
Это справедливо для локальных определений, а также как глобальные; вам просто нужно убедиться, что отступы выровнены. Так что в этом случае мы имеем
let c :: Int
c = 4
in c + c
В Haskell, новые строки и отступы могут быть заменены скобки и двоеточия, а иногда и фигурные скобки могут быть опущены. В GHCi, где для ввода нескольких строк требуется some extra machinery, вам обычно нужен вариант с разделителями с запятой; а именно, что будет
let c :: Int ; c = 4
(Отсутствие in
потому, что GHCi ведет себя немного как do
блока;. this Stack Overflow question имеет больше информации)
Однако, это выглядит с вашей подсказки, как вы есть :set +m
включен, так что вы можете использовать опцию многострочный тоже:
Prelude> let c :: Int
Prelude| c = 4
Prelude|
Prelude>
(Кроме того, если вы хотите добавить аннотацию типа позже, let c = 4 ; c :: Int
работает отлично, это просто не лучший стиль для файла, который вы 'р е работает над)
Кроме того, важное замечание:. Вы не используете «Прелюдия», вы используете GHCi, интерактивная среда Haskell GHC,. Prelude
- это модуль, который по умолчанию импортируется во все программы Haskell (он содержит определения Bool
, Eq
, (.)
и т. Д.). В приглашении GHCi по умолчанию содержится список всех импортированных модулей, поэтому по умолчанию это Prelude>
; однако, если вы наберете import Data.Function
, подсказка изменится на Prelude Data.Function>
.
Подписи типов могут появляться в отдельной строке (в объявлениях let, where или верхнего уровня) или в выражениях. Типовые подписи не для левой стороны привязки. –
Возможный дубликат [Многострочные команды в GHCi] (http://stackoverflow.com/questions/8443035/multi-line-commands-in-ghci) –
«Как исправить?» - ошибка говорит, как - «Возможно, вы намеревались использовать ScopedTypeVariables». Включить ScopedTypeVariables в ghci с помощью:: set -XScopedTypeVariables'. То есть, если вы хотите использовать этот конкретный синтаксис. – user2407038