Home liberachat/#haskell: Logs Calendar

Logs on 2022-03-21 (liberachat/#haskell)

00:02:08 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 252 seconds)
00:02:47 tcard joins (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp)
00:04:04 <sm> https://github.com/haskell-infra/www.haskell.org/issues/185 was opened
00:04:31 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 256 seconds)
00:06:22 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
00:07:09 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
00:07:33 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
00:08:55 × nicbk quits (~nicbk@user/nicbk) (Ping timeout: 240 seconds)
00:09:04 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
00:09:04 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
00:09:04 wroathe joins (~wroathe@user/wroathe)
00:12:27 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 256 seconds)
00:12:34 nicbk joins (~nicbk@user/nicbk)
00:13:24 × wroathe quits (~wroathe@user/wroathe) (Client Quit)
00:15:07 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
00:15:17 × finley quits (~finley@129.72.2.108) (Ping timeout: 256 seconds)
00:16:01 romesrf joins (~romes@44.190.189.46.rev.vodafone.pt)
00:18:47 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
00:18:47 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
00:18:47 wroathe joins (~wroathe@user/wroathe)
00:19:26 eldritch_ is now known as eldritch
00:21:07 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 268 seconds)
00:22:54 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
00:23:05 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
00:24:56 × eldritch quits (~eldritch@user/eldritch/x-9272577) (Changing host)
00:24:56 eldritch joins (~eldritch@user/eldritch)
00:28:31 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 268 seconds)
00:29:50 × Ferdirand quits (~somebody@2001:4c78:2012:5000::2) (Ping timeout: 260 seconds)
00:30:58 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
00:35:22 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
00:36:15 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 250 seconds)
00:36:41 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 250 seconds)
00:40:15 × lumberjack123 quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
00:43:45 mvk joins (~mvk@2607:fea8:5cc3:7e00::7980)
00:49:07 <energizer> is it possible to implement fmap for functions?
00:49:15 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
00:52:26 × mmhat quits (~mmh@55d4a453.access.ecotel.net) (Quit: WeeChat 3.4.1)
00:52:54 <energizer> fmap (b -> c) -> (a -> b) -> (a -> c)
00:53:11 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 268 seconds)
00:53:35 <boxscape_> energizer yes - I'd recommend trying to implement it yourself, but if you can't, you can also look up that type on hoogle and find plenty of results
00:53:42 <jackdk> energizer: `instance Functor ((->) r)`
00:53:45 <boxscape_> or that
00:53:55 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
00:54:57 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 256 seconds)
00:55:51 <romesrf> ericson2314: let us know how it goes
00:55:57 <romesrf> energizer:
00:56:08 <romesrf> ericson2314: apologize the ping, funny it's you hahaha
00:56:10 <energizer> well it turned out that it's already there by defualt
00:56:24 <romesrf> energizer: oH! but do take the challenge, it's quite fun
00:56:37 <energizer> it's just compose
00:56:41 <romesrf> oh :P
00:56:49 <energizer> inc x = x + 1; (fmap inc inc) 3 produces 5
00:56:53 <romesrf> I thought you were more of a beginner hahaha
00:57:07 <energizer> i am :)
00:57:14 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
00:57:26 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
00:57:27 <romesrf> "it's just compose" is pretty confident (well justified here :P)
00:57:33 <romesrf> eheh
00:57:46 <romesrf> :info (->)
00:58:00 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
00:58:03 <romesrf> %info (->)
00:58:04 <geekosaur> % :info (->)
00:58:06 <yahb> geekosaur: *** Exception: heap overflow
00:58:11 <geekosaur> o.O
00:58:12 <romesrf> well that's interesting HAHA
00:58:15 <boxscape_> % :q
00:58:15 <yahb> boxscape_:
00:58:21 <boxscape_> % :i ->
00:58:23 <yahb> boxscape_: type (->) :: * -> * -> *; type (->) = FUN 'Many :: * -> * -> *; -- Defined in `GHC.Types'; infixr -1 ->; instance Applicative ((->) r) -- Defined in `GHC.Base'; instance Functor ((->) r) -- Defined in `GHC.Base'; instance Monad ((->) r) -- Defined in `GHC.Base'; instance Monoid b => Monoid (a -> b) -- Defined in `GHC.Base'; instance Semigroup b => Semigroup (a -> b) -- Defined in `GHC.Base'; instance [s
00:58:42 <romesrf> oh the output of info here isn't that pretty is it :)
00:58:49 <boxscape_> nope :/
00:58:52 <geekosaur> use %% to send it to a pastebin
00:59:00 <boxscape_> %% :i ->
00:59:00 <yahb> boxscape_: http://qp.mniip.com/y/49
00:59:31 <romesrf> energizer: do run :info (->) on GHCI for some insight on what type classes `function` instances
00:59:52 <romesrf> you can use it for everything else too (:info Maybe)
01:00:54 <romesrf> I'm off, bye
01:00:56 × romesrf quits (~romes@44.190.189.46.rev.vodafone.pt) (Quit: WeeChat 3.4)
01:01:13 <boxscape_> bye
01:01:49 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 240 seconds)
01:02:37 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
01:03:12 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
01:04:11 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
01:06:47 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
01:08:13 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4.1)
01:09:25 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 240 seconds)
01:09:53 finley joins (~finley@2600-6c67-8b00-1fea-28ab-40ca-4578-6793.res6.spectrum.com)
01:11:12 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:11:59 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
01:12:14 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
01:17:20 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:17:30 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 252 seconds)
01:20:26 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
01:24:13 × geranim0 quits (~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Ping timeout: 240 seconds)
01:25:52 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 268 seconds)
01:27:49 × ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection)
01:28:09 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
01:33:27 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 250 seconds)
01:36:22 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
01:36:25 alMalsamo joins (~alMalsamo@gateway/tor-sasl/almalsamo)
01:37:00 × canta quits (~canta@user/canta) (Ping timeout: 240 seconds)
01:37:13 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
01:37:16 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
01:39:45 × finley quits (~finley@2600-6c67-8b00-1fea-28ab-40ca-4578-6793.res6.spectrum.com) (Quit: Client closed)
01:41:45 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 256 seconds)
01:42:23 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
01:47:46 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 260 seconds)
01:48:25 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
01:50:32 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 268 seconds)
01:50:41 canta joins (~canta@user/canta)
01:53:48 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 252 seconds)
01:54:29 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
01:56:27 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
01:56:32 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
01:59:58 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
02:00:34 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
02:00:55 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
02:02:01 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:05:19 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
02:06:11 × nexus quits (~nexus@92-249-179-80.pool.digikabel.hu) (Ping timeout: 250 seconds)
02:07:59 nexus joins (~nexus@188-143-101-118.pool.digikabel.hu)
02:09:26 mbuf joins (~Shakthi@122.174.226.171)
02:15:49 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 268 seconds)
02:16:05 × wroathe quits (~wroathe@user/wroathe) (Quit: Lost terminal)
02:27:25 × AlexZenon quits (~alzenon@94.233.240.162) (Ping timeout: 240 seconds)
02:28:27 × Alex_test quits (~al_test@94.233.240.162) (Ping timeout: 256 seconds)
02:28:47 × AlexNoo quits (~AlexNoo@94.233.240.162) (Ping timeout: 256 seconds)
02:31:25 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
02:31:25 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
02:31:25 wroathe joins (~wroathe@user/wroathe)
02:36:27 vysn joins (~vysn@user/vysn)
02:38:02 × neurocyte0917090 quits (~neurocyte@user/neurocyte) (Ping timeout: 240 seconds)
02:41:05 × boxscape_ quits (~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
02:46:35 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
02:48:12 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
02:48:49 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:55:05 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
03:00:21 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 252 seconds)
03:03:59 × lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
03:07:51 × hpc quits (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 245 seconds)
03:09:37 hpc joins (~juzz@ip98-169-35-13.dc.dc.cox.net)
03:12:03 vglfr joins (~vglfr@88.155.11.162)
03:12:32 Dorkside2 joins (~dorkside@208.190.197.222)
03:13:31 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
03:18:14 lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
03:19:29 × Topsi quits (~Tobias@dyndsl-095-033-027-010.ewe-ip-backbone.de) (Read error: Connection reset by peer)
03:23:14 abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
03:26:49 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 256 seconds)
03:33:17 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
03:34:02 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:34:02 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:34:02 finn_elija is now known as FinnElija
03:34:21 frost joins (~frost@user/frost)
03:34:26 × mvk quits (~mvk@2607:fea8:5cc3:7e00::7980) (Ping timeout: 252 seconds)
03:36:33 × Unicorn_Princess quits (~Unicorn_P@46-54-248-191.static.kate-wing.si) (Remote host closed the connection)
03:39:40 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
03:45:22 × kaph quits (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Read error: Connection reset by peer)
03:45:22 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 260 seconds)
03:45:37 kaph joins (~kaph@net-109-116-124-149.cust.vodafonedsl.it)
03:47:53 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
03:56:59 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 252 seconds)
03:57:25 × vglfr quits (~vglfr@88.155.11.162) (Ping timeout: 256 seconds)
03:57:33 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
04:00:55 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
04:05:15 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
04:07:27 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
04:09:20 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
04:09:44 alMalsamo is now known as lumberjack123
04:10:11 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
04:12:01 × nexus quits (~nexus@188-143-101-118.pool.digikabel.hu) (Ping timeout: 245 seconds)
04:13:55 nexus joins (~nexus@80-95-86-84.pool.digikabel.hu)
04:15:33 × alx741 quits (~alx741@host-181-198-243-130.netlife.ec) (Ping timeout: 256 seconds)
04:17:13 Guest91 joins (~Guest91@198.13.48.162)
04:21:36 <Guest91> When reading plutus contract, there is code like this:
04:21:36 <Guest91> data Burner
04:21:37 <Guest91> instance Scripts.ValidatorTypes Burner where
04:21:37 <Guest91>     type instance RedeemerType Burner = MyRedeemer -- Argument given to redeem value, if possible (empty)
04:21:38 <Guest91>     type instance DatumType Burner = MyDatum -- Validator script argument
04:21:38 <Guest91> Can someone explain this definition or rewrite this code for better understand?
04:21:49 <Axman6> @where paste
04:21:49 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
04:23:18 <Guest91> Complete code is here:  https://github.com/iagon-tech/proof-of-burn-cardano/blob/main/src/ProofOfBurn.hs#L218
04:23:39 <Axman6> how much of the code do you understand?
04:24:26 <Guest91> It define  Burner type and let it comply to Scripts.ValidatorTypes rule.
04:25:45 <Axman6> sort of, it defined the Burner type, which has no constructors (this is pretty unusual unless you intend to only use it in the type system). Then it makes Burner an instance of the ValidatorTypes typeclass.
04:26:46 <Axman6> the next two lines define associated types, they say that if you need something of type RedeemerType Burner that will be converted to MyRedeemer - RedeemerType is a _type function_, it takes a type and returns a type
04:27:49 <Guest91> Yes, Burner type have no constructor. What I try to understand is code under where keyword.
04:28:07 <Axman6> see what I just wrote
04:28:18 alx741 joins (~alx741@host-181-198-243-130.netlife.ec)
04:28:34 <Axman6> @where ops
04:28:35 <lambdabot> byorgey Cale conal copumpkin dcoutts dibblego dolio edwardk geekosaur glguy jmcarthur johnw mniip monochrom quicksilver shachaf shapr ski
04:28:48 <Axman6> ops: alx741 ^
04:29:04 <dibblego> Axman6: ?
04:29:22 <Axman6> join/part spam for the last few hours at least
04:29:57 <dibblego> ah ok, I have that turned off
04:30:03 × boborygmy__ quits (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds)
04:30:25 <Axman6> glirc makes it tolerable without turning it off, but enough of it gets annoying =)
04:30:38 ChanServ sets mode +o dibblego
04:30:48 <dibblego> alx741: please join #haskell-ops
04:30:49 <Axman6> Guest91: did that explanation make any sense? this is relatively advanced stuff
04:30:54 dibblego sets mode +b *!*@host-181-198-243-130.netlife.ec
04:31:00 alx741 is kicked by dibblego (alx741)
04:31:41 boborygmy__ joins (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
04:32:05 <Guest91> Thanks, not yet. Still need time to digest and absorb it.
04:32:22 ChanServ sets mode -o dibblego
04:34:09 <Guest91> From all tutorials I have read, the body of 'where' clause is a list of function implement, but here not fit the rule.
04:34:53 <Axman6> I haven't looked at it closely, but this might be a useful article: http://amixtureofmusings.com/2016/05/19/associated-types-and-haskell/
04:35:48 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
04:35:57 <Axman6> Where is used in a few places in Haskell, notably in the instances of type classes. When we use associated types, we also define family instances when we make an instance of that class
04:36:10 <Axman6> thankS dibblego
04:36:33 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
04:36:33 <Guest91> Thanks, I will feedback after read that post
04:38:09 <Axman6> Maybe a concrete example might help. Say we were making a database library, which we wanted to work with m,ultiple backends, like postgres and mysql. We could define class DB a where type ConnectionFor a :: *; type QueryString a :: *; query :: ConnectionFor a -> QueryFor a -> IO [Text] -- (or something, the result doesn't matter)
04:40:30 <Axman6> We could then have data Postgres; instance DB Postgres where type instance ConnectionFor Postgres = PG.Connection; type instance QueryFor Postgres = ByteString; query aPGConnection aBytestring = do ...; data MySQL; instance DB MySQL where type instance ConnectionFor MySQL = MySQL.Connection; type QueryFor MySQL = String; query aMySQLConnection aString = do ...;
04:41:26 <Axman6> we end up having: query :: DB a => ConnectionFor a -> QueryFor a -> IO [Text]
04:42:13 <Axman6> any code we write that needs to talk to MySQL will have to provide queries as Strings, whereas code for Posstgres will need to provide Bytestrings
04:48:30 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
04:49:08 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
04:52:21 × boborygmy__ quits (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 250 seconds)
04:55:27 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
05:02:10 dust_ joins (~dust@2409:4071:e8f:303d:166:7803:b04d:f06f)
05:02:56 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
05:03:55 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
05:06:05 ChaiTRex joins (~ChaiTRex@user/chaitrex)
05:07:01 <jackdk> Axman6: an easier example: request/response types: If you make a Request class with an associated type `Response`, you can define `send :: Request r => r -> IO (Response r)`
05:07:24 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
05:10:13 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
05:12:18 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
05:12:18 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
05:12:18 wroathe joins (~wroathe@user/wroathe)
05:19:18 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
05:20:05 img joins (~img@user/img)
05:21:24 × dust_ quits (~dust@2409:4071:e8f:303d:166:7803:b04d:f06f) (Ping timeout: 240 seconds)
05:21:35 dust_ joins (~dust@2409:4071:e8f:303d:166:7803:b04d:f06f)
05:25:30 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
05:26:11 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
05:26:25 × dust_ quits (~dust@2409:4071:e8f:303d:166:7803:b04d:f06f) (Client Quit)
05:31:01 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
05:32:22 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
05:34:19 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
05:35:51 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
05:35:51 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
05:35:51 wroathe joins (~wroathe@user/wroathe)
05:49:31 _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl)
05:51:48 × Guest91 quits (~Guest91@198.13.48.162) (Quit: Client closed)
05:54:06 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 245 seconds)
06:03:39 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
06:04:13 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
06:06:14 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
06:06:34 azimut joins (~azimut@gateway/tor-sasl/azimut)
06:08:59 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
06:13:20 jstolarek joins (~jstolarek@staticline-31-183-186-36.toya.net.pl)
06:16:19 × nexus quits (~nexus@80-95-86-84.pool.digikabel.hu) (Ping timeout: 268 seconds)
06:17:49 nexus joins (~nexus@92-249-179-24.pool.digikabel.hu)
06:27:19 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:27:56 × Everything quits (~Everythin@37.115.210.35) (Quit: leaving)
06:28:52 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:29:07 biberu\ joins (~biberu@user/biberu)
06:32:41 × biberu quits (~biberu@user/biberu) (Ping timeout: 256 seconds)
06:32:41 biberu\ is now known as biberu
06:35:02 biberu\ joins (~biberu@user/biberu)
06:37:07 biberu- joins (~biberu@user/biberu)
06:38:31 × biberu quits (~biberu@user/biberu) (Ping timeout: 250 seconds)
06:39:21 biberu joins (~biberu@user/biberu)
06:40:59 × biberu\ quits (~biberu@user/biberu) (Ping timeout: 268 seconds)
06:41:59 alp joins (~alp@user/alp)
06:42:30 Taneb0 is now known as Taneb
06:43:27 × biberu- quits (~biberu@user/biberu) (Ping timeout: 268 seconds)
06:44:37 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
06:46:34 × shriekingnoise quits (~shrieking@201.231.16.156) (Quit: Quit)
06:48:44 × _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
07:00:42 michalz joins (~michalz@185.246.204.40)
07:03:02 nshepperd joins (nshepperd@2600:3c03::f03c:92ff:fe28:92c9)
07:03:50 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
07:05:00 acidjnk joins (~acidjnk@p200300d0c7049f411158f2fd5a8b7b8c.dip0.t-ipconnect.de)
07:06:11 coot joins (~coot@213.134.190.95)
07:07:48 Guest91 joins (~Guest91@198.13.48.162)
07:09:53 × abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
07:17:21 gehmehgeh joins (~user@user/gehmehgeh)
07:21:29 komikat joins (~komikat@2409:4070:459a:8110:60cf:a715:e266:571d)
07:26:47 × nexus quits (~nexus@92-249-179-24.pool.digikabel.hu) (Quit: leaving)
07:29:42 × joo-_ quits (~joo-_@fsf/member/joo--) (Quit: leaving)
07:29:56 joo-_ joins (~joo-_@80-62-117-94-mobile.dk.customer.tdc.net)
07:29:56 × joo-_ quits (~joo-_@80-62-117-94-mobile.dk.customer.tdc.net) (Changing host)
07:29:56 joo-_ joins (~joo-_@fsf/member/joo--)
07:34:02 × komikat quits (~komikat@2409:4070:459a:8110:60cf:a715:e266:571d) (Ping timeout: 260 seconds)
07:34:35 MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net)
07:35:07 × metaversum quits (~metaverse@94.13.111.159) (Quit: Connection error?!)
07:36:21 damian_ joins (~damian@94.13.111.159)
07:37:37 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
07:38:11 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
07:40:42 abastro[m] joins (~abastroma@2001:470:69fc:105::1:e119)
07:40:43 × MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 250 seconds)
07:41:51 MajorBiscuit joins (~MajorBisc@c-001-013-060.client.tudelft.eduvpn.nl)
07:43:43 <abastro[m]> Sorry, is this #haskell libera chat or is it something different?
07:44:01 <[exa]> this is #haskell channel on libera IRC network, yes
07:44:55 <abastro[m]> Thank you! Is this chat relatively inactive? Or is it timezone issue
07:46:31 <[exa]> yeah technically it's monday morning or sunday night or something in most "active" timezones right now, so it's not super busy you see
07:46:55 <[exa]> otherwise pretty active I'd say
07:48:38 <abastro[m]> Oh, I see. Thank you!
07:50:11 machinedgod joins (~machinedg@24.105.81.50)
07:52:27 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
07:53:57 epolanski joins (uid312403@id-312403.helmsley.irccloud.com)
07:55:55 × nicbk quits (~nicbk@user/nicbk) (Ping timeout: 240 seconds)
07:56:29 jakalx joins (~jakalx@base.jakalx.net)
08:01:00 vglfr joins (~vglfr@88.155.11.162)
08:01:31 jgeerds joins (~jgeerds@55d4548e.access.ecotel.net)
08:02:23 mmhat joins (~mmh@55d4ea65.access.ecotel.net)
08:02:44 brandonh joins (brandonh@gateway/vpn/protonvpn/brandonh)
08:07:10 × brandonh quits (brandonh@gateway/vpn/protonvpn/brandonh) (Ping timeout: 260 seconds)
08:11:09 lortabac joins (~lortabac@2a01:e0a:541:b8f0:9ffa:fe67:ec0c:a7c9)
08:12:05 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
08:12:46 × dextaa_ quits (~dextaa@user/dextaa) (Remote host closed the connection)
08:17:05 mikoto-chan joins (~mikoto-ch@84.199.144.235)
08:17:26 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
08:22:02 brandonh joins (brandonh@gateway/vpn/protonvpn/brandonh)
08:25:24 <jackdk> Some of us are about though
08:26:15 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
08:26:49 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
08:27:01 × brandonh quits (brandonh@gateway/vpn/protonvpn/brandonh) (Ping timeout: 245 seconds)
08:29:53 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
08:37:30 dextaa_ joins (~dextaa@user/dextaa)
08:40:04 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
08:42:35 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
08:44:58 × raym quits (~raym@user/raym) (Quit: kernel update, rebooting...)
08:46:08 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
08:46:27 raym joins (~raym@user/raym)
08:47:00 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
08:47:12 chele joins (~chele@user/chele)
08:55:16 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
08:58:10 × coot quits (~coot@213.134.190.95) (Quit: coot)
08:59:50 × dextaa_ quits (~dextaa@user/dextaa) (Remote host closed the connection)
09:00:09 × octeep[m] quits (~octeepoct@2001:470:69fc:105::1:3dbf) (Quit: You have been kicked for being idle)
09:03:16 brandonh joins (brandonh@gateway/vpn/protonvpn/brandonh)
09:03:32 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
09:08:00 califax joins (~califax@user/califx)
09:09:23 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
09:18:09 × vglfr quits (~vglfr@88.155.11.162) (Ping timeout: 256 seconds)
09:19:06 × jgeerds quits (~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 245 seconds)
09:22:01 coot joins (~coot@213.134.190.95)
09:23:28 ccntrq joins (~Thunderbi@2a01:c22:8d50:dd00:8e34:5a5f:75dd:cff4)
09:28:11 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
09:29:35 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4.1)
09:31:01 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
09:37:30 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
09:37:50 × coot quits (~coot@213.134.190.95) (Quit: coot)
09:39:26 romesrf joins (~romes@44.190.189.46.rev.vodafone.pt)
09:39:26 boborygmy__ joins (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
09:45:36 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4.1)
09:46:45 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
09:46:56 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
09:47:27 × brandonh quits (brandonh@gateway/vpn/protonvpn/brandonh) (Ping timeout: 250 seconds)
09:48:57 boborygmy_ joins (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
09:49:17 brandonh joins (brandonh@gateway/vpn/protonvpn/brandonh)
09:51:21 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
09:51:21 × boborygmy__ quits (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds)
09:52:35 brandonh_ joins (~brandonh@2-238-112-186.ip243.fastwebnet.it)
09:53:57 × brandonh quits (brandonh@gateway/vpn/protonvpn/brandonh) (Ping timeout: 252 seconds)
09:56:21 <dminuoso> I have type S and three traversals `Traversal' S A` in my hand. Is there a mechanical way to combine these into a singular `Traversal' S A`
09:56:43 cosimone joins (~user@93-44-187-176.ip98.fastwebnet.it)
09:56:44 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
09:56:59 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
09:57:07 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
09:57:19 <dminuoso> (They are disjoint)
09:57:22 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
09:57:30 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
09:58:13 vorpuni joins (~pvorp@2001:861:3881:c690:6385:bd9:c0d2:296c)
09:58:20 Pickchea joins (~private@user/pickchea)
09:59:39 <kuribas> liftA2 (>=>) ?
09:59:44 <kuribas> :t liftA2 (>=>)
09:59:45 <lambdabot> (Monad m, Applicative f) => f (a -> m b) -> f (b -> m c) -> f (a -> m c)
10:00:33 <kuribas> looks good.
10:00:43 × brandonh_ quits (~brandonh@2-238-112-186.ip243.fastwebnet.it) (Quit: brandonh_)
10:01:05 <kuribas> Though that gives a monad, not an applicative...
10:01:40 <kuribas> But the monad is necessary for the composition.
10:03:18 <abastro[m]> Uhm, I think they meant lens Traversal
10:03:22 <kuribas> Const is not a monad.
10:04:37 <kuribas> abastro[m]: those "are" lens traversals.
10:04:48 <Taneb> dminuoso: https://hackage.haskell.org/package/lens-5.1/docs/Control-Lens-Unsound.html#v:adjoin
10:06:00 <abastro[m]> Oh, kuribas you mean Traversal is an applicative? Uhm still I don't see how it would be used to implement combining many traversals into one
10:06:29 <kuribas> type Traversal s t a b = forall f. Applicative f => (a -> f b) -> s -> f t
10:08:11 × boborygmy_ quits (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 268 seconds)
10:10:17 ph88 joins (~ph88@2a01:598:a905:e2e:3989:552f:4e88:700e)
10:11:09 <abastro[m]> So how is `liftA2 (>=>)` relevant with `((a -> f a) -> (s -> f s)) -> ((a -> f a) -> (s -> f s)) -> ((a -> f a) -> (s -> f s))`?
10:12:16 <kuribas> abastro[m]: it works if f is a monad.
10:12:55 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
10:14:55 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
10:14:57 <abastro[m]> How so? The type does not seem to match.
10:15:32 <abastro[m]> * to match. Specifically, `liftA2 (>=>)` has Applicative `f` and Monad `m`
10:15:44 benin joins (~benin@183.82.26.94)
10:17:49 <kuribas> indeed
10:18:22 <kuribas> oh adjoin works by extracting parts, then reassembling.
10:18:27 <kuribas> in an unsafe way.
10:19:33 <abastro[m]> I don't think `adjoin` would be safe for `Monad` actions either.
10:19:59 <abastro[m]> s/./, so I don't see why you are saying`liftA2 >=>`/
10:20:23 <kuribas> yeah, it wouldn't work...
10:21:25 × romesrf quits (~romes@44.190.189.46.rev.vodafone.pt) (Quit: WeeChat 3.4)
10:24:27 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4.1)
10:24:27 × Guest91 quits (~Guest91@198.13.48.162) (Ping timeout: 256 seconds)
10:24:46 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
10:25:34 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
10:26:39 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
10:29:24 <dminuoso> Taneb: Ahh, that's it!
10:29:29 <dminuoso> Cheers.
10:29:41 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:29:42 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 252 seconds)
10:31:01 <dminuoso> Oh noo, sets are not traversable..
10:31:15 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
10:31:24 <abastro[m]> Oof
10:31:27 <abastro[m]> * Ouch
10:32:11 <kuribas> dminuoso: not properly.
10:32:17 <kuribas> dminuoso: because it could change the number of elements.
10:32:42 <kuribas> dminuoso: maybe you could use the fold?
10:32:51 × Akiva quits (~Akiva@user/Akiva) (Ping timeout: 245 seconds)
10:33:13 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
10:33:17 <dminuoso> No I really want a traversal :>
10:33:25 <dminuoso> I guess Ill just create an unsafe one
10:39:16 thyriaen joins (~thyriaen@ip5f5af2d7.dynamic.kabel-deutschland.de)
10:39:27 <abastro[m]> Do you need to change certain elements? Perhaps you could avoid using Set
10:39:33 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4.1)
10:41:26 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
10:42:26 × ph88 quits (~ph88@2a01:598:a905:e2e:3989:552f:4e88:700e) (Ping timeout: 245 seconds)
10:44:36 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
10:45:10 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
10:47:19 <kuribas> unlawful lenses can be fine for many usecases.
10:47:28 <kuribas> As long as you don't rely on the laws to rewrite code.
10:49:48 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
10:49:51 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
10:54:42 ph88 joins (~ph88@tmo-121-111.customers.d1-online.com)
10:56:03 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
10:58:29 ccntrq1 joins (~Thunderbi@2a01:c23:9138:6500:9d51:645d:5278:c792)
10:58:44 × ccntrq quits (~Thunderbi@2a01:c22:8d50:dd00:8e34:5a5f:75dd:cff4) (Ping timeout: 268 seconds)
10:58:45 ccntrq1 is now known as ccntrq
10:59:51 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
11:04:27 razetime joins (~quassel@117.193.0.187)
11:05:13 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
11:05:54 × ccntrq quits (~Thunderbi@2a01:c23:9138:6500:9d51:645d:5278:c792) (Remote host closed the connection)
11:06:12 ccntrq joins (~Thunderbi@2a01:c23:9138:6500:9d51:645d:5278:c792)
11:06:23 × _xor quits (~xor@dsl-50-5-233-169.fuse.net) (Ping timeout: 256 seconds)
11:08:34 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
11:14:47 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
11:15:54 × kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 252 seconds)
11:16:48 kritzefitz joins (~kritzefit@debian/kritzefitz)
11:18:37 × koz quits (~koz@121.99.240.58) (Ping timeout: 240 seconds)
11:22:11 img joins (~img@user/img)
11:23:51 Ferdirand joins (~somebody@2001:4c78:2012:5000::2)
11:25:02 koz joins (~koz@121.99.240.58)
11:31:59 _xor joins (~xor@74.215.35.24)
11:39:15 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds)
11:51:10 × mikoto-chan quits (~mikoto-ch@84.199.144.235) (Ping timeout: 260 seconds)
11:53:49 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
11:56:28 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
11:56:41 cfricke joins (~cfricke@user/cfricke)
11:57:18 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
11:57:26 × mmhat quits (~mmh@55d4ea65.access.ecotel.net) (Ping timeout: 245 seconds)
11:57:46 jgeerds joins (~jgeerds@55d4548e.access.ecotel.net)
12:00:13 × acidjnk quits (~acidjnk@p200300d0c7049f411158f2fd5a8b7b8c.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
12:05:02 neurocyte0917090 joins (~neurocyte@IP-094046074051.dynamic.medianet-world.de)
12:05:02 × neurocyte0917090 quits (~neurocyte@IP-094046074051.dynamic.medianet-world.de) (Changing host)
12:05:02 neurocyte0917090 joins (~neurocyte@user/neurocyte)
12:05:21 mikoto-chan joins (~mikoto-ch@213.177.151.239)
12:10:24 boborygmy_ joins (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
12:10:35 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
12:11:19 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
12:12:38 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
12:13:08 sprout_ joins (~quassel@2a02:a467:ccd6:1:f9b9:c2d3:ad62:759d)
12:13:15 × razetime quits (~quassel@117.193.0.187) (Ping timeout: 256 seconds)
12:13:15 × alp quits (~alp@user/alp) (Ping timeout: 256 seconds)
12:13:37 razetime joins (~quassel@117.254.35.71)
12:13:46 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
12:17:04 × sprout quits (~quassel@2a02:a467:ccd6:1:dc5b:897:dfbc:2d30) (Ping timeout: 268 seconds)
12:25:15 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
12:27:45 × jgeerds quits (~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 256 seconds)
12:28:39 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 250 seconds)
12:30:17 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
12:31:49 Midjak joins (~Midjak@82.66.147.146)
12:32:36 mmhat joins (~mmh@55d4ea65.access.ecotel.net)
12:35:24 alp joins (~alp@user/alp)
12:41:13 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 250 seconds)
12:43:53 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
12:45:51 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
12:46:41 × boborygmy_ quits (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds)
12:50:45 CiaoSen joins (~Jura@p200300c9570f91002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
12:51:48 bahamas joins (~lucian@86.120.77.115)
12:52:13 mikoto-chan joins (~mikoto-ch@84.199.144.235)
12:53:06 notzmv joins (~zmv@user/notzmv)
12:55:33 boxscape_ joins (~boxscape_@134.171.45.198)
12:58:37 boborygmy_ joins (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
13:04:59 shriekingnoise joins (~shrieking@201.231.16.156)
13:06:20 × ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec)
13:08:37 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 240 seconds)
13:15:18 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
13:16:12 rembo10 joins (~rembo10@main.remulis.com)
13:20:48 tiferrei joins (~tiferrei@user/tiferrei)
13:22:11 × frost quits (~frost@user/frost) (Quit: Client closed)
13:23:05 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
13:23:52 TimothyBess[m] joins (~dorksidem@2001:470:69fc:105::1:e14e)
13:24:03 rembo10 joins (~rembo10@main.remulis.com)
13:27:51 × bahamas quits (~lucian@86.120.77.115) (Ping timeout: 245 seconds)
13:28:40 bahamas joins (~lucian@86.120.77.115)
13:28:42 × boxscape_ quits (~boxscape_@134.171.45.198) (Ping timeout: 260 seconds)
13:30:19 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
13:30:33 cfricke joins (~cfricke@user/cfricke)
13:30:47 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
13:31:13 rembo10 joins (~rembo10@main.remulis.com)
13:31:39 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
13:32:01 × foul_owl quits (~kerry@23.82.193.89) (Ping timeout: 256 seconds)
13:35:57 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
13:44:37 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
13:45:17 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
13:45:45 foul_owl joins (~kerry@23.82.193.87)
13:46:15 rembo10 joins (~rembo10@main.remulis.com)
13:47:53 × son0p quits (~ff@181.136.122.143) (Ping timeout: 256 seconds)
13:49:49 coot joins (~coot@213.134.190.95)
13:51:00 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 252 seconds)
13:53:53 × bahamas quits (~lucian@86.120.77.115) (Ping timeout: 256 seconds)
13:54:52 Sgeo joins (~Sgeo@user/sgeo)
13:57:51 × CiaoSen quits (~Jura@p200300c9570f91002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
13:59:16 × damian_ quits (~damian@94.13.111.159) (Quit: Connection error?!)
13:59:23 __monty__ joins (~toonn@user/toonn)
13:59:50 linden joins (~linden@94.13.111.159)
14:00:10 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
14:01:19 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
14:01:54 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 268 seconds)
14:01:54 × Inst quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 268 seconds)
14:08:24 briandaed joins (~root@109.95.142.93.r.toneticgroup.pl)
14:09:26 <janus> the package aeson-diff (that i uploaded recently) was disabled on stackage because "setup fail needs Cabal exposed"
14:09:56 <janus> but i can't reproduce that failure locally, how may it be a problem to not depend on Cabal but only cabal-doctest?
14:11:51 <janus> the cabal-doctest page says you only need to depend on Cabal if you use really old cabal-install versions
14:12:02 <janus> that are older than 2.4
14:16:04 troydm1 joins (~troydm@host-176-37-124-197.b025.la.net.ua)
14:17:14 × mud quits (~mud@user/kadoban) (Quit: quit)
14:17:21 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
14:18:05 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 250 seconds)
14:18:16 × mikoto-chan quits (~mikoto-ch@84.199.144.235) (Ping timeout: 245 seconds)
14:19:54 ph88^ joins (~ph88@2a01:598:b108:5206:4d46:96d8:e46d:ab60)
14:23:35 × ph88 quits (~ph88@tmo-121-111.customers.d1-online.com) (Ping timeout: 256 seconds)
14:25:15 mud joins (~mud@user/kadoban)
14:27:31 <jneira[m]> maybe due to the new Cabal-syntax package? stack uses a not so old Cabal version, 3.2 iirc?
14:27:33 × jstolarek quits (~jstolarek@staticline-31-183-186-36.toya.net.pl) (Ping timeout: 256 seconds)
14:30:03 × dsrt^ quits (~dsrt@96-67-120-105-static.hfc.comcastbusiness.net) (Ping timeout: 252 seconds)
14:34:45 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
14:35:04 <janus> what is the purpose of the new cabal-syntax package? i saw some discussions on it on the cabal issue tracker but i don't understand the context
14:35:14 <merijn> janus: Future proving
14:35:32 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
14:35:47 <merijn> janus: The goal is to move stuff out of Cabal into Cabal-syntax
14:36:22 <merijn> janus: The current empty package exists so you can already add Cabal-syntax to your dependencies/buildplan for the future
14:40:49 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 250 seconds)
14:43:39 × mud quits (~mud@user/kadoban) (Quit: quit)
14:44:12 mud joins (~mud@user/kadoban)
14:44:26 × mud quits (~mud@user/kadoban) (Client Quit)
14:47:00 mud joins (~mud@user/kadoban)
14:49:40 × troydm1 quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
14:49:57 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
14:51:01 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
14:58:22 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:9ffa:fe67:ec0c:a7c9) (Quit: WeeChat 2.8)
15:01:38 × linden quits (~linden@94.13.111.159) (Quit: Connection error?!)
15:02:08 amino_ joins (~amino@94.13.111.159)
15:02:46 <janus> ah, so i imagine it is to make packages compatible with future Cabal releases that won't expose the syntax elements?
15:05:03 <merijn> The syntax modules are *currently* inside Cabal, but will move to Cabal-syntax in the future
15:06:37 <geekosaur> I can't see that causing "setup fail" though?
15:07:35 <maerwald[m]> Did you know you can uses braces in cabal file syntax, instead of relying on formatted sections?
15:08:33 <geekosaur> no, but it doesn't surprise me much
15:10:26 <dminuoso> readFile :: FilePath -> IO Text
15:10:51 <dminuoso> I find this quite surprising, that `text` give me functions that expect a String like that.
15:11:19 <maerwald[m]> dminuoso: wdym?
15:11:58 <sclv> use of string is a convention for filepaths that is in base. text aims to _give_ a text type not _replace_ a string type
15:12:14 <sclv> also neither text nor string are proper cross platform types for representing filepaths
15:12:22 <sclv> as maerwald[m] is an expert in :-)
15:12:30 <dminuoso> sclv: fundamentally cross platform types dont exist anyway.
15:12:47 <sclv> they absolutely do
15:12:56 <dminuoso> what representation would you chose, then?
15:13:08 <dminuoso> ByteString?
15:13:08 <sclv> you pick one depending on the platform and provide an abstract interface
15:13:11 <dminuoso> Ah
15:13:15 <dminuoso> Yeah I guess there's that.
15:13:21 <geekosaur> which maerwald has been working on
15:13:30 <dminuoso> Neato, is that going into base?
15:13:38 <dminuoso> Or as a separate package?
15:13:47 <maerwald[m]> dminuoso: there is a cross platform type for filepaths
15:14:08 <sclv> https://discourse.haskell.org/t/reviving-the-abstract-filepath-proposal-afpp-in-user-space/2344
15:14:17 <maerwald[m]> https://github.com/haskell/filepath/pull/103/files#diff-1839cc6d3f98f035aaadb7aafae70dc5f089ee7607d68561325f7e2b96a02795R116
15:15:51 × amino_ quits (~amino@94.13.111.159) (Read error: Connection reset by peer)
15:15:54 × ph88^ quits (~ph88@2a01:598:b108:5206:4d46:96d8:e46d:ab60) (Ping timeout: 268 seconds)
15:16:08 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
15:16:26 fef joins (~thedawn@user/thedawn)
15:16:28 kadobanana joins (~mud@user/kadoban)
15:16:33 amino_ joins (~amino@94.13.111.159)
15:16:46 × dextaa quits (~DV@user/dextaa) (Quit: Ping timeout (120 seconds))
15:16:48 <geekosaur> right, there used to be an abstract FilePath
15:16:52 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
15:16:57 × mud quits (~mud@user/kadoban) (Read error: Connection reset by peer)
15:16:58 <maerwald[m]> 1. AbstractFilePath is a platform ifdefed newtype around ShortByteString (typesafe, so using the wrong constructor is a type error)
15:16:58 <maerwald[m]> 2. Platform specific newtypes around ShortByteString are exposed as well
15:16:59 <maerwald[m]> 3. On windows the bytestring is in UTF-16LE, so it needs specialized functions
15:16:59 <geekosaur> as a separate package
15:17:10 dextaa joins (~DV@user/dextaa)
15:17:32 <maerwald[m]> https://github.com/hasufell/abstract-filepath
15:17:35 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
15:20:00 karim joins (~karim@41.238.138.163)
15:20:30 jpds joins (~jpds@gateway/tor-sasl/jpds)
15:22:22 ec joins (~ec@gateway/tor-sasl/ec)
15:24:46 jakalx joins (~jakalx@base.jakalx.net)
15:24:55 × karim quits (~karim@41.238.138.163) (Remote host closed the connection)
15:25:15 karim joins (~karim@41.238.138.163)
15:32:23 × Typedfern quits (~Typedfern@170.red-88-24-162.staticip.rima-tde.net) (Ping timeout: 250 seconds)
15:33:21 × Techcable quits (~Techcable@168.235.93.147) (Remote host closed the connection)
15:33:51 × kaph quits (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 252 seconds)
15:35:36 Techcable joins (~Techcable@168.235.93.147)
15:35:47 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
15:38:18 Unicorn_Princess joins (~Unicorn_P@46-54-248-191.static.kate-wing.si)
15:40:54 ladyfriday is now known as mrmonday
15:44:06 mc47 joins (~mc47@xmonad/TheMC47)
15:48:27 Typedfern joins (~Typedfern@122.red-88-24-160.staticip.rima-tde.net)
15:50:12 × polyphem_ quits (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Ping timeout: 240 seconds)
15:51:43 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:51:45 mikoto-chan joins (~mikoto-ch@213.177.151.239)
15:52:44 lbseale joins (~ep1ctetus@user/ep1ctetus)
15:54:17 × alp quits (~alp@user/alp) (Ping timeout: 240 seconds)
15:54:19 doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
15:56:11 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
15:56:36 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
15:57:25 spikhoff joins (~spikhoff@8ab7-fe8e-44ff-127b-2180-4880-07d0-2001.sta.estpak.ee)
15:58:03 × coot quits (~coot@213.134.190.95) (Quit: coot)
15:58:57 Inst joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net)
15:59:48 boxscape_ joins (~boxscape_@p4ff0b60b.dip0.t-ipconnect.de)
16:00:32 × bb010g quits (~bb010g@2001:470:69fc:105::9a5) (Quit: You have been kicked for being idle)
16:00:59 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
16:01:17 polyphem joins (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
16:02:42 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
16:05:15 notzmv joins (~zmv@user/notzmv)
16:06:57 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
16:06:58 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Read error: Connection reset by peer)
16:10:05 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
16:13:48 bahamas joins (~lucian@84.232.140.158)
16:14:22 justsomeguy joins (~justsomeg@user/justsomeguy)
16:15:07 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:19:59 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3)
16:24:49 × Inst quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 250 seconds)
16:27:07 × kadobanana quits (~mud@user/kadoban) (Ping timeout: 256 seconds)
16:28:03 Pickchea joins (~private@user/pickchea)
16:29:25 acidjnk joins (~acidjnk@p200300d0c7049f411158f2fd5a8b7b8c.dip0.t-ipconnect.de)
16:31:08 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds)
16:32:33 × bahamas quits (~lucian@84.232.140.158) (Ping timeout: 256 seconds)
16:33:22 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
16:33:44 × turlando_ quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Quit: turlando_)
16:33:58 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
16:34:18 turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it)
16:34:18 × turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
16:34:18 turlando joins (~turlando@user/turlando)
16:34:37 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
16:35:42 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
16:36:09 zebrag joins (~chris@user/zebrag)
16:38:16 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
16:40:14 Guest7 joins (~Guest7@2a02:2149:8841:c400:9476:ae16:b9bd:afdf)
16:40:54 justsomeguy joins (~justsomeg@user/justsomeguy)
16:41:34 lunand joins (~lunand@2a02:2149:8841:c400:9476:ae16:b9bd:afdf)
16:41:37 FilipKalan joins (~FilipKala@77.28.93.105)
16:41:45 × Guest7 quits (~Guest7@2a02:2149:8841:c400:9476:ae16:b9bd:afdf) (Client Quit)
16:42:22 FilipKalan91 joins (~FilipKala@77.28.93.105)
16:42:25 × FilipKalan91 quits (~FilipKala@77.28.93.105) (Write error: Broken pipe)
16:42:39 FilipKalan91 joins (~FilipKala@77.28.93.105)
16:42:53 × FilipKalan91 quits (~FilipKala@77.28.93.105) (Client Quit)
16:43:32 × lunand quits (~lunand@2a02:2149:8841:c400:9476:ae16:b9bd:afdf) (Remote host closed the connection)
16:43:35 × chele quits (~chele@user/chele) (Remote host closed the connection)
16:45:35 × lumberjack123 quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
16:45:52 javiergarea joins (~javiergar@62.83.194.64.dyn.user.ono.com)
16:45:59 alp joins (~alp@user/alp)
16:49:14 Akiva joins (~Akiva@user/Akiva)
16:49:21 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
16:49:35 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 240 seconds)
16:50:53 hololeap joins (~hololeap@user/hololeap)
16:53:03 × vysn quits (~vysn@user/vysn) (Ping timeout: 252 seconds)
16:53:30 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
16:53:36 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
16:55:00 × Akiva quits (~Akiva@user/Akiva) (Ping timeout: 240 seconds)
16:55:02 vicfred joins (~vicfred@user/vicfred)
16:55:23 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
16:57:37 × ccntrq quits (~Thunderbi@2a01:c23:9138:6500:9d51:645d:5278:c792) (Remote host closed the connection)
17:02:17 jakalx parts (~jakalx@base.jakalx.net) ()
17:02:51 geranim0 joins (~geranim0@modemcable242.171-178-173.mc.videotron.ca)
17:02:52 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
17:04:53 × spikhoff quits (~spikhoff@8ab7-fe8e-44ff-127b-2180-4880-07d0-2001.sta.estpak.ee) (Quit: Leaving)
17:05:02 jakalx joins (~jakalx@base.jakalx.net)
17:05:40 × razetime quits (~quassel@117.254.35.71) (Ping timeout: 268 seconds)
17:06:47 × Pickchea quits (~private@user/pickchea) (Ping timeout: 256 seconds)
17:07:52 jpds joins (~jpds@gateway/tor-sasl/jpds)
17:08:51 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
17:12:38 Dorkside2 is now known as Dorkside
17:14:55 × turlando quits (~turlando@user/turlando) (Quit: turlando)
17:15:21 turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it)
17:15:21 × turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
17:15:21 turlando joins (~turlando@user/turlando)
17:18:37 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
17:21:20 ProfSimm joins (~ProfSimm@87.227.196.109)
17:21:45 fendor joins (~fendor@91.141.35.69.wireless.dyn.drei.com)
17:22:27 × fendor_ quits (~fendor@91.141.33.43.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
17:22:47 fef joins (~thedawn@user/thedawn)
17:23:13 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds)
17:25:49 lunand joins (~lunand@2a02:2149:8841:c400:9476:ae16:b9bd:afdf)
17:26:13 <kuribas> It looks possible to get GADTs benifits without GADTs.
17:26:57 <kuribas> If I have a non-GADT type Expr, I could make a new type newtype TypedExpr a = TypedExpr Expr.
17:27:09 <kuribas> Then for each constructor make a constructor for TypedExpr.
17:27:20 <kuribas> So I can construct an Expr in a typesafe way.
17:29:02 × FilipKalan quits (~FilipKala@77.28.93.105) (Quit: Client closed)
17:29:31 <glguy> kuribas: the type checker won't learn the equalities on pattern match that way
17:29:47 <kuribas> right, it only works for generation.
17:29:57 <kuribas> Not for consuming a Expr.
17:30:02 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
17:30:08 <dolio> That is called a "phantom type," and its use predates the inclusion of GADTs in GHC.
17:30:40 <dolio> I think some of the earliest papers on GADTs try to explain them as being properly checked phantom types.
17:31:41 <kuribas> GADTs seem tricky to parse.
17:31:51 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Quit: Leaving)
17:32:19 <kuribas> Or the Expr should containt a type witness.
17:33:26 <kuribas> Like Expr a where Add :: Expr Int -> Expr Int -> Tag Int -> Expr Int
17:33:46 × epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
17:33:48 × mmhat quits (~mmh@55d4ea65.access.ecotel.net) (Ping timeout: 240 seconds)
17:34:13 <kuribas> gtg
17:34:15 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 26.3))
17:35:01 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
17:37:26 × _xor quits (~xor@74.215.35.24) (Ping timeout: 260 seconds)
17:38:15 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
17:39:35 _xor joins (~xor@74.215.232.169)
17:40:13 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds)
17:41:58 <boxscape_> Is there a way to print multiplicities always?
17:42:24 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
17:43:47 <boxscape_> oh I suppose with LinearTypes it's not ambiguous
17:43:51 <boxscape_> -> is always Many
17:44:20 × lunand quits (~lunand@2a02:2149:8841:c400:9476:ae16:b9bd:afdf) (Quit: Client closed)
17:44:46 <boxscape_> ... I think
17:46:02 <boxscape_> except for data constructors both %Many and %1 are printed as -> :/
17:46:05 × javiergarea quits (~javiergar@62.83.194.64.dyn.user.ono.com) (Quit: Client closed)
17:46:16 × belphegor666 quits (~satan@user/belphegor666) (Quit: WeeChat 3.4)
17:46:33 mmhat joins (~mmh@55d49471.access.ecotel.net)
17:47:08 <boxscape_> s/both/where both
17:47:18 mud joins (~mud@user/kadoban)
17:48:13 × acidjnk quits (~acidjnk@p200300d0c7049f411158f2fd5a8b7b8c.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
17:49:45 belphegor666 joins (~satan@ip-046-223-002-003.um13.pools.vodafone-ip.de)
17:49:54 × mbuf quits (~Shakthi@122.174.226.171) (Quit: Leaving)
17:50:17 Akiva joins (~Akiva@user/Akiva)
17:50:40 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
17:51:06 carbolymer_ is now known as carbolymer
17:52:15 × ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection)
17:52:35 ProfSimm joins (~ProfSimm@87.227.196.109)
17:55:56 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
17:56:53 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
17:58:29 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Remote host closed the connection)
17:59:02 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
18:02:00 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
18:03:16 × benin quits (~benin@183.82.26.94) (Quit: The Lounge - https://thelounge.chat)
18:04:15 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
18:08:46 × thyriaen quits (~thyriaen@ip5f5af2d7.dynamic.kabel-deutschland.de) (Quit: Leaving)
18:08:57 × alp quits (~alp@user/alp) (Ping timeout: 252 seconds)
18:11:17 × mud quits (~mud@user/kadoban) (Quit: quit)
18:12:44 × karim quits (~karim@41.238.138.163) (Remote host closed the connection)
18:12:55 karim joins (~karim@41.238.138.163)
18:13:09 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 250 seconds)
18:15:31 mikoto-chan joins (~mikoto-ch@213.177.151.239)
18:19:06 mud joins (~mud@user/kadoban)
18:23:43 bahamas joins (~lucian@84.232.140.158)
18:24:09 econo joins (uid147250@user/econo)
18:30:14 ec_ joins (~ec@gateway/tor-sasl/ec)
18:30:15 <tomsmeding> boxscape_: that's odd indeed, can reproduce
18:31:55 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
18:32:23 <asivitz> does `mdo` not work with `ViewPatterns`? doesn't seem to with 8.10.7
18:34:23 × boxscape_ quits (~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
18:35:52 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
18:36:56 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
18:40:21 notzmv joins (~zmv@user/notzmv)
18:40:51 vglfr joins (~vglfr@88.155.11.162)
18:44:49 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
18:46:35 justsomeguy joins (~justsomeg@user/justsomeguy)
18:46:57 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
18:50:16 k8yun joins (~k8yun@user/k8yun)
18:51:50 alp joins (~alp@user/alp)
18:57:22 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
18:57:34 dextaa_ joins (~dextaa@user/dextaa)
18:59:05 × MajorBiscuit quits (~MajorBisc@c-001-013-060.client.tudelft.eduvpn.nl) (Ping timeout: 250 seconds)
18:59:56 × bahamas quits (~lucian@84.232.140.158) (Ping timeout: 245 seconds)
19:01:13 MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net)
19:06:55 × MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 256 seconds)
19:08:15 × fef quits (~thedawn@user/thedawn) (Ping timeout: 240 seconds)
19:13:48 × vglfr quits (~vglfr@88.155.11.162) (Ping timeout: 240 seconds)
19:17:03 boxscape_ joins (~boxscape_@p4ff0b60b.dip0.t-ipconnect.de)
19:18:15 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
19:20:37 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
19:20:52 gehmehgeh joins (~user@user/gehmehgeh)
19:22:07 × briandaed quits (~root@109.95.142.93.r.toneticgroup.pl) (Remote host closed the connection)
19:25:35 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
19:26:15 zmt00 joins (~zmt00@user/zmt00)
19:26:34 × Philonous quits (~Philonous@user/philonous) (Quit: ZNC - https://znc.in)
19:27:03 Philonous joins (~Philonous@user/philonous)
19:27:16 geekosaur joins (~geekosaur@xmonad/geekosaur)
19:27:44 <boxscape_> tomsmeding we'll see https://gitlab.haskell.org/ghc/ghc/-/issues/21275
19:27:46 bahamas joins (~lucian@84.232.140.158)
19:29:39 <tomsmeding> boxscape_: nice :) I'd personally expect the %1-> to be explicit, given that Many multiplicity is always implicit everywhere else
19:30:02 <boxscape_> tomsmeding the thing is that functions by default use Many, but data constructors by default use %1
19:30:18 <tomsmeding> hm, that is a point
19:30:52 <boxscape_> ...except in GADT syntax they also use Many by default...
19:31:06 <tomsmeding> but there they're declared using function syntax, so that kind of makes sense :)
19:32:02 <boxscape_> tomsmeding actually there's one more caveat, if -XLinearTypes is turned off, they also %1 even with GADT syntax
19:32:08 <boxscape_> s/also/also use
19:32:29 <tomsmeding> O.o
19:32:50 <boxscape_> backwards compat reasons I think
19:33:44 <tomsmeding> TIL
19:33:55 Pickchea joins (~private@user/pickchea)
19:33:57 × doyougnu quits (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Remote host closed the connection)
19:34:44 <tomsmeding> I guess it kind of makes sense from the perspective of wanting to be able to use as much pre-lintypes code as possible in lintypes code, but it's a bit surprising that meaning of syntax changes by enabling a language extension
19:34:57 <tomsmeding> there are already some other extensions that do that, but eh
19:35:06 <tomsmeding> (notably ScopedTypeVariables)
19:35:14 <boxscape_> yeah it probably will cause some headaches here and there
19:35:16 doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
19:36:57 × mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
19:39:04 mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475)
19:41:24 ph88 joins (~ph88@2a02:8109:9e00:71d0:54e3:425d:deaa:23c2)
19:42:35 ec_ joins (~ec@gateway/tor-sasl/ec)
19:44:29 <geekosaur> ExplicitForall steals an otherwise nonexistent keyword, even
19:45:39 ubert joins (~Thunderbi@p200300ecdf1588ca0b7aa2fbaa2d0440.dip0.t-ipconnect.de)
19:52:42 × karim quits (~karim@41.238.138.163) (Remote host closed the connection)
19:53:25 × mud quits (~mud@user/kadoban) (Ping timeout: 240 seconds)
19:53:44 karim joins (~karim@41.238.138.163)
19:54:42 × karim quits (~karim@41.238.138.163) (Remote host closed the connection)
19:55:06 defanor_ is now known as defanor
19:57:15 karim joins (~karim@41.238.138.163)
19:58:18 zincy_ joins (~zincy@2a00:23c8:970c:4801:a9ba:a14e:e332:b83f)
19:58:42 × karim quits (~karim@41.238.138.163) (Remote host closed the connection)
19:59:14 karim joins (~karim@41.238.138.163)
20:00:12 × karim quits (~karim@41.238.138.163) (Remote host closed the connection)
20:02:32 karim joins (~karim@41.238.138.163)
20:02:42 × karim quits (~karim@41.238.138.163) (Remote host closed the connection)
20:04:24 <tomsmeding> that I'm less troubled with, because code written for NoExplicitForall is unlikely to typecheck with ExplicitForall, and vice-versa (though it's of course possible)
20:05:01 <tomsmeding> same with TypeApplications, in most formatting styles that only converts between "meaning something" and "compilation error", which is mostly fine IMO
20:05:17 karim joins (~karim@41.238.138.163)
20:05:39 <tomsmeding> like, it would be nicer if there were no conflicts at all, but this kind of conflict is fairly benign I think
20:06:12 × karim quits (~karim@41.238.138.163) (Remote host closed the connection)
20:06:38 karim joins (~karim@41.238.138.163)
20:07:00 javiergarea joins (~javiergar@62.83.194.64.dyn.user.ono.com)
20:07:20 × dextaa_ quits (~dextaa@user/dextaa) (Read error: Connection reset by peer)
20:07:21 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds)
20:07:22 ac joins (~aloiscoch@2001:470:69fc:105::65)
20:07:45 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
20:08:17 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 252 seconds)
20:08:24 <tomsmeding> geekosaur: today I found a worse one in the "stealing a keyword" realm: -XStaticPointers steals 'static' in an expression context
20:08:34 moet joins (~moet@mobile-166-170-43-26.mycingular.net)
20:09:17 kaph joins (~kaph@net-109-116-124-149.cust.vodafonedsl.it)
20:09:34 dextaa_ joins (~dextaa@user/dextaa)
20:11:25 × karim quits (~karim@41.238.138.163) (Ping timeout: 240 seconds)
20:16:51 mud joins (~mud@user/kadoban)
20:19:49 zmt01 joins (~zmt00@user/zmt00)
20:22:32 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 240 seconds)
20:23:13 <maerwald> tomsmeding: https://github.com/haskell-infra/www.haskell.org/issues/185
20:23:21 <maerwald> sounds like a good project for your pastebin
20:24:21 <maerwald> I don't have an architecture in mind yet... not sure if lambdabot code would help. But afaik it doesn't execute a real ghc
20:24:44 <maerwald> codeworld uses ghcjs atm
20:26:44 texasmynsted parts (~texasmyns@99.96.221.112) (WeeChat 3.4)
20:27:57 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
20:28:50 nicbk joins (~nicbk@user/nicbk)
20:28:57 <geekosaur> iirc lambdabot uses mueval which is a wrapper around hint which is a wrapper around ghc-api
20:29:05 <maerwald> I think spawning real ghc's via bubblewrap chroot should be safe
20:29:47 jgeerds joins (~jgeerds@55d4548e.access.ecotel.net)
20:30:55 <tomsmeding> maerwald: minor side-comment about code.world, with the ddg browser extension it fails to do anything useful (shows a <textarea> and not much more)
20:31:24 × bahamas quits (~lucian@84.232.140.158) (Ping timeout: 252 seconds)
20:31:48 × drdo quits (~drdo@roach0.drdo.eu) (Quit: The Lounge - https://thelounge.chat)
20:32:46 × k8yun quits (~k8yun@user/k8yun) (Quit: Leaving)
20:32:52 drdo joins (~drdo@roach0.drdo.eu)
20:33:16 <tomsmeding> maerwald: re pastebin, sounds interesting and cool, though not sure I'd have the time to implement that
20:34:25 × jiribenes quits (~jiribenes@rosa.jiribenes.com) (Ping timeout: 250 seconds)
20:34:42 × lechner quits (~lechner@debian/lechner) (Ping timeout: 252 seconds)
20:36:04 × acidsys quits (~LSD@2a03:4000:55:d20::3) (Excess Flood)
20:36:35 acidsys joins (~LSD@2a03:4000:55:d20::3)
20:37:12 <maerwald> I think the backend should be easy. Bubblewrap cleans up after the process exits. So it seems like the right fit.
20:38:20 <maerwald> is it possible with TH to cause compilation loops?
20:38:37 × foul_owl quits (~kerry@23.82.193.87) (Ping timeout: 240 seconds)
20:38:46 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4)
20:39:13 × javiergarea quits (~javiergar@62.83.194.64.dyn.user.ono.com) (Quit: Client closed)
20:39:36 <tomsmeding> yes
20:39:44 <tomsmeding> % :set -XTemplateHaskell
20:39:45 <yahb> tomsmeding:
20:39:48 <tomsmeding> % import Language.Haskell.TH
20:39:48 <yahb> tomsmeding:
20:39:50 <tomsmeding> % $(VarE <$> newName (let loop = loop in loop))
20:39:55 <yahb> tomsmeding: [Timed out]
20:40:28 merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
20:41:22 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
20:46:45 <tomsmeding> maerwald: https://wiki.archlinux.org/title/Bubblewrap claims that bubblewrap doesn't fully protect the machine from malicious code
20:47:34 <maerwald> that's specific to X11 it seems
20:48:09 <maerwald> I mean yeah... if you expose the docker socket into a bubblewrap chroot, you're done as well
20:48:11 <tomsmeding> the "like" in "like the X11 window system" makes me nervous though
20:48:18 <tomsmeding> yeah lol
20:48:36 <tomsmeding> ah I see
20:48:48 <tomsmeding> so with a tiny enough chroot, it should be fine
20:49:17 <maerwald> and then run this crap on some HF paid cloud where no one needs to deal with DoS
20:49:24 <tomsmeding> heh yeah
20:49:47 <tomsmeding> DoS is going to be a problem anyway, but less bad than exploiable holes
20:50:32 pavonia joins (~user@user/siracusa)
20:53:52 foul_owl joins (~kerry@174-21-69-110.tukw.qwest.net)
20:54:14 <maerwald> send a key-value pair or some dumb machine-parsable challenge on first POST request?
20:54:15 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
20:55:10 <tomsmeding> what would that do, make the DoS script somewhat more complicated?
20:55:49 <maerwald> no, just prevent trash posts firing through to the ghc process
20:55:58 <maerwald> if someone targets the backend, they'll find a way anyway
20:56:10 <tomsmeding> ah, good point, that's actually useful
20:56:52 <maerwald> could embed a secret in the frontend, but then you can just use a selenium script :p
20:57:25 <tomsmeding> I know a website that does that, and indeed we worked around that using a browser control script ;p
20:57:33 <tomsmeding> fun times
20:58:54 <sm> lol
20:59:19 <sm> I see you wearing a MHGA hat maerwald
21:00:35 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
21:00:40 <tomsmeding> I encourate you to do a web search on "MHGA" and amuse yourself with the variety of completely unrelated hits you get
21:00:45 <tomsmeding> *encourage
21:00:51 <maerwald> sm: repl.it is open source?
21:01:44 <sm> I don't think so but I wouldn't rule it out
21:03:18 <sm> bits of it are at least: https://github.com/replit
21:03:30 <[exa]> repl.it has lots of components out except AFAIK the actual main web frontend integration
21:03:41 <maerwald> I think it has way more features than what I'm interested in
21:03:57 <maerwald> and doesn't have those I am interested in
21:03:59 <[exa]> there's the docker wrapper for executing the replits
21:04:05 <maerwald> (selecting the ghc version)
21:04:40 × hgolden quits (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Remote host closed the connection)
21:04:43 <maerwald> seems like a different use case to me than a simple rust like playground
21:05:17 <sm> that's why I'm asking for your use cases/objectives on the issue, it helps everyone see what will work best
21:06:33 hgolden joins (~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
21:06:35 × mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 252 seconds)
21:06:40 <sm> I mentioned repl.it just in case could fit the need, even in the short term, since it exists and that would free up a lot of time and energy for the next task
21:07:49 <sm> but maybe code.world even more so
21:08:43 <sm> what's your goal with providing all GHC versions ?
21:09:09 <sm> because that seems in tension with "simple backend"
21:09:31 × merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 245 seconds)
21:09:59 <sm> for testing compatibility of code snippets, troubleshooting etc. ?
21:10:12 <tomsmeding> I'm not sure providing multiple versions of ghc is really the most difficult part of building such a thing
21:10:14 <maerwald> sm: I think it is simple to implement
21:10:27 <tomsmeding> assuming you're not talking about ghc 5.1 or something, just the easily installable ghcup versions
21:10:46 <sm> ok, it sounded difficult for code world at least
21:10:55 <maerwald> sm: they have different feature sets as well
21:11:01 <maerwald> they need ghcjs, libraries etc.
21:11:12 <maerwald> we don't need ghcjs
21:11:47 <sm> I'll try to refrain from further brainstorming until I understand your use cases / end goals
21:11:47 <maerwald> so I'd just copy the API how cdsmith described it
21:12:02 <maerwald> sm: https://play.rust-lang.org/ :p
21:12:12 <maerwald> that to me is the right feature set
21:12:14 <sm> why ? :)
21:12:15 <maerwald> and presentation
21:12:16 <geekosaur> I went looking for the source to yahb and didn't find it immediately. had a URL once but suspect it's on the dead HD :(
21:12:25 <sm> right for what ?
21:12:43 <tomsmeding> geekosaur: are you saying that yahb is running but source is gone?
21:12:53 <maerwald> sm: sharing some code you can run, e.g. advent of code, a simple problem etc.
21:13:17 <maerwald> repl.it was always broken on my mobile, something with the input
21:13:28 <geekosaur> just saying I can't find it now
21:14:06 <maerwald> sm: I might also steal ideas from plutus playground :p
21:14:08 <maerwald> https://playground.plutus.iohkdev.io/
21:14:12 <sm> ok, so like a superpastebin/jsfiddle .. that just works, and is community managed so responsive to our needs, and prominently located so people will actually find and use it.. and why multiple GHC versions ? well never mind, sounds great
21:14:43 <sm> +1
21:15:00 <geekosaur> actually it seems to be https://github.com/mniip/xsBot
21:15:12 grimey joins (~grimey@pool-108-26-35-23.syrcny.east.verizon.net)
21:15:45 <monochrom> A long time ago I used chrisdone's https://tryhaskell.org/ . It also has a web API, I have a usage example at view-source:https://www.vex.net/~trebla/haskell/testbed.cgi
21:15:57 <geekosaur> I'm not sure multiple versions is actually necessary, we don'tchange *quite* as quickly as rust
21:16:03 <sm> (https://playground.plutus.iohkdev.io doesn't work in safari..)
21:16:33 <geekosaur> oh. I meant the url was on the dead HD
21:16:36 <geekosaur> yahb isn't mine
21:16:42 <monochrom> (Hell, https://www.haskell.org/ uses it too :) )
21:17:16 <geekosaur> its sandbox appears to be one of mniip'sother repos
21:17:36 <sm> monochrom: I was assuming that's the thing currently on haskell.org front page, that maerwald has rejected as too basic.. is it not ?
21:17:39 <janus> monochrom: it keeps saying 'waiting'
21:17:45 <monochrom> Ah OK.
21:18:04 <janus> aaah it is blocked because of strict origin policy
21:18:31 <sm> I guess that is it. I think that gizmo is very cool and should be kept, perhaps expanded
21:18:41 <monochrom> I just mean if you can find its source code, it may be a good starting point for building your own.
21:18:44 <maerwald> sm: and then ideally it would integrate with paste.tomsmeding.com
21:18:58 <sm> sounds good
21:22:14 Guest50 joins (~Guest50@p435057.gifunt01.ap.so-net.ne.jp)
21:22:36 × fendor quits (~fendor@91.141.35.69.wireless.dyn.drei.com) (Remote host closed the connection)
21:22:42 × Guest50 quits (~Guest50@p435057.gifunt01.ap.so-net.ne.jp) (Client Quit)
21:22:55 fendor joins (~fendor@91.141.35.69.wireless.dyn.drei.com)
21:29:01 × mud quits (~mud@user/kadoban) (Ping timeout: 240 seconds)
21:29:32 × moet quits (~moet@mobile-166-170-43-26.mycingular.net) (Ping timeout: 240 seconds)
21:31:00 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
21:31:19 moet joins (~moet@mobile-166-177-250-99.mycingular.net)
21:32:51 lottaquestions joins (~nick@2607:fa49:5041:a200:746b:7a76:5f:680b)
21:38:33 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 256 seconds)
21:39:39 × zincy_ quits (~zincy@2a00:23c8:970c:4801:a9ba:a14e:e332:b83f) (Remote host closed the connection)
21:40:21 yauhsien joins (~yauhsien@61-231-22-192.dynamic-ip.hinet.net)
21:42:32 ec_ is now known as ec
21:42:35 × wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds)
21:42:48 <[itchyjunk]> Hm, is there a hard coded PI in ghci somewhere? i need a 25 digit excpansion of pi :x
21:43:10 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
21:43:51 <geekosaur> % :info pi
21:43:52 <yahb> geekosaur: type Floating :: * -> Constraint; class Fractional a => Floating a where; pi :: a; ...; -- Defined in `GHC.Float'
21:43:54 <tomsmeding> [itchyjunk]: in what data type were you planning to store that
21:44:02 <tomsmeding> > pi :: Double
21:44:04 <lambdabot> 3.141592653589793
21:44:21 <geekosaur> so it fits the type, which must have a Floating instance. neither Float nor Double will do for 25 digits
21:44:33 <geekosaur> > pi :: CReal
21:44:34 <lambdabot> 3.1415926535897932384626433832795028841972
21:44:50 <geekosaur> note that CReal is *slow*
21:45:00 <tomsmeding> oh is that the computable reals thing?
21:45:01 × yauhsien quits (~yauhsien@61-231-22-192.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
21:45:03 <geekosaur> yes
21:45:15 <geekosaur> default is 50 digits precision iirc
21:45:15 <tomsmeding> I'm always fascinated by that stuff
21:45:23 acidjnk joins (~acidjnk@p200300d0c7049f41b9198ff49f7dde11.dip0.t-ipconnect.de)
21:46:13 <abastro[m]> Computable reals? How is it encoded
21:46:39 <sm> "the Haskell Prelude was nearly all written before there was even a working compiler" - true ?
21:47:53 <[itchyjunk]> tomsmeding, ideally in a list as integers
21:47:55 <geekosaur> numbers package. I don't recall how it's encoded
21:47:59 <[itchyjunk]> to do this stuff blob:https://imgur.com/c45d51be-f11b-421c-9572-8f0925c3eeab
21:48:00 <leah2> sm: i guess hugs was first, and was an interpreter
21:48:01 <[itchyjunk]> oops
21:48:05 <[itchyjunk]> https://i.imgur.com/wsSa2wS.png
21:48:06 <[itchyjunk]> this stuff
21:48:26 <tomsmeding> right, there's no such constant in the standard library
21:48:33 <tomsmeding> but, like, copy it from the internet :p
21:48:51 <[itchyjunk]> right, i guess i'll have to use the power of internet :x
21:48:57 <tomsmeding> https://duckduckgo.com/?q=pi+25+digits&t=newext&atb=v309-1&ia=answer
21:48:59 <boxscape_> alternatively, do it the fun way and implement an infinite series to compute the digits
21:48:59 <geekosaur> the first Prelude was part of the first Report before there was a compiler, no?
21:49:12 <abastro[m]> Interesting
21:49:30 <[itchyjunk]> I had implemented some way of computing pi but past 6 digit, the accuracy was slow..
21:49:39 <geekosaur> but note that it will have had substantial differences from the one we know, like not having Monad (and therefore monadic IO)
21:49:39 <[itchyjunk]> it was some sort of convergent series.. not sure what i had tried
21:49:45 <[itchyjunk]> maybe something involving tan
21:50:08 <leah2> but ghc started in 1992, so...
21:50:24 <tomsmeding> [itchyjunk]: did you do the computation with Doubles? That wouldn't ever get more precise than the `pi` already present :p
21:50:34 <geekosaur> right, first Haskell Report was 1990 though
21:50:47 <abastro[m]> Did not know ghc was so recent
21:50:50 <[itchyjunk]> tomsmeding, ah :< well copy from internet it is
21:51:07 <abastro[m]> I guess it is after python then
21:51:16 <abastro[m]> * is after (c)python then
21:51:31 <tomsmeding> [itchyjunk]: Double itself only has ~16 digits of precision
21:52:24 <abastro[m]> Prob sth like 4 * (1 - 1/3 + 1/5 ...)?
21:52:29 <abastro[m]> That stuff is terribly slow
21:52:32 <tomsmeding> [itchyjunk]: if you want to try a series again, perhaps try this one: https://en.wikipedia.org/wiki/Pi#Spigot_algorithms
21:52:45 <geekosaur> python 1.0 goes back to the late 80s, yes
21:52:49 <tomsmeding> that gives you any part of the (base-16) expansion of pi without having to compute the rest
21:53:04 <tomsmeding> but realistically, copy the 25 digits from somewhere lol
21:53:28 <abastro[m]> Idk why I hear python being influenced by haskell then
21:53:40 <tomsmeding> python evolved after 1.0 ;)
21:53:46 <geekosaur> because python 1.0 was much simpler
21:54:19 <geekosaur> list comprehensions (most often mentioned example of copying from haskell) came much later
21:55:25 <abastro[m]> I see, I guess many of those ppl might not like list comprehension then
21:56:30 <[itchyjunk]> oh.. wow didn't think about the double's precision itself limiting me. hmm xD
21:56:30 <abastro[m]> What was the language first had indentation instead of semicolon, btw?
21:56:39 <geekosaur> I don't think many people want to go back to python 1
21:57:13 <abastro[m]> I heard massive backlash from structured pattern matching
21:57:44 <abastro[m]> So I can only imagine what it was like in introducing list comprehension
21:59:23 <geekosaur> as for indentation, I'm tempted to point to languages that were entered on punched cards; there were column restrictions
21:59:39 <geekosaur> but python 1 had indentation before haskell did
22:00:40 <geekosaur> I don't recall at this point whether snobol had column restrictions on fail/success annotations or not;if it did then that pushes it back to the early 60s
22:00:41 <tomsmeding> hah the original FORTRANs
22:01:01 <boxscape_> I imagine Miranda had it, too, did it take meaningful indentation from another language?
22:01:17 <geekosaur> right, but I think the only thing fortran cared about was columns 8-72 for program and 7 marked a continuation line
22:01:32 <tomsmeding> yeah
22:01:38 <abastro[m]> History is hard
22:01:45 <geekosaur> (by convention the first 6 were sequence number and last 8 the program name)
22:02:02 <abastro[m]> ~~Perhaps python influenced haskell~~?
22:02:23 <abastro[m]> s/~~/~/, s/~~?/~?/
22:02:31 <tomsmeding> lots of stuff influenced lots of stuff
22:02:36 <abastro[m]> s/~~/~*/, s/~~?/*~?/
22:02:48 <abastro[m]> Oh.
22:03:04 <geekosaur> miranda was 1985 so before python
22:04:04 <geekosaur> wikipedia says layout was taken from ISWIM which was first described in 1966
22:04:12 <abastro[m]> Ah, right miranda was what haskell is based on
22:04:17 ph88^ joins (~ph88@ip5f5af71f.dynamic.kabel-deutschland.de)
22:04:23 <abastro[m]> 1966? Wow
22:04:26 <geekosaur> haskell was based on miranda and gofer
22:04:52 mud joins (~mud@user/kadoban)
22:04:59 <abastro[m]> Guess indentation just lost out to semicolons in language landscapes
22:05:07 wyrd joins (~wyrd@gateway/tor-sasl/wyrd)
22:05:10 <abastro[m]> ..because of C, I guess
22:05:21 <geekosaur> C is to blame for a lot of things, yes
22:05:59 <abastro[m]> Yet ppl praise python for its indentation scheme
22:06:00 lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
22:06:01 <abastro[m]> Hmmmmmmm
22:06:15 <tomsmeding> that's just people not knowing the history
22:06:27 <abastro[m]> Indeed
22:06:46 <hpc> let's be honest, most people praise python for saving them the keys "public static void main", but not in so many words
22:07:11 <abastro[m]> LMAO true
22:07:18 <abastro[m]> "J a v a"
22:07:19 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:07:27 Codaraxis joins (~Codaraxis@user/codaraxis)
22:07:31 <tomsmeding> public class Main { public static void main(String[] args) { ... } }
22:07:42 <tomsmeding> System.Console.writeLn("hi")
22:07:44 <abastro[m]> Hahahahahahahaha
22:07:51 <tomsmeding> > putStrLn "hi"
22:07:52 <lambdabot> <IO ()>
22:07:58 <tomsmeding> % putStrLn "hi"
22:07:58 <yahb> tomsmeding: hi
22:08:00 <tomsmeding> okay then
22:08:01 <jackdk> If you're teaching imperative code, being able to explain the execution model by saying "read the named file, then line-by-line ..." is a damn sight better than needing to explain classes before you get to "Hello, world!"
22:08:12 × ph88 quits (~ph88@2a02:8109:9e00:71d0:54e3:425d:deaa:23c2) (Ping timeout: 240 seconds)
22:08:21 <tomsmeding> indeed
22:08:48 <jackdk> But much of python (at least when I learned) only makes sense if you imagine a harried C programmer writing the runtime: truncating division of ints, old-style classes, ...
22:08:54 <abastro[m]> Well tbh writing "public static void" makes you feel you are doing something
22:09:27 <abastro[m]> Also it supposedly helps with readability
22:09:31 <tomsmeding> I like that haskell sometimes makes me feel like I'm not doing much
22:09:40 <abastro[m]> Hehe right
22:09:57 <jackdk> "definition, definition, definition, whoops the problem is solved! how did that happen?"
22:10:14 <jackdk> some of jle's adventures with Free structures really have that flavour
22:10:58 × EsoAlgo quits (~EsoAlgo@152.70.142.52) (Remote host closed the connection)
22:11:40 <hpc> when i have explained haskell, people have unironically asked me where the code was
22:11:54 <abastro[m]> > If you're teaching imperative code, being able to explain the execution model by saying "read the named file, then line-by-line ..." is a damn sight better than needing to explain classes before you get to "Hello, world!"
22:11:54 <abastro[m]> Why does "having to explain class" feel familiar.. wait. Burritos.
22:11:56 <lambdabot> <hint>:1:35: error: parse error on input ‘,’
22:11:56 <hpc> "all you did was define some constants"
22:12:40 <abastro[m]> For real? They thought it was not code?
22:12:45 EsoAlgo joins (~EsoAlgo@152.70.142.52)
22:12:48 <hpc> yep
22:12:53 <abastro[m]> Ah right, imperative programmers.
22:12:54 <hpc> @quote cried
22:12:54 <lambdabot> Ferdirand says: I was TA for a C++ programming course aimed at 1st year physics once. Some girl asked for help "i wrote pseudo-code but I cannot translate it to C++". Her pseudo-code was valid
22:12:54 <lambdabot> haskell. I cried.
22:13:08 <Hecate> :')
22:13:35 <jackdk> abastro[m]: LOL, good point. But you can at least do computations without understanding classes, and there's a few good and gentle paths through to Monad these days
22:14:02 <boxscape_> you can also write "hello world" without touching Monads, you only need do notation if you want to do more than one IO action :P
22:14:06 <jackdk> abastro[m]: Also happened in the Haskell vs. Awk vs. C++ vs. whatever the rest was paper - the Haskell solution was mistaken for a specification language instead of executable code.
22:14:10 <abastro[m]> Yea, wish IO monad was easier
22:14:32 <abastro[m]> Mistaken for specification lang, ya
22:14:33 <abastro[m]> Saw that thing
22:14:47 <abastro[m]> Tho I cannot believe a girl writing valid haskell
22:14:48 <jackdk> boxscape_: Yeah. Separating "the `IO` type constuctor", "`do` notation", and "the `Monad` class" is an important part of educating beginners
22:14:58 <abastro[m]> (Perhaps the girl was haskeller)
22:15:03 <hpc> fun historical fact, the "mistaken for a specification language" thing happened to lisp to
22:15:06 <hpc> /by its creator/
22:15:19 <abastro[m]> ??????
22:15:23 <hpc> lisp was never intended to be run, it was just a nice way to publish papers
22:15:38 <jackdk> "you can't write a lisp interpreter, that's theory, not application" - McCarthy, to one of his grad students maybe, paraphrased
22:15:43 <hpc> he even defined eval in the paper
22:15:50 <boxscape_> sounds like LaTeX
22:15:56 <Hecate> did you tell the story of the journal that didn't accept pseudo-code in paper submissions, and a paper showing Haskell code was refused on this ground?
22:16:01 <hpc> so this other guy realized "if i just hand-compile eval, i have everything else for free"
22:16:04 <hpc> so he did
22:16:23 <abastro[m]> I did not know ppl love parenthesis to the point of using it for specifications
22:16:36 <abastro[m]> Perhaps I should use parens more liberally
22:16:39 <jackdk> S-Exprs are great fun to work in, if you have a good editor
22:16:51 <abastro[m]> Instead of littering $ around
22:16:51 <monochrom> Hello world is too easy. Once you go next to "ask user for name, then print that name" it's a lot more challenging.
22:17:08 <hpc> it was an unambiguous notation for lambda calculus that's easy to typeset and could be extended as needed to get a particular paper out there
22:17:29 <leah2> curiously, he didnt understand lambda calculus either :p
22:18:05 <tomsmeding> abastro[m]: jackdk was talking about this paper, see second paragraph of section 7 https://classes.cs.uoregon.edu/16F/cis425/Papers/hudak-jones.pdf
22:18:48 <abastro[m]> Yep, saw the comparison paper
22:18:58 <tomsmeding> each time I look that paper up I am sad that "Appendix B" is not present
22:20:09 <boxscape_> tomsmeding you're describing my emotional state from a minute ago
22:20:26 <jackdk> Pretty sure I've seen it elsewhere. Basic gist is `type Region = Point -> Bool`; `(/\) :: Region -> Region -> Region` etc
22:20:31 <tomsmeding> boxscape_: :p
22:20:46 × moet quits (~moet@mobile-166-177-250-99.mycingular.net) (Quit: leaving)
22:21:34 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
22:22:51 <jackdk> http://www.cs.yale.edu/publications/techreports/tr1031.pdf check out convexPoly on PDF page 30 (printed page 26)
22:23:00 <abastro[m]> `Point -> Bool` sounds horribly slow tho
22:23:43 <tomsmeding> depends on what you're doing with those regions
22:23:43 <jackdk> If function application is slow, we're sunk.
22:23:56 <tomsmeding> if the end task is "determine whether these points are in the region", it might be good
22:24:02 <jackdk> That's the primary task, yes.
22:24:03 <tomsmeding> if the end task is "plot the region", it might be bad
22:24:50 Tuplanolla joins (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi)
22:25:00 <jackdk> You could also build an AST of your unions/intersections/etc and eval it to `Point -> Bool` for `inRegion` testing, or to better graphics primitives, or...; but that's not what the spec asked for
22:25:51 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4.1)
22:26:02 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 240 seconds)
22:26:17 <abastro[m]> Yea
22:35:46 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:37:43 Pickchea joins (~private@user/pickchea)
22:38:54 <monochrom> A thought crosses my mind right now. It is in the FP culture that you are always open to the options of Point->Bool and the AST way. You always consider them. You probably always try them first during prototyping. Maybe later you replace them when performance matter.
22:39:09 <monochrom> Whereas in imperative cultures, they would never even cross your mind.
22:39:44 <tomsmeding> well the AST way might perhaps
22:39:44 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:40:03 × michalz quits (~michalz@185.246.204.40) (Remote host closed the connection)
22:40:08 <abastro[m]> Indeed
22:40:36 <monochrom> Very reluctantly because the cultural brainwashing says "it's cheating; write real code already!"
22:40:45 <tomsmeding> especially for stuff like geometry, where "what is the intersection of an annulus and a square" can't be answered much better than "the intersection of that annulus with that square"
22:41:09 <tomsmeding> though that is true
22:41:31 <monochrom> A very religious line between "unioning is an operation, write real code already" vs "AST is data, just declare some subclasses / tagged union".
22:41:50 <abastro[m]> I was surprised when ppl started to talk about side effect
22:42:05 <tomsmeding> now we're getting to the core of the issue: try writing a sum type in Java, C++ or C#
22:42:15 × pgib quits (~textual@173.38.117.89) (Ping timeout: 256 seconds)
22:42:37 <tomsmeding> you either end up making a class hierarchy which is the most abominable way ever, or using std::variant in C++ which is almost as bad
22:42:49 <tomsmeding> I think C# may have obtained a more reasonable way recently but not sure
22:42:50 <abastro[m]> When I first entered programming (in imperative way), never seen any concept alike side effect
22:43:32 <abastro[m]> For record, OOP ppl prefer class hierarchy as kind of open union tho
22:43:48 <tomsmeding> but it's so verbose
22:43:51 <abastro[m]> They argue that closed union lack extensibility
22:43:57 <boxscape_> tomsmeding Java is getting fairly close to getting reasonable sum types with sealed types and records
22:44:05 <boxscape_> and switch expressions
22:44:06 <tomsmeding> ah right
22:44:15 <tomsmeding> here, at least 30 years late
22:44:18 <boxscape_> right
22:44:24 lechner joins (~lechner@debian/lechner)
22:44:51 <tomsmeding> but in any case, even if the languages are slowly getting sum types, it's not a common good yet
22:45:08 <tomsmeding> one of the first things one sees in haskell is 'data Maybe a = Nothing | Just a'
22:45:24 <abastro[m]> Meh I guess some would be saying "pattern matching is FAD"
22:45:42 <tomsmeding> FAD?
22:45:50 <abastro[m]> Or FUD
22:46:30 <abastro[m]> (I guess I forgot the expression)
22:46:31 <abastro[m]> Also FOMO
22:46:48 <abastro[m]> Is what they claim the feature to be :<
22:47:02 <boxscape_> when I told my coworkers that Java will be introducing pattern matching, I was told "I suppose that's nice, but then again, regexes can be pretty hard to read tbh"
22:47:18 <boxscape_> (paraphrased)
22:47:19 <tomsmeding> lol
22:47:21 <Axman6> :thinkingface:
22:47:26 <monochrom> heh can't be helped
22:47:32 <abastro[m]> Haha
22:48:12 <monochrom> Cultural clash again. "pattern" = regex, by definition, in their culture.
22:48:17 <boxscape_> yeah
22:48:31 <Axman6> Pattern? All objects have the same shape!
22:48:31 <abastro[m]> I wonder how ppl resorted to regex.. and they had to expand it horribly
22:49:04 <Axman6> It would be LITERALLY impossible to program if the same object could have different shapes!
22:49:15 <monochrom> Racket isn't helping either. Its pattern matching construct covers both the regex kind and the data constructor kind.
22:49:32 <abastro[m]> Noooo
22:49:34 <geekosaur> awk and perl
22:50:12 <abastro[m]> Meh, perl
22:50:12 × lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 240 seconds)
22:50:36 <monochrom> At least count yourself blessed that no one looks at "pattern matching" and go "I know, this is the next thing after Design Patterns" >:)
22:51:09 <tomsmeding> there was a post on /r/haskell a while ago where someone asked what common design patterns in haskell were
22:51:09 son0p joins (~ff@181.136.122.143)
22:51:17 <geekosaur> perlwas great when your alternatives were shell scripts and C
22:51:31 <pavonia> Given a set of strings where prefixes of elements may be part of the set too. What library can be used to find a partition of a string into those smaller strings (if possible)?
22:51:40 <Axman6> tomsmeding: "functions"
22:51:44 <jackdk> "Design pattern" is when you hand-compile an abstraction your language doesn't have. The GoF book just locked everyone's brains onto a small set of target languages.
22:51:46 <abastro[m]> I think haskell do have common design patterns tho
22:52:08 <abastro[m]> Like tagless final
22:52:12 <monochrom> pavonia: Would it help to use a trie?
22:52:15 <abastro[m]> Or something
22:52:53 <geekosaur> lenses are a design pattern :)
22:53:06 <Axman6> pavonia: a ternary tree would be useful for that
22:53:13 × fendor quits (~fendor@91.141.35.69.wireless.dyn.drei.com) (Remote host closed the connection)
22:53:32 <tomsmeding> I guess Trees That Grow is also a design pattern
22:53:49 <pavonia> monochrom, Axman6: My concern is more the backtracking part
22:54:07 <Axman6> a ternary tree basically gives you what you want for free
22:55:00 <abastro[m]> Oh more data structures to learn
22:55:01 <Axman6> data TTree a = Leaf | Node { val :: a, less, equal, greater :: Tree a }
22:55:19 <jackdk> https://blog.jle.im/entry/tries-with-recursion-schemes.html is quite advanced but I'm posting it because it's got prequel memes in it
22:55:31 <Axman6> if you go down equal nodes, you find all strings with the same prefix
22:56:05 <Axman6> SOMEONE might have even written a package for this over a decade ago... https://hackage.haskell.org/package/TernaryTrees
22:56:26 <Axman6> It probably won't compile any more...
22:56:50 <abastro[m]> Haskell evolves fast..
22:56:58 <jackdk> Axman6: `base >=4.0.0.0 && <5.0.0.0` -_-
22:57:03 <Axman6> And as shitty as that package might be, it got cited in a paper once =)
22:57:35 <pavonia> Axman6: This can only be used for storing string, no? I can't see how to easily obtain the desired solution with it
22:57:48 <Axman6> I'm pretty proud of the Binary instance in that package
22:58:38 <jackdk> Axman6: I can get a pre-built copy from cache.nixos.org built against ghc8107
22:58:56 <Axman6> jackdk: that's genuinely amazing
22:59:10 <abastro[m]> :O
22:59:55 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
23:00:02 <Axman6> pavonia: I'm not sure I understand - if a string exists in the set, then finding all prefixes of that string is trivial
23:00:08 <Axman6> isn't that what you want?
23:00:25 <jackdk> Axman6: nix isn't that magical
23:01:06 <Axman6> just that it even compiles with a compiler which is like a decade older than the one it was written against
23:01:50 <boxscape_> weird to see source files without extensions enabled, but that probably helps
23:02:02 × jgeerds quits (~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 240 seconds)
23:02:04 <boxscape_> s/extensions enabled/enabled extensions
23:02:09 <pavonia> Axman6: I want to find a partition of a string such that it consists of only strings from the set
23:02:33 <Axman6> I shouldn't've hiden the constructors in that package
23:02:39 <Axman6> hidden*
23:04:25 <jackdk> Axman6: I get it, I was making a joke that you were amazed at getting precompiled anything from nix. You should do another release.
23:04:32 <abastro[m]> So the equal branch is for the strings starting with that char, right?
23:04:39 <Axman6> yep
23:04:55 × Akiva quits (~Akiva@user/Akiva) (Ping timeout: 256 seconds)
23:05:21 × alp quits (~alp@user/alp) (Ping timeout: 245 seconds)
23:05:26 <Axman6> in the map case, you end up with all the keys with the same prefix sharing that prefix in the structure, and you only branch when there's a differing character
23:07:09 <pavonia> e.g. given ["a", "ab", "bc"] and "abc" as input string, a partiton is "a|bc". Checking the longest prefix first wouldn't give a correct result
23:07:10 <abastro[m]> So that package is what pavonia want if the constructors were exposed
23:07:57 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:08:37 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
23:08:59 <Axman6> pavonia: given ["a", "ab", "bc"] and "abc", what output do you expect?
23:09:22 <geekosaur> pavonia showed it, "a|bc"
23:09:23 <pavonia> ["a", "bc"]
23:09:24 <Axman6> because it sounds like I haven't understood the question you're asking if a ternary tree doesn't solve your problem
23:09:33 <Axman6> sure, but I'm not sure what that means
23:09:40 <abastro[m]> Oh. So ternary breaks down for the suffix part
23:10:07 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
23:10:07 <Axman6> given ["ab", "bc"] and "abc", what should the output be?
23:10:18 <abastro[m]> I guess it would error
23:10:21 <pavonia> Axman6: It's like building the input string from strings of the set. Imagine a set of Lego bricks to build the final result from
23:10:38 <abastro[m]> Because both the prefix and suffix part is supposed to be in the set
23:10:41 <pavonia> Yeah, that wouldn't give legal result
23:11:26 <Axman6> but given ["ab", "bc", "c"] and "abc", you'd get back ["ab","c"]?
23:11:26 <pavonia> extra credits if it would give *all* possible partitions if there are multiple
23:11:38 <pavonia> Axman6: Yep
23:11:52 <Axman6> that's definitely doable with a ternary tree, in both cases
23:12:01 <geekosaur> mm, I'm now imagining somnething in the list monad
23:12:03 <Axman6> (not using my package, I didn't expose enough)
23:13:00 <abastro[m]> Idk perhaps just split at arbitrary place and check if both prefix and suffix are in the set
23:13:03 <pavonia> I imagine this is a common problem so I guessed there would already be a package for that
23:13:06 <Axman6> you take your string, and traverse the tree as far as possible while the prefix matches, once it doesn't match, return that prefix, and the remaining suffix, and do the same thing again
23:13:13 <abastro[m]> Ternary tree does make it easier for prefix
23:13:13 <Axman6> returning all matches is also trivial
23:13:29 <Axman6> pavonia: it's literally a problem I've never heard of :P
23:13:39 <pavonia> :S
23:14:12 <abastro[m]> You need to check if suffix exists as well
23:14:45 machinedgod joins (~machinedg@24.105.81.50)
23:15:25 <abastro[m]> Btw how does scala's performance compare with haskell
23:16:15 <abastro[m]> In a algorithm problem solving site, scala has done poorly in performance. I wonder how haskell would have faired if it was supported
23:16:44 <Axman6> Scala's developer performance is fucking attrocious.
23:17:02 <Axman6> I cannot state just how much of a dogshit language Scala is
23:17:35 <energizer> what is developer performance?
23:17:56 <jackdk> don't worry about it, unless you're doing something wild. There were gnarly Haskell solutions on shootout.alioth.debian.org or whatever it was, but they were all highly tuned. Naive haskell is faster than python/ruby/whatever and you'll be dominated by good data structures etc outside microbenchmarks
23:18:14 <Axman6> developer productivity, the language and one of the libraries we're using at work have cost our project literally years of development time because of how fucked it all is.
23:18:17 <jackdk> energizer: how hard the language makes the developer work to produce an acceptable solution to a problem
23:19:13 <abastro[m]> I mean, the time spent performance of scala
23:19:14 <abastro[m]> That and memory
23:19:20 <Axman6> it makes me angry that anyone could even consider it a reasonable language. It's what you'd get if you took Haskell and Java and kept only the worst, most complex parts of both. it's insanely complex, with only C++ beating it in terms of complexity
23:19:28 <abastro[m]> Because it never beats python there
23:19:56 <Axman6> abastro[m]: my point is that it doesn't even matter if the language makes you want to tear your eyes out (or quit, in my case, I've come very close purely because of how fucked working with Scala is)
23:20:01 <abastro[m]> I mean, it is literally the only FP option in my country
23:20:11 <energizer> https://benchmarksgame-team.pages.debian.net/benchmarksgame/box-plot-summary-charts.html
23:20:15 <geekosaur> not even F#
23:20:16 <geekosaur> ?
23:20:20 <Axman6> or Rust?
23:20:24 segfaultfizzbuzz joins (~segfaultf@2602:306:cd3c:9350:a1ac:7cf2:d212:eed8)
23:20:29 <Axman6> or lisp? or OCaml?
23:20:30 <abastro[m]> F# is considered as dead language
23:20:40 <abastro[m]> No lisp. No ocaml
23:20:42 <geekosaur> and scala isn't?
23:20:43 <Axman6> which country, if you dosn't mind me asking?
23:20:47 × xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Ping timeout: 256 seconds)
23:20:49 <abastro[m]> Rust is just began to be considered
23:21:00 <abastro[m]> And somehow scala got afloat thanks to java
23:21:03 <Axman6> scala deserves to be a dead language more than any language that has ever died
23:21:05 <abastro[m]> It is South Korea
23:21:25 <abastro[m]> Wow, you dislike scala quite a bit
23:21:26 <Axman6> Move south to Japan, plenty of Haskell there =)
23:21:38 <segfaultfizzbuzz> is there such thing as an instruction set which is total? (i'm not sure how to avoid trivial definitions of totality here...)
23:21:44 <abastro[m]> Well if only that was feasible
23:22:01 <abastro[m]> It is as easy to move to US altogether
23:22:10 <segfaultfizzbuzz> meaning that you can do a many/most computations in the instruction set but you cannot perform computations which are turing complete
23:22:39 <monochrom> Yeah Japan doesn't like immigrants or even work visa.
23:23:09 alMalsamo joins (~alMalsamo@gateway/tor-sasl/almalsamo)
23:23:13 <monochrom> Moving to US is actually less difficult.
23:23:26 <Axman6> it does if you don't tell them >_>
23:23:40 <monochrom> Well, apart from work visa for teaching English. OK I'll stop being off-topic, sorry!
23:23:40 <geekosaur> hm, ladder logic?
23:24:01 <jackdk> Dhall does this, and it's more of a design philosophy than a useful result. Having to write all list functions in terms of foldr is a bit annoying.
23:24:22 <jackdk> And a non-turing-complete language can still write busy-beaver-esque programs that take more time than you have to execute
23:25:00 <segfaultfizzbuzz> so the turing/non-turing distinction is moot?
23:25:08 <jackdk> also, a lambda calculus is not an instruction set
23:25:10 <abastro[m]> Actually leetcode accepts racket, I might try that
23:25:26 <monochrom> Does Calculus of Construction count as an "instruction set"? :)
23:25:48 <jackdk> in my worldview, maybe, but it's still an important theoretical result. I would rather say: "input your program, I'll let you run it for 500 reduction steps" or whatever.
23:27:12 <segfaultfizzbuzz> maybe the answer here is that there is no useful constrained way of computing?
23:27:16 <abastro[m]> At least having total language makes proofs more reliable
23:27:32 <jackdk> Did I not just provide an alternative constraint on computing?
23:27:45 <monochrom> But yeah my philosophy opinion (influenced by my thesis supervisor) is also that "it terminates but god knows how long it takes" is a pretty useless thing to know.
23:28:21 <segfaultfizzbuzz> so maybe you always need a wallclock time constraint?
23:28:22 <Axman6> segfaultfizzbuzz: I have a feeling that thight might be somewhat relevant: https://www.youtube.com/watch?v=96o8G5dVCaM&list=PLIpl4GKFQR6fg3CBx65LXnj3gz2MFNN5O&index=18
23:28:24 <abastro[m]> Is it globally true that C# is losing off to Java?
23:28:40 <geekosaur> segfaultfizzbuzz, did you look at ladderlogic as I suggested?
23:28:46 <Axman6> it covers how plutus is a total languiage by construction (I think, I'm pretty sure this is the talk I was looking for)
23:28:48 <jackdk> monochrom: Exactly. The influence of a design philosophy that sets out to make a non-TC language like Dhall is more important IMHO - people don't try to write overly-complicated things
23:28:55 <segfaultfizzbuzz> axman6: yes i am looking at ladder logic at the moment.
23:29:29 <segfaultfizzbuzz> lol ladder logic ranked #50 out of 52 programming languages in popularity lol ;-)
23:29:33 <geekosaur> infinite loops and such are pretty much forbidden because they lead to things like train collisions
23:29:59 <monochrom> Fortunately, in practice, even highly theoretical mathematicians don't really mean to be that useless. Observe that whenever their theorem states "it terminates", the time bound is somewhere in the proof. It is their culture that you are supposed to look at the proofs too, not just the anti-climatic theorem statement.
23:30:11 <geekosaur> it's still highly important as a result
23:30:31 <Axman6> hmmm, maybe that's not the talk I was after... skimming isn't showing me what I remember
23:30:46 <segfaultfizzbuzz> axman6: yeah i don't see the relevance of cardano here hehe ;-)
23:31:00 <abastro[m]> Typical Mathematicians do not deal with computation/termination, soo
23:31:10 <monochrom> But yes, it's their strange culture that they speak like "Theorem: There exists an algorithm for regex emptiness" and the algorithm is not part of the theorem, just part of the proof.
23:31:29 <segfaultfizzbuzz> i don't like/can't make sense of non-constructive mathematics
23:31:43 <abastro[m]> Oh so computer scientists I guess
23:31:54 <abastro[m]> Eh, nonconstructive math is how 90% of math is done so
23:31:55 <abastro[m]> Idk
23:32:06 <segfaultfizzbuzz> yeah, for now. i don't believe that real numbers exist, for example
23:33:15 <abastro[m]> Like, In my uni, there is no one doing constructive mathematics
23:33:25 <segfaultfizzbuzz> for now ;-)
23:33:34 <abastro[m]> Hehe
23:33:44 <geekosaur> numbers don't exist. you cannot show me a three.
23:34:02 <monochrom> There are "computer scientists" who are secretly mathematicians but they joined the computer science department because more funding. It means they go on to do what mathematicians do, especially culture, manners, styles.
23:34:18 <segfaultfizzbuzz> hahaha
23:34:28 <abastro[m]> The uni might cease to exist before constructive mathematics
23:34:55 <monochrom> Stephen Cook explicitly admitted, when asked, "yeah both the math department and the cs department made me offers. I chose the cs department because more research funding". That does it.
23:35:07 <abastro[m]> Btw my uni head praises scala for its combination of FP and OOP
23:35:28 <abastro[m]> * my uni CS head praises
23:35:36 <Axman6> he absolutely should not do that
23:35:41 <Axman6> (or she)
23:36:02 <abastro[m]> As a professor of Programming Language, she advocates Scala
23:36:10 <abastro[m]> And that is how I learned scala
23:36:42 <abastro[m]> Tbh I think `.flatMap` thing is interesting, at least.
23:37:32 <abastro[m]> Other than that.. meh
23:37:59 <boxscape_> which aspect of .flatMap are you referring to?
23:38:13 <abastro[m]> That you can chain
23:38:15 <Axman6> I find using .flatMap over do notation/for comprehensions really painful
23:38:23 × acidjnk quits (~acidjnk@p200300d0c7049f41b9198ff49f7dde11.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
23:38:39 <Axman6> I think I've only used it once to essentially build join for Maybe/Option
23:38:41 <boxscape_> I suppose with record dot notation similar things are becoming possible in Haskell, though not necessarily widespread
23:38:47 <abastro[m]> Ya true, but interesting nonetheless
23:38:58 <segfaultfizzbuzz> axman6: trying to understand how ladder logic would differ from simply a fixed logic statement here
23:39:19 <monochrom> I teach students >>= without do-notation. Perhaps it's just as painful? >:)
23:39:42 <Axman6> I don't know what ladder logic is, so I won't be of any use to you :P
23:40:02 <abastro[m]> A few more language rant: Many ppl in my country advocates Go, Python, JS as the next big language after Java. Rust is a bit forgotten.
23:40:12 <Axman6> the necessity of using brackets with flatMap makes it really gross
23:40:29 <geekosaur> Axman6, I think segfaultfizzbuzz confused us
23:40:29 <segfaultfizzbuzz> Microsoft Visual Functional Basic is the next great language
23:40:42 <dolio> Knowing something terminates, but not knowing how long it would take, can be useful.
23:40:42 <abastro[m]> Lmao
23:40:50 <dolio> It means you don't have to wait to see if it terminates.
23:40:53 <monochrom> Ugh, Go Python JS were the next big language last decade already. :)
23:41:15 <Axman6> Scala has not surpassed Go in my language hatred ranking. Go is simply insulting to developers, it assumes they are dumb and can't handle abstraction, but I'd take it over Scala I think... only just
23:41:18 <abastro[m]> Ya I mean my country is slow, I guess
23:41:41 <segfaultfizzbuzz> Microsoft Visual Functional Basic is Visual Basic but with functional features, in the same way that scala is java with functional features
23:41:49 <abastro[m]> "Go is so simple, it is great. It is also made by google geniuses" :facepalm:
23:42:07 <jackdk> monochrom: I agree with "teach >>= first". Then I go "here's the best layout I've found for >>=, but isn't it annoying to write all these nested lambdas?" And then I show the translation into do-notation.
23:42:11 <geekosaur> sounds like about the intelligence level it was aimed at
23:42:25 <dolio> For instance, if you prove `a ~ b` to GHC, but it has to evaluate the Ackermann function to get the proof witness, it has to actually evaluate it to avoid doing something unsound.
23:42:45 <Axman6> I was at uni when Go was announced, and Andrew whatshisface, one of the main developers came and gave a talk, and even back then, I remember thinking "how the fuck can a modern language not have generics???" I might have even asked him something along those lines
23:43:01 <dolio> Because it doesn't know that your proof is legitimate until it fully evaluates it.
23:43:04 <monochrom> I do respect Go for being simple.
23:43:10 <segfaultfizzbuzz> abatro[m]: have you used Functional Go ?
23:43:12 <abastro[m]> They say, generics are too hard
23:43:18 <monochrom> But worship of big corporations is unhealthy.
23:43:19 <boxscape_> @do teach >>= first
23:43:19 <lambdabot> do { a <- teach; first a}
23:43:24 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:43:40 <abastro[m]> Idk, ppl nowadays dislike any hard concepts I guess
23:43:41 <segfaultfizzbuzz> Functional Go is Go with mapreduce and serverless lambdas.
23:43:53 <abastro[m]> Eww
23:44:08 <monochrom> But it may take another couple of centuries for East Asia to grow out of worshipping authorities.
23:44:13 <jackdk> Axman6: I remember hearing a similar story involving Java's announcement and Bertrand Meyer
23:44:19 <Axman6> IMO it feels like Go is intentionally contrarian to the entire field of PL research
23:44:54 <abastro[m]> Yea, because of their "research is bad"
23:44:55 <boxscape_> the only thing I know about Go is that reddit post where someone faked generics by using type names with symbols that look like < and > but are actually letters
23:45:19 <Axman6> just for the sake of it, the idea that even novice programmers can't understand the idea of a structurew that can hold any type and being able to write function which work on those structures no matter what the type contained is, is ludacris
23:45:44 <geekosaur> segfaultfizzbuzz, ladder logic is a bit more than a fixed logic statement, and in particular you can implement math in it (but you have limits on what you can do with it)
23:45:53 <Axman6> boxscape_: that was legendary - using Canadian Aboriginal characters to ram generics into Go
23:46:09 <boxscape_> yeah
23:46:12 <abastro[m]> Dunno, there are def ppl who have hard time comprehending those structures
23:46:19 <boxscape_> though apparently a proposal to add generics has been accepted https://github.com/golang/go/issues/43651#issuecomment-776944155
23:46:43 <abastro[m]> Gophers hate generics being introduced l
23:46:46 <abastro[m]> Lol
23:46:49 <segfaultfizzbuzz> geekosaur: implement math...?
23:46:56 <hpc> yeah, it seems like some hiring manager looked at the success rate of fizzbuzz and thought google was missing out on some valuable talent
23:47:11 <segfaultfizzbuzz> geekosaur: you mean you can perform arithmetic with it (but you can't with ordinary logic statements...?)
23:47:11 <Axman6> yeah generics is finally coming, but it should have been there since day one - particularly since they _already are_ in the language, but the Go devbelopers have decided you are too stupid to use them, only maps can
23:47:27 <Axman6> hpc: snap, far too accurate
23:47:31 <boxscape_> hmm sounds vaguely reminiscent of Elm
23:47:36 <segfaultfizzbuzz> Rob Pike said HKT are coming to Go in 2024
23:47:41 <geekosaur> wikipedia showed how to implement nand, once you have nand you can build full adders
23:48:02 <geekosaur> and once you have those you can go on to subtraction and multiplication. division is a bit harder
23:48:17 <abastro[m]> "Go is great at asynchronous programming"
23:48:24 <abastro[m]> Gah I dislike these days
23:49:03 <Axman6> abastro[m]: that's also nonsense, it has one tool, and it is often not a good tool for concurrency. Language like Haskell and Ada both embarrass Go's concurrency model
23:49:28 <abastro[m]> I wonder what kind of panic they would have after seeing haskell code. Like they would say "The hell is this mess"
23:49:41 <abastro[m]> Just because non-C syntax & declarativeness
23:49:50 <geekosaur> I suspect you'd get more like that paper quote from a couple hours ago
23:49:59 <Axman6> I remember years ago someone making a post showing how some really trivial concurrent programming problem was literallyt impossible in go, because the abstractions of goroutines and channels weren't universal enough. Can't remember what the problem was, but it was pretty simepl
23:50:05 <zzz> what . do (you $ mean) -- ?
23:50:40 <hpc> Axman6: remember the async "what color is your function" javascript post?
23:50:43 <Axman6> zzz: I hate that that is syntactically valid, and I can unnderstand what it would do
23:50:43 <hpc> that one was painful too
23:50:54 <Axman6> not sure I've seen that
23:51:03 <abastro[m]> Hm, I guess, perhaps I was bad in showing scala code
23:51:24 <abastro[m]> Tho I don't expect much for ppl who worship Go
23:51:28 <hpc> it was something along the lines of synchronous functions are blue, async functions are red, and here's some annoyingly specific rules about how to combine them
23:51:49 <hpc> and it gets thiiiiis close to saying "monad" and then doesn't make the connection and just goes off into more random details
23:51:50 <segfaultfizzbuzz> the future is functional golang with hkt on the jvm on v8 on webassembly
23:51:55 × ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection)
23:52:02 ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
23:52:14 <Axman6> ha
23:52:44 <hpc> end result, not really explaining async at all anyway
23:52:46 <monochrom> No, the future is everyone trash-talking each other.
23:52:56 <jackdk> monochrom: The future is now
23:53:20 <Axman6> the future will be fulfilled, that is its promise
23:53:58 <abastro[m]> Tbh seeing Go's success, I think something like Scratch would be the next big language
23:53:58 <abastro[m]> Sincerely.. ppl love not having to learn much
23:54:09 <geekosaur> logo
23:54:20 <abastro[m]> Async color haha
23:54:31 <geekosaur> the next browserwill be implemented with turtle graphics :þ
23:54:39 <hpc> i want to see rust be the winner in all these silly language wars
23:54:58 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
23:55:13 <abastro[m]> I love the github issue about how they aren't going to allow monad semantics in promise
23:55:24 <hpc> it respects the programmer enough to be a more powerful tool instead of a simpler tool with a rubber handle
23:55:31 ChaiTRex joins (~ChaiTRex@user/chaitrex)
23:55:33 <segfaultfizzbuzz> hpc: me too, sort of. the problem i ran into is that there is no way i will never be intelligent enough to write correct unsafe code, and i'm not sure anyone else ever will be either
23:55:40 <hpc> and it just seems like the people developing it are way more concerned about solving the real problems of language
23:55:50 <abastro[m]> Interesting that many of you like Rust
23:56:02 <abastro[m]> Perhaps I should really try it.. someday
23:56:19 <segfaultfizzbuzz> if haskell was reimplemented with the DX of rust i think it would be my fav lang
23:56:20 <hpc> instead of being the n-th vaguely buggy inconsistent implementation of a third of ADTs
23:56:23 <abastro[m]> Tho it is not FP
23:56:30 <Axman6> I need to take some time to learn rust, there's a lot of interesting stuff there, particularly for someone who enjoys low level programming
23:56:38 <segfaultfizzbuzz> abastro[m]: rust is my go-to language these days
23:56:58 <hpc> segfaultfizzbuzz: pun intended?
23:57:10 <segfaultfizzbuzz> hpc: which pun?
23:57:13 <hpc> goto
23:57:21 <segfaultfizzbuzz> oh, go-to, haha. maybe double or triple entendre
23:57:23 <abastro[m]> Ya, I was avoiding rust because it is more imperative than functional
23:57:36 × grimey quits (~grimey@pool-108-26-35-23.syrcny.east.verizon.net) (Ping timeout: 268 seconds)
23:57:44 <hpc> abastro[m]: don't - it feels very functional when you go to actually use it imo
23:57:44 <segfaultfizzbuzz> abastro[m]: i think there is some kind of joke about haskell being an imperative language...
23:58:01 mvk joins (~mvk@2607:fea8:5cc3:7e00::7980)
23:58:03 <hpc> like you're always in a do block, rather than always in a vaguely fancy bash prompt
23:58:12 <Axman6> yeah I've always considered rust mildly functional
23:58:16 <segfaultfizzbuzz> is haskell a vaguely fancy bash prompt?
23:58:41 <hpc> haskell makes me wish i paid more attention in my math classes
23:58:51 <hpc> it feels like what math could have been if i didn't go with CS
23:58:51 <segfaultfizzbuzz> hpc: to what...?
23:58:53 <geekosaur> there used to be a joke about haskell being the best imperative language, yes
23:59:01 <hpc> geekosaur: that's my joke!
23:59:07 <geekosaur> I'm not sure if xmonad is an argument for or against that. :þ
23:59:10 <hpc> haskell is the best imperative language and perl's the best functional language
23:59:13 <monochrom> Ugh that's SPJ's joke...
23:59:22 <hpc> monochrom: oh, TIL
23:59:31 <geekosaur> thought SPJ's was that excel was the best functional language
23:59:34 <monochrom> But you can have the perl one :)
23:59:43 <hpc> haha, i will grant that excel is pretty great
23:59:44 <abastro[m]> I mean, first order function is harder to apply in rust iirc
23:59:59 <hpc> it's like invisible programming

All times are in UTC on 2022-03-21.