Home liberachat/#haskell: Logs Calendar

Logs on 2022-05-18 (liberachat/#haskell)

00:03:00 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
00:03:10 sudden joins (~cat@user/sudden)
00:08:16 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
00:11:26 × kenaryn quits (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving)
00:13:07 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
00:13:48 × sudden quits (~cat@user/sudden) (Ping timeout: 276 seconds)
00:14:17 × alp_ quits (~alp@user/alp) (Ping timeout: 260 seconds)
00:15:13 sudden joins (~cat@user/sudden)
00:18:35 × Hash quits (~Hash@hey.howstoned.ru) (Read error: Connection reset by peer)
00:19:00 × jollygood2 quits (www-data@2607:5300:60:8be::1) (Quit: CGI:IRC (Ping timeout))
00:20:02 Hash joins (~Hash@tunnel686959-pt.tunnel.tserv15.lax1.ipv6.he.net)
00:21:46 kenaryn joins (~aurele@89-88-44-27.abo.bbox.fr)
00:22:57 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 246 seconds)
00:23:47 <kenaryn> maerwald: tomsmeding: `stack setup -v` returns that # The .dll case calls STRIP_CMD explicitly, instead of `install -s`, because
00:24:04 <kenaryn> # on Win64, "install -s" calls a strip that doesn't understand 64bit binaries.
00:24:18 <kenaryn> # For some reason, this means the DLLs end up non-executable, which means
00:24:35 <kenaryn> # executables that use them just segfault.
00:25:23 <kenaryn> That would explain why ghc-cabal is not found even if it exist, and with right permissions and disk space OK
00:35:00 × TonyStone quits (~TonyStone@2603-7080-8607-c36a-6165-3a77-319f-4350.res6.spectrum.com) (Ping timeout: 240 seconds)
00:36:21 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Quit: WeeChat 3.5)
00:39:03 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
00:44:18 × xff0x quits (~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 246 seconds)
00:47:03 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
00:47:13 TonyStone joins (~TonyStone@2603-7080-8607-c36a-898b-f0ee-7872-3957.res6.spectrum.com)
00:48:07 × gurkenglas quits (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
00:49:22 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
00:49:23 jlamothe joins (~jlamothe@198.251.61.229)
00:49:26 jlamothe parts (~jlamothe@198.251.61.229) ()
00:49:33 jlamothe joins (~jlamothe@198.251.61.229)
00:50:19 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
00:51:43 sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
00:51:54 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
00:54:00 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
00:56:08 razetime joins (~quassel@117.254.35.239)
00:58:56 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Ping timeout: 272 seconds)
01:01:19 × sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 240 seconds)
01:05:16 <kenaryn> Please how can I get libtinfo.so.5? it seems to prevent me from compiling stack.
01:05:38 <kenaryn> The lib is missing alongside libgmp.so.3
01:07:10 × TonyStone quits (~TonyStone@2603-7080-8607-c36a-898b-f0ee-7872-3957.res6.spectrum.com) (Ping timeout: 272 seconds)
01:10:21 haskell_apprenti joins (~haskell_a@2603-7000-9900-04ba-7892-62e4-5cb0-de69.res6.spectrum.com)
01:10:46 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:12:11 <haskell_apprenti> question: working through the book "haskell programming from first principles" and am up to ch 8, where there's an exercise to write a recursive division function that handles negative values and dividing by zero. I tried writing an implementation that returns a tuple of quotient and remainder, but im getting a type error with the helper function
01:12:24 <haskell_apprenti> here's my code
01:12:25 <haskell_apprenti>   data DividedResult = Result Integer | DividedByZero
01:12:25 <haskell_apprenti>   dividedBy :: Integral a => a -> a -> (DividedResult, DividedResult)
01:12:26 <haskell_apprenti>   dividedBy _ 0 = (DividedByZero, DividedByZero)
01:12:26 <haskell_apprenti>   dividedBy num denom = go num denom 0 1
01:12:27 <haskell_apprenti>     where
01:12:27 <haskell_apprenti>       go n d count sign
01:12:28 <haskell_apprenti>         | n < 0 = go (- n) d count (- sign)
01:12:28 <haskell_apprenti>         | d < 0 = go n (- d) count (- sign)
01:12:29 <haskell_apprenti>         | n < d = (Result (count * sign), Result n)
01:12:29 <haskell_apprenti>         | otherwise =
01:12:30 <haskell_apprenti>           go (n - d) d (count + 1) sign
01:12:38 <Axman6> please do not do that
01:12:41 <Axman6> !where paste
01:12:45 <Axman6> @where paste
01:12:45 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
01:12:53 <haskell_apprenti> oh that's good to know thanks
01:13:13 <haskell_apprenti> https://paste.tomsmeding.com/mo3kgoN6
01:13:35 <haskell_apprenti> and here's the error im getting https://paste.tomsmeding.com/vXOdHOgz
01:14:14 <haskell_apprenti> not sure why it expects an integer type
01:14:59 × ubert1 quits (~Thunderbi@p200300ecdf15883e59cedd0c714ad84e.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
01:16:53 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:16:57 <haskell_apprenti> also if i remove the tuple return and just return DividedResult type, it works and i don't know why
01:19:34 andrey_ joins (~andrey@p200300dbcf06c3008d878644fc61df72.dip0.t-ipconnect.de)
01:19:35 <Axman6> your definition data DividedResult = Result Integer | DividedByZero explicitly says that result must contain an Integer, but when you use Result n, you're passing it an a
01:19:37 × mmhat quits (~mmh@p200300f1c7256e03ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
01:19:41 TonyStone joins (~TonyStone@2603-7080-8607-c36a-898b-f0ee-7872-3957.res6.spectrum.com)
01:22:11 × andrey__ quits (~andrey@p200300dbcf1305000a20156e72af94e4.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
01:22:27 <Axman6> count and sign are inferered to be Integers, but n is passed to go and that n is defined to be any Integral a, which m,eans it oculd be an Int8, Word64 etc.
01:23:37 <haskell_apprenti> aha - so I should change the data declaration to be a generic type? st like
01:23:38 <haskell_apprenti> data DividedResult = Result a | DividedByZero? (that also returns a type error though)
01:23:44 <haskell_apprenti> more generic type*
01:24:31 <Axman6> you'd need to use data DividedResult a = Result a | DividedByZero if that's the behaviour you want
01:25:41 <haskell_apprenti> ah cool thanks. what if I want to have the Integral type class constraint?
01:28:18 xff0x joins (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp)
01:29:35 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
01:30:28 flinner joins (~flinner@user/flinner)
01:31:29 <Axman6> you don't
01:31:56 <Axman6> putting constraints on data types is almost never what you want, they do on the functions that need those constraints
01:32:44 <haskell_apprenti> hm interesting
01:33:53 <haskell_apprenti> so what should I do to make my code work in this case? change the function signature to Integer instead?
01:34:23 <haskell_apprenti> that actually lets it compile
01:34:33 <Axman6> putting them on the data types mean they infect all your code, youy end up with data Result a = Integral a => Result a | DivideByZero; then you end up with needing the Show instance to look like instance (Show a, Integral a) => Show (Result a) where ... where that Integral constraint is completely useless in the instance, but necessary because you said it is always necesssary
01:36:13 <Axman6> what isn;'t working? there's no reason why dividedBy :: Integral a => a -> a -> (DividedResult a, DividedResult a) shouldn't work just fine
01:36:22 <haskell_apprenti> are you just mentioning the Show instance as an example?
01:36:51 <haskell_apprenti> what you mentioned before - count and sign are inferered to be Integers, but n is passed to go and that n is defined to be any Integral a, which m,eans it oculd be an Int8, Word64 etc.
01:37:00 <haskell_apprenti> so the type checker's complaining
01:37:26 <Axman6> they won't be inferred to be Integers if you change your data type, they will be inferred to be the same type a that you pass in
01:38:06 <haskell_apprenti> so you're saying the best practice here would be to give the data declaration a generic type?
01:39:04 × TonyStone quits (~TonyStone@2603-7080-8607-c36a-898b-f0ee-7872-3957.res6.spectrum.com) (Ping timeout: 250 seconds)
01:39:06 <Axman6> see https://paste.tomsmeding.com/muBKM6pX
01:39:10 <Axman6> yes.
01:39:32 <Axman6> uh, my changeses didn;t happen, one sec
01:39:49 <haskell_apprenti> prob this, right? https://paste.tomsmeding.com/MaNzucM2
01:40:02 <Axman6> https://paste.tomsmeding.com/GENuW7Gq
01:40:21 <haskell_apprenti> aha right
01:40:24 <Axman6> IMO, the type that you should be using is this though: dividedBy :: Integral a => a -> a -> Maybe (a,a)
01:40:57 <Axman6> there's no good reason to make your own type here, and it's better to make it clear that either both results will exist, or neither will
01:41:07 <haskell_apprenti> ah. haven't gotten up to that ch yet but the author keeps mentioning how great Maybe is lol
01:41:24 <haskell_apprenti> seems to me like the same kind of idea tbh
01:41:49 <haskell_apprenti> DividedResult -> Maybe, DividedByZero -> Nothing
01:41:56 Soanvig joins (~Soanvig@83.22.15.24.ipv4.supernova.orange.pl)
01:41:58 <haskell_apprenti> Result -> Just
01:42:37 <Axman6> yes
01:43:07 <haskell_apprenti> anyway, amazing, thanks for all the help
01:45:10 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 272 seconds)
01:45:56 × megaTherion quits (~therion@mail.unix.io) (Quit: ZNC 1.8.2 - https://znc.in)
01:47:23 nate1 joins (~nate@98.45.169.16)
01:48:43 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
01:51:20 <danso> are there standard ways to pack and unpack various sizes of words? e.g. `pack :: Word8 -> Word8 -> Word16` and `unpack :: Word16 -> (Word8,Word8)`
01:51:29 TonyStone joins (~TonyStone@2603-7080-8607-c36a-898b-f0ee-7872-3957.res6.spectrum.com)
01:51:42 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
02:00:34 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
02:01:15 × jinsun quits (~jinsun@user/jinsun) (Ping timeout: 260 seconds)
02:01:41 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:03:29 × Soanvig quits (~Soanvig@83.22.15.24.ipv4.supernova.orange.pl) (Quit: Client closed)
02:03:51 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:03:51 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:03:51 finn_elija is now known as FinnElija
02:05:03 × romesrf quits (~romes@185.5.8.134) (Read error: Connection reset by peer)
02:05:24 × shailangsa quits (~shailangs@host109-152-9-235.range109-152.btcentralplus.com) (Remote host closed the connection)
02:05:28 romesrf joins (~romes@185.5.8.134)
02:09:54 <EvanR> I knew dependent types can get kinda crazy, but do you think you could form a passable "game" using constraints and just the haskell type system
02:09:57 frost joins (~frost@user/frost)
02:10:00 <EvanR> without full dependent types
02:12:38 × kenaryn quits (~aurele@89-88-44-27.abo.bbox.fr) (Quit: leaving)
02:14:34 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
02:19:18 × frost quits (~frost@user/frost) (Ping timeout: 252 seconds)
02:22:52 frost joins (~frost@user/frost)
02:26:39 gambpang joins (~ian@2601:249:8300:f320:a4e8:88f5:ee8e:cf45)
02:28:02 × haskell_apprenti quits (~haskell_a@2603-7000-9900-04ba-7892-62e4-5cb0-de69.res6.spectrum.com) (Quit: Client closed)
02:40:42 × Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 276 seconds)
02:42:35 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Remote host closed the connection)
02:43:31 × stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!)
02:43:33 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
02:47:25 jinsun joins (~jinsun@user/jinsun)
02:48:30 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
02:56:47 × gambpang quits (~ian@2601:249:8300:f320:a4e8:88f5:ee8e:cf45) (Remote host closed the connection)
02:59:28 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
03:02:52 × darkstarx quits (~darkstard@50.53.212.60) (Read error: Connection reset by peer)
03:03:07 × razetime quits (~quassel@117.254.35.239) (Read error: Connection reset by peer)
03:11:39 abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
03:13:31 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
03:21:48 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
03:22:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
03:27:54 <shapr> o hi mxs
03:41:47 megaTherion joins (~therion@unix.io)
03:45:45 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
03:45:45 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
03:45:45 wroathe joins (~wroathe@user/wroathe)
03:47:34 markasoftware_ is now known as markasoftware
03:50:15 × Vq quits (~vq@90-227-195-41-no77.tbcn.telia.com) (Ping timeout: 276 seconds)
03:50:27 gpncarl joins (~gpncarl@210.12.195.5)
03:58:19 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
03:58:37 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
04:00:43 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
04:21:00 Guest|3 joins (~Guest|3@c-73-170-36-58.hsd1.ca.comcast.net)
04:21:49 × Guest|3 quits (~Guest|3@c-73-170-36-58.hsd1.ca.comcast.net) (Client Quit)
04:25:15 sabry joins (~sabry@197.37.58.104)
04:36:56 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
04:37:14 Feuermagier joins (~Feuermagi@user/feuermagier)
04:38:59 × flinner quits (~flinner@user/flinner) (Ping timeout: 240 seconds)
04:45:38 nate1 joins (~nate@98.45.169.16)
04:48:32 bliminse joins (~bliminse@host86-164-128-238.range86-164.btcentralplus.com)
04:51:50 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
04:53:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
04:57:56 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
04:57:58 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Remote host closed the connection)
04:58:44 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
04:59:12 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
04:59:30 Vajb joins (~Vajb@2001:999:400:9bc1:d5dd:7e53:33b:56)
05:03:06 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:03:10 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
05:18:38 odnes joins (~odnes@5-203-155-92.pat.nym.cosmote.net)
05:20:35 × raym quits (~raym@user/raym) (Quit: kernel update, rebooting...)
05:21:04 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
05:23:00 chomwitt joins (~chomwitt@2a02:587:dc15:4f00:b162:3ee9:4b48:2a00)
05:23:34 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
05:23:56 michalz joins (~michalz@185.246.204.107)
05:24:23 raym joins (~raym@user/raym)
05:24:34 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
05:24:55 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
05:26:22 zaquest joins (~notzaques@5.130.79.72)
05:31:54 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Remote host closed the connection)
05:32:43 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
05:35:00 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
05:37:30 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
05:38:39 × causal quits (~user@50.35.83.177) (Quit: WeeChat 3.5)
05:40:48 gentauro joins (~gentauro@user/gentauro)
05:40:57 coot joins (~coot@213.134.190.95)
05:45:07 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
05:45:31 jpds joins (~jpds@gateway/tor-sasl/jpds)
05:47:43 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
05:50:27 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 240 seconds)
05:50:46 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
05:51:02 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
05:53:37 arjun joins (~arjun@user/arjun)
05:57:53 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
05:58:52 telser_ joins (~quassel@user/telser)
05:59:14 ralu13 joins (~ralu@static.211.245.203.116.clients.your-server.de)
05:59:47 gurkenglas joins (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
06:00:00 × grimey quits (~grimey@162.255.84.96) (Ping timeout: 246 seconds)
06:00:01 eL_Bart0- joins (eL_Bart0@dietunichtguten.org)
06:00:15 mjs2600_ joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
06:00:21 × eL_Bart0 quits (eL_Bart0@dietunichtguten.org) (Ping timeout: 246 seconds)
06:00:42 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 246 seconds)
06:00:42 × bcoppens_ quits (~bartcopp@vpn2.bartcoppens.be) (Ping timeout: 246 seconds)
06:00:42 × meejah quits (~meejah@rutas.meejah.ca) (Ping timeout: 246 seconds)
06:00:42 × x88x88x quits (~x88x88x@149.28.53.172) (Ping timeout: 246 seconds)
06:01:03 × hltk quits (~hltk@hltk.fi) (Ping timeout: 246 seconds)
06:01:03 × ByronJohnson quits (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Ping timeout: 246 seconds)
06:01:03 × int-e quits (~noone@int-e.eu) (Ping timeout: 246 seconds)
06:01:03 × kjak quits (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
06:01:03 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 246 seconds)
06:01:03 × shachaf quits (~shachaf@user/shachaf) (Ping timeout: 246 seconds)
06:01:03 × sm[i] quits (~user@plaintextaccounting/sm) (Ping timeout: 246 seconds)
06:01:03 × auri quits (~auri@fsf/member/auri) (Ping timeout: 246 seconds)
06:01:03 × telser quits (~quassel@user/telser) (Ping timeout: 246 seconds)
06:01:24 × eldritch quits (~eldritch@user/eldritch) (Ping timeout: 246 seconds)
06:01:24 × canta quits (~canta@user/canta) (Ping timeout: 246 seconds)
06:01:24 × ridcully quits (~ridcully@p57b52a1f.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
06:01:24 × Teacup quits (~teacup@user/teacup) (Ping timeout: 246 seconds)
06:01:24 × ralu1 quits (~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 246 seconds)
06:01:24 × Ekho quits (~Ekho@user/ekho) (Ping timeout: 246 seconds)
06:01:24 × blades quits (~blades@204.48.29.163) (Ping timeout: 246 seconds)
06:01:24 ralu13 is now known as ralu1
06:01:30 auri joins (~auri@fsf/member/auri)
06:02:01 Teacup joins (~teacup@user/teacup)
06:02:16 asivitz joins (uid178348@id-178348.tinside.irccloud.com)
06:02:34 meejah joins (~meejah@rutas.meejah.ca)
06:02:36 bcoppens joins (~bartcopp@vpn2.bartcoppens.be)
06:02:41 ByronJohnson joins (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
06:02:57 int-e joins (~noone@int-e.eu)
06:03:01 shachaf joins (~shachaf@user/shachaf)
06:03:08 kjak joins (~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
06:03:10 hltk joins (~hltk@hltk.fi)
06:03:20 ridcully joins (~ridcully@p57b52a1f.dip0.t-ipconnect.de)
06:03:21 blades joins (~blades@204.48.29.163)
06:03:50 x88x88x joins (~x88x88x@149.28.53.172)
06:04:27 Ekho- joins (~Ekho@user/ekho)
06:05:59 eldritch joins (~eldritch@user/eldritch)
06:06:57 sm[i] joins (~user@plaintextaccounting/sm)
06:08:27 jakalx parts (~jakalx@base.jakalx.net) ()
06:10:00 jakalx joins (~jakalx@base.jakalx.net)
06:11:35 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
06:13:02 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 260 seconds)
06:14:42 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
06:15:10 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
06:15:13 canta joins (~canta@user/canta)
06:16:19 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
06:16:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
06:17:24 akegalj joins (~akegalj@93-138-13-196.adsl.net.t-com.hr)
06:17:44 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
06:18:04 Ekho- is now known as Ekho
06:18:48 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
06:20:02 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
06:20:13 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
06:20:29 × xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
06:21:08 × sabry quits (~sabry@197.37.58.104) (Quit: Client closed)
06:21:25 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
06:25:06 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
06:31:22 × arjun quits (~arjun@user/arjun) (Remote host closed the connection)
06:37:32 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds)
06:39:22 jgeerds joins (~jgeerds@d53604b0.access.ecotel.net)
06:39:26 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
06:39:26 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
06:39:26 wroathe joins (~wroathe@user/wroathe)
06:45:42 × mrmonday quits (~robert@what.i.hope.is.not.a.tabernaevagant.es) (Quit: .)
06:45:53 mrmonday joins (~robert@what.i.hope.is.not.a.tabernaevagant.es)
06:46:15 ccntrq joins (~Thunderbi@172.209.94.92.rev.sfr.net)
06:46:26 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
06:46:29 × ccntrq quits (~Thunderbi@172.209.94.92.rev.sfr.net) (Client Quit)
06:47:17 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
06:54:41 briandaed joins (~briandaed@109.95.142.93.r.toneticgroup.pl)
06:55:30 × romesrf quits (~romes@185.5.8.134) (Ping timeout: 272 seconds)
06:56:25 <briandaed> quick question, let's assume I've small commercial project running on LTS-16.x (ghc 8.8.4), should I upgrade to LTS-18 based on ghc 8.10.7 or move to LTS-19 with ghc 9.x?
06:58:39 <opqdonut> I feel like 8.10.7 is kind of a sweet spot, more breakage incoming in the 9 series
06:59:05 <opqdonut> but this is just a gut feel after upgrading some personal projects, YMMV
06:59:30 <briandaed> yes, and still some libraries are missing in LTS-19, unfortunately
06:59:31 slack1256 joins (~slack1256@181.42.54.67)
07:01:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
07:01:36 × tomku quits (~tomku@user/tomku) (Ping timeout: 246 seconds)
07:01:46 sus joins (zero@user/zeromomentum)
07:03:39 <dminuoso_> danso: Yes, Data.ByteString.unpack and pack.
07:06:12 acidjnk joins (~acidjnk@pd9e0b3b9.dip0.t-ipconnect.de)
07:09:19 romesrf joins (~romes@2001:4c80:50:16:78cf:779a:efac:8dcc)
07:10:51 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
07:12:07 <dminuoso_> Alternatively you can write something yourself based on FiniteBits
07:12:17 odnes_ joins (~odnes@5-203-155-92.pat.nym.cosmote.net)
07:12:24 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 276 seconds)
07:13:12 × odnes quits (~odnes@5-203-155-92.pat.nym.cosmote.net) (Read error: Connection reset by peer)
07:14:47 lortabac joins (~lortabac@2a01:e0a:541:b8f0:f7e7:d42e:7bee:fefc)
07:15:57 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:16:02 × romesrf quits (~romes@2001:4c80:50:16:78cf:779a:efac:8dcc) (Ping timeout: 260 seconds)
07:16:03 chele joins (~chele@user/chele)
07:17:28 romesrf joins (~romes@2001:4c80:50:16:78cf:779a:efac:8dcc)
07:19:53 <Axman6> going via ByteString seems very inefficient, the bit manipulations would definitely be better
07:20:04 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
07:21:50 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
07:21:57 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
07:23:15 MajorBiscuit joins (~MajorBisc@145.94.234.141)
07:23:25 titibandit joins (~thibaut@xdsl-78-35-152-200.nc.de)
07:24:35 × Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
07:26:10 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
07:27:10 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 272 seconds)
07:31:58 mikoto-chan joins (~mikoto-ch@213.177.151.239)
07:32:25 alp_ joins (~alp@user/alp)
07:40:06 dextaa490 joins (~dextaa@user/dextaa)
07:40:19 dextaa490 is now known as dextaa
07:40:35 mbuf joins (~Shakthi@31.32.33.168)
07:40:41 × romesrf quits (~romes@2001:4c80:50:16:78cf:779a:efac:8dcc) (Ping timeout: 248 seconds)
07:42:21 christiansen joins (~christian@83-95-137-75-dynamic.dk.customer.tdc.net)
07:43:50 <aria> part
07:44:03 aria parts (sid380617@id-380617.lymington.irccloud.com) ()
07:46:51 × slack1256 quits (~slack1256@181.42.54.67) (Ping timeout: 276 seconds)
07:47:22 romesrf joins (~romes@2001:4c80:50:16:78cf:779a:efac:8dcc)
07:49:59 machinedgod joins (~machinedg@24.105.81.50)
07:53:08 × romesrf quits (~romes@2001:4c80:50:16:78cf:779a:efac:8dcc) (Ping timeout: 272 seconds)
07:55:40 gehmehgeh joins (~user@user/gehmehgeh)
07:57:32 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
07:58:46 <dminuoso_> Axman6: well they said "various sizes of words", thats bytestring. :)
08:04:05 × sagax quits (~sagax_nb@user/sagax) (Remote host closed the connection)
08:06:51 romesrf joins (~romes@2001:4c80:50:16:aca0:e09b:d41e:3058)
08:08:12 × mbuf quits (~Shakthi@31.32.33.168) (Ping timeout: 250 seconds)
08:09:21 mbuf joins (~Shakthi@223.182.195.13)
08:09:33 × titibandit quits (~thibaut@xdsl-78-35-152-200.nc.de) (Remote host closed the connection)
08:10:18 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:11:14 cosimone joins (~user@2001:b07:ae5:db26:45b3:270d:a90c:9c69)
08:14:57 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds)
08:15:32 × acidjnk quits (~acidjnk@pd9e0b3b9.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
08:19:06 × mbuf quits (~Shakthi@223.182.195.13) (Ping timeout: 272 seconds)
08:21:43 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
08:22:54 <kuribas> generic programming is made out to be very hard with types by clojurists/dynamic programmers. But in the end it seems to amount to either prove it here (or let it be proven by the compiler), or pass a proof around.
08:22:55 notzmv joins (~zmv@user/notzmv)
08:23:22 <kuribas> It's just a bit tedious, but not that much for what it gives back.
08:25:45 × akegalj quits (~akegalj@93-138-13-196.adsl.net.t-com.hr) (Quit: leaving)
08:26:45 <tdammers> tbh, I find generic programming a lot easier in typed languages. Without types to guide me, I tend to lose track of interfaces / contracts really fast.
08:27:49 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Remote host closed the connection)
08:28:21 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
08:29:27 <kuribas> indeed
08:29:50 × kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 240 seconds)
08:31:58 mbuf joins (~Shakthi@31.32.33.168)
08:32:14 kritzefitz joins (~kritzefit@debian/kritzefitz)
08:32:19 <tdammers> but this is a cultural gap you're not going to bridge on your own
08:32:54 <tdammers> IMO, lumping together dynamic languages like Lisp and typed languages like Haskell under the "Functional Programming" umbrella probably does more harm than good
08:33:15 <kuribas> clojure is not that functional IMO
08:33:27 <kuribas> it has immutability and higher order functions, but that is it.
08:33:38 <tdammers> it doesn't even "have immutability"
08:33:46 <kuribas> Not enforced, no.
08:33:52 <kuribas> But most operations are immutable.
08:33:56 <tdammers> C has unenforced immutability too
08:34:44 <kuribas> well, in C most standard library functions are mutable.
08:35:23 <tdammers> you mean they mutate some of their arguments - the functions themselves aren't mutable
08:35:26 <kuribas> When it comes to reasoning about code, clojure isn't that great.
08:35:39 <kuribas> yes
08:35:41 <tdammers> indeed. clojure delivers an atrocious level of "certainty"
08:36:10 <kuribas> it's just lisp symbolic manipulation in a live environment, with some concepts of FP added.
08:36:16 <tdammers> you can't even make sure that the program you're testing is identical to the code you're looking at in your editor, most of the time
08:36:35 <kuribas> it's not an invalid way of working, but it doesn't feel very "functional".
08:38:02 <tdammers> "functional programming", to me, means "programming with functions", where "function" is a synonym for "pure function". you can of course do that in any language, by carefully crafting procedures to behave like pure functions, but in order for a language to deserve the label "functional", I expect it to help me with that beyond just allowing it
08:38:34 <kuribas> For me an important part of FP is referential transparency.
08:38:45 <kuribas> But clojure functions are rarely referentially transparent.
08:39:11 <tdammers> referential transparency is guaranteed by purity, but purity goes a little bit further than that
08:40:04 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
08:40:21 <kuribas> clojure function usually accept anything, and just produce garbage if the arguments don't match what it is "supposed" to do.
08:40:34 <kuribas> But it doesn't express what is "supposed" to be passed.
08:40:37 littlebo1eep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
08:40:53 littlebo1eep is now known as littlebebeep
08:41:05 <kuribas> There is SPEC, but people don't use spec at every function because it is too inefficient.
08:41:48 <tdammers> also because spec was never intended to be a replacement for an actual type system
08:42:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
08:42:06 littlebebeep is now known as littlebobeep
08:42:12 <tdammers> you're supposed to use it to validate at in-the-large interface boundaries
08:42:21 <kuribas> maybe I could SPEC my functions, with a flag to disable it at production.
08:42:25 <kuribas> yeah
08:43:20 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Remote host closed the connection)
08:43:27 × cosimone quits (~user@2001:b07:ae5:db26:45b3:270d:a90c:9c69) (Remote host closed the connection)
08:46:06 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
08:46:50 <kuribas> That's the problem, they will put SPEC on it, and then say the solved the validation problem, but you still need to trace back your functions in order to see which SPEC is being used.
08:48:20 <tdammers> calling it a "validation problem" misses the point. it's not a "validation problem", it's a consistency problem
08:48:43 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
08:48:54 nate1 joins (~nate@98.45.169.16)
08:48:59 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
08:49:15 × MajorBiscuit quits (~MajorBisc@145.94.234.141) (Ping timeout: 276 seconds)
08:49:17 <kuribas> But the clojurist would say, "it's easy to solve".
08:49:40 <kuribas> As in, you have a test suite that will fail, or you notice it during testing.
08:50:21 <tdammers> indeed they will, but again this demonstrates lack of understanding the problem
08:50:28 MajorBiscuit joins (~MajorBisc@145.94.234.141)
08:50:43 cfricke joins (~cfricke@user/cfricke)
08:51:05 <kuribas> as I understand, they value simplicity more than robustness.
08:51:10 <tdammers> a test can only ever verify assumptions at one specific point in the program structure; tested properties do not propagate through the code dependency graph
08:51:32 <tdammers> it has nothing to do with simplicitly, actually
08:51:43 <tdammers> or robustness, for that matter
08:51:47 Midjak joins (~Midjak@82.66.147.146)
08:51:56 <kuribas> yeah, and if you call types "heavy and a burden", why not say the same about tests?
08:52:27 <kuribas> tests often take more time than compilation, which people complain about.
08:52:27 <tdammers> I mean, yes, if your code is correct, it will be more robust, and that's a welcome collateral of typed code, but at least for me, the main benefit lies in how a type checker automates the process of tracing invariants and assumptions through the code
08:52:30 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds)
08:53:28 <tdammers> case in point, the specific "type system" that you get with Java, which is the one most clojurists are familiar with, then you get the worst of both worlds - the type system is too weak to help you all that much, and it has such bad ergonomics that it is indeed a big burden
08:53:30 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
08:53:31 <kuribas> yeah, being able as programmer to examine those assumptions and invariants in the code.
08:53:48 <tdammers> I think this is where most clojurists' dislike of typed languages really comes from
08:54:18 <tdammers> and no, not just as a programmer - the *compiler* examines and verifies assumptions and invariants for me
08:54:24 <kuribas> well, they like to rail about haskell in particular.
08:54:26 ChaiTRex joins (~ChaiTRex@user/chaitrex)
08:55:00 <tdammers> sure, because it spearheads practical typed programming
08:55:14 <kuribas> and at the same time often show little practical experience with it.
08:55:21 <tdammers> but 90% of the complaints I've heard are plain out uninformed
08:55:25 <tdammers> exactly
08:55:37 <kuribas> In fact I might agree with many haskell complaints, but not the ones clojurists make.
08:55:55 <tdammers> "I've done typed programming in Java, and it was terrible; Haskell is more typed than Java, so it must be more terrible"
08:56:53 <tdammers> there's also a fair chunk of Haskell criticism that targets specific Haskell coding styles, often highly experimental ones that people will not actually use in the trenches
08:57:18 <tdammers> but as they say, you can disprove someone against their will, but you cannot convince them against their will
08:58:27 <kuribas> and IMO haskell is not an optimum.
08:59:05 <kuribas> Often putting to much stuff in types has little returns.
08:59:17 <kuribas> But getting rid of static types completely isn't it either.
09:00:09 × ishaan[m] quits (~ishaanvma@2001:470:69fc:105::1:fb72) (Quit: You have been kicked for being idle)
09:00:13 <kuribas> recursion schemes are neat, but mostly unnecessary.
09:00:32 ishaan[m] joins (~ishaanvma@2001:470:69fc:105::1:fb72)
09:02:14 ishaan[m] parts (~ishaanvma@2001:470:69fc:105::1:fb72) ()
09:07:05 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 248 seconds)
09:09:10 × jinsun quits (~jinsun@user/jinsun) (Ping timeout: 240 seconds)
09:11:42 cfricke_ joins (~cfricke@user/cfricke)
09:13:00 kaph joins (~kaph@151.38.103.226)
09:14:44 king_gs joins (~Thunderbi@187.201.97.18)
09:15:28 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 272 seconds)
09:18:42 FilipKalan joins (~FilipKala@77.28.86.211)
09:19:32 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
09:19:50 <tdammers> you don't *have* to put everything in types in Haskell either
09:20:10 <tdammers> a bigger issue IMO is that some things *cannot* be put in types, or require a lot of ceremony for subpar results
09:21:05 × romesrf quits (~romes@2001:4c80:50:16:aca0:e09b:d41e:3058) (Ping timeout: 260 seconds)
09:22:01 × frost quits (~frost@user/frost) (Quit: Ping timeout (120 seconds))
09:23:50 <kuribas> indeed, and there the idea of just putting stuff in hashmaps looks attractive.
09:24:01 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
09:24:31 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Quit: mikoto-chan)
09:24:44 mikoto-chan joins (~mikoto-ch@213.177.151.239)
09:24:57 × FilipKalan quits (~FilipKala@77.28.86.211) (Quit: Client closed)
09:25:09 romesrf joins (~romes@2001:4c80:50:16:bd0d:c9c8:e6a9:ed4c)
09:25:40 CiaoSen joins (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
09:26:49 <tdammers> hashmaps are kind of an orthogonal concern - you can still use hashmaps but use a type system to verify constraints on them, like "has this key", or "value at that key is of type X"
09:27:18 <tdammers> GHC doesn't use hashmaps to represent records, but that would be a valid choice in principle.
09:27:43 <tdammers> (apart from the gnarliness associated with hashmaps in general, like hashdos and such)
09:28:01 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Remote host closed the connection)
09:28:16 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 244 seconds)
09:29:10 frost joins (~frost@user/frost)
09:29:58 <kuribas> and to get that you need dependent types.
09:31:17 <tdammers> No, you don't
09:31:37 <kuribas> how else do you say, "this hashmap has these keys".
09:31:41 <kuribas> ?
09:32:05 ubert1 joins (~Thunderbi@2a02:8109:9880:303c:3970:68d6:9563:3ae2)
09:32:15 <tdammers> thisHashmap :: (HasKey Foo m, HasKey Bar m) => m
09:32:27 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
09:32:43 <tdammers> you have to lift keys to the type level, but that alone doesn't make it "dependently typed"
09:33:37 <kuribas> Well, or some hacks to shoehorn this in haskell.
09:35:49 <tdammers> I mean, you could literally write a Haskell compiler that uses hashmaps to represent records, and you'd have hashmap key constraints in Haskell98
09:36:20 <kuribas> yeah, but records are not that flexible.
09:36:33 <kuribas> unless you add generics and higher kinded fields.
09:36:39 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
09:38:05 <tdammers> in most cases, you don't need much more flexibility than that
09:38:17 <kuribas> true.
09:38:21 <tdammers> the only thing I can think of would be extensible records, which, granted, are a bit awkward in haskell
09:38:48 <tdammers> but that's not because Haskell isn't dependently typed enough, but because Haskell records are not extensible out of the box
09:39:38 <kuribas> you can always use a type variable to represent other fields.
09:39:54 <kuribas> data MyRecord a = MyRecord {foo :: Int, otherFields a}
09:40:01 <tdammers> yes, but that's awkward
09:40:24 <tdammers> extend the record six times, and now you need a chain of six accessors to work with the fields introduced in the last extension
09:41:11 × romesrf quits (~romes@2001:4c80:50:16:bd0d:c9c8:e6a9:ed4c) (Ping timeout: 244 seconds)
09:41:37 <kuribas> simplify the logic to not chain six times?
09:43:10 × jgeerds quits (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 240 seconds)
09:43:25 tomku joins (~tomku@user/tomku)
09:44:15 <kuribas> wxwidgets used this method to implement inheritance, and it worked well enough.
09:44:18 <kuribas> wxhaskell.
09:44:29 dextaa8 joins (~dextaa@user/dextaa)
09:44:49 <kuribas> You'ld get a big chain, but there are type synonyms to reduce typing.
09:45:10 <kuribas> It never felt cumbersome to me.
09:45:14 op joins (~op@c-6f8972d5.034-341-73746f13.bbcust.telenor.se)
09:45:35 <kuribas> tdammers: but I agree real extensible records might be nicer. I just don't see how to implemented them in an ergonomic way in haskell.
09:45:50 <tdammers> yeah, me neither
09:46:02 <tdammers> I've tried them in Purescript, and I'm not convinced that that's how they should be done
09:46:02 <kuribas> the libraries I saw looked unappealing.
09:46:34 × dextaa quits (~dextaa@user/dextaa) (Ping timeout: 250 seconds)
09:46:35 dextaa8 is now known as dextaa
09:46:42 × op quits (~op@c-6f8972d5.034-341-73746f13.bbcust.telenor.se) (Client Quit)
09:49:52 <kuribas> what didn't you like?
09:50:58 <tdammers> It's been a while, but, two main complaints: first, records and product types are separate things, so either you get record accessors or pattern matching on a constructor, but not both.
09:51:21 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:f7e7:d42e:7bee:fefc) (Ping timeout: 248 seconds)
09:52:16 <kuribas> https://hackage.haskell.org/package/wxcore-0.92.3.0/docs/Graphics-UI-WXCore-WxcClassTypes.html#t:CalendarCtrl
09:52:39 <kuribas> https://hackage.haskell.org/package/wxcore-0.92.3.0/docs/Graphics-UI-WXCore-WxcClassTypes.html#t:Control
09:52:44 <kuribas> etc...
09:53:32 <kuribas> tdammers: idris does that too.
09:53:46 <kuribas> TBF, all your sum types need to have the same fields.
09:53:50 <kuribas> or you get partial accessors.
09:54:11 <tdammers> that's a different thing. I'm not talking about sum types here
09:54:27 <tdammers> I'm talking about how in Haskell, you can access record fields either by name or by position
09:54:57 <kuribas> that's a code smell IMO
09:55:02 <tdammers> data Blah = Blah { blahFoo :: Int, blahBar :: String }; i = blahFoo blah; (Blah i _) = blah
09:55:08 <kuribas> unless there are at most 3 fields.
09:55:23 <kuribas> But more fields and it's easy to get errors by swapping arguemnts.
09:55:40 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
09:55:42 <tdammers> it's a useful feature, whether you should be using it is a matter of coding style and "good taste programming"
09:57:46 <kuribas> Can't you just pattern match on the fields instead?
09:58:13 <kuribas> I am deliberately making it mandatory to match on fields in my idris extensible record library.
09:58:30 <kuribas> So you cannot make a record with positional arguments only.
09:58:41 <kuribas> The way it is done in servant for example.
09:58:52 <kuribas> Very easy to get confusing error messages.
09:59:44 <kuribas> foo :<|> bar
10:00:00 <kuribas> change too "foo :<|> baz :<|> bar", and get huge confusing error messages.
10:01:07 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 260 seconds)
10:01:08 mikoto-c1 joins (~mikoto-ch@213.177.151.239)
10:03:55 bliminse_ joins (~bliminse@host81-154-179-167.range81-154.btcentralplus.com)
10:04:37 × bliminse quits (~bliminse@host86-164-128-238.range86-164.btcentralplus.com) (Ping timeout: 260 seconds)
10:04:47 <kuribas> I agree with many of the arguments clojurists make. I just rarely agree with the conclusions and solutions.
10:05:14 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
10:06:15 <kuribas> but yeah, programming is hard, there are not ideal solutions yet :)
10:06:50 <kuribas> At least we should refrain from stupid conclusions like "types are all bad", or "types solve all problems".
10:07:37 <kuribas> I prefer "types give you a flexible toolkit that you can use to make robust solutions."
10:08:38 kenran joins (~kenran@ip-037-024-119-189.um08.pools.vodafone-ip.de)
10:08:51 × kenran quits (~kenran@ip-037-024-119-189.um08.pools.vodafone-ip.de) (Client Quit)
10:09:05 × CiaoSen quits (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
10:10:48 <tdammers> haha, yeah. Rich makes all sorts of great arguments for Haskell, and then proceeds to invent Clojure.
10:13:33 zeenk joins (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980)
10:15:20 <kuribas> +1
10:15:26 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
10:15:49 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Remote host closed the connection)
10:16:08 nattiestnate joins (~nate@202.138.250.13)
10:18:10 <maerwald[m]> I'd love to have opt-in dynamic typing and no, type classes are not that
10:18:10 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 272 seconds)
10:19:30 × MajorBiscuit quits (~MajorBisc@145.94.234.141) (Ping timeout: 240 seconds)
10:19:47 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 260 seconds)
10:22:16 cyphase joins (~cyphase@user/cyphase)
10:23:38 <kuribas> maerwald[m]: Data.Dynamic?
10:25:00 <maerwald[m]> Nah
10:25:14 <maerwald[m]> That is too broad
10:25:35 <kuribas> dynamic types are broad :)
10:27:23 <maerwald[m]> Not unrestricted no
10:29:27 <maerwald[m]> https://github.com/nikita-volkov/isomorphism-class comes close, but it requires you to write instances etc
10:30:13 romesrf joins (~romes@185.5.8.134)
10:30:29 MajorBiscuit joins (~MajorBisc@145.94.234.141)
10:30:54 FilipKalan joins (~FilipKala@77.28.86.211)
10:31:30 × xff0x quits (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 240 seconds)
10:35:59 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
10:36:09 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
10:37:16 × king_gs quits (~Thunderbi@187.201.97.18) (Quit: king_gs)
10:37:50 __monty__ joins (~toonn@user/toonn)
10:41:33 CiaoSen joins (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
10:47:08 × FilipKalan quits (~FilipKala@77.28.86.211) (Quit: Client closed)
10:51:00 razetime joins (~quassel@117.254.34.215)
10:55:38 × nattiestnate quits (~nate@202.138.250.13) (Quit: WeeChat 3.5)
10:57:18 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 276 seconds)
10:57:28 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
10:58:39 dextaa5 joins (~dextaa@user/dextaa)
10:58:46 Lord_of_Life_ is now known as Lord_of_Life
11:00:55 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
11:01:12 × dextaa quits (~dextaa@user/dextaa) (Ping timeout: 260 seconds)
11:01:12 dextaa5 is now known as dextaa
11:04:14 × razetime quits (~quassel@117.254.34.215) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
11:06:20 lortabac joins (~lortabac@2a01:e0a:541:b8f0:6617:8718:7034:e8b1)
11:08:05 × cfricke_ quits (~cfricke@user/cfricke) (Quit: WeeChat 3.5)
11:10:54 doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
11:11:36 × mstksg quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 276 seconds)
11:12:59 mstksg joins (~jle`@cpe-23-240-75-236.socal.res.rr.com)
11:13:12 xff0x joins (~xff0x@b133147.ppp.asahi-net.or.jp)
11:14:09 razetime joins (~quassel@117.254.34.215)
11:16:44 titibandit joins (~thibaut@2a00:8a60:c000:1:8a13:bf74:b2:8d47)
11:16:52 Infinite joins (~Infinite@49.39.117.188)
11:18:08 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
11:20:52 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
11:24:15 × raym quits (~raym@user/raym) (Ping timeout: 256 seconds)
11:24:35 raym joins (~raym@user/raym)
11:25:48 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
11:26:46 dyeplexer joins (~dyeplexer@user/dyeplexer)
11:30:22 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
11:35:02 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
11:39:12 × Infinite quits (~Infinite@49.39.117.188) (Ping timeout: 252 seconds)
11:42:16 littlebo1eep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
11:44:19 jgeerds joins (~jgeerds@d53604b0.access.ecotel.net)
11:44:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
11:46:48 kenaryn joins (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr)
11:48:31 mmhat joins (~mmh@p200300f1c71af8b0ee086bfffe095315.dip0.t-ipconnect.de)
11:49:59 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
11:51:05 × shriekingnoise quits (~shrieking@201.231.16.156) (Quit: Quit)
11:53:28 acidjnk joins (~acidjnk@p200300d0c7068b757d0566c8380b0d79.dip0.t-ipconnect.de)
11:57:30 × mmhat quits (~mmh@p200300f1c71af8b0ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.5)
11:57:32 Kaiepi joins (~Kaiepi@156.34.47.253)
11:58:04 king_gs joins (~Thunderbi@187.201.97.18)
11:59:16 mmhat joins (~mmh@p200300f1c71af8b0ee086bfffe095315.dip0.t-ipconnect.de)
12:00:18 <jackdk> maerwald[m]: `-fdefer-type-errors`?
12:00:46 × romesrf quits (~romes@185.5.8.134) (Ping timeout: 272 seconds)
12:02:53 rkrishnan joins (~user@2402:e280:215c:2cd:b44d:ba2:6f58:aac5)
12:04:04 DNH joins (~DNH@2a02:8109:b740:2c4:f181:7a80:2e1b:312d)
12:09:31 <kuribas> maerwald[m]: write a dynamic monad.
12:09:43 <kuribas> which handles type errors for you.
12:09:53 <maerwald[m]> jackdk: nah, that's a sledgehammer that opts out of everything for the entire codebase
12:11:17 dextaa0 joins (~dextaa@user/dextaa)
12:12:42 × dextaa quits (~dextaa@user/dextaa) (Read error: Connection reset by peer)
12:12:49 pera joins (~pera@user/pera)
12:13:04 × littlebo1eep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
12:13:46 dextaa0 is now known as dextaa
12:13:48 bliminse_ is now known as bliminse
12:16:24 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Remote host closed the connection)
12:16:24 <kenaryn> are maerwald and maerwald[m] the same person? I don't understand the meaning of the suffix.
12:16:24 × king_gs quits (~Thunderbi@187.201.97.18) (Read error: Connection reset by peer)
12:16:38 <geekosaur> one's using the matrix gateway
12:16:45 <geekosaur> and yes they're the same person
12:16:59 <kenaryn> Allright! So my next question is: what is a matrix gateway? (lol)
12:17:28 <geekosaur> https://element.io
12:17:40 <maerwald[m]> kenaryn: yes we are one
12:17:41 <geekosaur> it's sort of next generation IRC
12:17:46 <maerwald[m]> Hive mind
12:17:53 <kenaryn> the one and many :D
12:18:00 king_gs joins (~Thunderbi@187.201.97.18)
12:18:08 <kenaryn> Allright, thank you.
12:18:16 <maerwald[m]> It's just that mobile IRC clients all suck
12:18:21 <maerwald[m]> So there I use matrix
12:18:22 <geekosaur> well, elenment is the most popular way to access matrix. matrix.org is the actual matrix server
12:18:30 <geekosaur> yep, I do the same
12:18:36 <kenaryn> I personally find irssi client up to the task.
12:18:47 <maerwald[m]> On mobile?
12:18:54 <kenaryn> Ah nan sorry, on desktop.
12:19:05 romesrf joins (~romes@2001:4c80:50:16:f5d8:6:441c:a511)
12:19:11 <maerwald[m]> On desktop I use weechat
12:19:24 <yushyin> on android i use weechat-android
12:20:14 <kenaryn> There is a serious learning curve with wee-chat, complicated and powerfull, chinese typical :)
12:20:50 <yushyin> chinese?
12:21:07 <yushyin> weechat, not WeChat
12:21:17 <kenaryn> Arf sorry again.
12:21:33 <kenaryn> Give me that sledgehammer :D
12:21:37 <geekosaur> wee as in tiny
12:22:11 <geekosaur> but I kinda like my UIs so I use hexchat on desktop and element on phone
12:23:58 × titibandit quits (~thibaut@2a00:8a60:c000:1:8a13:bf74:b2:8d47) (Quit: Leaving.)
12:25:40 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
12:26:18 jinsun joins (~jinsun@user/jinsun)
12:28:00 × king_gs quits (~Thunderbi@187.201.97.18) (Ping timeout: 272 seconds)
12:28:05 <kenaryn> I thought [m] was a kind of leet language for uber users :) or a sort of sect
12:28:49 notzmv joins (~zmv@user/notzmv)
12:30:13 × kenaryn quits (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving)
12:35:11 <jackdk> maerwald[m]: `{-# OPTIONS_GHC -fdefer-type-errors #-}`? lol
12:35:54 <maerwald[m]> jackdk: that's the most crippled feature then
12:41:12 <geekosaur> -fdefer-type-errors is intended for IDE-like things so they can do *something* even if the program is broken. there's also -fdefer-all-errors which does the same for syntax errors and the like
12:49:04 × srk quits (~sorki@user/srk) (Quit: ZNC 1.8.1 - https://znc.in)
12:50:25 nate1 joins (~nate@98.45.169.16)
12:50:53 srk joins (~sorki@user/srk)
12:54:56 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 244 seconds)
12:55:36 × dextaa quits (~dextaa@user/dextaa) (Quit: The Lounge - https://thelounge.chat)
12:57:39 dextaa joins (~dextaa@user/dextaa)
12:59:54 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
13:00:34 × dextaa quits (~dextaa@user/dextaa) (Client Quit)
13:00:48 dextaa joins (~dextaa@user/dextaa)
13:04:06 × acidjnk quits (~acidjnk@p200300d0c7068b757d0566c8380b0d79.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
13:04:38 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Remote host closed the connection)
13:05:26 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
13:06:02 × dextaa quits (~dextaa@user/dextaa) (Ping timeout: 260 seconds)
13:06:48 shailangsa joins (~shailangs@host109-152-9-235.range109-152.btcentralplus.com)
13:07:12 kenaryn joins (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr)
13:07:55 kaph_ joins (~kaph@pd-18-117-201.service.infuturo.it)
13:10:26 × kaph quits (~kaph@151.38.103.226) (Ping timeout: 244 seconds)
13:10:33 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
13:11:50 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
13:12:31 dextaa joins (~dextaa@user/dextaa)
13:12:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
13:13:16 img joins (~img@user/img)
13:18:02 king_gs joins (~Thunderbi@187.201.97.18)
13:23:17 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
13:25:50 zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313)
13:26:28 × finsternis quits (~X@23.226.237.192) (Ping timeout: 248 seconds)
13:33:49 vicfred joins (~vicfred@user/vicfred)
13:33:58 × zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Remote host closed the connection)
13:37:58 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
13:37:58 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
13:37:58 wroathe joins (~wroathe@user/wroathe)
13:38:54 geekosaur[m][m] is now known as geekosaur[m]
13:39:34 × romesrf quits (~romes@2001:4c80:50:16:f5d8:6:441c:a511) (Ping timeout: 272 seconds)
13:43:01 × king_gs quits (~Thunderbi@187.201.97.18) (Read error: Connection reset by peer)
13:45:13 king_gs joins (~Thunderbi@187.201.97.18)
13:46:31 romesrf joins (~romes@2001:4c80:50:16:b527:df80:4683:1269)
13:51:10 × romesrf quits (~romes@2001:4c80:50:16:b527:df80:4683:1269) (Ping timeout: 260 seconds)
13:52:11 zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313)
13:53:43 gensyst joins (gensyst@user/gensyst)
13:58:37 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.5)
13:58:39 odnes__ joins (~odnes@5-203-155-92.pat.nym.cosmote.net)
13:58:56 × odnes_ quits (~odnes@5-203-155-92.pat.nym.cosmote.net) (Remote host closed the connection)
13:59:12 × zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Ping timeout: 272 seconds)
13:59:36 romesrf joins (~romes@2001:4c80:50:16:b527:df80:4683:1269)
14:03:41 <gensyst> I'm using Haskell to export data sets, then using Python to visualize these data sets. The latter makes me feel like I'm cheating.
14:03:49 <gensyst> Shouldn't I do *everything* in Haskell?
14:05:40 <lortabac> cheating for what? is it an exam?
14:06:13 <lortabac> otherwise there is no cheating, you use whatever tool is best for what you need to do
14:09:51 <gensyst> well, i'd like your thoughts on doing data visualizations in haskell. is haskell simply not the right tool for this job?
14:09:59 × rkrishnan quits (~user@2402:e280:215c:2cd:b44d:ba2:6f58:aac5) (Ping timeout: 240 seconds)
14:09:59 × king_gs quits (~Thunderbi@187.201.97.18) (Read error: Connection reset by peer)
14:10:09 <maerwald> gensyst: do you know about diagrams?
14:10:46 <maerwald> https://hackage.haskell.org/package/diagrams
14:11:15 <maerwald> but I'm not sure that's what you're looking foor
14:11:24 × marquis_andras quits (~marquis_a@110-175-153-86.static.tpgi.com.au) (Ping timeout: 240 seconds)
14:12:16 <gensyst> maerwald, here's a typical thing: open an interactive scatter plot of a certain data set that I can quickly work with more. zoom into specific area. rotate (in case of 3d). etc.
14:12:29 <gensyst> as opposed to just exporting images
14:12:39 <maerwald> I've used the cairo backend
14:12:48 <maerwald> then you can embed your stuff in a gtk+ app
14:13:10 king_gs joins (~Thunderbi@187.201.97.18)
14:13:42 × kaph_ quits (~kaph@pd-18-117-201.service.infuturo.it) (Ping timeout: 260 seconds)
14:14:02 <maerwald> https://hackage.haskell.org/package/diagrams-cairo
14:14:16 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Remote host closed the connection)
14:18:30 marquis_andras joins (~marquis_a@118.208.237.82)
14:18:44 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
14:19:46 <gensyst> maerwald, thank you
14:19:50 <gensyst> this is looking great!
14:20:21 <gensyst> In your opinions, given wxmaxima/octave/python/cairo (all these free tools), who would buy maple/mathematica?
14:20:26 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
14:20:57 <geekosaur> institutions and businesses
14:21:20 <maerwald> here's some (very old) code using diags/cairo/gtk+ to visualize some simplistic algorithms: https://github.com/hasufell/CGA/tree/master/Graphics/Diagram
14:21:38 × frost quits (~frost@user/frost) (Ping timeout: 252 seconds)
14:21:41 <geekosaur> keep in mind the real value of those is commercial plug-ins/libraries for which there still isn't much in the way of good free replacements
14:22:11 <geekosaur> (add matlab to that list btw)
14:22:26 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
14:22:59 <geekosaur> mostly domain specific libs that there isn't much interest in in the freeware world
14:24:26 <gensyst> geekosaur, hmm, yes
14:24:39 agumonkey joins (~user@2a01:e0a:8f9:d3e0:b117:81a8:33f6:93e7)
14:25:49 <geekosaur> that said, those institutions don't much like payying for that stuff either, which is what has fueled the growth of e.g. numpy
14:25:57 <Logio> back when I last used Mathematica, I didn't think wxMaxima was worth even considering (for theoretical physics at least). Don't know whether that's changed in the last decade
14:26:34 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
14:27:32 <Logio> both for programming ergonomics and some features, I don't think anything but Mathematica could deal with of the integrals at the time
14:27:39 <Logio> *some of
14:27:39 zincy joins (~zincy@host86-160-236-152.range86-160.btcentralplus.com)
14:28:01 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
14:31:33 slack1256 joins (~slack1256@191.125.99.92)
14:32:22 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
14:34:07 × zincy quits (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Ping timeout: 260 seconds)
14:34:46 × odnes__ quits (~odnes@5-203-155-92.pat.nym.cosmote.net) (Quit: Leaving)
14:34:56 <[exa]> gensyst: what visualizations do you need? for most general plotting purposes there's Chart package here https://github.com/timbod7/haskell-chart/wiki
14:36:09 <[exa]> ah, interactive scatterplots, I lost it in the scrollback. How many individual datapoints?
14:36:35 Sgeo joins (~Sgeo@user/sgeo)
14:37:37 <gensyst> [exa] not too many not like trillions :)
14:37:40 <gensyst> not even millions probably
14:37:41 <gensyst> thousands?
14:37:54 <[exa]> you might be good off with a tiny gloss app running in the window
14:38:45 <gensyst> what's that?
14:39:19 <[exa]> a nice kinda-DSL for just putting simple graphics on screen
14:39:55 <[exa]> you literally type something like `main = animate $ Point (0,0)` and you have a point there in a movable zoomable window
14:40:28 <[exa]> http://gloss.ouroborus.net/
14:41:00 × romesrf quits (~romes@2001:4c80:50:16:b527:df80:4683:1269) (Ping timeout: 272 seconds)
14:41:56 <[exa]> still, it's probably not a really "batteries included" solution
14:46:05 <gensyst> [exa] i'm trying it now :) what batteries do you have in mind? (not sure if i need those yet)
14:46:55 <[exa]> like, from a plotting package you'd expect that it e.g. draws the axes for you etc
14:47:50 <[exa]> this is just literally "primitives to screen", and the Chart above isn't animated-- so it's likely going to require some deeper effort to get to something that does the scatterplot thing right
14:54:17 × jgeerds quits (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 248 seconds)
14:59:23 × Vajb quits (~Vajb@2001:999:400:9bc1:d5dd:7e53:33b:56) (Read error: Connection reset by peer)
15:00:03 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
15:02:32 × king_gs quits (~Thunderbi@187.201.97.18) (Read error: Connection reset by peer)
15:02:53 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
15:03:22 king_gs joins (~Thunderbi@187.201.97.18)
15:04:26 zincy joins (~zincy@host86-160-236-152.range86-160.btcentralplus.com)
15:08:04 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
15:09:10 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Remote host closed the connection)
15:10:06 <gensyst> [exa] it works lol
15:10:11 <gensyst> but yeah, very primitive
15:10:18 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
15:10:51 Infinite joins (~Infinite@49.39.120.250)
15:11:24 × zincy quits (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Ping timeout: 272 seconds)
15:14:26 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Ping timeout: 244 seconds)
15:14:34 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 272 seconds)
15:14:47 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:6617:8718:7034:e8b1) (Quit: WeeChat 2.8)
15:19:00 × CiaoSen quits (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
15:20:13 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
15:20:25 × king_gs quits (~Thunderbi@187.201.97.18) (Ping timeout: 248 seconds)
15:20:45 cyanide4dinner joins (~cyanide4d@122.175.213.207)
15:21:00 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 260 seconds)
15:21:25 romesrf joins (~romes@2001:4c80:50:16:9d15:fde4:760:76bb)
15:24:15 zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313)
15:27:00 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:27:42 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
15:28:00 × romesrf quits (~romes@2001:4c80:50:16:9d15:fde4:760:76bb) (Ping timeout: 260 seconds)
15:28:29 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
15:29:45 × zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Ping timeout: 260 seconds)
15:32:36 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
15:33:03 strawburr joins (~user@2601:681:5880:3700::4c8c)
15:34:54 ec joins (~ec@gateway/tor-sasl/ec)
15:36:54 × hgolden quits (~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
15:38:26 kaph_ joins (~kaph@mi-18-25-131.service.infuturo.it)
15:38:47 hgolden joins (~hgolden2@cpe-172-251-233-141.socal.res.rr.com)
15:42:38 king_gs joins (~Thunderbi@187.201.97.18)
15:43:19 × zachel quits (~zachel@user/zachel) (Ping timeout: 240 seconds)
15:43:58 zachel joins (~zachel@user/zachel)
15:44:16 romesrf joins (~romes@2001:4c80:50:16:9d15:fde4:760:76bb)
15:45:29 × dextaa quits (~dextaa@user/dextaa) (Quit: The Lounge - https://thelounge.chat)
15:48:08 × gensyst quits (gensyst@user/gensyst) (Quit: Leaving)
15:51:21 machinedgod joins (~machinedg@24.105.81.50)
15:52:27 × romesrf quits (~romes@2001:4c80:50:16:9d15:fde4:760:76bb) (Ping timeout: 240 seconds)
15:54:55 × briandaed quits (~briandaed@109.95.142.93.r.toneticgroup.pl) (Read error: Connection reset by peer)
15:55:00 nbms^ joins (~nbms@c-24-126-228-147.hsd1.ga.comcast.net)
15:58:37 zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313)
15:59:07 jakalx parts (~jakalx@base.jakalx.net) ()
15:59:30 × nbms^ quits (~nbms@c-24-126-228-147.hsd1.ga.comcast.net) (Ping timeout: 240 seconds)
15:59:31 jakalx joins (~jakalx@base.jakalx.net)
16:00:04 × mbuf quits (~Shakthi@31.32.33.168) (Quit: Leaving)
16:00:27 zebrag joins (~chris@user/zebrag)
16:02:09 × king_gs quits (~Thunderbi@187.201.97.18) (Read error: Connection reset by peer)
16:03:11 × cyanide4dinner quits (~cyanide4d@122.175.213.207) (Remote host closed the connection)
16:04:44 king_gs joins (~Thunderbi@187.201.97.18)
16:04:59 k` joins (~user@152.1.137.158)
16:05:16 × zeenk quits (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980) (Quit: Konversation terminated!)
16:05:30 slack7302 joins (~slack1256@181.43.226.229)
16:06:06 <k`> Is there any special meaning to the color of the 'Versions' links in Hackage on Haskell.org? Some of the links are blue, others are black (red?). Is it just my browser?
16:06:41 Everything joins (~Everythin@37.115.210.35)
16:07:11 <k`> Never mind, I see that the '(info)' link covers that.
16:07:19 × slack1256 quits (~slack1256@191.125.99.92) (Ping timeout: 240 seconds)
16:08:20 dyeplexer joins (~dyeplexer@user/dyeplexer)
16:09:08 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 248 seconds)
16:09:32 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
16:11:00 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:13:27 P1RATEZ joins (piratez@user/p1ratez)
16:13:30 × Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 260 seconds)
16:14:31 × ubert1 quits (~Thunderbi@2a02:8109:9880:303c:3970:68d6:9563:3ae2) (Remote host closed the connection)
16:15:05 Kaiepi joins (~Kaiepi@156.34.47.253)
16:16:09 slack1256 joins (~slack1256@191.125.99.92)
16:17:07 <slack1256> The haskell PVP document specifies 3 numbers A.B.C as composing the package version, but by default `cabal init` creates a package with 4 number A.B.C.D. Is there a reason for that? I always thought the last number was for _hackage revisions_.
16:17:43 <sclv> "A package version number SHOULD have the form A.B.C, and MAY optionally have any number of additional components"
16:18:00 <sclv> the last number is not for hackage revisions -- hackage revisions are not part of the pvp
16:18:23 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
16:18:25 <slack1256> Any guidelines on how to use the last number D that is included by default by cabal?
16:18:32 × slack7302 quits (~slack1256@181.43.226.229) (Ping timeout: 272 seconds)
16:18:36 <sclv> traditionally the 3rd number is for minor releases that might include changing behavior, and the 4th number is for "purely bugfix" releases
16:18:55 × coot quits (~coot@213.134.190.95) (Quit: coot)
16:19:52 <sclv> so if i were to add a new datatype or function then i would increment the 3rd number, but if i was to fix a bug, or just update documentation and deps, etc. then i might just increment the 4th
16:20:02 × Kaiepi quits (~Kaiepi@156.34.47.253) (Remote host closed the connection)
16:20:56 abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
16:21:52 <slack1256> Gotcha. At the end of the day, it is an stylistic choice on having finer-grained C over both (C,D). That makes sense.
16:22:18 × MajorBiscuit quits (~MajorBisc@145.94.234.141) (Ping timeout: 276 seconds)
16:24:08 Kaiepi joins (~Kaiepi@156.34.47.253)
16:25:51 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:26:42 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
16:27:55 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
16:28:13 <k`> Is there a way to get cabal to download a license file after a package has been initialized?
16:29:04 <k`> Like, say I went with the default BSD3, but realized that the package contents are so simple it should be PublicDomain. How do I switch?
16:31:22 <k`> Also, do folks try to avoid PublicDomain for Haskell projects? If you saw a package was PublicDomain, would you avoid it?
16:32:19 <tdammers> public domain is problematic in a couple ways; in most cases, you're better served by a maximally permissive open-source license
16:33:19 <k`> The BSD0 license, unfortunately, seems to not be included as a default, and might also raise flags.
16:33:23 <tdammers> for starters, in some countries it is not legally possible to voluntarily give up copyright, and so "releasing into the public domain" is not something you can even do, which means that if all you do is declare the code to be in the public domain, it defaults to "all rights reserved" in countries that do not recognize it
16:36:16 × gurkenglas quits (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
16:36:59 <k`> So what are your thoughts on 0BSD rather than BSD-3-Clause?
16:37:08 <k`> Or Unlicense?
16:38:08 × king_gs quits (~Thunderbi@187.201.97.18) (Ping timeout: 244 seconds)
16:39:11 jmdaemon joins (~jmdaemon@user/jmdaemon)
16:39:26 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 272 seconds)
16:41:45 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 244 seconds)
16:41:59 econo joins (uid147250@user/econo)
16:43:29 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
16:45:22 × Kaiepi quits (~Kaiepi@156.34.47.253) (Ping timeout: 244 seconds)
16:46:19 × christiansen quits (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 240 seconds)
16:47:06 cyphase joins (~cyphase@user/cyphase)
16:47:58 <sclv> in general i’ve never seen someone say “bsd is insufficiently permissive”
16:48:54 × strawburr quits (~user@2601:681:5880:3700::4c8c) (Remote host closed the connection)
16:48:57 <geekosaur> there's an spdx update coming in the next cabal, not that that helps you now. BSD0 seems to be part of SPDX at this point so it should be included
16:51:26 <k`> It seems like my best bet is to double-license it, by providing the default BSD3 licensing defaulted to by cabal and also allowing use under a 0BSD license.
16:51:55 nate1 joins (~nate@98.45.169.16)
16:52:42 <k`> sclv: I don't want someone to have to ask my permission to copy-paste my code, nor do I want to force them to attach my name to a definition that necessarily follows from the type.
16:53:21 <EvanR> if the unlicense is a perfect license void, is there a counteracting antithesis license which is like a plenum
16:53:44 <EvanR> introducing all possible legal force
16:53:51 <k`> And I know that programmers often copy code regardless of license, so I want to avoid creating a legal trap.
16:53:54 <geekosaur> "all rights reserved"
16:53:56 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
16:54:08 <k`> Yeah, in the US it's just not including any license.
16:54:18 <k`> Boom, all rights reserved.
16:54:19 king_gs joins (~Thunderbi@187.201.97.18)
16:54:22 <EvanR> lol
16:54:33 <geekosaur> k`, you're actually getting into fairly murky legal waters because not every country is signatory to the Berne convention
16:54:55 <k`> My descendants can sue you for copying my definition of 'rotate3 (x, y, z) = (z, x, y)'
16:54:57 <geekosaur> in some countries you *can't* grant that right. in many it doesn't have to be granted because it's covered by fair use
16:55:26 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:55:37 <k`> Fair use is also extremely murky in the US.
16:55:45 <geekosaur> and everywhere else
16:55:48 <EvanR> as I understood it, "my descendants can sue you" just stops there and doesn't require "descendants"
16:56:07 <k`> The only way to tell whether a use is fair is to try it and see if somebody gets sued at some point.
16:56:30 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
16:56:46 <maerwald> has anyone used https://github.com/fpco/unliftio/issues/68 to create MonadUnliftIO instance for servants Handler?
16:57:11 <geekosaur> that said, fair use isn't going to be an issue for you because copyright requires enforcement and you can simply not enforce
16:57:22 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
16:57:39 <geekosaur> none of those countries holds a gun to your head and forces you to sue someone
16:58:02 <k`> geekosaur: Right, but it's unreasonable for others to trust that I'll act that way.
16:58:08 <geekosaur> it's the *other* side that gets murky
16:58:27 <EvanR> you're right k, I don't trust you at all. So make sure you do the right thing
16:58:58 <geekosaur> and sadly, if you're truly concerned about such things you need to talk to an IP lawyer
16:59:07 <k`> EvanR: I'll promise you now that I will do the right thing, but of course you should not trust that either (Hi Google :-).
16:59:11 <geekosaur> because it's just a mess
16:59:31 <geekosaur> (IANAL nor do I play one on the Internet)
17:00:10 romesrf joins (~romes@185.5.8.134)
17:00:27 <k`> And now I'm back where I started, which is trying to make the licensing as permissive as possible to avoid this legal BS.
17:00:59 <EvanR> you'll also need to factor in all future countries legal environment
17:01:07 <geekosaur> except we're back to "some countries don't do 'as permissive as possible'"
17:02:17 × zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Ping timeout: 260 seconds)
17:05:29 <geekosaur[m]> Also note that the only licenses tested in court are bsd3 and gpl3 and those not in all jurisdictions
17:06:02 <k`> OK, so with that in mind, offering 2 licenses seems like the safest bet.
17:06:04 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
17:06:41 <geekosaur[m]> So some companies will avoid anything otherwise licensed anyway to avoid potential hassles
17:07:18 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:08:55 <k`> For years the company I work for avoided using anything under a Creative Commons license.
17:11:12 <shapr> Companies aren't smart
17:11:19 <shapr> I think they center on risk averse
17:11:43 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:12:22 × pera quits (~pera@user/pera) (Ping timeout: 272 seconds)
17:12:44 × razetime quits (~quassel@117.254.34.215) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
17:15:03 <geekosaur[m]> And the copyright system was designed to protect rights, not free them
17:15:03 × king_gs quits (~Thunderbi@187.201.97.18) (Read error: Connection reset by peer)
17:16:09 king_gs joins (~Thunderbi@2806:103e:29:5eb8:48de:d3eb:9d44:3d55)
17:16:17 × slack1256 quits (~slack1256@191.125.99.92) (Ping timeout: 260 seconds)
17:23:27 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
17:25:05 jgeerds joins (~jgeerds@d53604b0.access.ecotel.net)
17:26:14 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
17:30:31 zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313)
17:33:10 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
17:35:00 × zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Ping timeout: 248 seconds)
17:35:06 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
17:35:10 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 272 seconds)
17:35:59 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
17:39:27 Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net)
17:39:41 werneta joins (~werneta@137.79.199.110)
17:42:10 × king_gs quits (~Thunderbi@2806:103e:29:5eb8:48de:d3eb:9d44:3d55) (Ping timeout: 260 seconds)
17:42:32 × alp_ quits (~alp@user/alp) (Ping timeout: 260 seconds)
17:42:37 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
17:43:27 × Luj4 quits (~Luj@mail.julienmalka.me) (Quit: The Lounge - https://thelounge.chat)
17:43:42 gurkenglas joins (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
17:43:56 Luj4 joins (~Luj@2a01:e0a:5f9:9681:4314:3e52:bdb3:a61e)
17:45:49 × werneta quits (~werneta@137.79.199.110) (Ping timeout: 244 seconds)
17:46:20 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 244 seconds)
17:47:56 werneta joins (~werneta@137.79.199.110)
17:48:09 zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313)
17:51:38 cyphase joins (~cyphase@user/cyphase)
17:53:08 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
17:53:42 alp_ joins (~alp@user/alp)
17:54:24 Kaiepi joins (~Kaiepi@156.34.47.253)
17:56:33 × mikoto-c1 quits (~mikoto-ch@213.177.151.239) (Ping timeout: 276 seconds)
18:01:09 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
18:01:12 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
18:02:02 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
18:04:20 × Hobbyboy quits (Hobbyboy@hobbyboy.co.uk) (Ping timeout: 248 seconds)
18:05:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
18:06:50 × kaph_ quits (~kaph@mi-18-25-131.service.infuturo.it) (Ping timeout: 240 seconds)
18:07:13 king_gs joins (~Thunderbi@187.201.97.18)
18:07:37 Hobbyboy joins (Hobbyboy@hobbyboy.co.uk)
18:08:28 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:10:37 × doyougnu quits (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 244 seconds)
18:14:12 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:20:13 lainon joins (~lainon@2601:7c0:c500:4d20:a451:1d0:9f9a:2ce)
18:22:53 Tuplanolla joins (~Tuplanoll@91-159-68-39.elisa-laajakaista.fi)
18:23:20 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
18:23:44 xkuru joins (~xkuru@user/xkuru)
18:26:15 <k`> do folks prefer using mtl over (e.g.) monads-tf because fundeps make for a better API than type families, or because it's on Github and better maintained?
18:26:51 <monochrom> Sometimes type families make for a better API.
18:26:53 × king_gs quits (~Thunderbi@187.201.97.18) (Read error: Connection reset by peer)
18:27:01 <monochrom> But I use mtl because it comes with GHC.
18:27:47 <k`> I mean, the API tradeoff seems to be requiring Undecidable and Fleible Instances, vs having to write `StateType` and `EnvType` all over the place.
18:27:53 <k`> *flexible
18:27:53 <maerwald[m]> I remember edwardk saying something about monads-tf and why it's not the standard, but I don't remember
18:28:21 <geekosaur> historical reasons mostly, I think
18:28:21 coot joins (~coot@213.134.190.95)
18:28:55 <k`> I mean, I think it makes sense to standardize on 1 transformer library, but I was wondering more generally about fundep vs type family APIs.
18:29:36 <monochrom> I just want to clue you in on how reasons can be as boring as "inertia" "it comes out of the box".
18:30:12 <monochrom> Why did Windows users prefer IE last century, and Edge this century? Hell why do they prefer Windows in the first place?
18:30:13 <geekosaur> btw mtl is on github, https://github.com/haskell/mtl
18:30:15 × Infinite quits (~Infinite@49.39.120.250) (Quit: Ping timeout (120 seconds))
18:30:34 king_gs joins (~Thunderbi@187.201.97.18)
18:31:02 <monochrom> Answer: They don't prefer anything. The said software came out of the box.
18:31:16 <geekosaur> and while there were maintenance problems, (a) recent (especially compared to the monads-fd/monads-tf split) (b) and recently resolved
18:31:19 <k`> Yep, having mtl on Github vs monads-tf not having a home page or issues link seems like a pretty big deal.
18:31:39 <monochrom> Windows is not on github either.
18:32:05 <k`> Really? Not even in a private repo?
18:32:09 <geekosaur> oh I misread earlier
18:32:18 <geekosaur> I think monads-tf is still maintained by someone
18:32:48 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
18:32:56 shriekingnoise joins (~shrieking@201.231.16.156)
18:33:05 <k`> Oh, just figured that since the last build was in 2016 and it doesn't support RWST et al, it was unsupported.
18:33:20 <monochrom> And tomorrow, we will discuss networking effects such as why people prefer github to svn or vice versa.
18:34:01 <k`> When I started coding there was only SVN, and I have to say that git & github have been a huge improvement.
18:34:09 <geekosaur> hypothetically it doesn't need to, you can just combine type families. I think that's more expensive with mtl so RWST remains part of it (it was more necessary back in the mtl1 days)
18:34:20 <geekosaur> kids
18:34:28 <geekosaur> nobody remembers SCCS :)
18:35:17 <darkling> I remember seeing the name, but I don't think I ever used it. I started with CVS.
18:35:22 <monochrom> I remember SCCS, but when I started, RCS was available, I started with RCS, then CVS, then a long time before git.
18:35:44 <geekosaur> sccs, rcs, cvs, svn, git
18:36:03 <monochrom> Yeah I skipped svn and mercurial and darcs.
18:36:25 <geekosaur> a brief fling with mercurial somewhere in there, plus I used darcs with early versions of xmonad
18:36:48 <monochrom> Until this year, some profs at my school still taught svn.
18:36:58 <geekosaur> somewhere in my past I have an article about darcs losing the mindshare war to git
18:37:54 <monochrom> Nah IMO it lost the networking war. And only that.
18:38:31 <monochrom> Torvald along with the linux devs are huge influencers.
18:38:40 <monochrom> err, Torvalds!
18:39:27 <geekosaur> only to a point. torvalds did nothing to speak of for bitkeeper
18:39:44 <monochrom> Fortunately, when things plateau to being commodities, it doesn't matter.
18:41:24 <monochrom> Oh, change of topic tomorrow: Bluray vs HDDVD vs VHS vs Betamax >:)
18:41:27 × werneta quits (~werneta@137.79.199.110) (Ping timeout: 260 seconds)
18:41:57 <monochrom> Preview: "Clearly, Betamax is better than Blu-ray!"
18:42:09 geekosaur goes back to fourth grade
18:45:09 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Read error: Connection reset by peer)
18:45:14 <k`> OK, so going back a bit, I really want a class that gives me read-only access to `StateT`, so that (say) `MonadGet` is a superclass of `MonadState`. Then I can know at a glance whether an action mutates state or just reads it. But there's no way mtl would accept a breaking change like adding a new superclass to `MonadState`.
18:45:50 <monochrom> MonadReader gives read-only access.
18:46:01 <k`> Yeah, but canonically not to state.
18:46:37 <k`> The `MonadReader` instance for `StateT` relies on the Monad parameter being a `MonadReader` instance.
18:47:18 <k`> So I can't use a `forall m. (MonadReader s m)=> ...` to substitute for `gets`.
18:48:09 <monochrom> People have found that defining their own classes is better than using MonadState etc.
18:48:25 <monochrom> This does not mean they don't use StateT.
18:48:33 <monochrom> Orthogonal axes.
18:49:07 <k`> Yeah, so I coded up a `MonadGet` and new `MonadState` class using type families. But now I'm wondering if it should follow mtl's fundep API.
18:49:52 <monochrom> Toss a coin. If head, do both. If tail, toss a coin to decide which one to do.
18:49:59 <geekosaur> you could define your own State-like class with MonadState being r/w access and MonadReader being r/o. the main problem with doing this in general (your MonadGet) is mtl-style is kinda exponential in instances
18:50:03 <k`> Also I wrote up a `StateReaderT s m` newtype that does read from state. But `local` and `censor` are potential gotchas for the unwary.
18:51:15 monochrom solves all undecisiveness with GiryT >:)
18:52:09 <k`> Yeah, the exponential instances aren't great, but if you define `state` as `lift . state` by default, and `gets` as `\ f -> state (\ s -> (f s, s))`, you pretty much just need to write empty instance declarations.
18:52:21 kenran joins (~kenran@200116b82b3fbc00cac9bee633eaca80.dip.versatel-1u1.de)
18:52:32 × zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Ping timeout: 260 seconds)
18:53:18 × kenaryn quits (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving)
18:53:42 <k`> `GiryT` just went right over my head.
18:54:23 <geekosaur> monochrom likes his probability monads
18:54:39 werneta joins (~werneta@137.79.199.110)
18:54:50 <monochrom> The computation "Toss a coin. If head, do both. If tail, toss a coin to decide which one to do" lives in a probability monad :)
18:55:15 <monochrom> Let me tell you a success story in google-resistant teaching.
18:56:25 <monochrom> I gave an assignment on a probability monad. The type class is defined; students were to code up a decision tree instance.
18:57:02 <monochrom> I was aware that saying the words "probability monad" would make it too googlable.
18:57:30 <monochrom> Then I had a cunning plan. I called the type class "MonadRandom".
18:58:16 × P1RATEZ quits (piratez@user/p1ratez) (Remote host closed the connection)
18:58:35 <EvanR> "He hid inside a google-able term. We'll never be able to find him"
18:59:13 <EvanR> I call dibs on "HVAC repair"
18:59:26 <geekosaur> unless it's a googlewhack
19:00:30 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
19:00:54 <k`> So how did that work out?
19:01:07 <darkling> I once managed to set a question in an online test that was pre-poisonesd with useless Google results. :)
19:01:12 <k`> It's certainly Hoogleable.
19:01:21 <monochrom> Perfectly. A student emailed me to ask "is it OK to import Control.Monad.Random".
19:01:52 <darkling> Looked around the room and there were loads of pretty animated pictures of hypertoruses, and nothing on HPC network architectures. :)
19:02:47 <monochrom> The holy grail is that googling results in getting rickrolled. >:)
19:03:03 <k`> That's kind of beautiful.
19:03:17 <darkling> Control.Monad.Astley? :)
19:03:26 abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
19:03:50 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds)
19:05:00 sammelweis joins (~quassel@c-68-48-18-140.hsd1.mi.comcast.net)
19:05:05 <monochrom> ooohhhh hypertorus, that neato yeah.
19:05:54 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
19:08:05 <monochrom> Ah a great idea comes to me. Perhaps I can make an assignment that combines second-order logic and monads. Then I get to call it "monadic second-order logic".
19:08:35 <monochrom> (Hint: the latter "monadic" just means 1-ary, predicates take 1 parameter only.)
19:08:55 <EvanR> monadic monic monoidal modal logic
19:10:39 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
19:13:32 × alp_ quits (~alp@user/alp) (Ping timeout: 260 seconds)
19:14:41 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
19:16:15 mikoto-chan joins (~mikoto-ch@212.203.22.117)
19:19:22 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
19:20:20 zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313)
19:23:10 littlebo1eep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
19:23:15 vicfred joins (~vicfred@user/vicfred)
19:24:08 × jgeerds quits (~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 248 seconds)
19:24:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
19:24:41 × zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Ping timeout: 248 seconds)
19:29:04 Pickchea joins (~private@user/pickchea)
19:32:18 × king_gs quits (~Thunderbi@187.201.97.18) (Quit: king_gs)
19:34:04 × littlebo1eep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
19:40:37 zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313)
19:40:51 mikoto-c1 joins (~mikoto-ch@212.203.22.117)
19:43:05 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:43:50 slack1256 joins (~slack1256@191.126.227.77)
19:44:05 × mikoto-chan quits (~mikoto-ch@212.203.22.117) (Ping timeout: 260 seconds)
19:44:23 × Everything quits (~Everythin@37.115.210.35) (Quit: leaving)
19:46:40 × agumonkey quits (~user@2a01:e0a:8f9:d3e0:b117:81a8:33f6:93e7) (Remote host closed the connection)
19:46:53 bonz060 joins (~quassel@2001:bc8:47a4:a23::1)
19:48:41 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
19:48:41 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
19:48:41 wroathe joins (~wroathe@user/wroathe)
19:50:03 × slack1256 quits (~slack1256@191.126.227.77) (Remote host closed the connection)
19:50:44 slack1256 joins (~slack1256@191.126.227.77)
19:54:07 benin joins (~benin@183.82.31.170)
19:56:24 × mikoto-c1 quits (~mikoto-ch@212.203.22.117) (Ping timeout: 272 seconds)
20:02:57 pavonia joins (~user@user/siracusa)
20:03:01 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
20:03:59 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
20:05:16 acidjnk joins (~acidjnk@p200300d0c7068b757d0566c8380b0d79.dip0.t-ipconnect.de)
20:08:01 × ystael quits (~ystael@user/ystael) (Quit: leaving)
20:08:30 mikoto-c1 joins (~mikoto-ch@D57E2A4A.static.ziggozakelijk.nl)
20:09:10 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds)
20:09:46 × Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
20:10:20 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 272 seconds)
20:12:34 × coot quits (~coot@213.134.190.95) (Quit: coot)
20:13:23 kenaryn joins (~aurele@89-88-44-27.abo.bbox.fr)
20:13:29 Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net)
20:15:19 × mmhat quits (~mmh@p200300f1c71af8b0ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
20:20:32 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
20:21:35 jgeerds joins (~jgeerds@d53604b0.access.ecotel.net)
20:27:22 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
20:29:14 mmhat joins (~mmh@p200300f1c71af875ee086bfffe095315.dip0.t-ipconnect.de)
20:29:29 causal joins (~user@50.35.83.177)
20:31:12 × kenran quits (~kenran@200116b82b3fbc00cac9bee633eaca80.dip.versatel-1u1.de) (Quit: WeeChat info:version)
20:36:00 pera joins (~pera@user/pera)
20:36:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
20:36:05 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
20:37:45 × mikoto-c1 quits (~mikoto-ch@D57E2A4A.static.ziggozakelijk.nl) (Ping timeout: 248 seconds)
20:38:07 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 260 seconds)
20:40:29 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
20:40:49 mikoto-c1 joins (~mikoto-ch@D57E2A4A.static.ziggozakelijk.nl)
20:40:58 × zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Ping timeout: 244 seconds)
20:45:26 nate1 joins (~nate@98.45.169.16)
20:52:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
20:54:43 × k` quits (~user@152.1.137.158) (Remote host closed the connection)
21:01:11 alp_ joins (~alp@user/alp)
21:01:11 machinedgod joins (~machinedg@24.105.81.50)
21:03:12 × mikoto-c1 quits (~mikoto-ch@D57E2A4A.static.ziggozakelijk.nl) (Ping timeout: 260 seconds)
21:07:04 × kadobanana quits (~mud@user/kadoban) (Ping timeout: 248 seconds)
21:07:33 kadobanana joins (~mud@user/kadoban)
21:09:06 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
21:09:59 zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313)
21:11:03 CiaoSen joins (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
21:11:59 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:13:56 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:14:17 × vicfred quits (~vicfred@user/vicfred) (Remote host closed the connection)
21:14:31 vicfred joins (~vicfred@user/vicfred)
21:14:56 × zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Ping timeout: 272 seconds)
21:20:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
21:23:02 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
21:25:09 Vq joins (~vq@90-227-195-41-no77.tbcn.telia.com)
21:26:23 × jocke-l quits (jocke-l@a.x0.is) (Quit: WeeChat 2.3)
21:27:55 zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313)
21:29:07 jakalx parts (~jakalx@base.jakalx.net) ()
21:29:16 jocke-l joins (jocke-l@a.x0.is)
21:31:27 mikoto-c1 joins (~mikoto-ch@D57E2A4A.static.ziggozakelijk.nl)
21:32:55 zeenk joins (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980)
21:33:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
21:34:33 jakalx joins (~jakalx@base.jakalx.net)
21:34:46 × euandreh quits (~euandreh@2804:14c:33:9fe5:2165:73d6:1630:f174) (Quit: WeeChat 3.5)
21:38:34 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
21:39:07 littlebo1eep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
21:39:21 × jocke-l quits (jocke-l@a.x0.is) (Quit: WeeChat 3.0)
21:39:30 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Ping timeout: 276 seconds)
21:39:37 jocke-l joins (jocke-l@a.x0.is)
21:41:00 euandreh joins (~euandreh@2804:14c:33:9fe5:2165:73d6:1630:f174)
21:44:51 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.5)
21:46:04 × littlebo1eep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
21:46:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
21:46:35 × mikoto-c1 quits (~mikoto-ch@D57E2A4A.static.ziggozakelijk.nl) (Ping timeout: 244 seconds)
21:48:26 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
21:48:59 mikoto-c1 joins (~mikoto-ch@84-30-69-159.cable.dynamic.v4.ziggo.nl)
21:49:15 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds)
21:49:32 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
21:50:47 × michalz quits (~michalz@185.246.204.107) (Remote host closed the connection)
22:00:48 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:02:17 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:02:42 × mikoto-c1 quits (~mikoto-ch@84-30-69-159.cable.dynamic.v4.ziggo.nl) (Ping timeout: 260 seconds)
22:08:25 × chomwitt quits (~chomwitt@2a02:587:dc15:4f00:b162:3ee9:4b48:2a00) (Ping timeout: 248 seconds)
22:10:11 <romesrf> ahahaha
22:11:23 × acidjnk quits (~acidjnk@p200300d0c7068b757d0566c8380b0d79.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
22:12:26 × EvanR quits (~EvanR@user/evanr) (Remote host closed the connection)
22:13:18 EvanR joins (~EvanR@user/evanr)
22:16:28 × Tuplanolla quits (~Tuplanoll@91-159-68-39.elisa-laajakaista.fi) (Quit: Leaving.)
22:16:45 mvk joins (~mvk@2607:fea8:5ce3:8500::ba9a)
22:22:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
22:23:28 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:26:14 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
22:27:39 dagi35605 is now known as dagit
22:30:20 × zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Ping timeout: 260 seconds)
22:32:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
22:36:35 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
22:40:22 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
22:42:50 zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313)
22:44:52 × slack1256 quits (~slack1256@191.126.227.77) (Ping timeout: 272 seconds)
22:51:24 × romesrf quits (~romes@185.5.8.134) (Quit: WeeChat 3.4.1)
22:55:26 × DNH quits (~DNH@2a02:8109:b740:2c4:f181:7a80:2e1b:312d) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:56:58 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:57:04 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
22:57:04 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
22:57:04 wroathe joins (~wroathe@user/wroathe)
22:58:42 × pera quits (~pera@user/pera) (Ping timeout: 260 seconds)
23:00:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
23:02:03 × xff0x quits (~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 276 seconds)
23:03:05 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
23:10:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
23:16:18 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
23:19:32 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
23:22:43 × kenaryn quits (~aurele@89-88-44-27.abo.bbox.fr) (Quit: leaving)
23:25:41 × yauhsien quits (~yauhsien@61-231-45-20.dynamic-ip.hinet.net) (Remote host closed the connection)
23:27:54 × zeenk quits (~zeenk@2a02:2f04:a104:ef00:10:581:f80f:b980) (Quit: Konversation terminated!)
23:32:34 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
23:34:10 xff0x joins (~xff0x@b133147.ppp.asahi-net.or.jp)
23:35:47 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
23:41:04 × littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
23:43:26 littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo)
23:44:47 × _xor quits (~xor@72.49.198.103) (Quit: bbiab)
23:44:57 × zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Ping timeout: 248 seconds)
23:45:26 yauhsien joins (~yauhsien@61-231-45-20.dynamic-ip.hinet.net)
23:45:54 nate1 joins (~nate@98.45.169.16)
23:46:56 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 272 seconds)
23:50:10 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
23:52:00 × gurkenglas quits (~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
23:53:08 zincy joins (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313)
23:53:33 azimut joins (~azimut@gateway/tor-sasl/azimut)
23:54:43 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
23:55:31 azimut joins (~azimut@gateway/tor-sasl/azimut)
23:56:17 × mmhat quits (~mmh@p200300f1c71af875ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.5)
23:57:37 × zincy quits (~zincy@2a00:23c8:970c:4801:2054:62a8:f46a:a313) (Ping timeout: 260 seconds)

All times are in UTC on 2022-05-18.