[Haskell-cafe] pure programs

Conal Elliott conal at conal.net
Wed Nov 5 20:01:42 EST 2008

Hi Jason,

To help me understand your question, would you be unhappy with the following

    -- runnable
    main = interact f
    -- composable
    f = ...

The discipline is to use interact (or another combinator) to wrap a
functional/composable/pure component like f into an executable.  Then give
main to users and f to programmers.  This same game can be made more
sophisticated, eg

    main = interact (show . f . read)

Or unparse & parse in place of show & read.

For more on combining usability and composability, see



    - Conal

On Tue, Nov 4, 2008 at 4:12 PM, Jason Dusek <jason.dusek at gmail.com> wrote:

>  Informally, a "pure program" an executable such that the
>  stream of bytes entering it totally determines the stream of
>  bytes leaving it.
>  Many useful programs that I would like to write in Haskell
>  don't fall into this category -- for example, network servers
>  -- but a lot of their components do. Can these components can
>  be Haskell functions without IO in their signatures?
>  Though that seems reasonable, it is not, in general, true. For
>  example,    System.Info.os    is generally treated as pure,
>  though it is not. It's not clear to me how to disambiguate
>  these "born again" values from really pure values.
> --
> _jsn
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20081105/5aec6dd3/attachment.htm

More information about the Haskell-Cafe mailing list