From ee150f2bf39ad1c4c05776891d3d1ad1ac8bd9a2 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Sun, 18 Feb 2018 04:43:25 +0300 Subject: peculiar: make it a proper post --- _drafts/peculiar_indentation.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to '_drafts') diff --git a/_drafts/peculiar_indentation.md b/_drafts/peculiar_indentation.md index e8378e1..9c6930d 100644 --- a/_drafts/peculiar_indentation.md +++ b/_drafts/peculiar_indentation.md @@ -8,7 +8,7 @@ category: Haskell custom_css: - syntax.css --- -A Haskell indentation pitfall I've fallen into. +I've fallen into a Haskell indentation pitfall. I think it must be common, so I'm describing it here. The problem is that indentation rules in `do` blocks are not intuitive to me. @@ -74,8 +74,7 @@ foo4 = do The truth is, the rules for desugaring `do` blocks are surprisingly simple and literal. -First, GHC inserts semicolons according to the rules described here: -https://en.wikibooks.org/wiki/Haskell/Indentation#Explicit_characters_in_place_of_indentation. +GHC inserts semicolons according to the rules [found in the Wikibook]. So it inserts semicolons between the `alloca`s on the same level, so `foo4` becomes: @@ -93,6 +92,8 @@ foo4 = do } ``` +[found in the Wikibook]: https://en.wikibooks.org/wiki/Haskell/Indentation#Explicit_characters_in_place_of_indentation + The semicolons after `->` are clearly invalid Haskell syntax, hence the error. P.S. To compile the functions above, you need to include them in a module and -- cgit v1.2.3