ertes 2017-02-27 11:45:19
the thing that confuses me is that even today most *new* languages lack useful type systems… i'm not asking for haskell, but if rust is so great, why can't i abstract over types of kind * -> *? it seriously limits your abstraction capabilities
monochrom 2017-02-27 11:46:05
A language is limited by the lack of imagination of its designer.
merijn 2017-02-27 11:46:12
ertes: AFAIK there's plans (both for Rust and Swift) to add HKT
ertes 2017-02-27 11:46:33
go's type system is a joke, rust's developers seem to pays so much attention on memory safety while completely ignoring abstraction
ertes 2017-02-27 11:46:46
*pay
wizard1337 2017-02-27 11:49:41
so like when i use my bank to pay for stuff
wizard1337 2017-02-27 11:49:59
what languages are being used
monochrom 2017-02-27 11:50:10
* -> * was a really new and recent invention. Recall that even the MLs don't have it.
ertes 2017-02-27 11:50:19
wizard1337: javascript =)
wizard1337 2017-02-27 11:50:23
lol
monochrom 2017-02-27 11:50:30
I guess s/new and/
Koterpillar 2017-02-27 11:50:38
wizard1337: my bank has some fields validated _client-side only_
Rembane 2017-02-27 11:51:04
monochrom: What is * -> *? Can you give an example of * -> * ?
merijn 2017-02-27 11:51:13
wizard1337: Binaries compiled from COBOL where they lost both the original source AND the compiler
monochrom 2017-02-27 11:51:20
I think the general public are still recovering from the shock of kind * parameteric polymorphism (known as Java generics).
monochrom 2017-02-27 11:51:41
Rembane: the kind of the type variable m in "m Int".
ertes 2017-02-27 11:51:41
Rembane: Maybe :: * -> *
merijn 2017-02-27 11:51:47
wizard1337: If you think I'm joking, one of my colleagues was once paid to decompile/reverse engineer OS360 assembly to COBOL for exactly that reason
Rembane 2017-02-27 11:52:00
monochrom, ertes: Nice! Thank you!
ksj 2017-02-27 11:52:14
wait why'd you reverse engineer it to COBOL if you only have the assembly anyway?
ertes 2017-02-27 11:52:18
Rembane: a type of kind * is a concrete type like Int, a type of kind * -> * takes a concrete type as its argument
ertes 2017-02-27 11:52:31
Maybe Int -- Maybe (of kind * -> *) applied to Int (of kind *)
merijn 2017-02-27 11:52:41
ksj: Because they still had OTHER cobol source and they figured keeping it in the same format would be good.
ksj 2017-02-27 11:52:53
merijn: oh ok, just thought it was all of it
ksj 2017-02-27 11:52:59
poor guy
merijn 2017-02-27 11:53:01
ksj: Incidentally, he was also part of a project to turn COBOL asm into Java, iirc
Rembane 2017-02-27 11:53:01
ertes: So Maybe Int is * -> * and (m Int) is also * -> * ?
monochrom 2017-02-27 11:53:08
I would recommend decompiling to Algol, but meh.
ertes 2017-02-27 11:53:26
Rembane: no, (Maybe :: * -> *), (Int :: *), (Maybe Int :: *)
merijn 2017-02-27 11:53:30
Rembane: No, 'Maybe :: * -> *' and 'Int :: *', thus 'Maybe Int :: *'
ertes 2017-02-27 11:53:40
Rembane: just like (sin :: Double -> Double), (5 :: Double), (sin 5 :: Double)
Koterpillar 2017-02-27 11:53:40
So (m Int) would be (* -> *) -> *
Tuplanolla 2017-02-27 11:53:56
Talking to yourself again, mertes?
Rembane 2017-02-27 11:54:08
Aha! Thank you!
ertes 2017-02-27 11:55:49
Tuplanolla: no, we're not
merijn 2017-02-27 11:56:45
I'm talking to the cat :p
ertes 2017-02-27 11:56:59
we never talk to ourselves, right?
ertes 2017-02-27 11:57:00
right!
Sornaensis 2017-02-27 11:57:16
I never talk to myself, I talk to the voices
Sornaensis 2017-02-27 11:57:21
that would be crazy
monochrom 2017-02-27 11:57:28
I talk to myself all the time. It adds sparks to my conversations.
Rembane 2017-02-27 11:57:37
The first law of talking to ourselves is that we don't talk to ourselves.
merijn 2017-02-27 11:57:49
I'm more of an "incoherent angry rant" kinda guy :p
Sornaensis 2017-02-27 11:58:03
it's crazy how much insight you can gain from explaining a piece of code to a cat or a rock
ertes 2017-02-27 11:58:16
or to yourself =)
Rembane 2017-02-27 11:58:17
Rocks don't walk away
merijn 2017-02-27 11:58:31
Rembane: Neither does my cat, she's a lazy fuck :p
merijn 2017-02-27 11:58:48
Rembane: And my computer has a case fan blowing hot air out the top
Jacoby6000_ 2017-02-27 11:58:53
I'm starting to consider using haskell for a side project. Any recommendations on a good http lib?
ertes 2017-02-27 11:59:02
and after you've explained your monad transformer to her, she looks back at you like a lambdacat
merijn 2017-02-27 11:59:10
Jacoby6000_: For what? Fetching stuff?
Jacoby6000_ 2017-02-27 11:59:16
http server*
Jacoby6000_ 2017-02-27 11:59:19
my bad
Rembane 2017-02-27 11:59:25
merijn: Oooooh. A cat trap.
Jacoby6000_ 2017-02-27 11:59:38
I've heard of servant, and it sounds interesting
merijn 2017-02-27 11:59:40
Jacoby6000_: Ah, then I don't have opinions :)
Jacoby6000_ 2017-02-27 11:59:42
wondering what else there is
ertes 2017-02-27 11:59:42
Jacoby6000_: we have a few of those… happstack-server, snap-server and warp come to mind
Sornaensis 2017-02-27 11:59:47
I like warp
merijn 2017-02-27 12:00:00
ertes: Fun fact, I registered lambdacats.org to avoid having to remember the awkward url ;)
merijn 2017-02-27 12:00:14
http://lambdacats.org
monochrom 2017-02-27 12:00:23
oh haha
koala_man 2017-02-27 12:00:38
haha
ertes 2017-02-27 12:00:38
haha
merijn 2017-02-27 12:01:06
Actually, now that I have a VPS I could probably mirror it and avoid the risk of it ever going down
ertes 2017-02-27 12:06:59
you could also get rid of the stupid JS dependency along the way =)
ertes 2017-02-27 12:07:27
a flat HTML with inline images is a much smoother user experience that this shit
monochrom 2017-02-27 12:10:16
Programmers care more about justifying their purpose of existence than user experience.
dunx 2017-02-27 12:10:45
well of coure
dunx 2017-02-27 12:10:48
course
dunx 2017-02-27 12:10:59
we don't want our wages cut, do we
ertes 2017-02-27 12:11:12
i believe we can have both
ertes 2017-02-27 12:11:24
fancy visuals *and* a great UX
Squarism 2017-02-27 12:13:51
anyone know how to get the locale (TimeLocale) for a certain country/language combination?
Squarism 2017-02-27 12:14:18
ie the type used in Data.Time
merijn 2017-02-27 12:15:09
ok, bedtime!
monochrom 2017-02-27 12:15:21
Does "getCurrentTimeZone" help?
monochrom 2017-02-27 12:17:38
Ah, TimeLocale is much more than TimeZone.
monochrom 2017-02-27 12:21:10
Oh, this is sad, parseTime (which uses Maybe) is deprecated in favour of parseTimeM (which uses Monad fail).
monochrom 2017-02-27 12:21:19
This is so reactionary!
lyxia 2017-02-27 12:25:30
I wonder what results a poll about this question would give. Maybe a vs MonadFail m => m a or something similarly overengineered
glguy 2017-02-27 12:26:29
'Either String a' would have been fine type
glguy 2017-02-27 12:26:44
or even something more structured than String
glguy 2017-02-27 12:27:01
IIRC there were only two error messages that could have occurred
monochrom 2017-02-27 12:27:37
I would be OK with MonadFail
glguy 2017-02-27 12:29:10
The only instance of MonadFail (in base) that makes the error message available is the one for IO