Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

C is "pure" too.

The statement

   puts ("hello");
is a "pure" value of type int.


No, that statement evaluates to a pure value of type int. In the process, it does something else as well that effects the visible behavior of the program.

The C equivalent of

    putStrLn "hello"
is probably actually

    void putsHello(void) {
        puts("hello");
    }
Unfortunately, function definitions aren't something you can really manipulate at runtime in C.


Here is a comment I wrote about the same issue some time ago:

https://news.ycombinator.com/item?id=9085403

Haskell IO is severely misunderstood.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: