2022/04/19

2022-04-19 00:00:36 +0200myme(~myme@40.51-175-185.customer.lyse.net) (Ping timeout: 240 seconds)
2022-04-19 00:00:48 +0200coot(~coot@213.134.190.95) (Client Quit)
2022-04-19 00:01:13 +0200 <jerry99> ok thanks hpc. I will toy with it a bit, and see how it fits my actual problem
2022-04-19 00:02:12 +0200cosimone(~user@93-47-228-79.ip115.fastwebnet.it)
2022-04-19 00:02:17 +0200cosimone(~user@93-47-228-79.ip115.fastwebnet.it) (Remote host closed the connection)
2022-04-19 00:02:26 +0200 <RevoGen> hpc: ty, the environment explanation helped, I got "(<*>) :: (r -> (a -> b)) -> (r -> a) -> (r -> b)"
2022-04-19 00:02:58 +0200bahamas(~lucian@84.232.140.158)
2022-04-19 00:03:04 +0200cosimone(~user@93-47-228-79.ip115.fastwebnet.it)
2022-04-19 00:05:13 +0200 <hpc> :t (<*>)
2022-04-19 00:05:15 +0200 <lambdabot> Applicative f => f (a -> b) -> f a -> f b
2022-04-19 00:05:35 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
2022-04-19 00:06:38 +0200 <hpc> so what would this be if you didn't have that extra x? (this will make the idea /really/ click)
2022-04-19 00:07:16 +0200 <hpc> mentally erase all the "x" stuff in the value, and all the "f" stuff in the above type
2022-04-19 00:07:31 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 246 seconds)
2022-04-19 00:07:35 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-04-19 00:08:43 +0200 <RevoGen> just a map?
2022-04-19 00:10:20 +0200 <hpc> here's a hint: (a -> b) -> a -> b
2022-04-19 00:12:01 +0200xff0x_(~xff0x@om126033110024.35.openmobile.ne.jp)
2022-04-19 00:12:13 +0200 <RevoGen> ic
2022-04-19 00:14:34 +0200Guest27(~Guest27@2601:281:d47f:1590::7e6a)
2022-04-19 00:14:57 +0200motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 256 seconds)
2022-04-19 00:15:22 +0200motherfsck(~motherfsc@user/motherfsck)
2022-04-19 00:20:59 +0200acidjnk(~acidjnk@p200300d0c722df2060ad2e552287866a.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-04-19 00:22:24 +0200whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2022-04-19 00:23:41 +0200Guest27(~Guest27@2601:281:d47f:1590::7e6a) (Quit: Client closed)
2022-04-19 00:24:09 +0200sseefried(~sseefried@1.146.69.153)
2022-04-19 00:25:07 +0200 <sseefried> Is https://www.haskell.org down?
2022-04-19 00:25:34 +0200 <davean> sseefried: its about to be back!
2022-04-19 00:25:45 +0200 <sseefried> Haha, just as I jumped on the channel
2022-04-19 00:27:14 +0200 <sseefried> What happened?
2022-04-19 00:27:28 +0200 <sseefried> davean: What happened?
2022-04-19 00:27:55 +0200 <davean> sseefried: HW failures at the datacenter, and a holiday weekend slowing down recovery. Its back up actually, just took the chance of it being down for a system upgrade
2022-04-19 00:28:07 +0200 <davean> its up now
2022-04-19 00:28:13 +0200 <sseefried> Yeah, I saw :-)
2022-04-19 00:28:18 +0200 <sseefried> Great work. Thanks.
2022-04-19 00:28:35 +0200 <davean> Well, I had to wait for you to get here to fix it ;)
2022-04-19 00:29:32 +0200redb(~nmh@136.49.49.211)
2022-04-19 00:29:33 +0200 <statusbot> Status update: The server was not able to boot due to an efuse issue with the power. The host has repaired the hardware and haskell.org is again running. -- http://status.haskell.org/pages/incident/537c07b0cf1fad5830000093/625c69cdfcbdd204d4df5603
2022-04-19 00:30:22 +0200 <hpc> yay
2022-04-19 00:32:25 +0200 <abastro[m]> Finally! :)
2022-04-19 00:32:41 +0200 <abastro[m]> (So haskell is not dying)
2022-04-19 00:33:19 +0200RevoGen(~RevoGen@c-76-24-25-81.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-04-19 00:33:37 +0200RevoGen(~RevoGen@c-76-24-25-81.hsd1.ma.comcast.net)
2022-04-19 00:34:25 +0200mmhat(~mmh@55d48a03.access.ecotel.net) (Quit: WeeChat 3.5)
2022-04-19 00:35:21 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-19 00:36:06 +0200sseefried(~sseefried@1.146.69.153) (Quit: Client closed)
2022-04-19 00:37:18 +0200 <hpc> what is dead can never die! :D
2022-04-19 00:37:50 +0200RevoGen(~RevoGen@c-76-24-25-81.hsd1.ma.comcast.net) (Ping timeout: 250 seconds)
2022-04-19 00:38:25 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-19 00:39:14 +0200RevoGen(~RevoGen@c-76-24-25-81.hsd1.ma.comcast.net)
2022-04-19 00:42:43 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-04-19 00:45:19 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds)
2022-04-19 00:46:59 +0200RevoGen(~RevoGen@c-76-24-25-81.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-04-19 00:47:15 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-04-19 00:47:51 +0200redb(~nmh@136.49.49.211)
2022-04-19 00:48:47 +0200finsternis(~X@23.226.237.192)
2022-04-19 00:51:59 +0200redb(~nmh@136.49.49.211) (Ping timeout: 240 seconds)
2022-04-19 00:54:28 +0200kaph(~kaph@151.35.4.96)
2022-04-19 00:56:27 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-19 00:57:18 +0200TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Remote host closed the connection)
2022-04-19 00:59:26 +0200 <abastro[m]> :?
2022-04-19 01:02:38 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-04-19 01:02:49 +0200neceve(~quassel@2.29.116.221) (Ping timeout: 246 seconds)
2022-04-19 01:02:59 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-04-19 01:03:40 +0200x_kuru(~xkuru@user/xkuru)
2022-04-19 01:03:48 +0200TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com)
2022-04-19 01:05:54 +0200kaph_(~kaph@151.43.109.170)
2022-04-19 01:06:38 +0200xkuru(~xkuru@user/xkuru) (Ping timeout: 250 seconds)
2022-04-19 01:08:19 +0200kaph(~kaph@151.35.4.96) (Ping timeout: 240 seconds)
2022-04-19 01:12:43 +0200 <sclv> its a joking quote from game of thrones
2022-04-19 01:13:20 +0200 <sclv> https://gameofthrones.fandom.com/wiki/What_Is_Dead_May_Never_Die#:~:text=%22What%20is%20dead%20may…
2022-04-19 01:13:35 +0200 <sclv> "But rises again harder and stronger"
2022-04-19 01:16:14 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-04-19 01:17:04 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-04-19 01:19:33 +0200chomwitt(~chomwitt@ppp-94-67-221-107.home.otenet.gr) (Ping timeout: 256 seconds)
2022-04-19 01:20:47 +0200redb(~nmh@136.49.49.211)
2022-04-19 01:21:35 +0200machinedgod(~machinedg@24.105.81.50)
2022-04-19 01:24:09 +0200 <abastro[m]> Whh
2022-04-19 01:26:19 +0200redb(~nmh@136.49.49.211) (Ping timeout: 240 seconds)
2022-04-19 01:34:26 +0200stackdroid18(14094@user/stackdroid) (Quit: hasta la vista... tchau!)
2022-04-19 01:39:13 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2022-04-19 01:40:23 +0200justsomeguy(~justsomeg@user/justsomeguy)
2022-04-19 01:42:10 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 250 seconds)
2022-04-19 01:42:27 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-04-19 01:43:51 +0200sammelweis_(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-04-19 01:44:01 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
2022-04-19 01:44:19 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-04-19 01:48:42 +0200redb(~nmh@136.49.49.211)
2022-04-19 01:48:58 +0200cosimone(~user@93-47-228-79.ip115.fastwebnet.it) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.1))
2022-04-19 01:49:22 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
2022-04-19 01:50:24 +0200cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-04-19 01:54:17 +0200mvk(~mvk@2607:fea8:5ce3:8500::85f6)
2022-04-19 01:54:30 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-04-19 01:54:30 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-04-19 01:54:30 +0200wroathe(~wroathe@user/wroathe)
2022-04-19 01:57:36 +0200werneta(~werneta@137.79.218.82) (Remote host closed the connection)
2022-04-19 02:00:26 +0200Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.)
2022-04-19 02:01:36 +0200xff0x_(~xff0x@om126033110024.35.openmobile.ne.jp) (Read error: Connection reset by peer)
2022-04-19 02:02:59 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
2022-04-19 02:06:10 +0200JimL(~quassel@89-162-2-132.fiber.signal.no) (Ping timeout: 246 seconds)
2022-04-19 02:06:13 +0200 <dibblego> <maerwald> the confusion probably comes from not understanding that `a -> (a -> a)` is `a -> a -> a`
2022-04-19 02:06:18 +0200 <dibblego> aka "all functions take one argument"
2022-04-19 02:07:57 +0200 <Axman6> Need to tattoo that to the back of every Haskell beginner's hand
2022-04-19 02:09:17 +0200 <dibblego> would be nice if it was well understood as a matter of fact, from which we then make approximations — especially in teaching
2022-04-19 02:12:22 +0200mxs(~mxs@user/mxs)
2022-04-19 02:23:33 +0200 <abastro[m]> Well, isn't it just currying by default
2022-04-19 02:29:18 +0200 <jackdk> no, because even an "uncurried" function of type `(x, y) -> z` still takes a single argument
2022-04-19 02:32:13 +0200 <abastro[m]> I mean, that one might not be uncurried for real.
2022-04-19 02:41:51 +0200jgeerds(~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 276 seconds)
2022-04-19 02:44:07 +0200renzhi(~xp@2607:fa49:6500:b100::19a0) (Ping timeout: 240 seconds)
2022-04-19 02:46:15 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-04-19 02:48:23 +0200vysn(~vysn@user/vysn)
2022-04-19 02:48:55 +0200chenqisu1(~chenqisu1@183.217.200.38)
2022-04-19 02:54:26 +0200RevoGen(~RevoGen@laptop-grs098eo.bc.edu)
2022-04-19 02:55:39 +0200 <Axman6> Years after learning about the pitfalls of precision in floating point representations and how to maintain accuracy in the context of high performance computing, I have finally been able to use this knowledge to fix a rounding bug in a (surprisingly important) financial system (that isn't yet in production, so no Office Space sheninigans for me)
2022-04-19 02:57:06 +0200renzhi(~xp@2607:fa49:6500:b100::229c)
2022-04-19 02:59:48 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-19 02:59:50 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net)
2022-04-19 03:01:06 +0200 <sm> sweet
2022-04-19 03:02:24 +0200 <Axman6> fix was to change ((x / y) - z) * q to ((x * q) / y) - (z * q)
2022-04-19 03:02:55 +0200 <Axman6> @check \x y z q -> z /= 0 ==> ((x / y) - z) * q == (x * q / y) - z * q
2022-04-19 03:02:55 +0200 <lambdabot> :-1:-1:Ambiguous infix expression
2022-04-19 03:03:18 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Quit: Leaving)
2022-04-19 03:03:20 +0200 <Axman6> @check \x y z q -> (y /= 0) ==> (((x / y) - z) * q == (x * q / y) - z * q)
2022-04-19 03:03:22 +0200 <lambdabot> *** Failed! Falsifiable (after 1 test and 11 shrinks):
2022-04-19 03:03:22 +0200 <lambdabot> -0.8623034840690951 -0.5487141738649985 -0.13193816659739946 0.3886086030777...
2022-04-19 03:03:37 +0200oxide(~lambda@user/oxide)
2022-04-19 03:04:23 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-04-19 03:06:19 +0200gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2022-04-19 03:06:25 +0200abastro(~abab9579@220.75.216.63)
2022-04-19 03:06:54 +0200 <Axman6> (I am expecting that to fail btw)
2022-04-19 03:07:16 +0200 <Axman6> Do we have anything that can test if two expressions are algebraically equivalent?
2022-04-19 03:07:32 +0200 <Axman6> @check \x y z q -> (y /= 0) ==> (((x / y) - z) * q == (x * q / y) - z * (q :: Rational))
2022-04-19 03:07:33 +0200 <lambdabot> +++ OK, passed 100 tests.
2022-04-19 03:08:55 +0200xff0x_(~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp)
2022-04-19 03:11:15 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-04-19 03:13:46 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-04-19 03:14:22 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-04-19 03:14:23 +0200mtjm(~mutantmel@2604:a880:2:d0::208b:d001) (Remote host closed the connection)
2022-04-19 03:14:46 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-19 03:15:27 +0200mtjm(~mutantmel@2604:a880:2:d0::208b:d001)
2022-04-19 03:20:54 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
2022-04-19 03:21:12 +0200andrey__(~andrey@p200300dbcf108600f3fd07f727d014bd.dip0.t-ipconnect.de)
2022-04-19 03:23:39 +0200andrey_(~andrey@p508d5b8f.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2022-04-19 03:36:49 +0200EvanR(~EvanR@user/evanr)
2022-04-19 03:37:31 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2022-04-19 03:41:44 +0200 <dmj`> vacuous is insane, might I even say absurd.
2022-04-19 03:44:55 +0200anomal(~anomal@87.227.196.109) (Remote host closed the connection)
2022-04-19 03:46:06 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 250 seconds)
2022-04-19 03:46:38 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-04-19 03:47:29 +0200 <abastro> XD
2022-04-19 03:49:33 +0200Me-me(~me-me@user/me-me) (Read error: Connection reset by peer)
2022-04-19 03:50:26 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 250 seconds)
2022-04-19 03:50:53 +0200 <EvanR> so uh
2022-04-19 03:51:00 +0200Me-me(~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net)
2022-04-19 03:51:02 +0200 <EvanR> > decodeFloat (3.14 :: Float)
2022-04-19 03:51:04 +0200 <lambdabot> (13170115,-22)
2022-04-19 03:51:16 +0200 <EvanR> > 13170115 / 2^22
2022-04-19 03:51:18 +0200 <lambdabot> 3.140000104904175
2022-04-19 03:51:31 +0200 <EvanR> > showFFloat (Just 100) (3.14 :: Float) ""
2022-04-19 03:51:33 +0200 <lambdabot> "3.1400000000000000000000000000000000000000000000000000000000000000000000000...
2022-04-19 03:51:57 +0200 <EvanR> how or why is showFFloat giving... the "decimal" expansion of all zeros
2022-04-19 03:53:11 +0200 <EvanR> > showFFloat (Just 100) (3.140000104904175 :: Float) ""
2022-04-19 03:53:13 +0200 <lambdabot> "3.1400000000000000000000000000000000000000000000000000000000000000000000000...
2022-04-19 03:53:16 +0200 <EvanR> o_O
2022-04-19 03:54:20 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-04-19 03:54:21 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-04-19 03:55:18 +0200 <EvanR> is it that 3.14 parses to the same float and has less characters
2022-04-19 03:55:42 +0200Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-04-19 03:57:02 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-04-19 03:57:39 +0200oxide(~lambda@user/oxide) (Ping timeout: 240 seconds)
2022-04-19 03:59:28 +0200 <EvanR> I could have sworn there was a way to get the real expansion of floats
2022-04-19 03:59:46 +0200oxide(~lambda@user/oxide)
2022-04-19 04:00:02 +0200 <abastro> > showEFloat (Just 10) (3.14 :: Float)
2022-04-19 04:00:06 +0200 <lambdabot> <[Char] -> [Char]>
2022-04-19 04:00:13 +0200 <abastro> Oh meh
2022-04-19 04:00:17 +0200 <abastro> > showEFloat (Just 10) (3.14 :: Float) ""
2022-04-19 04:00:20 +0200 <lambdabot> "3.1400000000e0"
2022-04-19 04:00:23 +0200Me-me(~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) (Changing host)
2022-04-19 04:00:23 +0200Me-me(~me-me@user/me-me)
2022-04-19 04:00:31 +0200 <abastro> Hmm yea, this is weird
2022-04-19 04:00:41 +0200 <abastro> Actually
2022-04-19 04:01:07 +0200 <abastro> > (13170115 / 2^22) :: Float
2022-04-19 04:01:10 +0200 <lambdabot> 3.14
2022-04-19 04:01:16 +0200 <EvanR> yeah I caught that after, but still
2022-04-19 04:01:17 +0200 <abastro> ^ That is the reason I guess
2022-04-19 04:01:56 +0200 <EvanR> if I corrected it to not switch types how do I print the right far digits of '3.14'
2022-04-19 04:02:03 +0200Me-me(~me-me@user/me-me) (Quit: Disconnecting on purpose.)
2022-04-19 04:02:26 +0200 <EvanR> or 0.1
2022-04-19 04:02:44 +0200Me-me(~me-me@v.working.name)
2022-04-19 04:04:16 +0200Me-me(~me-me@v.working.name) (Changing host)
2022-04-19 04:04:16 +0200Me-me(~me-me@user/me-me)
2022-04-19 04:05:05 +0200 <abastro> > floatToDigits 10 (3.14 :: Float)
2022-04-19 04:05:08 +0200 <lambdabot> ([3,1,4],1)
2022-04-19 04:05:18 +0200 <EvanR> lol
2022-04-19 04:05:22 +0200 <abastro> > floatToDigits 10 (3.14 :: Double)
2022-04-19 04:05:24 +0200 <lambdabot> ([3,1,4],1)
2022-04-19 04:05:34 +0200 <EvanR> :t floatToDigits
2022-04-19 04:05:35 +0200 <abastro> Hmm I meant
2022-04-19 04:05:36 +0200 <lambdabot> RealFloat a => Integer -> a -> ([Int], Int)
2022-04-19 04:06:36 +0200 <EvanR> to read 3.14 or 0.1 as a float, then present it as 0.100000000000000000... is hella confusing
2022-04-19 04:06:36 +0200 <abastro> > floatToDigits 10 (realToFrac @_ @Double (3.14 :: Float))
2022-04-19 04:06:38 +0200 <lambdabot> <hint>:1:33: error: parse error on input ‘@’
2022-04-19 04:06:56 +0200 <abastro> % floatToDigits 10 (realToFrac @Float @Double 3.14)
2022-04-19 04:06:57 +0200 <yahb> abastro: ([3,1,4,0,0,0,0,1,0,4,9,0,4,1,7,5],1)
2022-04-19 04:07:35 +0200 <abastro> % floatToDigits 10 (3.14 :: Float)
2022-04-19 04:07:35 +0200 <yahb> abastro: ([3,1,4],1)
2022-04-19 04:07:40 +0200 <EvanR> that's doing the same precision shenanigan as before
2022-04-19 04:07:45 +0200 <abastro> So.. it comes from there
2022-04-19 04:08:14 +0200 <EvanR> > (13170115 / 2^22) :: CReal
2022-04-19 04:08:16 +0200 <lambdabot> 3.1400001049041748046875
2022-04-19 04:09:18 +0200 <EvanR> > 7070651414971679 / 2 ^ 51 :: CReal
2022-04-19 04:09:20 +0200 <lambdabot> 3.1400000000000001243449787580175325274467
2022-04-19 04:09:32 +0200deadmarshal_(~deadmarsh@95.38.228.226)
2022-04-19 04:09:57 +0200 <EvanR> could have sworn there was a way to get this info without CReal
2022-04-19 04:10:14 +0200 <EvanR> since the input is rational
2022-04-19 04:10:17 +0200Macbethwin(~chargen@D964062A.static.ziggozakelijk.nl)
2022-04-19 04:10:38 +0200 <abastro> Wdym get info?
2022-04-19 04:11:00 +0200 <EvanR> the tail in the last example isn't infinite zeros like showFFloat shows
2022-04-19 04:11:09 +0200 <abastro> Uh
2022-04-19 04:11:26 +0200 <abastro> That's because there is less precision loss
2022-04-19 04:11:35 +0200 <abastro> (If you use CReal)
2022-04-19 04:12:21 +0200 <abastro> I think it is reasonable for the algorithm to compensate for possible errors from calculation
2022-04-19 04:12:35 +0200 <EvanR> the number 3.1400000000000001243449787580175325274467... is the actual value you get when you parse 3.14
2022-04-19 04:12:43 +0200 <EvanR> it just doesn't display that way
2022-04-19 04:12:51 +0200 <abastro> No
2022-04-19 04:13:01 +0200 <abastro> It's not the "actual value" or anything
2022-04-19 04:13:13 +0200 <EvanR> yes that's what the double value represents
2022-04-19 04:13:18 +0200 <abastro> You should never consider a floating number as a concrete number.
2022-04-19 04:13:20 +0200 <EvanR> that particular rational number
2022-04-19 04:13:38 +0200 <abastro> I mean, Float -> Double conversion is lossful
2022-04-19 04:13:45 +0200 <EvanR> I'm not talking about that conversion
2022-04-19 04:14:04 +0200 <abastro> What are you talking about then?
2022-04-19 04:14:04 +0200 <EvanR> also no it isn't
2022-04-19 04:14:08 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-04-19 04:14:08 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-04-19 04:14:08 +0200wroathe(~wroathe@user/wroathe)
2022-04-19 04:14:22 +0200 <Axman6> > showFFloat (Just 100) (read "3.140000104904175" :: Float) ""
2022-04-19 04:14:24 +0200 <lambdabot> "3.1400000000000000000000000000000000000000000000000000000000000000000000000...
2022-04-19 04:14:26 +0200 <abastro> It is, there is conversion error still involved
2022-04-19 04:14:30 +0200 <Axman6> > showFFloat (Just 100) (read "3.14" :: Float) ""
2022-04-19 04:14:32 +0200 <lambdabot> "3.1400000000000000000000000000000000000000000000000000000000000000000000000...
2022-04-19 04:14:50 +0200 <EvanR> Axman6, right
2022-04-19 04:14:53 +0200 <abastro> The thing is, floating point number should never be considered as a concrete number.
2022-04-19 04:15:01 +0200 <abastro> It never is.
2022-04-19 04:15:03 +0200 <EvanR> it definitely is a concrete number
2022-04-19 04:15:22 +0200 <EvanR> unless it's NaN
2022-04-19 04:15:27 +0200 <Axman6> Sorry, just checking if the read instance directly (rather than the Rational instance -> Float conversion) would do anything different
2022-04-19 04:15:57 +0200 <EvanR> it must be from the obscure rule where you display the number with the least amount of digits necessary to reproduce it
2022-04-19 04:16:00 +0200 <Axman6> abastro: every non NaN ieee-754 number represents some exact value, it is possible to know exactly what number that is
2022-04-19 04:16:46 +0200 <Axman6> EvanR: bringing back memories of a bug in PHP (and subsequently several other languages) which caused an infinite loop when parsing a certain floating point number
2022-04-19 04:16:55 +0200 <EvanR> that was a good one
2022-04-19 04:17:21 +0200 <abastro> I mean, even different architectures have different rules for computing floating number
2022-04-19 04:17:47 +0200 <abastro> By rules, I mean it computes different number for same operation modulo some errors
2022-04-19 04:18:09 +0200 <EvanR> I would believe that for something like inverse sine function
2022-04-19 04:18:13 +0200 <abastro> While it is true that you could have it represent specific number, it is never meant to be used like that.
2022-04-19 04:18:19 +0200deadmarshal_(~deadmarsh@95.38.228.226) (Ping timeout: 240 seconds)
2022-04-19 04:18:42 +0200 <EvanR> yeah, you describe it as a sort of random function
2022-04-19 04:18:51 +0200 <EvanR> I don't like that picture
2022-04-19 04:18:51 +0200 <Axman6> abastro: I think you are missing the problem EvanR is having
2022-04-19 04:18:54 +0200 <abastro> I did not say random function
2022-04-19 04:19:09 +0200 <abastro> I mean, I did not mean it as a random function
2022-04-19 04:19:20 +0200 <EvanR> we're not even doing a computation here, just talking about the value
2022-04-19 04:19:23 +0200 <abastro> Rather, it is not supposed to be used without consideration for the calculation errors.
2022-04-19 04:19:24 +0200 <EvanR> > decodeFloat 3.14
2022-04-19 04:19:26 +0200 <lambdabot> (7070651414971679,-51)
2022-04-19 04:19:40 +0200 <EvanR> after parsing that is the value
2022-04-19 04:19:45 +0200 <Axman6> abastro: EvanRis trying to see what the errors are
2022-04-19 04:19:51 +0200 <abastro> Converting (3.14 :: Float) to Double is computation
2022-04-19 04:20:02 +0200 <EvanR> that's not on topic
2022-04-19 04:20:13 +0200 <EvanR> it's "3.14" to Double, or Float
2022-04-19 04:20:18 +0200 <EvanR> and back
2022-04-19 04:21:18 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds)
2022-04-19 04:21:20 +0200 <abastro> Well, why would that represent the exact number of (3.14 :: Float)
2022-04-19 04:21:25 +0200 <Axman6> I swear bos has a package for past parsing/rendering of ieee-754 doubles and floats
2022-04-19 04:21:34 +0200 <Axman6> it doesn't, and that's the point abastro
2022-04-19 04:21:47 +0200 <EvanR> the longer decimal expansion is the exact value
2022-04-19 04:21:48 +0200 <abastro> I mean, why do you want that behavior?
2022-04-19 04:21:57 +0200 <abastro> Duh, what is this "exact" thing
2022-04-19 04:21:59 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-19 04:22:02 +0200 <EvanR> you would want that to compare to the approximation
2022-04-19 04:22:11 +0200 <Axman6> the string "3.14" is parsed into some specific Float value, and EvanR is trying to see exactly whatch float value it is, including the error in the parsing
2022-04-19 04:22:15 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-04-19 04:22:34 +0200 <abastro> You want to print "3.14 :: Float" to find the error?
2022-04-19 04:22:35 +0200 <abastro> What?
2022-04-19 04:22:39 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds)
2022-04-19 04:22:46 +0200 <EvanR> I'm very surprised to see all those zeros, which is usually how you express increased precision
2022-04-19 04:23:01 +0200 <EvanR> which in this case shows the wrong value
2022-04-19 04:23:24 +0200 <abastro> That's because it isn't supposed to be for that purpose
2022-04-19 04:23:40 +0200abastro(~abab9579@220.75.216.63) (Remote host closed the connection)
2022-04-19 04:23:52 +0200 <EvanR> in any case it can't be used for that purpose, but I could have sworn it acted differently before
2022-04-19 04:23:58 +0200 <Axman6> fucksake, abastro if you don't undertstand the problem, stop commenting on it, you're negatively contributing to this discussion at this piont
2022-04-19 04:24:14 +0200abastro(~abab9579@220.75.216.63)
2022-04-19 04:24:27 +0200 <EvanR> like, to display the digits, you just need a division algorithm and not a real number library
2022-04-19 04:24:29 +0200 <abastro[m]> What
2022-04-19 04:24:53 +0200 <abastro> Like, whining about something that is not supposed to be working as you suggest is okay then?
2022-04-19 04:25:45 +0200 <EvanR> at least I confirmed showFFloat is "supposed" to act like this, which I'll call "wrong" for the sake of argument xD
2022-04-19 04:25:47 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-04-19 04:26:18 +0200 <Axman6> let me try to spell it out for you again: The string "3.14" is parsed into _some_ Float value, whose actual value is 3.140000104904175. EvanR is trying to print out that actual value to see what the error is from the idealised 3.14 which cannot be represented in a Float. do you understand?
2022-04-19 04:26:26 +0200 <abastro> ....
2022-04-19 04:26:39 +0200 <abastro> The printing isn't just for that.
2022-04-19 04:27:20 +0200 <Axman6> what are you talking about?
2022-04-19 04:28:12 +0200 <Axman6> % import Data.Double.Conversion.Text
2022-04-19 04:28:12 +0200 <yahb> Axman6: ; <no location info>: error:; Could not find module `Data.Double.Conversion.Text'; It is not a module in the current program, or in any known package.
2022-04-19 04:28:15 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2022-04-19 04:28:16 +0200 <EvanR> up to this point I would have said printing is for seeing the value
2022-04-19 04:28:36 +0200 <Axman6> Are you able to test what https://hackage.haskell.org/package/double-conversion-2.0.4.1/docs/Data-Double-Conversion-Text.html does?
2022-04-19 04:28:59 +0200 <EvanR> alright hold my beer
2022-04-19 04:30:15 +0200travisb_tabemann
2022-04-19 04:30:50 +0200deadmarshal_(~deadmarsh@95.38.228.226)
2022-04-19 04:30:50 +0200 <abastro> Showing as string is for giving rough representation
2022-04-19 04:31:11 +0200 <abastro> Exact value is more the implementation detail anyway
2022-04-19 04:31:16 +0200 <EvanR> Data.Double.Conversion.Text> toFixed 100 3.14
2022-04-19 04:31:16 +0200 <EvanR> "*** Exception: Data.Double.Conversion.Text.toFixed: conversion failed (invalid precision requested)
2022-04-19 04:31:18 +0200 <EvanR> xD
2022-04-19 04:31:41 +0200 <Axman6> abastro: and it's exactly the details that EvanR is trying to find out. how hard is that to understand?
2022-04-19 04:32:12 +0200 <EvanR> *Main Data.Double.Conversion.Text> toFixed 30 3.14 => "3.140000000000000124344978758018"
2022-04-19 04:32:24 +0200 <abastro> Then just do not use the showFFloat lol
2022-04-19 04:32:30 +0200 <abastro> It isn't for the purpose
2022-04-19 04:32:36 +0200 <Axman6> you absolutely should not treat your numeric types as black boxes which produce unpredictable results, you should be able to find out what the errors are and categorise them
2022-04-19 04:32:43 +0200 <abastro> Lol
2022-04-19 04:32:54 +0200 <Axman6> jesus chrtist, that's literally the whole point of this conversation
2022-04-19 04:33:06 +0200 <EvanR> yeah as a wise man once said "I like to understand my code" or something
2022-04-19 04:33:10 +0200 <abastro> I guess that aligns with your point about storing literal utf-8 bitstream
2022-04-19 04:33:42 +0200 <abastro> Well, the "I like to understand" could go the way of "I want to understand what a transistor does when I run this program"
2022-04-19 04:33:44 +0200 <Axman6> EvanR: glag double-conversion worked for you, and good to know it can be used for that
2022-04-19 04:33:47 +0200 <Axman6> glad*
2022-04-19 04:34:14 +0200 <EvanR> it doesn't go up to 100 though
2022-04-19 04:34:25 +0200 <EvanR> which you might need in order to see the repeating decimals
2022-04-19 04:35:14 +0200 <EvanR> there's probably a slick one liner that gives the decimal expansion
2022-04-19 04:35:23 +0200 <sm> EvanR: how about using Decimal instead ?
2022-04-19 04:35:36 +0200 <EvanR> yeah if the goal was to use literal 3.14
2022-04-19 04:35:59 +0200 <EvanR> I was curious about the float
2022-04-19 04:36:12 +0200 <sm> ah
2022-04-19 04:36:14 +0200 <Axman6> abastro: a word of advice: Whenever you think that the answer to someone's question should begin with "Just do X", that is a good time to stop and think whether you actually understand the question. When someone tells you you don't understand the question is an even better time to have that thought
2022-04-19 04:36:17 +0200 <abastro> Anyway, this is quite a niche usage so it was not implemented
2022-04-19 04:36:32 +0200 <abastro> Why do you think I do not understand lol
2022-04-19 04:36:47 +0200 <abastro> I am saying that it is not implemented this way for a reason
2022-04-19 04:36:54 +0200 <EvanR> yeah we should stick to mainstream usage of Haskell
2022-04-19 04:36:55 +0200 <Axman6> the overwhelming torrent of evidence from the last half an hour showing that was the case?
2022-04-19 04:36:57 +0200 <abastro> And what you are doing is just whining
2022-04-19 04:37:23 +0200 <abastro> Bunch of whines
2022-04-19 04:37:45 +0200 <EvanR> arnold sound board from the late 90s "STOP WHINING"
2022-04-19 04:37:51 +0200 <abastro> ...
2022-04-19 04:38:01 +0200 <sm> can we agree to disagree on this
2022-04-19 04:38:35 +0200 <Axman6> I literally just one hour ago fixed a very closely related bug in our financial system because of knowing about problems like this. This is a system which will handle hundreds of millions of dollars of financial transactions per day. this shit matters. just because you don't think it does doesn't mean it doesn't
2022-04-19 04:38:48 +0200 <EvanR> end of the day, showFFloat is doing something more akin to toShortest which is oddly described as "Compute the shortest string of digits that correct represent the input number"
2022-04-19 04:39:08 +0200 <abastro> ...well why are you using floating point number for financial system at all...
2022-04-19 04:39:37 +0200 <EvanR> if your money is made of base 2 fractions then you're good
2022-04-19 04:39:41 +0200 <abastro> Fixed precision numbers are for that precise reason, isn't it..
2022-04-19 04:39:57 +0200 <Axman6> no
2022-04-19 04:40:09 +0200 <abastro> The point you get into floating point number with financials, you are asking for trouble
2022-04-19 04:40:20 +0200 <Axman6> and I'm not using floating point numbers, at least not IEEE-754 oves
2022-04-19 04:40:35 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-04-19 04:40:42 +0200 <abastro> Yea, I mean then that one is rather orthogonal issue.
2022-04-19 04:41:27 +0200 <Axman6> that's why we're using Scala/Java's BigDecimal. there's possibly as better representation for this computation but this one works for all values we care about
2022-04-19 04:41:36 +0200 <EvanR> earlier I was testing my game algorithm using rational numbers, then went to store them in sqlite and it went no
2022-04-19 04:41:47 +0200 <sm> just no ?
2022-04-19 04:41:50 +0200 <EvanR> haha
2022-04-19 04:41:56 +0200 <Axman6> and our contract language, Daml, doesn't even have floats or doubles
2022-04-19 04:41:57 +0200 <EvanR> more like, they don't have a rational number
2022-04-19 04:42:07 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-04-19 04:42:13 +0200 <abastro> Yea, those issues are orthogonal to floating point numbers
2022-04-19 04:42:32 +0200 <Axman6> sm: SQLite comes with JSON extensions by default now, just store them as an array of integers :P
2022-04-19 04:42:37 +0200 <abastro> Well, I mean, the most uses of floating point numbers other than where precision doesn't matter is for physical simulations and such
2022-04-19 04:42:59 +0200 <Axman6> except they aren't orthogonal, because the order of operations caused precision to be lost in computations
2022-04-19 04:43:04 +0200 <abastro> And for physical simulations, you ALWAYS have to consider the error - and well, you won't calculate the deviation from precise value
2022-04-19 04:43:07 +0200 <EvanR> you certainly need to know how accurate your physics simulation is
2022-04-19 04:43:34 +0200 <abastro> This is not the way you would check the accuracy of physics simulation, btw
2022-04-19 04:43:52 +0200 <abastro> It should rather be theoretically modelled without computing at runtime
2022-04-19 04:43:57 +0200 <EvanR> you could check steps against the same steps using real numbers
2022-04-19 04:44:07 +0200 <EvanR> just to see
2022-04-19 04:44:15 +0200 <abastro> I mean, with BigDecimals and such, the logic should be completely different
2022-04-19 04:44:30 +0200 <EvanR> exact real arithmetic is pretty snazzy
2022-04-19 04:44:40 +0200 <abastro> Evan, that is not how physics simulation work in those labs I've been to
2022-04-19 04:45:16 +0200 <abastro> Well many of them do consider the IEEE floats as a bit of black box, some doesn't but does not calculate those numbers in runtime anyway.
2022-04-19 04:45:42 +0200 <abastro> They always consider the error ranges which are taken into account when they run the simulations.
2022-04-19 04:45:46 +0200 <abastro> I mean
2022-04-19 04:45:51 +0200 <abastro> When they design* the simulations
2022-04-19 04:45:54 +0200 <EvanR> they're certainly not a black hole or black box
2022-04-19 04:46:08 +0200 <EvanR> which was the entire point of having standards
2022-04-19 04:46:16 +0200 <abastro> That is why I mentioned that some don't treat them as a black box
2022-04-19 04:46:46 +0200 <abastro> That doesn't mean they check the exact value stored
2022-04-19 04:47:11 +0200 <abastro> Also there are better ways to see exact values stored, you can get the fraction
2022-04-19 04:47:15 +0200 <EvanR> don't ask don't tell, but for floats
2022-04-19 04:47:16 +0200 <Axman6> I see you still don't understand what thew problem was -_-
2022-04-19 04:47:18 +0200 <abastro> You don't need to convert them to strings
2022-04-19 04:48:05 +0200 <abastro> I simply mean that you are trying to use `showFFloat` for wrong purpose
2022-04-19 04:48:18 +0200 <Axman6> > (7070651414971679 / 2^51 :: CReal, (7070651414971679 - 1) / 2^51 :: CReal)
2022-04-19 04:48:20 +0200 <lambdabot> (3.1400000000000001243449787580175325274467,3.139999999999999680255768907954...
2022-04-19 04:48:22 +0200 <abastro> And possibly even misunderstanding floating point numbers, as everyone does
2022-04-19 04:48:42 +0200 <sm> Axman6: is Daml your company's main product ? are there customers yet ?
2022-04-19 04:51:01 +0200 <Axman6> I'm contracted to Digital Asset, so not technically "my company", but I'm not sure if I'd describe it as the main product - they've developed several large systems for various clients, but using Daml. I gues the language could be considered the secret sauce in some sense
2022-04-19 04:51:41 +0200 <Axman6> https://www.digitalasset.com/customer-stories lists some of the projects they have built, including the project I'm on
2022-04-19 04:52:26 +0200 <EvanR> you're using haskell?
2022-04-19 04:52:38 +0200 <EvanR> (please say yes)
2022-04-19 04:52:47 +0200 <abastro> I won't claim I understand floating point numbers as well, I just think everyone misunderstands them in a way or the other. I just mean that whining for some behavior where one behavior is clear-cut better is not great
2022-04-19 04:52:58 +0200 <abastro> Lol who would use haskell for that purpose
2022-04-19 04:53:05 +0200 <Axman6> I genuinelt think that Daml is a super interesting point in the space of contract languages though, it solves a lot of problems which others seem to be less interested in (the concept of what information is visible to which parties is a core concept in the language)
2022-04-19 04:53:10 +0200 <sm> abastro, please stop accusing folks of whining, let's move on
2022-04-19 04:53:20 +0200 <abastro> Well okaya
2022-04-19 04:53:28 +0200 <abastro> s/okaya/okay
2022-04-19 04:53:38 +0200 <sm> thank you :)
2022-04-19 04:54:23 +0200 <Axman6> EvanR: The currently Daml imprlmentation is built on top of GHC, and it basically feels like Haskell++; several useful extensions are enabled by default, and it has some syntax additions for the contract specific stuff (which any haskell developer would immediately see through the veneer to the code that gets generated)
2022-04-19 04:54:32 +0200 <abastro> Imagine building on haskell lol
2022-04-19 04:54:47 +0200 <sm> Axman6: how does it compare to plutus , marlowe etc. ?
2022-04-19 04:54:59 +0200 <abastro> Which is for now an unstable research language (which might change later but eh)
2022-04-19 04:55:01 +0200 <Axman6> I'm not familliar enough with those to comment
2022-04-19 04:55:42 +0200 <sm> Haskell++, sounds more complex than those then. Perhaps more for analysis than implementing contracts ?
2022-04-19 04:56:32 +0200RevoGen(~RevoGen@laptop-grs098eo.bc.edu) (Remote host closed the connection)
2022-04-19 04:56:41 +0200 <sm> and sorry if it's all spelled out on this fine page, the field is a bit confusing
2022-04-19 04:56:42 +0200 <EvanR> this is like the 4th or 5th thing I heard of that hijacks GHC for their own nefarious purposes, must be pretty feasible to do such things xD
2022-04-19 04:56:50 +0200RevoGen(~RevoGen@laptop-grs098eo.bc.edu)
2022-04-19 04:57:09 +0200 <Axman6> It's literally a strict (as in not lazy) Haskell dialect, with some syntactic features added to the parser. It's definitely aimes at writing applications more than the relatively small contracts that most smart contract languages seem to target
2022-04-19 04:57:46 +0200 <Axman6> I'd definitely recommend going through the Daml tutorial, I had a lot of fun doing it.
2022-04-19 04:57:47 +0200 <sm> I see.. intended to run off chain, then ?
2022-04-19 04:58:46 +0200 <Axman6> So, Daml is aimed at being ledger agnostic, it isn't written for a specific blockchain, and in fact their Canton system allows you to bridge multiple ledgers together
2022-04-19 04:59:05 +0200 <sm> "Daml empowers developers to build, deploy, and run multi-party applications on a distributed ledger in days"
2022-04-19 04:59:26 +0200 <Axman6> ignore the businessese =)
2022-04-19 04:59:43 +0200 <sm> this is actually the clearest thing I've read so far :)
2022-04-19 05:00:13 +0200 <sm> your comments excluded of course. Cool, thanks for the info
2022-04-19 05:02:09 +0200 <Axman6> the videos on https://www.digitalasset.com/developers/learn should be more developer oriented. I honestly found doing the Daml tutorial was the easiest way to get a good idea of what it's all about. There's anice talk somewhere about how a doctor's office could use the Daml to facilitate payment for medical procedures involving the patient's insurance, their bank, etc. while maintain privacy of the medical data from the parties who don't need to know it
2022-04-19 05:05:55 +0200kaph__(~kaph@bo-18-157-187.service.infuturo.it)
2022-04-19 05:05:56 +0200 <sm> I found my way to https://docs.daml.com and https://www.digitalasset.com/developers/examples > Applications and Libraries
2022-04-19 05:06:26 +0200 <sm> is there any publicly-visible real world application you know of ?
2022-04-19 05:07:13 +0200 <sm> maybe some of these are
2022-04-19 05:07:20 +0200 <Axman6> I'm not sure, being a contractor I don't see much of what goes on in the rest of the company
2022-04-19 05:08:10 +0200kaph_(~kaph@151.43.109.170) (Ping timeout: 246 seconds)
2022-04-19 05:08:24 +0200 <Axman6> trying to see if anyone has a good video introduction though
2022-04-19 05:08:52 +0200mvk(~mvk@2607:fea8:5ce3:8500::85f6) (Ping timeout: 250 seconds)
2022-04-19 05:08:59 +0200abastro(~abab9579@220.75.216.63) (Remote host closed the connection)
2022-04-19 05:10:06 +0200abastro(~abab9579@220.75.216.63)
2022-04-19 05:10:21 +0200 <Axman6> I wouldn't recommend jumping into applications without understanding the basics though, the whole template/contract/choice, consuming choices, disclosure etc are pretty new concepts and the example code won't make sense without understand what they mean
2022-04-19 05:10:29 +0200abastro(~abab9579@220.75.216.63) (Remote host closed the connection)
2022-04-19 05:10:42 +0200 <sm> I guess these are like simple (mostly) web apps, but distributed across multiple users, machines, and possibly blockchains, yet relatively easy to build with some correctness guarantees because of Daml
2022-04-19 05:12:01 +0200abastro(~abab9579@220.75.216.63)
2022-04-19 05:12:03 +0200 <Axman6> they might have web apps, but Daml is mostly agnostic of that. We use Scala (sadly) to turn the handle, so to speak. you need something external putting data into the system to actually have the application "run"
2022-04-19 05:13:49 +0200 <Axman6> I've been recommended https://www.youtube.com/watch?v=AGxt4yQceXA (dev focused) and https://www.youtube.com/watch?v=ztFPc6GOtlE (higher level)
2022-04-19 05:14:24 +0200mbuf(~Shakthi@136.185.79.70)
2022-04-19 05:14:52 +0200 <Axman6> There are some subtlties to the contract model that have some really big ramifications in how you design things, which can complicate designs a bit, but the result is much more robust
2022-04-19 05:15:27 +0200 <sm> thanks, I just was taking a shot at understanding more of what this is without having to watch a video or do a tutorial
2022-04-19 05:17:32 +0200 <sm> my attention span vs their technical writing :)
2022-04-19 05:19:28 +0200abastro(~abab9579@220.75.216.63) (Remote host closed the connection)
2022-04-19 05:21:17 +0200tvandinther(~tvandinth@2406:e002:6815:1801:2c95:5009:a36c:8152)
2022-04-19 05:22:07 +0200 <tvandinther> Hi all. I am just starting out with Haskell, and I am trying to set up an IDE to work with it. I have tried following various guides online to setting things up but they're all either incomplete or outdated. Are there any up-to-date and complete guides you can recommend to get me set up with a good integrated environment? I'd prefer to use IntelliJ
2022-04-19 05:22:07 +0200 <tvandinther> or Atom as the editor.
2022-04-19 05:23:24 +0200 <glguy> tvandinther: the easiest to get working is vscode
2022-04-19 05:24:35 +0200 <tvandinther> Does that have an integrated repl?
2022-04-19 05:27:11 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-04-19 05:27:37 +0200inversed_(~inversed@94.13.111.159)
2022-04-19 05:27:50 +0200inversed(~inversed@94.13.111.159) (Ping timeout: 272 seconds)
2022-04-19 05:28:23 +0200 <Axman6> it has an integrated terminal which can run ghci, is there anything you need beyond that?
2022-04-19 05:28:28 +0200 <glguy> The repl gets started with the 'cabal repl' command. vscode has embedded terminal windows, that part doesn't have much to do with editor integration
2022-04-19 05:29:32 +0200 <glguy> I've also got vim+coc+hls working; that wasn't too hard
2022-04-19 05:30:15 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-04-19 05:30:21 +0200 <tvandinther> Cool, I can give it a go setting up VSCode, which extensions will I need? (I currently also have Stack installed)
2022-04-19 05:30:23 +0200 <Axman6> VS code is definitely the way to go though if you're not a vim or emacs user, that's where most of the effort has gone with Haskell Language Server's integration, because it's definitely become the most popular IDE to work with Haskell on in the last few years
2022-04-19 05:31:08 +0200 <Axman6> tvandinther: I would recommend going wiht using ghcup to manage GHC installs and haskell language server (this will be the default with the next version of the Haskell plugin for VS Code luckily)
2022-04-19 05:31:09 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds)
2022-04-19 05:31:28 +0200 <Axman6> you can use ghcup to install and manage stack too
2022-04-19 05:32:08 +0200 <tvandinther> So I understand it, is GHCup a similar tool to something like NVM for node.js?
2022-04-19 05:33:10 +0200 <Axman6> I'm not sure what NVM does, but it's a tool that manages GHC installations, as well as cabal-install (haskell package manager command), hls (the haskell language server for VS code etc.), stack, etc.
2022-04-19 05:33:24 +0200 <Axman6> it makes switching between compilers really easy, which sometimes you'll need to do
2022-04-19 05:33:44 +0200 <tvandinther> cool, yeah sounds useful. I'll install it now
2022-04-19 05:33:53 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-04-19 05:34:06 +0200 <Axman6> https://www.haskell.org/ghcup/
2022-04-19 05:35:16 +0200 <Axman6> you can do it with out the curl | sh if you prefer (I would do curl > install.sh; less install.sh, and then sh install.sh personally)
2022-04-19 05:39:31 +0200 <tvandinther> alright, I got ghcup installed on WSL2
2022-04-19 05:40:15 +0200 <Axman6> nice - WSL should work ok, but be warned that development on windows can be a bit harder than *nix system. I think WSL should be fine though
2022-04-19 05:41:18 +0200 <tvandinther> Yeah hopefully. Only issues I've seemed to have with it is IDE integration from a windows installation across to tools installed on WSL. But VS Code supposedly has that sorted.
2022-04-19 05:41:27 +0200 <tvandinther> What's the next step?
2022-04-19 05:41:41 +0200 <Axman6> fire up VS code, install the Haskell plugin
2022-04-19 05:43:13 +0200 <tvandinther> Cool, got that now.
2022-04-19 05:44:39 +0200 <Axman6> not sure what the best next step is - possible running `stack new MyNewProject simple` somewhere you want your code to be, then opening that folder in VS code (you can also use `cabal init -i` to make a cabal project without stack)
2022-04-19 05:46:46 +0200 <tvandinther> Looks good. I guess from here my main 2 questions are 1) How do I run this from the VS Code as opposed to using the command line, and 2) How do I open a REPL terminal which loads my current project
2022-04-19 05:47:06 +0200 <Axman6> once you have a haskell project, opening a .hs file should let you hover over things and get their types, and I think ctrl clicking (or something, I don't use windows) should take you to definitions if they're in your project
2022-04-19 05:47:57 +0200 <Axman6> I don't think there's any integration that makes a new Haskell project in VS Code itself (would be a good plugin feature request).
2022-04-19 05:48:34 +0200 <Axman6> I usually just use the built in terminal and run cabal repl. for stack it would be stack repl I think. Stack might have the ability to reload on save too, I can't remember
2022-04-19 05:49:28 +0200 <tvandinther> ok yeah I see. So once I'm in the cabal repl, any time I save a file, the REPL will reload that file into it?
2022-04-19 05:49:51 +0200 <Axman6> no
2022-04-19 05:50:02 +0200 <maerwald[m]> tvandinther: https://www.haskell.org/ghcup/steps/
2022-04-19 05:50:13 +0200 <maerwald[m]> There is an introduction
2022-04-19 05:50:22 +0200 <Axman6> maerwald[m]++
2022-04-19 05:50:29 +0200 <Axman6> maerwald++
2022-04-19 05:50:43 +0200 <Axman6> (just to make sure lambdabot's karma goes to the right place!)
2022-04-19 05:51:07 +0200 <tvandinther> Thank you for that link
2022-04-19 05:51:33 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-04-19 05:51:40 +0200 <Axman6> definitely a better idea to read all the docs than listen to me :P
2022-04-19 05:51:59 +0200renzhi(~xp@2607:fa49:6500:b100::229c) (Ping timeout: 240 seconds)
2022-04-19 05:52:08 +0200 <tvandinther> So as far as IDE features go with VS Code, it's just the syntax highlighting and type information. The rest of the workflow is done through the terminal, is that correct?
2022-04-19 05:52:16 +0200 <tvandinther> You've been very helpful
2022-04-19 05:52:43 +0200 <Axman6> Haskell language server does a lot more than that, it runs hlint for you to give hints, and it can even write your code for you
2022-04-19 05:54:14 +0200 <Axman6> https://haskell-language-server.readthedocs.io/en/latest/features.html covers them
2022-04-19 05:54:16 +0200 <tvandinther> Nice, I suppose if nothing else needs configuration I will just have a play with what I've got here.
2022-04-19 05:58:33 +0200RevoGen(~RevoGen@laptop-grs098eo.bc.edu) (Remote host closed the connection)
2022-04-19 05:58:50 +0200RevoGen(~RevoGen@laptop-grs098eo.bc.edu)
2022-04-19 05:59:09 +0200 <Axman6> tvandinther: if you've got it working, feel free to stick around and ask questions
2022-04-19 06:00:22 +0200 <tvandinther> Thanks for the help Axman. I will certainly drop any questions that I am stuck with. For now I'm quite new that I'll go through some of the exercises on exercism.org and read through learnyouahaskell.com
2022-04-19 06:00:39 +0200 <tvandinther> I'm very new to functional programming :)
2022-04-19 06:00:39 +0200 <Axman6> good plan
2022-04-19 06:01:30 +0200 <Axman6> have fun learning how to write the fibonacci sequence in many different ways!
2022-04-19 06:01:55 +0200 <tvandinther> I look forward to having difficulty with fizzbuzz once again.
2022-04-19 06:02:12 +0200 <tvandinther> Although tbh, haskell makes that one look easy with pattern matched function bodies
2022-04-19 06:03:21 +0200 <zzz> tvandinther: you should watch this https://www.youtube.com/watch?v=VUhlNx_-wYk
2022-04-19 06:04:33 +0200cdman(~dcm@27.2.217.111)
2022-04-19 06:04:33 +0200cdman(~dcm@27.2.217.111) (Changing host)
2022-04-19 06:04:33 +0200cdman(~dcm@user/dmc/x-4369397)
2022-04-19 06:04:59 +0200cdman(~dcm@user/dmc/x-4369397) (Client Quit)
2022-04-19 06:05:54 +0200Axman6is reminded of http://www.willamette.edu/~fruehr/haskell/evolution.html
2022-04-19 06:06:00 +0200cdman(~dcm@27.2.217.111)
2022-04-19 06:06:00 +0200cdman(~dcm@27.2.217.111) (Changing host)
2022-04-19 06:06:00 +0200cdman(~dcm@user/dmc/x-4369397)
2022-04-19 06:11:32 +0200benin(~benin@183.82.204.110)
2022-04-19 06:11:56 +0200 <zzz> i hadn't thought of that one since i couldn't understand most of it
2022-04-19 06:12:11 +0200 <zzz> nice throwback
2022-04-19 06:14:00 +0200Macbethwin(~chargen@D964062A.static.ziggozakelijk.nl) (Remote host closed the connection)
2022-04-19 06:14:00 +0200chargen(~chargen@D964062A.static.ziggozakelijk.nl) (Remote host closed the connection)
2022-04-19 06:14:19 +0200Macbethwin(~chargen@D964062A.static.ziggozakelijk.nl)
2022-04-19 06:14:20 +0200chargen(~chargen@D964062A.static.ziggozakelijk.nl)
2022-04-19 06:14:55 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-04-19 06:15:37 +0200 <Axman6> I haven't watched all that video... but is it going to just be lambda calculus in Ruby?
2022-04-19 06:17:09 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-04-19 06:18:18 +0200motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 276 seconds)
2022-04-19 06:19:38 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-04-19 06:22:02 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-04-19 06:24:27 +0200jakalx(~jakalx@base.jakalx.net)
2022-04-19 06:24:34 +0200 <tvandinther> Should the syntax highlighting in vs code differentiate functions from values? Although I know technically functions can be values but I'm getting a lot of white text which is a little hard to differentiate
2022-04-19 06:25:10 +0200 <tvandinther> to be more precise, differentiating functions from the parameters
2022-04-19 06:33:04 +0200motherfsck(~motherfsc@user/motherfsck)
2022-04-19 06:36:09 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-04-19 06:40:33 +0200motherfsck(~motherfsc@user/motherfsck) (Quit: quit)
2022-04-19 06:48:53 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-04-19 06:52:06 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds)
2022-04-19 07:11:08 +0200 <tvandinther> How do I use the `fromListWith` function? It says it is out of scope but I am unsure how to import it
2022-04-19 07:13:08 +0200 <tvandinther> I want the one from the map module
2022-04-19 07:14:32 +0200 <Cale> tvandinther: It would probably be good if it distinguished the value being defined from other variables, regardless of whether it was a function.
2022-04-19 07:14:47 +0200cdman(~dcm@user/dmc/x-4369397) (Remote host closed the connection)
2022-04-19 07:15:20 +0200cdman(~dcm@27.2.217.111)
2022-04-19 07:15:20 +0200cdman(~dcm@27.2.217.111) (Changing host)
2022-04-19 07:15:20 +0200cdman(~dcm@user/dmc/x-4369397)
2022-04-19 07:15:54 +0200 <Cale> import Data.Map qualified as Map
2022-04-19 07:16:02 +0200 <Cale> Map.fromListWith ...
2022-04-19 07:16:09 +0200 <Cale> oops
2022-04-19 07:16:16 +0200 <Cale> import qualified Data.Map as Map
2022-04-19 07:18:22 +0200 <Cale> You may alongside that want to also have an import like import Data.Map (Map) so that you don't have to qualify Map in types.
2022-04-19 07:19:52 +0200whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-04-19 07:24:50 +0200chargen(~chargen@D964062A.static.ziggozakelijk.nl) (Remote host closed the connection)
2022-04-19 07:25:10 +0200chargen(~chargen@D964062A.static.ziggozakelijk.nl)
2022-04-19 07:35:19 +0200Guest34(~Guest34@176.122.87.241)
2022-04-19 07:35:31 +0200Guest34(~Guest34@176.122.87.241) (Client Quit)
2022-04-19 07:36:25 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2022-04-19 07:38:42 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
2022-04-19 07:40:13 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com)
2022-04-19 07:42:31 +0200Me-me(~me-me@user/me-me) (Ping timeout: 246 seconds)
2022-04-19 07:43:17 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-04-19 07:44:48 +0200Me-me(~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net)
2022-04-19 07:45:19 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-04-19 07:45:48 +0200motherfsck(~motherfsc@user/motherfsck)
2022-04-19 07:45:49 +0200chargen(~chargen@D964062A.static.ziggozakelijk.nl) (Quit: Leaving)
2022-04-19 07:47:12 +0200Macbethwin(~chargen@D964062A.static.ziggozakelijk.nl) (Quit: Leaving)
2022-04-19 07:47:42 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2022-04-19 07:49:03 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
2022-04-19 07:49:26 +0200odnes(~odnes@5-203-240-200.pat.nym.cosmote.net)
2022-04-19 07:56:17 +0200Me-me(~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) (Changing host)
2022-04-19 07:56:17 +0200Me-me(~me-me@user/me-me)
2022-04-19 07:59:47 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com)
2022-04-19 08:03:47 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net)
2022-04-19 08:06:41 +0200jerry99(~330f3e76@cerf.good1.com) (Quit: CGI:IRC (Session timeout))
2022-04-19 08:07:04 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection)
2022-04-19 08:07:19 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
2022-04-19 08:08:48 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
2022-04-19 08:09:19 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-04-19 08:12:54 +0200phma_(phma@2001:5b0:215a:e258:fc67:1fe1:f22e:6962)
2022-04-19 08:14:03 +0200phma(~phma@host-67-44-208-158.hnremote.net) (Read error: Connection reset by peer)
2022-04-19 08:15:04 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal)
2022-04-19 08:18:13 +0200dwt_(~dwt_@c-98-198-103-176.hsd1.tx.comcast.net) (Ping timeout: 246 seconds)
2022-04-19 08:20:48 +0200dwt_(~dwt_@c-98-198-103-176.hsd1.tx.comcast.net)
2022-04-19 08:23:45 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 276 seconds)
2022-04-19 08:24:05 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-04-19 08:27:16 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net)
2022-04-19 08:33:31 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2022-04-19 08:37:08 +0200machinedgod(~machinedg@24.105.81.50)
2022-04-19 08:39:14 +0200fendor(~fendor@91.141.37.72.wireless.dyn.drei.com)
2022-04-19 08:41:19 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-04-19 08:42:06 +0200Wstfgl0(~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net)
2022-04-19 08:42:24 +0200Me-me(~me-me@user/me-me) (Read error: Connection reset by peer)
2022-04-19 08:42:53 +0200Wstfgl0Me-me
2022-04-19 08:43:55 +0200chele(~chele@user/chele)
2022-04-19 08:44:50 +0200Me-me(~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) (Changing host)
2022-04-19 08:44:50 +0200Me-me(~me-me@user/me-me)
2022-04-19 08:46:57 +0200 <Axman6> tvandinther: you might want to try switching your VS Code theme or installing new ones (through the same extensions tab you installed the Haskell plugin - see https://vscodethemes.com to easily fine ones you like). Some do a much better job than others differentiating between differents of sorts of lexemes than others - I particularly like the Monokai theme for HAskell in VS Code because it differentiated between more things than most themes
2022-04-19 08:47:33 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-04-19 08:48:31 +0200 <Axman6> once you have a few themes you like installed, hit ... whatever the equivalent of cmd-shift-p is, tyupe in "theme" and select Preferences: Color Theme. That'll give you a list of themes which will change as you move up and down them live so you can see what your actual code looks like
2022-04-19 08:49:19 +0200kaph__(~kaph@bo-18-157-187.service.infuturo.it) (Ping timeout: 240 seconds)
2022-04-19 08:50:51 +0200acidjnk(~acidjnk@p200300d0c722df64b44bf627258f714f.dip0.t-ipconnect.de)
2022-04-19 08:51:30 +0200akegalj(~akegalj@93-138-136-145.adsl.net.t-com.hr)
2022-04-19 08:52:14 +0200julian(~julian@20.83.116.49)
2022-04-19 08:56:32 +0200RevoGen(~RevoGen@laptop-grs098eo.bc.edu) (Remote host closed the connection)
2022-04-19 08:57:57 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-04-19 08:59:49 +0200gehmehgeh(~user@user/gehmehgeh)
2022-04-19 09:01:30 +0200Wstfgl0(~me-me@v.working.name)
2022-04-19 09:01:37 +0200Me-me(~me-me@user/me-me) (Read error: Connection reset by peer)
2022-04-19 09:01:44 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:61e6:c8e5:1064:c52e)
2022-04-19 09:03:19 +0200shriekingnoise(~shrieking@201.231.16.156) (Quit: Quit)
2022-04-19 09:03:43 +0200Wstfgl0Me-me
2022-04-19 09:04:57 +0200 <Axman6> zzz: enjoying this Ruby video, even if I know everything that's going on it's still fun
2022-04-19 09:16:18 +0200coot(~coot@213.134.190.95)
2022-04-19 09:16:22 +0200daniii_(uid550762@id-550762.ilkley.irccloud.com) ()
2022-04-19 09:17:09 +0200romesrf(~romes@185.5.8.134)
2022-04-19 09:19:35 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-04-19 09:20:16 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-19 09:20:53 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-04-19 09:22:33 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net)
2022-04-19 09:24:04 +0200 <tvandinther> Thanks Axman6
2022-04-19 09:24:21 +0200julian(~julian@20.83.116.49) (Remote host closed the connection)
2022-04-19 09:25:02 +0200julian(~julian@20.83.116.49)
2022-04-19 09:27:11 +0200bahamas(~lucian@84.232.140.158)
2022-04-19 09:27:27 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-04-19 09:29:47 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-04-19 09:30:24 +0200kaph(~kaph@151.19.251.152)
2022-04-19 09:30:42 +0200 <romesrf> o/
2022-04-19 09:31:11 +0200anomal(~anomal@87.227.196.109)
2022-04-19 09:32:18 +0200abastro(~abab9579@220.75.216.63)
2022-04-19 09:32:19 +0200 <Axman6> o/
2022-04-19 09:43:06 +0200zeenk(~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94)
2022-04-19 09:44:05 +0200mastarija(~mastarija@2a05:4f46:e04:6000:2897:ab56:96f1:cca3)
2022-04-19 09:46:37 +0200chomwitt(~chomwitt@2a02:587:dc1b:da00:1339:e02b:9822:2360)
2022-04-19 09:48:15 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net)
2022-04-19 09:52:54 +0200michalz(~michalz@185.246.204.61)
2022-04-19 09:54:01 +0200kamyar(~kamyar@91.184.78.171)
2022-04-19 09:55:48 +0200kamyar71(~kamyar@91.184.78.171)
2022-04-19 09:55:57 +0200 <kamyar71> Hello there
2022-04-19 09:55:59 +0200 <kamyar71> please check this
2022-04-19 09:56:00 +0200 <kamyar71> https://zerobin.net/?70b967b7e82b889b#jwW2a5GSS7iAHhiJuIzRtLedFfdTcdYXUtJKIDYD/rI=
2022-04-19 09:56:13 +0200 <kamyar71> Help me fix the problem
2022-04-19 09:56:28 +0200 <kamyar71> here: evaluate (PLAtomic p) f = f p
2022-04-19 09:58:55 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-04-19 09:59:27 +0200kamyar(~kamyar@91.184.78.171) (Quit: Leaving...)
2022-04-19 09:59:42 +0200 <kamyar71> Anyone can help please?
2022-04-19 10:00:45 +0200phma_phma
2022-04-19 10:00:53 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in)
2022-04-19 10:00:59 +0200nahcetan(~nate@98.45.169.16) (Read error: Connection reset by peer)
2022-04-19 10:01:25 +0200 <mastarija> kamyar71, what exactly is the problem?
2022-04-19 10:01:42 +0200 <kamyar71>  Couldn't match expected type ‘a1’ with actual type ‘a’
2022-04-19 10:01:55 +0200nahcetan(~nate@98.45.169.16)
2022-04-19 10:03:26 +0200 <mastarija> Just a sec
2022-04-19 10:05:47 +0200 <mastarija> kamyar71, your instance is too general
2022-04-19 10:06:07 +0200 <kamyar71> How can I fix?
2022-04-19 10:06:09 +0200hsw(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net)
2022-04-19 10:06:10 +0200 <mastarija> why are you using a class instead of just implementing the evaluate function?
2022-04-19 10:06:33 +0200foul_owl(~kerry@23.82.193.87) (Ping timeout: 256 seconds)
2022-04-19 10:06:49 +0200 <kamyar71> Since I want to be able to create multiple instances but with the same parts
2022-04-19 10:07:14 +0200 <mastarija> I recommend you just use plain functions
2022-04-19 10:07:24 +0200 <kamyar71> OK thanks letme try
2022-04-19 10:07:27 +0200 <mastarija> There's no difference other than naming
2022-04-19 10:08:19 +0200 <mastarija> kamyar71, https://zerobin.net/?a9aa438e3e9c81b0#cahom5dSwWuQS1GvmNAtg0w0ifXXiNVsX30/3FtR6DI=
2022-04-19 10:09:09 +0200 <kamyar71> But the wanted thing is just one evaluate function
2022-04-19 10:09:15 +0200 <kamyar71> there are more types like PLSentence
2022-04-19 10:09:31 +0200redb(~nmh@136.49.49.211) (Ping timeout: 260 seconds)
2022-04-19 10:10:00 +0200 <mastarija> For every instance you create a new function, it's just that they have the same name
2022-04-19 10:10:08 +0200 <mastarija> This can cause type inference problems later
2022-04-19 10:10:46 +0200 <mastarija> Anyway, in your case you had a class `class Interpretation p where evaluate :: p -> (a -> Bool) -> Bool`
2022-04-19 10:10:46 +0200ccntrq(~Thunderbi@2a01:e34:eccb:b060:b49f:b4db:d687:55bf)
2022-04-19 10:11:32 +0200 <mastarija> however, you have a variable `a` in your `evaluate` type signature
2022-04-19 10:12:54 +0200 <mastarija> And compiler doesn't know what that `a` is in relation to `p` so it can't match your `a` from `PLSentence a` to that `a` in `a -> Bool`
2022-04-19 10:14:48 +0200 <kamyar71> Yes I know but I did not find any better way
2022-04-19 10:14:58 +0200 <kamyar71> I do not want to use multi parameter class feature
2022-04-19 10:15:04 +0200 <mastarija> You could use multiparam
2022-04-19 10:15:15 +0200 <mastarija> Yes... not gonna work without that
2022-04-19 10:15:29 +0200 <mastarija> But type classes aren't needed in this case
2022-04-19 10:15:50 +0200 <mastarija> Does anyone know where I can find a detailed explanation on how to read inference rules? I did find some sources, but that is in relation to pure logic. I'm more interested in understanding symbol conventions in the context of programming languages.
2022-04-19 10:17:01 +0200 <mastarija> I kind of understand what's going on, but it's never explicitly explained what certain symbols mean. They are just "presented" and I'm supposed to pick it up through osmosis or something.
2022-04-19 10:18:38 +0200 <mastarija> Like, what's `Γ(x) = v | Γ ⊢ x ⇓ v` supposed to mean?
2022-04-19 10:18:53 +0200 <mastarija> Or rather, how am I supposed to read that?
2022-04-19 10:19:24 +0200 <mastarija> If there's v assigned to x in context Gamma, then x evaluates to v in context Gamma?
2022-04-19 10:19:59 +0200 <mastarija> Also, I'm not sure what those parentheses around x mean.
2022-04-19 10:20:31 +0200 <abastro> I do not have knowledge on this other than my uni class on Proglangs, but I think the meaning should be dependent on each paper.
2022-04-19 10:20:45 +0200 <abastro> Usually papers begin with defining what they mean with these syntax
2022-04-19 10:20:55 +0200foul_owl(~kerry@23.82.193.88)
2022-04-19 10:21:16 +0200Midjak(~Midjak@82.66.147.146)
2022-04-19 10:21:19 +0200 <abastro> Perhaps it was mentioned in papers this paper is referring to
2022-04-19 10:21:37 +0200 <abastro> Never seen that `|` part, personally
2022-04-19 10:22:47 +0200 <mastarija> That's just a horizontal dividing line separating premises from the conclusions
2022-04-19 10:23:00 +0200 <mastarija> Adapted for our plain text experience :)
2022-04-19 10:23:48 +0200 <mastarija> abastro, I've found some Harward lectures from CS153 so I'm looking through that
2022-04-19 10:24:02 +0200 <mastarija> but that same notation is everywhere
2022-04-19 10:24:37 +0200 <mastarija> with gamma and delta environments, where gamma is usually for types if I've figured it out correctly
2022-04-19 10:26:19 +0200 <abastro> Oh in that case, I guess it makes sense
2022-04-19 10:26:35 +0200 <abastro> I think this is for evaluation, tho I might be mistaken
2022-04-19 10:26:57 +0200 <abastro> When the environment has mapped `x` to `v`, under that envionment, `x` evaluates to v.
2022-04-19 10:27:13 +0200 <mastarija> abastro, yes, that is for evaluation from my understanding
2022-04-19 10:27:31 +0200 <mastarija> but my problem is same as yours : "I might be mistaken"
2022-04-19 10:27:50 +0200 <abastro> Haha
2022-04-19 10:27:51 +0200 <mastarija> and I can't find any resource that explicitly states what this means
2022-04-19 10:27:56 +0200 <abastro> Yea, I mean
2022-04-19 10:28:01 +0200 <abastro> I learned similar expression
2022-04-19 10:28:22 +0200kuribas(~user@ptr-17d51end1q9g3xjtvcu.18120a2.ip6.access.telenet.be)
2022-04-19 10:28:42 +0200 <abastro> Never seen ⇓ being used instead of =>
2022-04-19 10:28:59 +0200 <abastro> In this way*
2022-04-19 10:29:11 +0200 <abastro> Tho, considering how it reads, I think that one should be evaluation
2022-04-19 10:29:54 +0200 <mastarija> Yes, I've found => in another source
2022-04-19 10:29:56 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-04-19 10:30:23 +0200 <mastarija> I mean, what's the point if everyone just writes things any way they like.
2022-04-19 10:30:39 +0200 <abastro> Agreed!
2022-04-19 10:31:57 +0200 <mastarija> abastro, also, when I'm manually trying to type check a piece of code, I'm assuming I'm building the derivation tree from bottom up
2022-04-19 10:32:20 +0200 <mastarija> At the bottom is my whole piece of code that I'm trying to "check", and from there I build my premises?
2022-04-19 10:32:33 +0200 <mastarija> Or is it other way around?
2022-04-19 10:32:33 +0200 <abastro> Yep, conceptually. (Not always though, I think)
2022-04-19 10:32:40 +0200 <mastarija> Goddamnit
2022-04-19 10:32:47 +0200 <abastro> Yea you start from bottom *usually*
2022-04-19 10:33:01 +0200 <mastarija> With the whole expression, which I then try to decompose
2022-04-19 10:33:04 +0200 <abastro> Tho rules might be complicated enough so that you sometimes have to.. meh
2022-04-19 10:33:25 +0200 <mastarija> Ok, so it's handwawy
2022-04-19 10:33:38 +0200 <mastarija> *handwavy
2022-04-19 10:34:29 +0200redb(~nmh@136.49.49.211)
2022-04-19 10:34:37 +0200 <abastro> At least HM type system allows you to build tree from bottom to up
2022-04-19 10:34:52 +0200 <abastro> Dividing into pieces, and then at the top you decide the type
2022-04-19 10:35:03 +0200 <abastro> Then you come back down combining the types
2022-04-19 10:35:15 +0200 <abastro> Oh wait, perhaps you still need variables to unify with HM. hmm
2022-04-19 10:37:19 +0200 <lortabac> mastarija: "Does anyone know where I can find..." -> Types and Programming Languages by Pierce is a good introduction to the topic
2022-04-19 10:39:18 +0200frost(~frost@user/frost)
2022-04-19 10:39:26 +0200redb(~nmh@136.49.49.211) (Ping timeout: 272 seconds)
2022-04-19 10:40:35 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-04-19 10:45:13 +0200gurkenglas(~gurkengla@178.12.18.212)
2022-04-19 10:45:16 +0200mastarija(~mastarija@2a05:4f46:e04:6000:2897:ab56:96f1:cca3) (Quit: Leaving)
2022-04-19 10:45:47 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-04-19 10:47:57 +0200aman(~aman@user/aman)
2022-04-19 10:48:47 +0200kamyar71(~kamyar@91.184.78.171) (Quit: Client closed)
2022-04-19 10:51:42 +0200redb(~nmh@136.49.49.211)
2022-04-19 10:53:35 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2022-04-19 10:53:45 +0200krappix(~krappix@nat-inria-interne-72-gw-01-lne.lille.inria.fr)
2022-04-19 10:55:33 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-04-19 10:56:10 +0200x_kuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-04-19 10:56:30 +0200redb(~nmh@136.49.49.211) (Ping timeout: 276 seconds)
2022-04-19 10:57:29 +0200mastarija(~mastarija@2a05:4f46:e04:6000:2897:ab56:96f1:cca3)
2022-04-19 10:58:33 +0200xkuru(~xkuru@user/xkuru)
2022-04-19 10:58:54 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-04-19 11:00:09 +0200Artem[m](~artemtype@2001:470:69fc:105::75b) (Quit: You have been kicked for being idle)
2022-04-19 11:00:15 +0200hughjfchen[m](~hughjfche@2001:470:69fc:105::c29d) (Quit: You have been kicked for being idle)
2022-04-19 11:01:36 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 272 seconds)
2022-04-19 11:07:31 +0200rembo10(~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2022-04-19 11:08:25 +0200rembo10(~rembo10@main.remulis.com)
2022-04-19 11:10:04 +0200krappix(~krappix@nat-inria-interne-72-gw-01-lne.lille.inria.fr) (Ping timeout: 250 seconds)
2022-04-19 11:10:13 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-04-19 11:12:13 +0200ubert(~Thunderbi@2a02:8109:9880:303c:bbe6:420f:2b6c:e0f7)
2022-04-19 11:24:00 +0200coot_(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-04-19 11:24:57 +0200titi(~Srain@sunp.ient.rwth-aachen.de)
2022-04-19 11:25:28 +0200redb(~nmh@136.49.49.211)
2022-04-19 11:27:03 +0200coot(~coot@213.134.190.95) (Ping timeout: 276 seconds)
2022-04-19 11:29:03 +0200xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-04-19 11:29:37 +0200titi(~Srain@sunp.ient.rwth-aachen.de) (Remote host closed the connection)
2022-04-19 11:29:39 +0200redb(~nmh@136.49.49.211) (Ping timeout: 240 seconds)
2022-04-19 11:31:36 +0200acidjnk(~acidjnk@p200300d0c722df64b44bf627258f714f.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2022-04-19 11:40:17 +0200 <abastro> Is there a safe replacement for `zip l (tail l)`?
2022-04-19 11:40:44 +0200 <abastro> Like, the one which gives empty list or something
2022-04-19 11:42:08 +0200nattiestnate(~nate@202.138.250.17)
2022-04-19 11:46:28 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-19 11:48:20 +0200 <tomsmeding> abastro: `zip l (drop 1 l)`
2022-04-19 11:50:15 +0200abastro(~abab9579@220.75.216.63) (Ping timeout: 256 seconds)
2022-04-19 11:51:06 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 276 seconds)
2022-04-19 11:51:06 +0200nattiestnate(~nate@202.138.250.17) (Quit: WeeChat 3.5)
2022-04-19 11:51:13 +0200 <tomsmeding> mastarija: perhaps https://www.cs.uu.nl/docs/vakken/mcpd/2021/website/notes/Semantics_notes.pdf together with section 1.3 of https://www.cs.uu.nl/docs/vakken/mcpd/2021/website/notes/MinHs_notes.pdf ?
2022-04-19 11:53:55 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-04-19 11:55:05 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-19 11:57:37 +0200deadmarshal_(~deadmarsh@95.38.228.226) (Ping timeout: 256 seconds)
2022-04-19 11:58:46 +0200 <tomsmeding> abastro[m]: mastarija: that ⇓ for evaluation is super common and indicates big-step semantics
2022-04-19 11:58:49 +0200redb(~nmh@136.49.49.211)
2022-04-19 11:58:49 +0200phma(phma@2001:5b0:215a:e258:fc67:1fe1:f22e:6962) (Read error: Connection reset by peer)
2022-04-19 11:58:57 +0200 <tomsmeding> it is indeed read as "evaluates to" with low precedence
2022-04-19 11:59:50 +0200phma(~phma@host-67-44-208-45.hnremote.net)
2022-04-19 12:00:03 +0200 <tomsmeding> horizontal arrows are generally used for small-step semantics (small-step means "single step at a time", non-recursive, single atomic operation; big-step means basically tree-walking interpreter as you'd naturally write in haskell over an AST)
2022-04-19 12:01:35 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-19 12:02:38 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-04-19 12:03:17 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-19 12:10:16 +0200xff0x_(~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 246 seconds)
2022-04-19 12:17:55 +0200Null_A_(~null_a@2601:645:8700:2290:ed24:4c30:909e:37d0)
2022-04-19 12:18:51 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-04-19 12:19:05 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
2022-04-19 12:19:10 +0200Null_A(~null_a@2601:645:8700:2290:9c14:dd1b:c930:439d) (Ping timeout: 250 seconds)
2022-04-19 12:20:40 +0200 <abastro[m]> tomsmeding: Oh I was dumb..
2022-04-19 12:20:57 +0200 <abastro[m]> I forgot about drop 1
2022-04-19 12:20:58 +0200 <abastro[m]> Btw
2022-04-19 12:21:09 +0200 <abastro[m]> In my uni, the notation was inverted.
2022-04-19 12:21:24 +0200 <abastro[m]> => was used for big step semantics
2022-04-19 12:21:57 +0200 <abastro[m]> ⇓ was used for small step semantics
2022-04-19 12:22:16 +0200 <abastro[m]> Which was why I was somewhat confused.
2022-04-19 12:22:37 +0200 <tomsmeding> O.o
2022-04-19 12:22:40 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-04-19 12:23:46 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-04-19 12:24:31 +0200tvandinther(~tvandinth@2406:e002:6815:1801:2c95:5009:a36c:8152) (Quit: Client closed)
2022-04-19 12:26:55 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-04-19 12:28:42 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-04-19 12:32:59 +0200redb(~nmh@136.49.49.211)
2022-04-19 12:36:15 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-04-19 12:36:18 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-19 12:36:43 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2022-04-19 12:36:59 +0200redb(~nmh@136.49.49.211) (Ping timeout: 240 seconds)
2022-04-19 12:39:00 +0200Lord_of_Life_Lord_of_Life
2022-04-19 12:39:32 +0200odnes(~odnes@5-203-240-200.pat.nym.cosmote.net) (Remote host closed the connection)
2022-04-19 12:39:54 +0200odnes(~odnes@5-203-240-200.pat.nym.cosmote.net)
2022-04-19 12:40:56 +0200abastro[m]uploaded an image: (120KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/CduWXAxUUmHTibMxijZbeyVC/Screenshot_2… >
2022-04-19 12:41:40 +0200 <tomsmeding> interesting
2022-04-19 12:41:53 +0200 <abastro[m]> tomsmeding: I guess I was taught wrong
2022-04-19 12:41:57 +0200 <tomsmeding> ¯\_(ツ)_/¯
2022-04-19 12:42:02 +0200 <tomsmeding> it's just notation in the end
2022-04-19 12:42:02 +0200kaph(~kaph@151.19.251.152) (Read error: Connection reset by peer)
2022-04-19 12:42:07 +0200theproffesor(~theprofff@user/theproffesor) (Ping timeout: 246 seconds)
2022-04-19 12:42:16 +0200 <abastro[m]> By a stubborm professor
2022-04-19 12:42:17 +0200 <abastro[m]> Oh.
2022-04-19 12:42:37 +0200 <tomsmeding> maybe the common notation changed over time, or customs differ between sub-communities within theoretical CS?
2022-04-19 12:42:42 +0200theproffesor(~theprofff@user/theproffesor)
2022-04-19 12:42:49 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
2022-04-19 12:43:25 +0200 <abastro[m]> Yep, I guess
2022-04-19 12:44:22 +0200 <tomsmeding> I mean, people get all flame-war about notation, but in the end it's just notation :p
2022-04-19 12:44:42 +0200 <tomsmeding> it's good and useful to have a single standard notation for stuff though
2022-04-19 12:46:32 +0200 <abastro[m]> Well I remembered the small step thing wrong, '->' was used in the class
2022-04-19 12:46:46 +0200 <abastro[m]> The downward arrow is used for continuation-involving evaluation
2022-04-19 12:47:08 +0200abastro[m]uploaded an image: (235KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/tuCHZAsDZrjMxrrKMtJAzSUo/Screenshot_2… >
2022-04-19 12:48:07 +0200 <abastro[m]> Likely wanted to use fancy arrows at one place
2022-04-19 12:48:26 +0200 <abastro[m]> (I disliked how the class was taught in scala btw)
2022-04-19 12:50:44 +0200 <tomsmeding> ooh continuations
2022-04-19 12:51:04 +0200 <tomsmeding> ah scala, maybe this is standard in the scala community? That's exactly my point, my custom is from the haskell community
2022-04-19 12:52:24 +0200odnes(~odnes@5-203-240-200.pat.nym.cosmote.net) (Quit: Leaving)
2022-04-19 12:54:02 +0200raym(~raym@user/raym) (Quit: kernel update, rebooting...)
2022-04-19 12:55:35 +0200raym(~raym@user/raym)
2022-04-19 13:05:24 +0200 <abastro[m]> Programming language semantics differ for scala community vs haskell community?
2022-04-19 13:05:24 +0200 <abastro[m]> Wow
2022-04-19 13:06:38 +0200redb(~nmh@136.49.49.211)
2022-04-19 13:07:47 +0200cdman(~dcm@user/dmc/x-4369397) (Remote host closed the connection)
2022-04-19 13:10:16 +0200deadmarshal_(~deadmarsh@95.38.228.226)
2022-04-19 13:10:39 +0200redb(~nmh@136.49.49.211) (Ping timeout: 240 seconds)
2022-04-19 13:11:55 +0200 <tomsmeding> programming language semantics _notation_
2022-04-19 13:12:18 +0200 <abastro[m]> Aah
2022-04-19 13:12:20 +0200 <tomsmeding> but I don't know, too lazy to check
2022-04-19 13:13:58 +0200akegalj(~akegalj@93-138-136-145.adsl.net.t-com.hr) (Ping timeout: 246 seconds)
2022-04-19 13:14:19 +0200deadmarshal_(~deadmarsh@95.38.228.226) (Ping timeout: 240 seconds)
2022-04-19 13:21:03 +0200abastro(~abab9579@220.75.216.63)
2022-04-19 13:27:21 +0200chele(~chele@user/chele) (Remote host closed the connection)
2022-04-19 13:29:34 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-04-19 13:29:47 +0200chele(~chele@user/chele)
2022-04-19 13:30:46 +0200CAT_S(~apic@brezn3.muc.ccc.de) (Ping timeout: 246 seconds)
2022-04-19 13:30:46 +0200simeon(~pi@dslb-088-076-113-221.088.076.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2022-04-19 13:31:01 +0200DNH(~DNH@8.44.0.68)
2022-04-19 13:31:15 +0200Lears(~Leary]@122-58-90-96-vdsl.sparkbb.co.nz) (Remote host closed the connection)
2022-04-19 13:31:37 +0200simeon(~pi@dslb-088-076-113-221.088.076.pools.vodafone-ip.de)
2022-04-19 13:31:44 +0200CAT_S(apic@brezn3.muc.ccc.de)
2022-04-19 13:32:15 +0200[Leary](~Leary]@122-58-90-96-vdsl.sparkbb.co.nz)
2022-04-19 13:32:26 +0200cdman(~dcm@user/dmc/x-4369397)
2022-04-19 13:32:35 +0200off^(~off@50-192-56-193-static.hfc.comcastbusiness.net)
2022-04-19 13:36:15 +0200redb(~nmh@136.49.49.211)
2022-04-19 13:38:19 +0200kaph(~kaph@151.43.200.113)
2022-04-19 13:39:25 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-19 13:40:34 +0200redb(~nmh@136.49.49.211) (Ping timeout: 246 seconds)
2022-04-19 13:41:52 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net)
2022-04-19 13:43:04 +0200MajorBiscuit(~MajorBisc@145.94.234.148)
2022-04-19 13:44:03 +0200bahamas(~lucian@84.232.140.158)
2022-04-19 13:46:59 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2022-04-19 13:53:35 +0200schuelermine(~anselmsch@user/schuelermine)
2022-04-19 13:53:53 +0200redb(~nmh@136.49.49.211)
2022-04-19 13:54:16 +0200 <schuelermine> Wouldn’t it (maybe) be a good idea to extend record syntax from constructors to arbitrary functions to allow named parameters?
2022-04-19 13:54:33 +0200 <schuelermine> It seems like a natural and convenient extension of the syntax
2022-04-19 13:55:02 +0200 <schuelermine> You could also allow defining defaults in the record parameters lazily
2022-04-19 13:55:20 +0200 <schuelermine> This is used, for instance, in Nix, to great effect, to make smart “constructors”
2022-04-19 13:55:28 +0200schuelermine(~anselmsch@user/schuelermine) ()
2022-04-19 13:58:11 +0200redb(~nmh@136.49.49.211) (Ping timeout: 260 seconds)
2022-04-19 13:58:36 +0200 <geekosaur> bit late since they left, but I think most people consider record syntax a mistake
2022-04-19 14:09:41 +0200 <abastro> Which record syntax?
2022-04-19 14:10:29 +0200 <merijn> schuelermine[m]: I mean, you can just change your function to accept a record as input and get 100% of that functionality without any changes?
2022-04-19 14:10:43 +0200 <merijn> geekosaur: Record syntax is fine, derived field selectors are a mistake
2022-04-19 14:10:56 +0200 <merijn> All hail -XNoFieldSelectors
2022-04-19 14:11:01 +0200 <abastro> derived field selectors?
2022-04-19 14:11:16 +0200 <abastro> Oh you mean the autogenerated functions for each field of record?
2022-04-19 14:11:22 +0200 <abastro> Obtaining that field from record
2022-04-19 14:11:30 +0200 <geekosaur> yes
2022-04-19 14:11:30 +0200 <merijn> abastro: The fact that "data Foo = Foo { bar :: Int }" generates a function "bar :: Foo -> Int"
2022-04-19 14:11:42 +0200 <abastro> Yea, eww
2022-04-19 14:11:46 +0200schuelermine(~anselmsch@user/schuelermine)
2022-04-19 14:12:00 +0200 <abastro> I also dislike it. Tho I guess it was good for brevity
2022-04-19 14:12:17 +0200 <merijn> I say make NoFieldSelectors and NamedFieldPuns the default in Haskell Prime (ha! as if that'll happen)
2022-04-19 14:12:28 +0200 <merijn> And then records are already a ton nicer
2022-04-19 14:12:50 +0200 <abastro> NamedFieldPuns?
2022-04-19 14:12:52 +0200 <schuelermine> you could use record syntax for map literals
2022-04-19 14:13:08 +0200 <schuelermine> abastro: means you can pattern match by writing
2022-04-19 14:13:10 +0200 <schuelermine> f { foo } = foo
2022-04-19 14:13:14 +0200 <abastro> Eh
2022-04-19 14:13:18 +0200 <abastro> Ehhhh
2022-04-19 14:13:21 +0200 <merijn> Instead of having to write
2022-04-19 14:13:24 +0200 <abastro> I guess that is good for brevity
2022-04-19 14:13:32 +0200 <merijn> 'f Foo{foo = x} = x'
2022-04-19 14:13:36 +0200 <merijn> Which, frankly, sucks
2022-04-19 14:13:41 +0200 <abastro> Yea indeed, provides great brevity
2022-04-19 14:14:04 +0200 <abastro> Oh right, with NoFieldSelectors those won't be shadowing the field selectors right?
2022-04-19 14:14:10 +0200 <abastro> That was why I was concerned
2022-04-19 14:14:14 +0200 <abastro> Hmmm
2022-04-19 14:14:16 +0200 <schuelermine> 'foo (Foo . bar) (\Foo {foo = foo} = foo)'
2022-04-19 14:15:06 +0200abastro(~abab9579@220.75.216.63) (Quit: testing xmonad)
2022-04-19 14:16:44 +0200 <schuelermine> oh god xmonad
2022-04-19 14:16:46 +0200 <schuelermine> I just hoogled '(||*)' and it turns out xmonad provides a horrendous family of operators
2022-04-19 14:16:48 +0200 <schuelermine> (****||*), (****||***), (***||*), (***||**), (**||*), (**||***), (*||*)
2022-04-19 14:21:35 +0200benin(~benin@183.82.204.110) (Quit: The Lounge - https://thelounge.chat)
2022-04-19 14:22:25 +0200 <schuelermine> Oh also puns means you can do `f foo = Foo { foo }` instead of `f foo = Foo { foo = foo }`
2022-04-19 14:23:46 +0200abastro(~abab9579@220.75.216.63)
2022-04-19 14:24:04 +0200schuelermine(~anselmsch@user/schuelermine) (Quit: WeeChat 3.4.1)
2022-04-19 14:25:48 +0200zincy(~zincy@host86-160-236-152.range86-160.btcentralplus.com)
2022-04-19 14:26:35 +0200redb(~nmh@136.49.49.211)
2022-04-19 14:26:35 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-04-19 14:29:41 +0200frost(~frost@user/frost) (Quit: Client closed)
2022-04-19 14:29:56 +0200zincy(~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection)
2022-04-19 14:30:22 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-04-19 14:30:35 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2022-04-19 14:31:39 +0200redb(~nmh@136.49.49.211) (Ping timeout: 276 seconds)
2022-04-19 14:33:05 +0200 <geekosaur> those are trying to visually indicate how they divide up the screen
2022-04-19 14:33:25 +0200 <geekosaur> and yes, some parts of contrib are … interesting
2022-04-19 14:35:12 +0200Pickchea(~private@user/pickchea)
2022-04-19 14:39:15 +0200kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2022-04-19 14:39:31 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2022-04-19 14:41:37 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net)
2022-04-19 14:42:24 +0200xff0x_(~xff0x@om126194210237.10.openmobile.ne.jp)
2022-04-19 14:43:50 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-04-19 14:44:53 +0200ishaan(~ishaan@122.161.48.109)
2022-04-19 14:44:59 +0200ishaan(~ishaan@122.161.48.109) (Client Quit)
2022-04-19 14:45:39 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-04-19 14:46:35 +0200kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2022-04-19 14:51:55 +0200ldlework(~hexeme@user/hexeme) (Quit: co'o ro do)
2022-04-19 14:52:47 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-04-19 14:54:27 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-04-19 14:55:16 +0200hexeme(~hexeme@user/hexeme)
2022-04-19 14:55:54 +0200acidjnk(~acidjnk@p200300d0c722df64b44bf627258f714f.dip0.t-ipconnect.de)
2022-04-19 14:57:29 +0200sprout(~quassel@2a02-a467-ccd6-1-61ea-c654-ec6a-777e.fixed6.kpn.net) (Ping timeout: 248 seconds)
2022-04-19 14:58:01 +0200redb(~nmh@136.49.49.211)
2022-04-19 14:58:51 +0200tomboy64(~tomboy64@user/tomboy64) (Ping timeout: 256 seconds)
2022-04-19 14:59:44 +0200DNH(~DNH@8.44.0.68) (Ping timeout: 272 seconds)
2022-04-19 15:00:54 +0200chexum_(~quassel@gateway/tor-sasl/chexum)
2022-04-19 15:01:13 +0200chenqisu1(~chenqisu1@183.217.200.38) (Quit: Leaving)
2022-04-19 15:01:35 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
2022-04-19 15:02:32 +0200 <raehik> I'm upgrading some code to GHC 9.2 . GHC is complaining about places I've used `_typevar` to explicitly not bind a typevar, asking me to use PartialTypeSigs. Is there another way to do this, that doesn't need that extension?
2022-04-19 15:02:51 +0200redb(~nmh@136.49.49.211) (Ping timeout: 276 seconds)
2022-04-19 15:02:57 +0200 <raehik> or is it right to use that extension here? (haven't touched it before)
2022-04-19 15:03:59 +0200kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2022-04-19 15:04:09 +0200 <raehik> code snippet, one of the signatures that errors https://github.com/raehik/gtvm-hs/blob/main/app/Common/Util.hs#L37
2022-04-19 15:05:03 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
2022-04-19 15:05:45 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-04-19 15:07:10 +0200neurocyte8614492(~neurocyte@IP-045136169156.dynamic.medianet-world.de)
2022-04-19 15:07:10 +0200neurocyte8614492(~neurocyte@IP-045136169156.dynamic.medianet-world.de) (Changing host)
2022-04-19 15:07:10 +0200neurocyte8614492(~neurocyte@user/neurocyte)
2022-04-19 15:07:26 +0200 <raehik> ah not to worry. I think I wrote that when I didn't understand bringing typevar scoping. Not putting it in forall means it's not bound anyway.
2022-04-19 15:07:37 +0200 <raehik> s/bringing//
2022-04-19 15:09:19 +0200acidjnk(~acidjnk@p200300d0c722df64b44bf627258f714f.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-04-19 15:09:51 +0200kaph(~kaph@151.43.200.113) (Read error: Connection reset by peer)
2022-04-19 15:12:51 +0200 <merijn> raehik: None of the type names on line 37 are defined in that file, so it's impossible to tell
2022-04-19 15:13:48 +0200 <raehik> merijn: Sorry, I didn't send the unique commit so it's showing the updated version. I had `Stream 'StreamOut _s` in place of `Stream 'StreamOut s`
2022-04-19 15:14:14 +0200MajorBiscuit(~MajorBisc@145.94.234.148) (Ping timeout: 250 seconds)
2022-04-19 15:14:45 +0200 <raehik> That now breaks on GHC 9.2 with a note about PartialTypeSignatures. But now I realize I don't need the underscore, since by not explicitly quantifying it stays out of my way
2022-04-19 15:14:57 +0200MajorBiscuit(~MajorBisc@145.94.234.148)
2022-04-19 15:15:24 +0200 <raehik> had only just learned about datakinds I think
2022-04-19 15:15:34 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-04-19 15:15:51 +0200oxide(~lambda@user/oxide)
2022-04-19 15:17:21 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-04-19 15:17:31 +0200redb(~nmh@136.49.49.211)
2022-04-19 15:19:42 +0200sprout(~quassel@2a02-a45f-f170-1-2c70-4ee9-c067-7549.fixed6.kpn.net)
2022-04-19 15:20:30 +0200aeka(~aeka@2606:6080:1001:13:a777:ff73:dfdc:3ab0) (Quit: ZNC 1.8.2 - https://znc.in)
2022-04-19 15:21:00 +0200mastarija_(~mastarija@2a05:4f46:e04:6000:2897:ab56:96f1:cca3)
2022-04-19 15:23:44 +0200Sgeo(~Sgeo@user/sgeo)
2022-04-19 15:23:46 +0200akegalj_(~akegalj@93-138-136-145.adsl.net.t-com.hr)
2022-04-19 15:24:08 +0200mastarija(~mastarija@2a05:4f46:e04:6000:2897:ab56:96f1:cca3) (Ping timeout: 248 seconds)
2022-04-19 15:26:16 +0200redb(~nmh@136.49.49.211) (Ping timeout: 248 seconds)
2022-04-19 15:26:26 +0200zebrag(~chris@user/zebrag)
2022-04-19 15:33:22 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-19 15:37:03 +0200redb(~nmh@136.49.49.211)
2022-04-19 15:37:24 +0200tomboy64(~tomboy64@user/tomboy64)
2022-04-19 15:37:32 +0200akegalj_(~akegalj@93-138-136-145.adsl.net.t-com.hr) (Quit: leaving)
2022-04-19 15:38:03 +0200Pickchea(~private@user/pickchea) (Ping timeout: 256 seconds)
2022-04-19 15:39:39 +0200sprout(~quassel@2a02-a45f-f170-1-2c70-4ee9-c067-7549.fixed6.kpn.net) (Ping timeout: 240 seconds)
2022-04-19 15:40:40 +0200vysn(~vysn@user/vysn) (Ping timeout: 250 seconds)
2022-04-19 15:41:27 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-19 15:41:52 +0200pavonia(~user@user/siracusa) (Read error: Connection reset by peer)
2022-04-19 15:42:59 +0200MajorBiscuit(~MajorBisc@145.94.234.148) (Ping timeout: 240 seconds)
2022-04-19 15:44:09 +0200sprout(~quassel@2a02-a45f-f170-1-2c70-4ee9-c067-7549.fixed6.kpn.net)
2022-04-19 15:44:53 +0200aman(~aman@user/aman) (Quit: aman)
2022-04-19 15:45:25 +0200pavonia(~user@user/siracusa)
2022-04-19 15:46:24 +0200MajorBiscuit(~MajorBisc@145.94.234.148)
2022-04-19 15:47:49 +0200abastro(~abab9579@220.75.216.63) (Remote host closed the connection)
2022-04-19 15:49:00 +0200 <tomsmeding> Why can I not use a [t| |] splice in a typed $$( ) splice?
2022-04-19 15:49:15 +0200 <tomsmeding> s/[t| |] splice/[t| |] quote/
2022-04-19 15:50:38 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-04-19 15:50:38 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-04-19 15:50:38 +0200wroathe(~wroathe@user/wroathe)
2022-04-19 15:50:40 +0200mastarija__(~mastarija@2a05:4f46:e04:6000:3db0:a561:6353:b491)
2022-04-19 15:53:51 +0200aeka(~aeka@user/hiruji)
2022-04-19 15:53:58 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-04-19 15:53:59 +0200mastarija_(~mastarija@2a05:4f46:e04:6000:2897:ab56:96f1:cca3) (Ping timeout: 240 seconds)
2022-04-19 15:54:27 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-19 15:55:00 +0200 <geekosaur> looks like you need to use a typed quotation in a typed splice? [t|| ... ||]
2022-04-19 15:55:32 +0200 <tomsmeding> geekosaur: [t|| doesn't exist, and wouldn't make sense, because it should return a Type and not an Exp
2022-04-19 15:55:39 +0200Guest85(~Guest85@165.134.212.71)
2022-04-19 15:56:01 +0200 <tomsmeding> it would make sense if there was a phantom-typed wrapper TType or something, just like there is 'TExp a' around 'Exp'
2022-04-19 15:56:29 +0200 <geekosaur> as of 9.2.2 it's Code Q Type, looks as if
2022-04-19 15:56:44 +0200redb(~nmh@136.49.49.211)
2022-04-19 15:56:52 +0200 <tomsmeding> I'm on 9.2.2
2022-04-19 15:57:04 +0200Guest85(~Guest85@165.134.212.71) (Client Quit)
2022-04-19 15:57:52 +0200jakalx(~jakalx@base.jakalx.net)
2022-04-19 15:58:49 +0200 <tomsmeding> geekosaur: 'Code Q Type' is ismomorphic (newtype wrapper) to 'Q (TExp Type)', which is isomorphic (newtype wrapper) to 'Q Exp'
2022-04-19 15:58:58 +0200 <tomsmeding> it's an expression that returns a type at runtime, which is not what I want
2022-04-19 15:59:16 +0200 <tomsmeding> (and not what [t| does, which is return the Type at compile-time)
2022-04-19 15:59:25 +0200 <tomsmeding> I was confused for a while too :p
2022-04-19 15:59:55 +0200 <tomsmeding> (but thanks for checking!)
2022-04-19 16:00:36 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 250 seconds)
2022-04-19 16:01:17 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-19 16:01:58 +0200redb(~nmh@136.49.49.211)
2022-04-19 16:02:59 +0200mastarija__(~mastarija@2a05:4f46:e04:6000:3db0:a561:6353:b491) (Ping timeout: 240 seconds)
2022-04-19 16:04:41 +0200mastarija__(~mastarija@2a05:4f46:e04:6000:a5e2:63ce:2368:50db)
2022-04-19 16:07:32 +0200redb(~nmh@136.49.49.211) (Ping timeout: 250 seconds)
2022-04-19 16:07:55 +0200 <schuelermine[m]> Can you generate setters for only some properties using the lens library?
2022-04-19 16:10:36 +0200 <Taneb> schuelermine[m]: you can use https://hackage.haskell.org/package/lens-5.1/docs/Control-Lens-TH.html#v:makeLensesFor makeLensesFor
2022-04-19 16:10:47 +0200 <schuelermine[m]> thanks!
2022-04-19 16:11:11 +0200Pickchea(~private@user/pickchea)
2022-04-19 16:12:59 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-04-19 16:13:11 +0200stefan-_(~cri@42dots.de) (Ping timeout: 256 seconds)
2022-04-19 16:14:48 +0200haritz(~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk)
2022-04-19 16:14:48 +0200haritz(~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk) (Changing host)
2022-04-19 16:14:48 +0200haritz(~hrtz@user/haritz)
2022-04-19 16:18:57 +0200kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2022-04-19 16:19:03 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-19 16:22:09 +0200 <maerwald> tomsmeding: is it time to move the playground out of beta?
2022-04-19 16:23:00 +0200 <tomsmeding> maerwald: I haven't had time to work on it anymore in the past weeks sorry
2022-04-19 16:23:46 +0200 <tomsmeding> maerwald: I feel like there are a few items in this list that would need to be fixed first https://github.com/tomsmeding/pastebin-haskell/blob/play/TODO.txt
2022-04-19 16:24:41 +0200 <tomsmeding> in particular: https (I should do that), tab key, -N (I should do that), handshake, memory limit, SIGKILL
2022-04-19 16:25:17 +0200 <tomsmeding> I will probably have some time coming weekend
2022-04-19 16:26:39 +0200shriekingnoise(~shrieking@201.231.16.156)
2022-04-19 16:26:39 +0200redb(~nmh@136.49.49.211)
2022-04-19 16:26:47 +0200stefan-_(~cri@42dots.de)
2022-04-19 16:27:08 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-04-19 16:28:00 +0200 <maerwald> make it so :D
2022-04-19 16:28:05 +0200 <tomsmeding> :p
2022-04-19 16:28:07 +0200 <tomsmeding> I'll try
2022-04-19 16:28:41 +0200 <maerwald> arjun wanted to work on the CSS, but I'm worried he ragequitted
2022-04-19 16:28:47 +0200 <tomsmeding> lol
2022-04-19 16:28:50 +0200 <tomsmeding> I can have a look at css too
2022-04-19 16:28:57 +0200 <maerwald> well, css can only give you grief, so
2022-04-19 16:29:05 +0200 <tomsmeding> I won't be as fast and won't be as """modern""" probably, but eh
2022-04-19 16:29:13 +0200 <tomsmeding> perhaps I can use the same framework as I used for paste.tomsmeding.com
2022-04-19 16:29:20 +0200 <maerwald> it's like harvesting asparagus
2022-04-19 16:29:22 +0200 <tomsmeding> might be nice if the theme is consistent as well
2022-04-19 16:29:32 +0200tomsmedingdoesn't know anything about harvesting asparagus
2022-04-19 16:29:51 +0200 <maerwald> bleeding hands
2022-04-19 16:31:54 +0200gurkenglas(~gurkengla@178.12.18.212) (Ping timeout: 276 seconds)
2022-04-19 16:33:47 +0200 <schuelermine[m]> Do you have to explicitly declare your library as a dependency of your test suite in cabal?
2022-04-19 16:33:57 +0200bahamas(~lucian@84.232.140.158)
2022-04-19 16:34:23 +0200 <tomsmeding> eys
2022-04-19 16:34:26 +0200 <tomsmeding> schuelermine[m]: *yes
2022-04-19 16:34:51 +0200 <schuelermine[m]> goodness
2022-04-19 16:34:56 +0200 <schuelermine[m]> should I just write == <current-version>
2022-04-19 16:35:03 +0200 <tomsmeding> just don't put a version
2022-04-19 16:35:18 +0200 <tomsmeding> cabal will always use the version produced in the current package
2022-04-19 16:35:27 +0200 <tomsmeding> so in fact a version annotation there is always redundant
2022-04-19 16:35:40 +0200 <tomsmeding> (and cabal will even warn on that, IIRC)
2022-04-19 16:35:52 +0200abastro(~abab9579@220.75.216.63)
2022-04-19 16:36:53 +0200jlamothe(~jlamothe@198.251.61.229) (Quit: leaving)
2022-04-19 16:38:42 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-04-19 16:38:55 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-04-19 16:39:03 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 276 seconds)
2022-04-19 16:39:49 +0200aeka(~aeka@user/hiruji) (Ping timeout: 256 seconds)
2022-04-19 16:40:09 +0200vysn(~vysn@user/vysn)
2022-04-19 16:40:23 +0200bahamas(~lucian@84.232.140.158)
2022-04-19 16:40:53 +0200aeka(~aeka@user/hiruji)
2022-04-19 16:43:23 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-04-19 16:44:48 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 250 seconds)
2022-04-19 16:45:06 +0200DNH(~DNH@2a02:8109:b740:2c4:39b1:39b8:aa61:2e31)
2022-04-19 16:46:27 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-04-19 16:46:39 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-04-19 16:49:04 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Quit: Leaving)
2022-04-19 16:49:08 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2022-04-19 16:49:40 +0200dyeplexer(~dyeplexer@user/dyeplexer)
2022-04-19 16:49:55 +0200sibnull[m](~sibnullma@2001:470:69fc:105::1:1291)
2022-04-19 16:51:46 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com)
2022-04-19 16:53:25 +0200Pickchea(~private@user/pickchea) (Ping timeout: 256 seconds)
2022-04-19 16:54:17 +0200jlamothe(~jlamothe@198.251.61.229)
2022-04-19 16:55:31 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
2022-04-19 16:56:30 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-04-19 16:57:07 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com)
2022-04-19 16:57:28 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net)
2022-04-19 16:59:56 +0200AndrewAndrewYu
2022-04-19 17:00:02 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-04-19 17:02:29 +0200yauhsien(~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-04-19 17:07:21 +0200anomal(~anomal@87.227.196.109) (Remote host closed the connection)
2022-04-19 17:08:39 +0200kuribas(~user@ptr-17d51end1q9g3xjtvcu.18120a2.ip6.access.telenet.be) (Ping timeout: 240 seconds)
2022-04-19 17:12:36 +0200MajorBiscuit(~MajorBisc@145.94.234.148) (Ping timeout: 240 seconds)
2022-04-19 17:12:45 +0200jgeerds(~jgeerds@d5364b87.access.ecotel.net)
2022-04-19 17:13:01 +0200MajorBiscuit(~MajorBisc@145.94.234.148)
2022-04-19 17:19:21 +0200MajorBiscuit(~MajorBisc@145.94.234.148) (Ping timeout: 276 seconds)
2022-04-19 17:20:22 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:61e6:c8e5:1064:c52e) (Quit: WeeChat 2.8)
2022-04-19 17:20:34 +0200Natch(~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
2022-04-19 17:22:27 +0200TCZ(~tcz@ip-91.246.66.101.skyware.pl)
2022-04-19 17:22:59 +0200TCZ(~tcz@ip-91.246.66.101.skyware.pl) (...)
2022-04-19 17:24:42 +0200krappix(~krappix@nat-inria-interne-72-gw-01-lne.lille.inria.fr)
2022-04-19 17:25:09 +0200fciocan(~fciocan@188.24.47.102)
2022-04-19 17:25:46 +0200xff0x_(~xff0x@om126194210237.10.openmobile.ne.jp) (Read error: Connection reset by peer)
2022-04-19 17:26:32 +0200fciocan(~fciocan@188.24.47.102) (Client Quit)
2022-04-19 17:29:08 +0200gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de)
2022-04-19 17:30:39 +0200abiss27(~abiss27@user/abiss)
2022-04-19 17:33:15 +0200bahamas(~lucian@84.232.140.158)
2022-04-19 17:33:56 +0200stackdroid18(14094@user/stackdroid)
2022-04-19 17:35:18 +0200krappix(~krappix@nat-inria-interne-72-gw-01-lne.lille.inria.fr) (Ping timeout: 250 seconds)
2022-04-19 17:35:18 +0200 <albet70> what's the join implement for Cont?
2022-04-19 17:37:31 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 246 seconds)
2022-04-19 17:41:01 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-04-19 17:41:40 +0200 <kritzefitz> albet70: join is not a method, so it's the same for Cont as for any other monad.
2022-04-19 17:42:06 +0200 <kritzefitz> namely: `join x = x >>= id`
2022-04-19 17:44:26 +0200zer0bitz(~zer0bitz@2001:2003:f444:8f00:d86f:477d:4b86:10fd)
2022-04-19 17:45:37 +0200 <albet70> https://hackage.haskell.org/package/transformers-0.6.0.4/docs/src/Control.Monad.Trans.Cont.html#Co…
2022-04-19 17:46:05 +0200ccntrq(~Thunderbi@2a01:e34:eccb:b060:b49f:b4db:d687:55bf) (Remote host closed the connection)
2022-04-19 17:46:43 +0200 <albet70> join is not required to make type as an instance of monad?
2022-04-19 17:47:08 +0200abastro(~abab9579@220.75.216.63) (Remote host closed the connection)
2022-04-19 17:47:47 +0200 <kritzefitz> No, join is defined in terms of `>>=` for all Monads.
2022-04-19 17:47:58 +0200 <kritzefitz> i.e. it is not required.
2022-04-19 17:49:03 +0200 <geekosaur> in Haskell the fundamental Monad operations are return and >>=
2022-04-19 17:49:19 +0200 <geekosaur> not the mathematical version which uses join instead of >>=
2022-04-19 17:50:02 +0200 <albet70> join (*) = \x -> x * x, so join (*) = (*) >>= id?
2022-04-19 17:50:44 +0200 <albet70> > (*) >>= id $ 3
2022-04-19 17:50:46 +0200 <lambdabot> 9
2022-04-19 17:51:15 +0200 <albet70> > join (*) 3
2022-04-19 17:51:17 +0200 <lambdabot> 9
2022-04-19 17:51:41 +0200fciocan(~fciocan@188.24.47.102)
2022-04-19 17:51:42 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-19 17:51:49 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-04-19 17:52:04 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-19 17:52:30 +0200fciocan(~fciocan@188.24.47.102) (Client Quit)
2022-04-19 17:52:41 +0200 <geekosaur> so if I recall correctly m >>= f is mathematically join (fmap f m), so given the functor laws you recover join by making f id
2022-04-19 17:54:50 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-04-19 17:55:44 +0200Vajb(~Vajb@2001:999:504:1dda:267d:6860:bdf7:f68b)
2022-04-19 17:55:56 +0200justsomeguy(~justsomeg@user/justsomeguy)
2022-04-19 17:57:45 +0200 <albet70> > join (fmap (+1) [1..])
2022-04-19 17:57:47 +0200 <lambdabot> error:
2022-04-19 17:57:47 +0200 <lambdabot> • No instance for (Num [()]) arising from a use of ‘e_111’
2022-04-19 17:57:47 +0200 <lambdabot> • In the expression: e_111
2022-04-19 17:57:57 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-04-19 17:59:09 +0200abastro(~abab9579@220.75.216.63)
2022-04-19 17:59:20 +0200lbseale(~ep1ctetus@user/ep1ctetus)
2022-04-19 17:59:52 +0200lbseale(~ep1ctetus@user/ep1ctetus) (Client Quit)
2022-04-19 18:00:11 +0200chele(~chele@user/chele) (Remote host closed the connection)
2022-04-19 18:00:14 +0200lbseale(~ep1ctetus@user/ep1ctetus)
2022-04-19 18:02:19 +0200Vajb(~Vajb@2001:999:504:1dda:267d:6860:bdf7:f68b) (Read error: Connection reset by peer)
2022-04-19 18:02:48 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-04-19 18:04:45 +0200 <geekosaur> that looks wrong
2022-04-19 18:06:05 +0200 <monochrom> Yeah, join m = m >>= id
2022-04-19 18:07:04 +0200 <monochrom> More concretely m >>= \foo -> foo so it's like saying "obtain the procedure, now run it".
2022-04-19 18:07:04 +0200 <abastro[m]> And I thought `[()] ~ Natural`
2022-04-19 18:07:31 +0200 <albet70> m >>= id, id is same as return?
2022-04-19 18:07:33 +0200ubert(~Thunderbi@2a02:8109:9880:303c:bbe6:420f:2b6c:e0f7) (Remote host closed the connection)
2022-04-19 18:07:41 +0200 <albet70> m >>= return?
2022-04-19 18:09:06 +0200cdman(~dcm@user/dmc/x-4369397) (Ping timeout: 272 seconds)
2022-04-19 18:09:52 +0200 <monochrom> Ugh why would you think that? But no.
2022-04-19 18:09:54 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-04-19 18:10:16 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-19 18:10:22 +0200redb(~nmh@136.49.49.211) (Ping timeout: 272 seconds)
2022-04-19 18:10:54 +0200 <monochrom> If you work at the layperson level of "they are similar therefore they are equal" you will never get anywhere in STEM.
2022-04-19 18:11:11 +0200 <albet70> > [3] >>= id
2022-04-19 18:11:12 +0200 <lambdabot> error:
2022-04-19 18:11:12 +0200 <lambdabot> • No instance for (Num [()]) arising from a use of ‘e_13’
2022-04-19 18:11:13 +0200 <lambdabot> • In the expression: e_13
2022-04-19 18:11:28 +0200vysn(~vysn@user/vysn) (Ping timeout: 250 seconds)
2022-04-19 18:11:49 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
2022-04-19 18:11:53 +0200 <albet70> > (Just 3) >>= id
2022-04-19 18:11:55 +0200 <lambdabot> error:
2022-04-19 18:11:55 +0200 <lambdabot> • No instance for (Num (Maybe ())) arising from a use of ‘e_13’
2022-04-19 18:11:55 +0200 <lambdabot> • In the expression: e_13
2022-04-19 18:12:20 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 250 seconds)
2022-04-19 18:13:27 +0200 <geekosaur> it's join, you gave it nothing to join
2022-04-19 18:13:31 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-04-19 18:13:35 +0200 <geekosaur> > Just (Just 3) >>= id
2022-04-19 18:13:36 +0200 <lambdabot> Just 3
2022-04-19 18:14:25 +0200 <albet70> :t (Just 3) >>=
2022-04-19 18:14:26 +0200 <lambdabot> error:
2022-04-19 18:14:26 +0200 <lambdabot> parse error (possibly incorrect indentation or mismatched brackets)
2022-04-19 18:14:51 +0200 <albet70> :t (>>=) (Just 3)
2022-04-19 18:14:52 +0200 <lambdabot> Num a => (a -> Maybe b) -> Maybe b
2022-04-19 18:15:49 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-04-19 18:15:49 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-04-19 18:15:49 +0200finn_elijaFinnElija
2022-04-19 18:15:50 +0200 <albet70> :t id
2022-04-19 18:15:51 +0200 <lambdabot> a -> a
2022-04-19 18:17:14 +0200fjmorazan(~quassel@user/fjmorazan) (Quit: fjmorazan)
2022-04-19 18:17:28 +0200fjmorazan(~quassel@user/fjmorazan)
2022-04-19 18:19:04 +0200jgeerds(~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 248 seconds)
2022-04-19 18:20:03 +0200cheategg(~Username@user/cheater) (Quit: BitchX: the official IRC client of the 2004 Olympic Games)
2022-04-19 18:20:08 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-04-19 18:21:13 +0200fjmorazan(~quassel@user/fjmorazan) (Client Quit)
2022-04-19 18:21:28 +0200bahamas(~lucian@84.232.140.158)
2022-04-19 18:21:38 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2022-04-19 18:21:53 +0200fjmorazan(~quassel@user/fjmorazan)
2022-04-19 18:26:02 +0200 <abastro[m]> Recognizing similarity as equality would not serve well in any context imho
2022-04-19 18:26:18 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 276 seconds)
2022-04-19 18:26:37 +0200 <albet70> I wonder join Fix(Fix a) would get
2022-04-19 18:26:52 +0200abastro(~abab9579@220.75.216.63) (Ping timeout: 246 seconds)
2022-04-19 18:27:07 +0200jerry99(~330f6b9c@cerf.good1.com)
2022-04-19 18:30:15 +0200redb(~nmh@136.49.49.211)
2022-04-19 18:30:19 +0200cheater(~Username@user/cheater)
2022-04-19 18:30:54 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-04-19 18:33:49 +0200bahamas(~lucian@84.232.140.158)
2022-04-19 18:34:42 +0200odnes(~odnes@5-203-242-183.pat.nym.cosmote.net)
2022-04-19 18:37:07 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-19 18:39:59 +0200stackdroid18(14094@user/stackdroid) (Quit: hasta la vista... tchau!)
2022-04-19 18:40:45 +0200deadmarshal_(~deadmarsh@95.38.228.226)
2022-04-19 18:42:27 +0200redb(~nmh@136.49.49.211)
2022-04-19 18:44:03 +0200 <EvanR> abastro[m], if we're talking strict data structures, then yeah they are bijective
2022-04-19 18:44:28 +0200off^(~off@50-192-56-193-static.hfc.comcastbusiness.net) (Remote host closed the connection)
2022-04-19 18:45:09 +0200stackdroid18(~stackdroi@user/stackdroid)
2022-04-19 18:47:31 +0200 <EvanR> but strict data structures is a terrible default!
2022-04-19 18:48:22 +0200 <janus> but how would stuff like 'zip [1..]' work if lists were strict?
2022-04-19 18:48:52 +0200 <janus> what's the point of some weird mix? isn't it better to be consistent?
2022-04-19 18:51:03 +0200 <EvanR> strict data fits into the framework haskell gives us, it has a flat definedness hierarchy. It's fine
2022-04-19 18:51:30 +0200 <EvanR> i.e. wouldn't machine int work better if the bits were lazy? no
2022-04-19 18:51:44 +0200 <EvanR> not in this century maybe
2022-04-19 18:55:01 +0200slaydr(~slaydr@173.239.197.74) (Remote host closed the connection)
2022-04-19 18:55:35 +0200 <janus> what do people mean when they say 'data'? if a record contains a function, is it data or not?
2022-04-19 18:57:59 +0200 <EvanR> that leads to the next question, what do you mean by "function" xD
2022-04-19 18:58:19 +0200 <EvanR> because a lambda expression is cromulent data
2022-04-19 18:58:34 +0200 <janus> every time somebody says 'zero argument function' they get scolded...
2022-04-19 18:58:57 +0200 <EvanR> yeah not those
2022-04-19 18:59:12 +0200cheatercheategg
2022-04-19 18:59:52 +0200 <janus> what do you mean by 'cromulent'?
2022-04-19 18:59:56 +0200 <EvanR> lol
2022-04-19 19:00:06 +0200 <janus> you can't get Eq on functions, i think that is a big difference
2022-04-19 19:00:07 +0200 <EvanR> I guess I deserve that
2022-04-19 19:00:59 +0200 <janus> i don't mean to be daft, it's just that i don't understand whether there even is a technically correct definition or not
2022-04-19 19:01:00 +0200 <EvanR> you think deciding the extensional equality of functions is bad? Let me introduce you to the value of real numbers
2022-04-19 19:01:17 +0200 <EvanR> decidable equality is not a given, generally, it's a special power
2022-04-19 19:01:23 +0200 <EvanR> only some data types can do it
2022-04-19 19:01:54 +0200 <janus> Idris has the Dec type
2022-04-19 19:01:57 +0200 <EvanR> another example is comparing two infinite lists
2022-04-19 19:01:59 +0200 <janus> do you think that makes sense?
2022-04-19 19:02:14 +0200 <EvanR> Dec is for talking about decidable equality so yes
2022-04-19 19:02:17 +0200 <janus> they have strict data structures by default, no? so you consider that wrong?
2022-04-19 19:02:27 +0200 <EvanR> rather, for decidable things
2022-04-19 19:03:44 +0200 <EvanR> earlier I said strict data is a terrible default, this was supposed to be a throw away strong opinion based on nothing but audience
2022-04-19 19:04:10 +0200 <EvanR> particular situations could use strict data for fun and profit
2022-04-19 19:04:40 +0200 <janus> right, so i gather that since Idris has Lazy, it isn't so bad that it is the default
2022-04-19 19:04:58 +0200 <janus> but in haskell, there is no Lazy, so it would be a bad default?
2022-04-19 19:05:16 +0200 <EvanR> you get to decide because there's a pragma for it
2022-04-19 19:06:06 +0200 <EvanR> I feel like typical use of haskell would break badly if everything was strict
2022-04-19 19:06:38 +0200 <geekosaur> so do I
2022-04-19 19:06:55 +0200 <janus> but it seems that you can write Idris programs that looks a lot like Haskell programs
2022-04-19 19:07:04 +0200 <geekosaur> there are people who are convinced that haskell should default to strict and make you annotate the lazy stuff though
2022-04-19 19:07:04 +0200 <EvanR> I haven't seen that
2022-04-19 19:07:05 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-19 19:07:33 +0200 <EvanR> idris programs are more like classic functional programming, with accumulating parameters, carefully avoiding stack use
2022-04-19 19:07:55 +0200 <janus> to me, a typical haskell program is a HTTP server that talks to a postgres database
2022-04-19 19:07:56 +0200 <EvanR> when doing recursion
2022-04-19 19:08:14 +0200 <janus> the only things that need lazyness, that i can think of, is stuff like `zip [1..]`
2022-04-19 19:08:35 +0200 <EvanR> a web request handler is a very special case environment, you almost don't even need garbage collection
2022-04-19 19:08:35 +0200 <janus> and when i write my http2 library in idris, i don't seem to run into any hurdles
2022-04-19 19:08:52 +0200 <EvanR> just handle the request and tear everything down
2022-04-19 19:09:02 +0200 <janus> ok, so seems like we have different definitions of 'typical' ;)
2022-04-19 19:09:03 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-19 19:09:17 +0200 <Franciman> my typical haskell program is an interpreter
2022-04-19 19:09:29 +0200 <Franciman> i really enjoy the interpreter point of view
2022-04-19 19:09:29 +0200 <EvanR> yeah I'm on stage 11 of recovering from "web programming is typical"
2022-04-19 19:09:43 +0200 <Franciman> a web server is an interpreter
2022-04-19 19:09:54 +0200gdd(~gdd@129.199.146.230) (Ping timeout: 272 seconds)
2022-04-19 19:09:58 +0200 <Franciman> fortunately haskell is very smart about its runtime
2022-04-19 19:10:02 +0200 <janus> yeah, it's interpreting RealWorld# which comes from Postgres :P
2022-04-19 19:10:22 +0200gdd(~gdd@129.199.146.230)
2022-04-19 19:10:28 +0200 <EvanR> I still see everything as a database, it's not good
2022-04-19 19:10:35 +0200 <Franciman> EvanR: is ghc a database?
2022-04-19 19:10:47 +0200 <EvanR> it probably has many
2022-04-19 19:11:05 +0200 <EvanR> many databases with some compiler caked on the outside
2022-04-19 19:11:15 +0200 <Franciman> dope
2022-04-19 19:11:24 +0200 <Franciman> i see databases as logic programming
2022-04-19 19:11:34 +0200 <Franciman> am i totally astray?
2022-04-19 19:11:48 +0200 <EvanR> if it was logical that would be better
2022-04-19 19:12:02 +0200 <janus> Franciman: yes, because if you try swapping out your postgres layer for LogicT, you're gonna have a hard time
2022-04-19 19:12:29 +0200 <EvanR> sqlite takes a table definition that says floats go in column, and allows "strings"
2022-04-19 19:12:32 +0200 <janus> databases are about indexing and query optimization ;)
2022-04-19 19:12:55 +0200cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2022-04-19 19:13:04 +0200 <EvanR> databases could have nice laws and logic but usually don't
2022-04-19 19:13:36 +0200cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-04-19 19:13:49 +0200odnes(~odnes@5-203-242-183.pat.nym.cosmote.net) (Quit: Leaving)
2022-04-19 19:13:50 +0200 <Franciman> janus: uh uhuh thanks
2022-04-19 19:14:26 +0200 <EvanR> some of it can't be avoided, some of it entrenched 1980s ideology. Join the 90s, like haskell
2022-04-19 19:14:32 +0200 <janus> Franciman: do you disagree? i am genuinely curious whether you could use LogicT instead of Postgres
2022-04-19 19:14:58 +0200 <Franciman> if you speak of performance, i don't think it's possible
2022-04-19 19:15:09 +0200 <Franciman> but conceptually it seemed to me a pretty straightforward thing to do
2022-04-19 19:15:10 +0200RevoGen(~RevoGen@laptop-grs098eo.bc.edu)
2022-04-19 19:15:28 +0200 <EvanR> datalog exists
2022-04-19 19:16:07 +0200 <janus> but datomic doesn't allow you to work like you do with LogicT
2022-04-19 19:16:16 +0200 <EvanR> well datomic is datomic
2022-04-19 19:16:18 +0200 <dolio> LogicT isn't a logic language, it's just part of an implementation strategy for one.
2022-04-19 19:16:41 +0200dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2022-04-19 19:17:30 +0200 <geekosaur> logic language? https://curry.pages.ps.informatik.uni-kiel.de/curry-lang.org/
2022-04-19 19:17:42 +0200 <Franciman> so you get to code in both haskell and burry
2022-04-19 19:17:44 +0200 <Franciman> curry*
2022-04-19 19:17:52 +0200 <Franciman> you just have to also learn B, and you'll know
2022-04-19 19:17:54 +0200 <Franciman> haskell b curry
2022-04-19 19:18:07 +0200 <janus> hahah :D
2022-04-19 19:19:13 +0200turlando(~turlando@user/turlando) (Ping timeout: 260 seconds)
2022-04-19 19:19:40 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it)
2022-04-19 19:19:40 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
2022-04-19 19:19:40 +0200turlando(~turlando@user/turlando)
2022-04-19 19:22:12 +0200MajorBiscuit(~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net)
2022-04-19 19:22:55 +0200jerry99(~330f6b9c@cerf.good1.com) (Quit: CGI:IRC (Ping timeout))
2022-04-19 19:23:12 +0200RevoGen(~RevoGen@laptop-grs098eo.bc.edu) (Ping timeout: 250 seconds)
2022-04-19 19:25:43 +0200mrosenbe(~mrosenbe@4.7.173.100)
2022-04-19 19:25:46 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2022-04-19 19:26:10 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2022-04-19 19:30:15 +0200merijn(~merijn@c-001-002-001.client.esciencecenter.eduvpn.nl)
2022-04-19 19:30:48 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-04-19 19:30:48 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-04-19 19:30:48 +0200wroathe(~wroathe@user/wroathe)
2022-04-19 19:32:57 +0200JordiGH(~jordi@user/jordigh)
2022-04-19 19:33:15 +0200 <JordiGH> Is there a simple way to syntactically transliterate `int x = y = 42` from C?
2022-04-19 19:33:50 +0200 <geekosaur> not if you expect them to subsequently be C-like variables
2022-04-19 19:34:06 +0200RevoGen(~RevoGen@136.167.196.105)
2022-04-19 19:34:25 +0200euandreh(~euandreh@2804:14c:33:9fe5:2165:73d6:1630:f174) (Quit: WeeChat 3.5)
2022-04-19 19:34:31 +0200 <JordiGH> That's what I thought, Haskell doesn't really have an assingment operator, right? Like, you can't do (=) x 5
2022-04-19 19:34:42 +0200 <JordiGH> (I forget the syntax for calling operators without infix notation)
2022-04-19 19:35:17 +0200whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2022-04-19 19:35:18 +0200 <geekosaur> right
2022-04-19 19:35:41 +0200rawley(~rawley@142.99.241.242)
2022-04-19 19:35:44 +0200 <geekosaur> closest you get is writeIORef/writeSTRef, I think
2022-04-19 19:36:21 +0200 <JordiGH> Oh that is the syntax.
2022-04-19 19:36:21 +0200 <geekosaur> unless you count State in which case lens has some operators that look like assignment and modification
2022-04-19 19:36:37 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-19 19:40:07 +0200 <JordiGH> So in particular, there are no associativity rules for = because you just can't put more than one per statement.
2022-04-19 19:40:14 +0200jgeerds(~jgeerds@d5364b87.access.ecotel.net)
2022-04-19 19:40:38 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
2022-04-19 19:41:16 +0200mstksgjle`
2022-04-19 19:42:47 +0200 <geekosaur> it's not even a statement, really, unless you mean do syntax
2022-04-19 19:42:56 +0200 <geekosaur> let … in is an expression
2022-04-19 19:43:34 +0200 <geekosaur> let {<bindings>} in <expression> (braces are usually replaced by layout)
2022-04-19 19:43:49 +0200redb(~nmh@136.49.49.211)
2022-04-19 19:44:00 +0200 <geekosaur> and a binding is <pattern> = <expression>
2022-04-19 19:44:01 +0200euandreh(~euandreh@2804:14c:33:9fe5:2165:73d6:1630:f174)
2022-04-19 19:44:20 +0200 <geekosaur> (which can be quite useful, but watch out for failed pattern matches)
2022-04-19 19:47:01 +0200clever(~clever@99.192.114.98) (Ping timeout: 240 seconds)
2022-04-19 19:47:24 +0200econo(uid147250@user/econo)
2022-04-19 19:48:31 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-19 19:50:43 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-19 19:51:15 +0200niemand(~niemand@p2e52fdfd.dip0.t-ipconnect.de)
2022-04-19 19:52:06 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 276 seconds)
2022-04-19 19:53:41 +0200niemand(~niemand@p2e52fdfd.dip0.t-ipconnect.de) (Client Quit)
2022-04-19 19:55:19 +0200deadmarshal_(~deadmarsh@95.38.228.226) (Ping timeout: 256 seconds)
2022-04-19 19:58:11 +0200RevoGen(~RevoGen@136.167.196.105) (Remote host closed the connection)
2022-04-19 19:59:19 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-04-19 19:59:22 +0200merijn(~merijn@c-001-002-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-04-19 19:59:42 +0200slack1256(~slack1256@191.125.99.208)
2022-04-19 20:02:53 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-19 20:06:28 +0200machinedgod(~machinedg@24.105.81.50)
2022-04-19 20:06:33 +0200redb(~nmh@136.49.49.211)
2022-04-19 20:10:39 +0200redb(~nmh@136.49.49.211) (Ping timeout: 240 seconds)
2022-04-19 20:11:35 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-04-19 20:12:32 +0200redb(~nmh@136.49.49.211)
2022-04-19 20:13:00 +0200sprout(~quassel@2a02-a45f-f170-1-2c70-4ee9-c067-7549.fixed6.kpn.net) (Ping timeout: 240 seconds)
2022-04-19 20:17:49 +0200redb(~nmh@136.49.49.211) (Ping timeout: 246 seconds)
2022-04-19 20:22:58 +0200 <slack1256> Does a complementary package for aeson exist to parsed malformed JSONs on a best effort basis?
2022-04-19 20:24:57 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-04-19 20:25:37 +0200redb(~nmh@136.49.49.211)
2022-04-19 20:26:42 +0200 <mrosenbe> the docs for withMVar say it is atomic if there are no other producers, does that mean that two withMVars will be atomic, but withMVar and putMVar aren't atomic?
2022-04-19 20:28:26 +0200sprout(~quassel@2a02-a45f-f170-1-2c70-4ee9-c067-7549.fixed6.kpn.net)
2022-04-19 20:30:55 +0200fryguybob(~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (Quit: leaving)
2022-04-19 20:31:18 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.5)
2022-04-19 20:32:02 +0200coot_(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot_)
2022-04-19 20:32:26 +0200myme(~myme@2a01:799:d5a:cd00:e3b:86e:c55b:7eff)
2022-04-19 20:33:20 +0200coot(~coot@213.134.190.95)
2022-04-19 20:38:29 +0200neceve(~quassel@2.29.116.221)
2022-04-19 20:38:48 +0200sprout(~quassel@2a02-a45f-f170-1-2c70-4ee9-c067-7549.fixed6.kpn.net) (Ping timeout: 248 seconds)
2022-04-19 20:47:54 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-19 20:49:19 +0200redb(~nmh@136.49.49.211) (Ping timeout: 246 seconds)
2022-04-19 20:49:29 +0200acidjnk(~acidjnk@p200300d0c722df64b44bf627258f714f.dip0.t-ipconnect.de)
2022-04-19 20:50:15 +0200redb(~nmh@136.49.49.211)
2022-04-19 20:52:49 +0200mbuf(~Shakthi@136.185.79.70) (Quit: Leaving)
2022-04-19 20:53:57 +0200bollu4(~bollu@159.65.151.13)
2022-04-19 20:55:02 +0200bollu(~bollu@159.65.151.13) (Ping timeout: 272 seconds)
2022-04-19 20:55:03 +0200bollu4bollu
2022-04-19 20:55:24 +0200jinsun__(~jinsun@user/jinsun)
2022-04-19 20:55:42 +0200MajorBiscuit(~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) (Ping timeout: 250 seconds)
2022-04-19 20:57:39 +0200nerdypepper(~nerdypepp@user/nerdypepper) (Ping timeout: 256 seconds)
2022-04-19 20:57:53 +0200abiss27(~abiss27@user/abiss) (Quit: hasta la vista... tchau!)
2022-04-19 20:58:11 +0200nerdypepper(~nerdypepp@user/nerdypepper)
2022-04-19 20:59:03 +0200jinsun(~jinsun@user/jinsun) (Ping timeout: 276 seconds)
2022-04-19 20:59:55 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-19 21:01:03 +0200Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi)
2022-04-19 21:01:59 +0200jgeerds(~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 240 seconds)
2022-04-19 21:02:02 +0200 <EvanR> mrosenbe, it's referring to how withMVar will do a take, run your code, then do a put. Obviously there is time there for someone else to put their own thing back before you do
2022-04-19 21:02:23 +0200dsrt^(~dsrt@50-192-56-193-static.hfc.comcastbusiness.net)
2022-04-19 21:02:31 +0200DNH(~DNH@2a02:8109:b740:2c4:39b1:39b8:aa61:2e31) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-04-19 21:02:38 +0200 <EvanR> which would break atomicity
2022-04-19 21:03:17 +0200 <EvanR> if multiple threads are doing withMVar, it's ok because everyone is waiting to take
2022-04-19 21:04:27 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-04-19 21:05:10 +0200 <EvanR> see TVars for something less brittle
2022-04-19 21:06:43 +0200DNH(~DNH@2a02:8109:b740:2c4:39b1:39b8:aa61:2e31)
2022-04-19 21:09:19 +0200MajorBiscuit(~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net)
2022-04-19 21:16:16 +0200redb(~nmh@136.49.49.211) (Ping timeout: 246 seconds)
2022-04-19 21:18:43 +0200myme(~myme@2a01:799:d5a:cd00:e3b:86e:c55b:7eff) (Quit: WeeChat 3.4.1)
2022-04-19 21:21:20 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-19 21:25:04 +0200redb(~nmh@136.49.49.211)
2022-04-19 21:29:19 +0200redb(~nmh@136.49.49.211) (Ping timeout: 240 seconds)
2022-04-19 21:31:56 +0200myme(~myme@2a01:799:d5a:cd00:7ca6:39bc:e22b:ee2b)
2022-04-19 21:32:04 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2022-04-19 21:33:21 +0200bahamas(~lucian@84.232.140.158) (Ping timeout: 256 seconds)
2022-04-19 21:34:43 +0200sprout(~quassel@2a02-a467-ccd6-1-6cc6-7e1b-4577-8227.fixed6.kpn.net)
2022-04-19 21:37:00 +0200anomal(~anomal@87.227.196.109)
2022-04-19 21:43:03 +0200redb(~nmh@136.49.49.211)
2022-04-19 21:43:53 +0200 <mrosenbe> EvanR: mvar is fine for my uses, I mostly wanted to make sure my interpretation of that was correct, and it sounds like it is.
2022-04-19 21:48:14 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-04-19 21:49:22 +0200zer0bitz(~zer0bitz@2001:2003:f444:8f00:d86f:477d:4b86:10fd) (Read error: Connection reset by peer)
2022-04-19 21:50:24 +0200redb(~nmh@136.49.49.211) (Ping timeout: 276 seconds)
2022-04-19 21:50:52 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-04-19 21:51:00 +0200Guest292(~Guest29@S01061056118fff83.wp.shawcable.net)
2022-04-19 21:51:56 +0200Guest292(~Guest29@S01061056118fff83.wp.shawcable.net) (Client Quit)
2022-04-19 21:52:05 +0200redb(~nmh@136.49.49.211)
2022-04-19 21:54:20 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2022-04-19 21:56:23 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-04-19 21:56:31 +0200redb(~nmh@136.49.49.211) (Ping timeout: 246 seconds)
2022-04-19 22:00:41 +0200redb(~nmh@136.49.49.211)
2022-04-19 22:00:48 +0200neurocyte8614492(~neurocyte@user/neurocyte) (Ping timeout: 276 seconds)
2022-04-19 22:02:54 +0200pavonia(~user@user/siracusa)
2022-04-19 22:04:22 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-04-19 22:07:19 +0200MajorBiscuit(~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) (Ping timeout: 240 seconds)
2022-04-19 22:07:30 +0200Inoperable(~PLAYER_1@fancydata.science) (Quit: All your buffer are belong to us!)
2022-04-19 22:08:02 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-19 22:08:29 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-19 22:09:15 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
2022-04-19 22:09:44 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-04-19 22:12:09 +0200redb(~nmh@136.49.49.211)
2022-04-19 22:12:53 +0200romesrf(~romes@185.5.8.134) (Quit: WeeChat 3.4.1)
2022-04-19 22:14:01 +0200MajorBiscuit(~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net)
2022-04-19 22:17:33 +0200dcoutts_(~duncan@host213-122-143-81.range213-122.btcentralplus.com) (Ping timeout: 256 seconds)
2022-04-19 22:20:19 +0200redb(~nmh@136.49.49.211) (Ping timeout: 240 seconds)
2022-04-19 22:20:26 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-19 22:21:06 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-04-19 22:24:21 +0200dcoutts_(~duncan@host213-122-143-81.range213-122.btcentralplus.com)
2022-04-19 22:25:50 +0200akegalj(~akegalj@141-136-168-234.dsl.iskon.hr)
2022-04-19 22:25:58 +0200redb(~nmh@136.49.49.211)
2022-04-19 22:27:52 +0200Inoperable(~PLAYER_1@fancydata.science)
2022-04-19 22:27:55 +0200lbseale_(~ep1ctetus@user/ep1ctetus)
2022-04-19 22:30:10 +0200redb(~nmh@136.49.49.211) (Ping timeout: 250 seconds)
2022-04-19 22:30:49 +0200lbseale(~ep1ctetus@user/ep1ctetus) (Ping timeout: 246 seconds)
2022-04-19 22:31:21 +0200merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds)
2022-04-19 22:32:12 +0200redb(~nmh@136.49.49.211)
2022-04-19 22:39:09 +0200redb(~nmh@136.49.49.211) (Ping timeout: 276 seconds)
2022-04-19 22:40:32 +0200redb(~nmh@136.49.49.211)
2022-04-19 22:42:33 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-19 22:44:39 +0200redb(~nmh@136.49.49.211) (Ping timeout: 240 seconds)
2022-04-19 22:46:36 +0200redb(~nmh@136.49.49.211)
2022-04-19 22:48:52 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-19 22:50:59 +0200redb(~nmh@136.49.49.211) (Ping timeout: 256 seconds)
2022-04-19 22:53:15 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-04-19 22:53:34 +0200Pickchea(~private@user/pickchea)
2022-04-19 22:54:11 +0200 <ggVGc> I think "it's fine for my use-case" is how every story leading up to a race condition starts
2022-04-19 22:54:29 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-19 22:54:30 +0200 <ggVGc> (not that I haven't also said it to myself, and used MVars)
2022-04-19 22:56:12 +0200 <ggVGc> sometimes I wonder if geekosaur remembers how much I was pestering him 10 years ago while trying to use xmonad and knowing 0 Haskell
2022-04-19 22:56:30 +0200 <geekosaur> I do, actually :)
2022-04-19 22:56:34 +0200 <ggVGc> actually... it's more like 12 years now :(
2022-04-19 22:56:37 +0200 <ggVGc> haha
2022-04-19 22:56:45 +0200 <ggVGc> well here I am writing Haskell and not using xmonad
2022-04-19 22:56:52 +0200 <ggVGc> so it worked out in the end I guess
2022-04-19 22:57:25 +0200redb(~nmh@136.49.49.211)
2022-04-19 22:57:30 +0200 <ggVGc> I think "I'll use xmonad so I'll learn Haskell" is a pretty bad trap that I see many people fall into
2022-04-19 22:57:35 +0200 <ggVGc> but there's no stopping it
2022-04-19 22:59:35 +0200fendor(~fendor@91.141.37.72.wireless.dyn.drei.com) (Remote host closed the connection)
2022-04-19 23:01:37 +0200redb(~nmh@136.49.49.211) (Ping timeout: 246 seconds)
2022-04-19 23:01:48 +0200akegalj(~akegalj@141-136-168-234.dsl.iskon.hr) (Quit: leaving)
2022-04-19 23:03:12 +0200neceve(~quassel@2.29.116.221) (Ping timeout: 276 seconds)
2022-04-19 23:07:36 +0200kaph(~kaph@ge-19-125-59.service.infuturo.it)
2022-04-19 23:10:38 +0200anomal(~anomal@87.227.196.109) (Remote host closed the connection)
2022-04-19 23:10:57 +0200anomal(~anomal@87.227.196.109)
2022-04-19 23:14:16 +0200 <janus> ggVGc: Wayland can stop it
2022-04-19 23:14:20 +0200redb(~nmh@136.49.49.211)
2022-04-19 23:15:04 +0200 <geekosaur> waymonad exists :þ
2022-04-19 23:15:22 +0200 <geekosaur> that said, xmonad can work asan intro to haskell *if* you're willing to put in the work
2022-04-19 23:15:38 +0200 <geekosaur> but most folks just copy around configs and don't try to figureout what they're doing
2022-04-19 23:16:47 +0200 <janus> geekosaur: which is the better intro to haskell, tidal cycles or waymonad? :D
2022-04-19 23:16:48 +0200 <geekosaur> and we don't generally try to teach Haskell because most people just want a working config and don't care about the why
2022-04-19 23:17:38 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-19 23:18:31 +0200 <geekosaur> no idea about tidal cyclesbut I noteits repo has ports to js and python so I assume it's not exactly grabbing people into haskell very well :)
2022-04-19 23:18:46 +0200 <geekosaur> then again I hgave no idea how well waymonad is doing in that area either
2022-04-19 23:21:06 +0200 <janus> i think there are ports to other languages because e.g. indian classical music aren't as strongly correlated intrests as workspace organization and haskell are
2022-04-19 23:22:16 +0200redb(~nmh@136.49.49.211) (Ping timeout: 246 seconds)
2022-04-19 23:22:22 +0200 <ggVGc> Personally I don't think xmonad was a good intro to Haskell for me. I had already been doing F# for a while, so was no stranger to functional programming in general, but xmonad is too much "Real world" for beginner Haskell, in my personal experience
2022-04-19 23:22:54 +0200 <ggVGc> it also doesn't help that, as you say, the user wants "it to work" because it's your WM...
2022-04-19 23:23:10 +0200 <ggVGc> so there's a bad pressure to make things work, rather than learning
2022-04-19 23:23:13 +0200 <geekosaur> dig too deepand you find yourself learning more about X11 than about Haskell
2022-04-19 23:23:17 +0200 <systemfault> Reminds me of "Real-world Haskell"... which was, in a hindsight, not real "real world"
2022-04-19 23:23:27 +0200 <systemfault> *really
2022-04-19 23:23:39 +0200 <geekosaur> actually xmonad's an examplein there :)
2022-04-19 23:23:52 +0200 <janus> if xmonad is of the real world, is tidal cycles from the unreal realm? :O
2022-04-19 23:24:12 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-19 23:24:20 +0200redb(~nmh@136.49.49.211)
2022-04-19 23:25:10 +0200renzhi(~xp@2607:fa49:6500:b100::229c)
2022-04-19 23:28:34 +0200redb(~nmh@136.49.49.211) (Ping timeout: 246 seconds)
2022-04-19 23:31:11 +0200rawley(~rawley@142.99.241.242) (Remote host closed the connection)
2022-04-19 23:35:27 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-19 23:36:54 +0200michalz(~michalz@185.246.204.61) (Remote host closed the connection)
2022-04-19 23:38:25 +0200MajorBiscuit(~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) (Quit: WeeChat 3.4)
2022-04-19 23:39:55 +0200redb(~nmh@136.49.49.211)
2022-04-19 23:41:20 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-19 23:44:48 +0200redb(~nmh@136.49.49.211) (Ping timeout: 276 seconds)
2022-04-19 23:48:02 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-04-19 23:49:58 +0200DNH(~DNH@2a02:8109:b740:2c4:39b1:39b8:aa61:2e31) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-04-19 23:52:35 +0200redb(~nmh@136.49.49.211)
2022-04-19 23:57:06 +0200xkuru(~xkuru@user/xkuru)
2022-04-19 23:57:32 +0200nihilazo(~nihilazo@tilde.town)
2022-04-19 23:58:10 +0200 <nihilazo> hi, what would be the best way to learn haskell for somebody who already knows FP but only in dynamic languages (haskell for a lisper, basically)? is learn you a haskell still considered good?
2022-04-19 23:59:45 +0200redb(~nmh@136.49.49.211) (Ping timeout: 276 seconds)
2022-04-19 23:59:47 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)