Я никогда не использовал эти два ключевых слова во всем, что я запрограммировал, потому что я действительно не понимаю их или когда они должны использоваться, если они могут быть использованы вместе и т.д.Может кто-нибудь объяснить мне или связать меня с хорошим руководством, которое объясняет, пусть и где в Haskell
ответ
Иногда у вас есть код, как:
foo x y = if min (abs x) (abs y) > 0 then negate (min (abs x) (abs y)) else min (abs x) (abs y)
С let
или where
, вы можете ввести сокращения для общих выражений, что делает ваш код более читаемым:
foo x y = if z > 0 then negate z else z
where
z = min (abs x) (abs y)
что эквивалентно:
foo x y = let
z = min (abs x) (abs y)
in if z > 0 then negate z else z
A LET-выражения только что: выражение и может появляться в любом месте выражение может появиться, в то время как пункт where
является необязательной заключительной частью корпуса альтернативного или шаблона связывания ,
Есть тонкие отличия. Ссылка [This] (http://www.haskell.org/haskellwiki/Let_vs._Where) хорошо объясняет это как последний пример, когда небольшое изменение в определении функции может привести к большой разнице в производительности. – bheklilr
Я рекомендую отчет Haskell 2010. – Ingo
@James http://stackoverflow.com/questions/4362328/haskell-where-vs-let –