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.