[Haskell-cafe] pure programs

Jason Dusek jason.dusek at gmail.com
Thu Nov 6 16:45:36 EST 2008


Conal Elliott <conal at conal.net> wrote:
> To help me understand your question, would you be unhappy with
> the following structure?
>
>     -- 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.

  I'd like to be able to compose with systems not written in
  Haskell, though -- in short, I think of    interact f    as
  the composable, exportable part.

  My original email is motivated by concern about at what level
  a program is "pure" in the presence of conditional compilation
  (and dynamic linking, for that matter). I can not, for
  example, say all pure functions in my code, when used with the
  same Haskell library set, will return the same results on all
  platforms. So source code level purity is out. If we move to
  executable level purity, that seems plausible -- on a given
  platform, a given executable, if it executes all, will execute
  identically if it is statically linked with the C libs as well
  as the Haskell. This is not actually possible on Macs but
  whatever.

  The one corner case I had in mind was FreeBSD's Linux ABI
  compatibility, but I suspect that doesn't matter at all (not
  having any FreeBSD handy at the moment, I can not verify it).

--
_jsn


More information about the Haskell-Cafe mailing list