Re:Haskell in Production
by nightski on Friday October 18, 2019 @02:42PM
(#21293990)
Not really. You can mix them in Haskell too. Think of F# as Haskell except you are always working in the IO monad. Haskell doesn't require a "new way of writing IO code" at all. It just allows you to separate out the IO from the pure in a way that can be enforced by the compiler. But there is nothing preventing you from writing all Haskell code in the IO monad if you were so inclined - which is essentially OCaml/F#.
[ Parent
| on HN ]
> Not really. You can mix them in Haskell too.
True, but it's not particularly syntactically convenient.
The entire point of monadic (do) syntax in Haskell is to make this convenient. I'm not following you exactly.
runeks mentioned
print “Enter name:”
print (“Hello “ ++ readStdinLine ++ “!”)
which can't be written like that with do notation. It's also pretty confusing code to write in any language, so maybe that's not a problem.True, do notation does require you to add a line -
main = do
print "Enter name:"
name <- getLine
print ("Hello " ++ name ++ "!")
But I only said that it makes this convenient not that it allowed you to write any statement you want. It still makes it easy to intersperse pure and non-pure code.