Hello Simon,

If you changed your perspective, you would realize that all functions in haskell are pure.
A function is pure if it returns the same output if given the same input. Every monadic function (including functions returning IO) is also pure.
For example,

    putStrLn :: String -> IO ()
    -- A function that takes a string, and returns an impure computation
    -- which, when executed will print the given String.

For any string, putStrLn applied to that same string always describes the same impure computation, thus the function is actually pure.
I am not familiar with any other functional language, but there are not many purely functional ones out there [1].
I guess the impure ones get around this issue by giving in to impurity, but I'm not sure.

I'll be interested in hearing more about the other languages too.

[1] : http://en.wikipedia.org/wiki/List_of_programming_languages_by_type#Pure

On 15 March 2015 at 22:25, Marcin Mrotek <marcin.jan.mrotek@gmail.com> wrote:
Hello,

F* uses a somewhat similar approach: https://fstar-lang.org/tutorial/
(section 2, Types and Effects)

Best regards,
Marcin Mrotek
_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners



--
Regards

Sumit Sahrawat