looking @ definition of getline in haskell prelude, how recursion works, keep asking character until hit newline , buildup list return wrapped in io.
however question how return statements work in case, how return (c:....:return "") work when hit base case. how cons return "" on list?
return isn't control structure in languages. it's constructor monadic values. let's take @ type:
return :: monad m => -> m in case, given string value, produces io string value.
the fact return last expression evaluated in each branch of if doesn't mean return ends execution; other expressions could occur after return. consider simple example list monad:
foo :: int -> int -> [int] foo x y = return x ++ return y in list monad, return creates new single-item list containing argument. 2 lists concatenated final result list returned function.
$ return 3 :: [int] [3] $ foo 3 4 [3,4]
Comments
Post a Comment