3 ms·
I personally like how Haskell can combine the two. You can have: myFunc = do this that other Or equivalently: myFunc = do { this; that; othe
by nathanic 17y ago
I personally like how Haskell can combine the two. You can have:
myFunc = do
this
that
other
Or equivalently:
myFunc = do { this; that; other; }
- natrius 17y agoHow does the first form work out as an inline function argument? I'm not familiar with Haskell's syntax.
- nathanic 17y agoI think I misunderstood you before. I thought you were talking about putting multiple statements on a line. But Haskell can pass around code blocks as well, with or without significant whitespace. For example, I can define a function called 'forever' to run a sequence of actions forever like so: forever x = x >> forever x Where 'x' is any sequence of actions. You can pronounce '>>' as "followed by". (These are monadic actions, actually, but nevermind that.) I can invoke it like so: myFunc = forever (do {this; that; other}) or: myFunc = forever $ do this that other The dollar sign is a function that lets you dispense with some parentheses. Think of it like an opening paren that closes at the end of the subexpression it's in. If the block is a function rather than a sequence of actions, Haskell uses '\' as a lambda for introducing anonymous functions. For example, the function 'map' takes a unary function and calls it with each value from a list. Below I'll call it with an anonymous function which returns double its argument: map (\x -> x * 2) [1,2,3] This results in a new list [2,4,6].
- shrughes 17y agoAnother good example: forM_ [1..9] $ \i -> do this i that other