2014-12-25 2 views

ответ

7

Они просто разделяют два выражения f x и return x в обозначении. На самом деле все они эквивалентны в вашем случае:

iofunc_ s f = Command s (\x -> do f x ; return x) 

iofunc_ s f = Command s (\x -> do {f x ; return x}) 

iofunc_ s f = Command s (\x -> do f x 
            return x) 

iofunc_ s f = Command s (\x -> f x >> return x) 
+1

Когда вы можете опустить фигурные скобки? Я всегда думал, что они являются обязательными, если вы сделали точку с запятой явной. – kqr

+0

@kqr Не прочитал [Haskell report] (https://www.haskell.org/onlinereport/haskell2010/haskellch2.html#x7-210002.7) полностью, но вы можете видеть, что это продемонстрировано в примере с 'let'. – Sibi

+0

@ Сиби спасибо. – Stanko

1

Запятой где-нибудь эквивалентна изменению линии с отступом на тот же уровень, что и предыдущее допустимое выражение.

Я видел это, просмотрев как работает отступ (https://en.wikibooks.org/wiki/Haskell/Indentation).

Смежные вопросы