caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Florian Weimer <fw@deneb.enyo.de>
To: Elias Gabriel Amaral da Silva <tolkiendili@gmail.com>
Cc: Dario Teixeira <darioteixeira@yahoo.com>, caml-list@inria.fr
Subject: Re: [Caml-list] Purity and lazyness
Date: Sat, 08 Jan 2011 23:47:24 +0100	[thread overview]
Message-ID: <87ipxzhv2b.fsf@mid.deneb.enyo.de> (raw)
In-Reply-To: <AANLkTinEcZcudWMjWH6C9+PR9m1mahD8+ynqfmPNw+GV@mail.gmail.com> (Elias Gabriel Amaral da Silva's message of "Fri, 7 Jan 2011 21:26:56 -0300")

* Elias Gabriel Amaral da Silva:

>> As specified, Haskell is not a pure language because every pattern
>> match can have side effects.  The Haskell community is split between
>> those who think that this is a good thing, and those that consider it
>> problematic.  (Obviously, there is a large pure subset, much more
>> useful than Erlang's pure subset and covering almost the whole
>> language; you just avoid lazy I/O and use unsafePerformIO only for
>> correcting the type of functions imported through FFI.)
>
> Wait, a pattern match can have side effects? Can you provide some
> example code? (do you mean, pattern match failure / exceptions / run
> time errors?)

<http://article.gmane.org/gmane.comp.lang.haskell.prime/3083>

It uses seq instead of pattern matches for clarity.  But laziness
means that you could hide the side effect in any pattern match
whatsoever.

> I'm new to Haskell, but in my understanding, it is said that Haskell
> is pure because the whole Haskell code is just specification of
> (types, .. and) values, and this specification is enjoy referential
> transparency.

A small part of the standard library pretends that some externally
visible effects are not impure.  Other programmers follow that style.
In their code bases, you will occasionally see commits which add
additional laziness to avoid blocking on network input (when the
client will never send data because the protocol is half-duplex) or to
avoid reading too much data from disk.


  parent reply	other threads:[~2011-01-08 22:47 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-07 15:35 Dario Teixeira
2011-01-07 16:07 ` Damien Doligez
2011-01-07 16:38   ` David Rajchenbach-Teller
2011-01-07 18:16     ` Holger Weiß
2011-01-07 20:22     ` Eray Ozkural
2011-01-07 20:29       ` orbitz
2011-01-07 20:30         ` Joel Reymont
2011-01-07 20:33         ` Eray Ozkural
2011-01-08  9:44     ` Jesper Louis Andersen
2011-01-07 17:21 ` Alain Frisch
2011-01-07 17:46   ` Christophe Raffalli
2011-01-07 18:11 ` Holger Weiß
2011-01-07 18:52   ` Brian Hurt
2011-01-07 19:32     ` Petter Urkedal
2011-01-07 20:25     ` Eray Ozkural
2011-01-09 16:11     ` Jon Harrop
2011-01-10  6:27       ` Eray Ozkural
2011-01-07 19:17 ` Florian Weimer
     [not found]   ` <AANLkTikxCSQ+0XkOmSVDb3EWq_2oQ0pac3bDgc7f7jq+@mail.gmail.com>
2011-01-07 20:52     ` bluestorm
2011-01-09 16:15       ` Jon Harrop
2011-01-08  0:26   ` Elias Gabriel Amaral da Silva
2011-01-08  9:28     ` Christophe Raffalli
2011-01-08 22:47     ` Florian Weimer [this message]
2011-01-09 10:00       ` Petter Urkedal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ipxzhv2b.fsf@mid.deneb.enyo.de \
    --to=fw@deneb.enyo.de \
    --cc=caml-list@inria.fr \
    --cc=darioteixeira@yahoo.com \
    --cc=tolkiendili@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).