[Haskell-beginners] [Haskell-cafe] select :: [(Float, a)] -> a -- Weighted stochastic selection - help?

Brandon S. Allbery KF8NH allbery at ece.cmu.edu
Sat Sep 6 11:20:10 EDT 2008


On 2008 Sep 6, at 6:04, C.M.Brown wrote:
> On Sat, 6 Sep 2008, Nicolas Pouillard wrote:
>> Excerpts from C.M.Brown's message of Fri Sep 05 22:12:05 +0200 2008:
>>>> Can you give an example? I don't see how that can be done using
>>>> Control.Monad.State(.Strict).State, unless invocations of put or  
>>>> modify are
>>>> considered side effects.
>>>
>>> Actually, yes, sorry; I do see your point. I guess it's just IO  
>>> then.
>>
>> Technically, even the IO monad is pure, that's just the runtime- 
>> system
>> that consume your 'main' function that perform effects (and  
>> unsafeP...).
>
> But, sure the IO monad does have side-effects? I'm confused as to  
> how it
> could be pure. Could you explain?

Technically (in GHC at least) the IO monad builds a pure chain of  
function applications and returns it from main, which then implicitly  
passes it to an otherwise inacccessible runIO.  Laziness makes this  
indistinguishable in practice from making effectful calls.

-- 
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university    KF8NH




More information about the Beginners mailing list