[Haskell-cafe] Wow Monads!
Joachim Durchholz
jo at durchholz.org
Wed Apr 19 13:58:39 UTC 2017
Am 19.04.2017 um 15:13 schrieb Sergiu Ivanov:
>
>> Seemed to be related to Haskells expressivity, with the type system
>> pretty much preventing the typical errors that people make.
>
> I tend to see Haskell's type system as very restrictive and only
> allowing behaviour which composes well.
From a library writer's and library user's perspective, that would
actually be a Good Thing.
> However, there are a couple big "backdoors", like the IO monad.
Well, it's so awkward that people don't *want* to use it.
> Typechecking gives zero guarantees for functions of type IO (), for
> example.
That doesn't match what I hear from elsewhere.
I don't know what is the cause for that difference though.
>> Though I doubt that that will hold up once you get more proficient in
>> Haskell and start tackling really complicated things
>
> To me, it really depends on the kind of complicated things. If you
> manage to explain the thing at the type level, then typechecking may
> give you pretty strong guarantees. I'm thinking of parsing and
> concurrency as positive examples and exception handling as a somewhat
> negative example.
That matches what I heard :-)
>> (Ironically, people instantly started investigating ways to work around
>> that. Still, the sort-of globals you can introduce via the State monad
>> are still better-controlled than the globals in any other language.)
>
> In fact, I believe having pure functions does not so much target
> removing state as it does making the state _explicit_.
Except State tends to make state implicit again, except for the fact
that there *is* state (which might be actually enough, I don't have
enough insight for any judgemental statements on the issue).
> Thus, the State
> monad is not a work-around to purity, it's a way of purely describing
> state.
True.
>>>> And I think you can trace that to the need to interface with the real
>>>> world.
>>>
>>> I have the same gut feeling.
>>
>> I think interfacing with the outside world (still not "real" but just
>> bits inside the operating system and on disk) is one major source of
>> unreliability, but not the only one, and not necessarily the primary one.
>> YMMV.
>
> Yes, that unreliability comes with crossing the frontier between
> theoretical and applied computer sciences (that's an imprecise
> metaphor :-) )
:-D
More information about the Haskell-Cafe
mailing list