[Haskell-cafe] Total Functional Programming in Haskell
derek.a.elkins at gmail.com
Tue Sep 30 17:54:17 EDT 2008
On Mon, 2008-09-29 at 20:02 -0700, Jason Dagit wrote:
> I recently had someone point me to this thread on LtU:
> The main paper in the article is this one:
> It leaves me with several questions:
> 1) Are there are existing Haskell-ish implementations of the total
> functional paradigm?
> 2) Could we restructure Haskell so that it comes in 3 layers, total
> functional core, lazy pure partial functional middle, and IO outer
> The idea with #2 is that similar to how we use the type system to
> separate the purely functional from monadic, and in particular IO
> actions, can we make the inner most part of Haskell total?
> Furthermore, could we do this in a way that makes it easy to
> intermingle the three layers the way we can mingle pure Haskell with
> IO actions?
> Maybe instead of using (->) as the function constructor for total
> functions we use a different symbol, say (|->), and the compiler knows
> to use the more specialized semantics on those definitions. I'm not
> sure how make this work for values that are total functional versus
> values that are just pure (partial) functional.
This can be done exactly the same way it is done with IO. Remove
general recursion* from Haskell and have a partiality monad with
fix :: (a -> a) -> Partial a
This particular idea has been discussed several times in a couple of
places. Most people seem to think it would be too much of a hassle to
* and other stuff, but that's the significant one, it's easy enough to
add a primitive error :: String -> Partial a
More information about the Haskell-Cafe