[Haskell-cafe] Are there standard idioms for lazy,
pure error handling?
ketil at malde.org
Thu Dec 3 09:35:51 EST 2009
Malcolm Wallace <malcolm.wallace at cs.york.ac.uk> writes:
> Errm, you mean: 4 `Then` 5 `Then` 1 `Then` Finally "success!"
Yes, sorry, and thanks. I guess I should learn to check with ghci
before posting... How about this for a nicer syntax?
infixr 8 :+
infixr 8 +:
data TList a e = a :+ (TList a e)
| Return e deriving Show
x +: y = x :+ (Return y)
*Main> 2 :+ 4 +: "success"
2 :+ (4 :+ Return "success")
I like the generic terminal value, it allows things like:
*Main> let count = go 0 where go i (x:xs) = x :+ go (i+1) xs; go i  = Return i
*Main> :t count
count :: [t] -> TList t Integer
*Main> count [1..5]
1 :+ (2 :+ (3 :+ (4 :+ (5 :+ Return 5))))
(But perhaps these things can be done more elegantly using State or
If I haven't seen further, it is by standing in the footprints of giants
More information about the Haskell-Cafe