2020/10/16

2020-10-16 00:00:23 +0200Amras(~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
2020-10-16 00:00:30 +0200cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-10-16 00:05:08 +0200conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-10-16 00:06:14 +0200DavidEichmann(~david@43.240.198.146.dyn.plus.net)
2020-10-16 00:07:22 +0200 <int-e> monochrom: that's so triggering
2020-10-16 00:07:43 +0200hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-10-16 00:08:01 +0200 <int-e> (the string literal, I mean)
2020-10-16 00:09:07 +0200hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-10-16 00:10:10 +0200justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-10-16 00:10:47 +0200Ariakenom(~Ariakenom@h-155-4-221-253.NA.cust.bahnhof.se) (Read error: Connection reset by peer)
2020-10-16 00:10:53 +0200hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection)
2020-10-16 00:11:15 +0200coot(~coot@37.30.50.102.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-10-16 00:11:16 +0200hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-10-16 00:12:07 +0200vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-10-16 00:13:28 +0200hackagejsonifier 0.1.0.2 - Fast and simple JSON encoding toolkit https://hackage.haskell.org/package/jsonifier-0.1.0.2 (NikitaVolkov)
2020-10-16 00:15:11 +0200wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
2020-10-16 00:17:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-16 00:18:13 +0200dhouthoo(~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
2020-10-16 00:18:14 +0200centril(~centril@213-66-146-92-no250.tbcn.telia.com) (Ping timeout: 272 seconds)
2020-10-16 00:19:19 +0200 <koz_> monochrom: ROFL
2020-10-16 00:19:27 +0200 <koz_> NordVPN - now in your compile-time.
2020-10-16 00:20:11 +0200 <monochrom> Generally the proliferation of ad blurbs in all things free of charge.
2020-10-16 00:20:50 +0200vicfred(~vicfred@unaffiliated/vicfred)
2020-10-16 00:22:02 +0200day(~Unknown@unaffiliated/day) (Ping timeout: 272 seconds)
2020-10-16 00:26:03 +0200 <koz_> If I need to construct an application of a data constructor in an Exp, what do I put in the first argument of AppE?
2020-10-16 00:26:22 +0200 <koz_> (I assume I need AppE [data constructor goes here] [arguments to it go here]?)
2020-10-16 00:27:10 +0200polyrain(~polyrain@2001:8003:e501:6901:5438:7f7:706e:c9b0)
2020-10-16 00:28:07 +0200 <koz_> Would that be a VarE?
2020-10-16 00:28:18 +0200justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-10-16 00:29:59 +0200 <int-e> koz_: `AppE` is function application on an expression level.
2020-10-16 00:30:46 +0200 <koz_> I need to construct the equivalent of 'Foo x y z', where 'data Foo = Foo Int String Float'. So how would I build that?
2020-10-16 00:30:48 +0200 <monochrom> ConE may help
2020-10-16 00:31:02 +0200 <int-e> if you have `A x y`, that'll be something like AppE (AppE (ConE nameA) (VarE nameX)) (VarE nameY). Which looks better if you use `AppE` as an infix operator, and probably least confusing if you use `appsE`, which takes a list.
2020-10-16 00:31:21 +0200 <koz_> Ah, I see. Con == constructor?
2020-10-16 00:31:34 +0200 <monochrom> Yeah, like that, be aware of (((Foo x) y) ... ad infinitum)
2020-10-16 00:31:35 +0200 <int-e> the latter would be appsE [ConE nameA, VarE nameX, VarE nameY]
2020-10-16 00:31:53 +0200 <monochrom> This is why usually [e| Foo ... |] is better.
2020-10-16 00:32:05 +0200 <monochrom> as in, better for your sanity and hair. :)
2020-10-16 00:32:09 +0200 <koz_> monochrom: Oh wait, I can do that? Nice.
2020-10-16 00:33:05 +0200 <int-e> monochrom: please tell us more about those sanity and hair things
2020-10-16 00:33:25 +0200 <monochrom> Oh, appsE make it easier, that's nice.
2020-10-16 00:33:26 +0200xerox_(~xerox@unaffiliated/xerox) (Ping timeout: 272 seconds)
2020-10-16 00:34:08 +0200 <monochrom> But still, handcoding the structure of the AST is very tedious. Too many nitpicking details to watch out for. You have to think like the compiler.
2020-10-16 00:34:40 +0200 <int-e> But absolutely, use a TH quotation when possible.
2020-10-16 00:34:52 +0200 <koz_> Noted.
2020-10-16 00:34:54 +0200 <monochrom> well, "compiler" is broad. You have to think like a Haskell parser.
2020-10-16 00:35:56 +0200Merfont(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-10-16 00:36:14 +0200Merfont(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-10-16 00:36:27 +0200pera(~pera@unaffiliated/pera) (Ping timeout: 260 seconds)
2020-10-16 00:36:44 +0200pera(~pera@unaffiliated/pera)
2020-10-16 00:37:47 +0200conal(~conal@64.71.133.70)
2020-10-16 00:39:01 +0200twk-(~thewormki@unaffiliated/twk-) (Ping timeout: 272 seconds)
2020-10-16 00:39:20 +0200 <monochrom> The downside of [e|Foo x y z|] is of course, as usual, does that "Foo" really refer to the Foo you intend? Similarly for x, y, z. And variable capture issues, etc.
2020-10-16 00:39:22 +0200marek(~mmahut@209.250.249.245) (Ping timeout: 246 seconds)
2020-10-16 00:39:39 +0200 <koz_> monochrom: Whoo, such fun.
2020-10-16 00:40:52 +0200twk-(~thewormki@unaffiliated/twk-)
2020-10-16 00:41:49 +0200jgt1(~jgt@77-255-14-254.adsl.inetia.pl) (Ping timeout: 246 seconds)
2020-10-16 00:43:08 +0200olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-10-16 00:44:33 +0200_ashbreeze_(~mark@72-161-255-212.dyn.centurytel.net)
2020-10-16 00:45:40 +0200ashbreeze(~mark@184-157-32-8.dyn.centurytel.net) (Ping timeout: 246 seconds)
2020-10-16 00:45:49 +0200kipras(~Kipras@78-56-235-39.static.zebra.lt) (Ping timeout: 264 seconds)
2020-10-16 00:46:06 +0200hiroaki(~hiroaki@ip4d176049.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds)
2020-10-16 00:46:28 +0200hackagechurros 0.1.2.0 - Channel/Arrow based streaming computation library. https://hackage.haskell.org/package/churros-0.1.2.0 (LyndonMaydwell)
2020-10-16 00:47:01 +0200mav1(~mav@i5E86B60A.versanet.de) (Ping timeout: 264 seconds)
2020-10-16 00:50:53 +0200DavidEichmann(~david@43.240.198.146.dyn.plus.net) (Ping timeout: 260 seconds)
2020-10-16 00:51:10 +0200hiroaki(~hiroaki@ip4d176049.dynamic.kabel-deutschland.de)
2020-10-16 00:51:18 +0200marek(~mmahut@209.250.249.245)
2020-10-16 00:51:38 +0200inkbottle(~inkbottle@aaubervilliers-654-1-82-179.w86-212.abo.wanadoo.fr)
2020-10-16 00:51:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-10-16 00:52:03 +0200zebrag(~inkbottle@aaubervilliers-654-1-4-38.w83-200.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2020-10-16 00:52:05 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
2020-10-16 00:57:13 +0200dcoutts_(~duncan@33.14.75.194.dyn.plus.net) (Ping timeout: 264 seconds)
2020-10-16 00:57:20 +0200Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-10-16 00:57:37 +0200Tario(~Tario@201.192.165.173)
2020-10-16 00:58:49 +0200dcoutts_(~duncan@33.14.75.194.dyn.plus.net)
2020-10-16 01:06:25 +0200dcoutts_(~duncan@33.14.75.194.dyn.plus.net) (Ping timeout: 240 seconds)
2020-10-16 01:09:41 +0200zebrag(~inkbottle@aaubervilliers-654-1-5-60.w83-200.abo.wanadoo.fr)
2020-10-16 01:10:52 +0200inkbottle(~inkbottle@aaubervilliers-654-1-82-179.w86-212.abo.wanadoo.fr) (Ping timeout: 246 seconds)
2020-10-16 01:13:04 +0200renzhi(~renzhi@modemcable070.17-177-173.mc.videotron.ca)
2020-10-16 01:13:09 +0200geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-10-16 01:13:41 +0200mav1(~mav@x59cc9a0f.dyn.telefonica.de)
2020-10-16 01:16:55 +0200xerox_(~xerox@unaffiliated/xerox)
2020-10-16 01:18:39 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-10-16 01:21:40 +0200mav1(~mav@x59cc9a0f.dyn.telefonica.de) (Ping timeout: 256 seconds)
2020-10-16 01:22:01 +0200Deide(~Deide@217.155.19.23)
2020-10-16 01:23:16 +0200juri_(~juri@178.63.35.222)
2020-10-16 01:25:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-16 01:27:03 +0200geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 260 seconds)
2020-10-16 01:28:17 +0200elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
2020-10-16 01:28:23 +0200 <koz_> Is (:::) a valid name for an infix operator?
2020-10-16 01:28:41 +0200 <hpc> :t (:::)
2020-10-16 01:28:43 +0200 <lambdabot> error: Data constructor not in scope: :::
2020-10-16 01:28:46 +0200Stanley00(~stanley00@unaffiliated/stanley00)
2020-10-16 01:28:53 +0200 <hpc> it's a valid name for an infix data constructor
2020-10-16 01:29:00 +0200 <koz_> hpc: What about an infix function?
2020-10-16 01:29:03 +0200 <hpc> nope
2020-10-16 01:29:07 +0200 <hpc> ':' is uppercase
2020-10-16 01:29:08 +0200 <hpc> :D
2020-10-16 01:29:15 +0200 <ghoulguy> constructors can be functions
2020-10-16 01:29:19 +0200 <Axman6> because ; is lowercase =)
2020-10-16 01:29:20 +0200 <monochrom> Since it starts with : it has to stay as a data constructor.
2020-10-16 01:29:27 +0200 <koz_> Aww.
2020-10-16 01:29:28 +0200 <hpc> ghoulguy: shush :P
2020-10-16 01:29:44 +0200 <Axman6> ; is already a function though, it's (>>=) :P
2020-10-16 01:29:46 +0200karanlikmadde(~karanlikm@2a01:c22:3472:9400:2911:7597:97b9:174f) (Quit: karanlikmadde)
2020-10-16 01:29:51 +0200 <koz_> Axman6: Rofl.
2020-10-16 01:30:25 +0200dhil(~dhil@195.213.192.122) (Ping timeout: 240 seconds)
2020-10-16 01:30:45 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-10-16 01:32:49 +0200Merfont(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Read error: Connection reset by peer)
2020-10-16 01:33:06 +0200day(~Unknown@unaffiliated/day)
2020-10-16 01:33:10 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-10-16 01:33:28 +0200Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 260 seconds)
2020-10-16 01:34:32 +0200Tuplanolla(~Tuplanoll@91.159.68.239) (Quit: Leaving.)
2020-10-16 01:35:46 +0200kupi(uid212005@gateway/web/irccloud.com/x-xztwkgxiilqycepj)
2020-10-16 01:36:25 +0200 <monochrom> May I talk you into ∷:
2020-10-16 01:36:33 +0200 <koz_> monochrom:
2020-10-16 01:36:38 +0200 <koz_> LOL
2020-10-16 01:37:11 +0200 <monochrom> U+2237 then colon
2020-10-16 01:37:27 +0200 <justsomeguy> seems to be the proportion symbol
2020-10-16 01:37:35 +0200 <monochrom> yeah
2020-10-16 01:37:57 +0200 <Cale>
2020-10-16 01:37:59 +0200jgt1(~jgt@77-255-14-254.adsl.inetia.pl)
2020-10-16 01:38:12 +0200 <justsomeguy> Dominoes or braille?
2020-10-16 01:38:21 +0200 <Cale> braille
2020-10-16 01:40:15 +0200centril(~centril@213-66-146-92-no250.tbcn.telia.com)
2020-10-16 01:40:18 +0200justsomeguyhas always thought it would be cool to have a colorscheme + font that de-emphasizes punctuation, makes ::: a ligature, and emboldens names.
2020-10-16 01:40:21 +0200sleblanc(~sleblanc@unaffiliated/sebleblanc)
2020-10-16 01:40:26 +0200 <justsomeguy> ::, even
2020-10-16 01:41:20 +0200 <koz_> I can write 'foo . bar . baz $ quux'. Suppose I wanted to do the same with (>>>): '_ quux >>> baz >>> bar >>> foo'. What goes in _?
2020-10-16 01:42:22 +0200elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 246 seconds)
2020-10-16 01:42:57 +0200 <justsomeguy> Maybe “Data.Function.&”?
2020-10-16 01:43:11 +0200 <koz_> :t (&)
2020-10-16 01:43:12 +0200 <lambdabot> a -> (a -> b) -> b
2020-10-16 01:43:26 +0200 <justsomeguy> It's like the reverse of “($)”.
2020-10-16 01:43:41 +0200 <justsomeguy> It's... also just my wild guess.
2020-10-16 01:44:20 +0200 <koz_> Can confirm it is not that, justsomeguy.
2020-10-16 01:44:30 +0200 <koz_> Someone told me this here a while ago, but I have since forgotten.
2020-10-16 01:44:41 +0200 <justsomeguy> Sorry ^_^; I tried.
2020-10-16 01:45:50 +0200 <monochrom> x & f >>> g >>> h
2020-10-16 01:46:04 +0200 <monochrom> I haven't checked precedence though.
2020-10-16 01:46:15 +0200 <nshepperd2> % :i &
2020-10-16 01:46:15 +0200 <yahb> nshepperd2: (&) :: a -> (a -> b) -> b -- Defined in `Data.Function'; infixl 1 &
2020-10-16 01:46:18 +0200elliott_(~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2020-10-16 01:46:20 +0200 <nshepperd2> % :i >>>
2020-10-16 01:46:20 +0200 <yahb> nshepperd2: (>>>) :: forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k). Category cat => cat a b -> cat b c -> cat a c -- Defined in `Control.Category'; infixr 1 >>>
2020-10-16 01:46:29 +0200 <nshepperd2> unfortunate
2020-10-16 01:46:39 +0200Amras(~Amras@unaffiliated/amras0000)
2020-10-16 01:46:41 +0200 <koz_> monochrom: Yep, they're both infix 1, though with different associativity.
2020-10-16 01:48:16 +0200conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-10-16 01:50:58 +0200pera(~pera@unaffiliated/pera) (Ping timeout: 260 seconds)
2020-10-16 01:51:04 +0200ensyde(~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7)
2020-10-16 01:51:25 +0200untseac(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 240 seconds)
2020-10-16 01:51:51 +0200karanlikmadde(~karanlikm@2a01:c22:3472:9400:2911:7597:97b9:174f)
2020-10-16 01:52:18 +0200conal(~conal@64.71.133.70)
2020-10-16 01:52:36 +0200pera(~pera@unaffiliated/pera)
2020-10-16 01:53:43 +0200nbloomf(~nbloomf@2600:1700:83e0:1f40:1d95:d5fb:2f0c:fa1f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 01:54:32 +0200OmegaDoug(8e750cd2@lnsm3-torontoxn-142-117-12-210.internet.virginmobile.ca)
2020-10-16 01:55:27 +0200GyroW(~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
2020-10-16 01:55:38 +0200GyroW(~GyroW@d54C03E98.access.telenet.be)
2020-10-16 01:55:38 +0200GyroW(~GyroW@d54C03E98.access.telenet.be) (Changing host)
2020-10-16 01:55:38 +0200GyroW(~GyroW@unaffiliated/gyrow)
2020-10-16 01:56:22 +0200 <OmegaDoug> With megaparsec, how can I parse just three digits? I want to parse "123.123" and believe I should be able to capture the first three digits using "fstThree <- count 3 L.decimal" but that produces the error "unexpected end of input"
2020-10-16 01:57:09 +0200 <{abby}> decimal is a number, for a digit you want digitChar
2020-10-16 01:57:45 +0200addcninblue(~addison@c-73-158-198-149.hsd1.ca.comcast.net)
2020-10-16 01:58:23 +0200 <OmegaDoug> {abby} That was exactly it. Thanks.
2020-10-16 01:59:59 +0200day_(~Unknown@unaffiliated/day)
2020-10-16 02:00:02 +0200schwuk(~schwuk@178.162.209.171) ()
2020-10-16 02:01:12 +0200addcninblue(~addison@c-73-158-198-149.hsd1.ca.comcast.net) ("WeeChat 2.9")
2020-10-16 02:02:09 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-16 02:02:25 +0200day(~Unknown@unaffiliated/day) (Ping timeout: 240 seconds)
2020-10-16 02:02:25 +0200day_day
2020-10-16 02:02:40 +0200 <dsal> is `count` just `replicateM`?
2020-10-16 02:02:47 +0200karanlikmadde(~karanlikm@2a01:c22:3472:9400:2911:7597:97b9:174f) (Quit: karanlikmadde)
2020-10-16 02:02:57 +0200 <koz_> :t count
2020-10-16 02:02:59 +0200 <lambdabot> error:
2020-10-16 02:02:59 +0200 <lambdabot> • Variable not in scope: count
2020-10-16 02:02:59 +0200 <lambdabot> • Perhaps you meant one of these:
2020-10-16 02:07:05 +0200isovector1(~isovector@172.103.216.166)
2020-10-16 02:08:01 +0200natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
2020-10-16 02:08:33 +0200natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2020-10-16 02:08:57 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2020-10-16 02:11:41 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-10-16 02:11:50 +0200da39a3ee5e6b4b0d(~textual@n11211935170.netvigator.com)
2020-10-16 02:20:21 +0200mirrorbird(~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1) (Ping timeout: 272 seconds)
2020-10-16 02:21:16 +0200polyrain(~polyrain@2001:8003:e501:6901:5438:7f7:706e:c9b0) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 02:21:23 +0200Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-10-16 02:22:22 +0200I440r(~I440r@195.206.169.184)
2020-10-16 02:24:37 +0200Unhammer(~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection)
2020-10-16 02:24:59 +0200Deide(~Deide@217.155.19.23)
2020-10-16 02:25:01 +0200stree(~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
2020-10-16 02:25:18 +0200stree(~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net)
2020-10-16 02:26:36 +0200nados(~dan@107-190-41-58.cpe.teksavvy.com) (Remote host closed the connection)
2020-10-16 02:29:26 +0200carlomagno(~cararell@inet-hqmc02-o.oracle.com) (Remote host closed the connection)
2020-10-16 02:30:07 +0200carlomagno(~cararell@inet-hqmc01-o.oracle.com)
2020-10-16 02:30:07 +0200jedws(~jedws@121.209.161.98)
2020-10-16 02:31:08 +0200addcninblue(~addison@c-73-158-198-149.hsd1.ca.comcast.net)
2020-10-16 02:31:17 +0200GyroW_(~GyroW@d54C03E98.access.telenet.be)
2020-10-16 02:31:17 +0200GyroW_(~GyroW@d54C03E98.access.telenet.be) (Changing host)
2020-10-16 02:31:17 +0200GyroW_(~GyroW@unaffiliated/gyrow)
2020-10-16 02:31:43 +0200GyroW(~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds)
2020-10-16 02:32:11 +0200jespada(~jespada@90.254.245.15) (Ping timeout: 260 seconds)
2020-10-16 02:33:01 +0200inkbottle(~inkbottle@aaubervilliers-654-1-104-11.w86-212.abo.wanadoo.fr)
2020-10-16 02:34:12 +0200zebrag(~inkbottle@aaubervilliers-654-1-5-60.w83-200.abo.wanadoo.fr) (Ping timeout: 256 seconds)
2020-10-16 02:34:35 +0200jespada(~jespada@90.254.245.15)
2020-10-16 02:36:18 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-10-16 02:39:36 +0200Unhammer(~Unhammer@gateway/tor-sasl/unhammer)
2020-10-16 02:42:27 +0200hackagerefinery 0.3.0.0 - Toolkit for building proof automation systems https://hackage.haskell.org/package/refinery-0.3.0.0 (ReedMullanix)
2020-10-16 02:42:55 +0200oxide(~lambda@unaffiliated/mclaren)
2020-10-16 02:43:56 +0200elliott_(~elliott_@pool-108-51-141-12.washdc.fios.verizon.net)
2020-10-16 02:46:22 +0200unlink2(~unlink2@p200300ebcf17c500f1cd4c5efbdddd1e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-16 02:48:29 +0200thir(~thir@p200300f27f025800e5e58f362e8b888e.dip0.t-ipconnect.de)
2020-10-16 02:49:51 +0200carlomagno(~cararell@inet-hqmc01-o.oracle.com) (Remote host closed the connection)
2020-10-16 02:50:47 +0200carlomagno(~cararell@inet-hqmc02-o.oracle.com)
2020-10-16 02:52:27 +0200Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-10-16 02:53:22 +0200thir(~thir@p200300f27f025800e5e58f362e8b888e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-16 02:55:40 +0200OmegaDoug(8e750cd2@lnsm3-torontoxn-142-117-12-210.internet.virginmobile.ca) (Remote host closed the connection)
2020-10-16 02:57:46 +0200mozzarella(~sam@unaffiliated/sam113101) (Quit: WeeChat 2.8)
2020-10-16 02:58:34 +0200nbloomf(~nbloomf@2600:1700:83e0:1f40:55b2:236:b746:75d5)
2020-10-16 02:58:45 +0200da39a3ee5e6b4b0d(~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 03:00:53 +0200nbloomf(~nbloomf@2600:1700:83e0:1f40:55b2:236:b746:75d5) (Client Quit)
2020-10-16 03:01:24 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 256 seconds)
2020-10-16 03:02:50 +0200nbloomf(~nbloomf@2600:1700:83e0:1f40:55b2:236:b746:75d5)
2020-10-16 03:03:27 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-10-16 03:03:45 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-16 03:04:53 +0200xff0x(~fox@2001:1a81:5350:d900:f127:8532:42d4:579b) (Ping timeout: 246 seconds)
2020-10-16 03:05:48 +0200plutoniix(~q@175.176.222.7)
2020-10-16 03:06:49 +0200xff0x(~fox@2001:1a81:538a:0:f127:8532:42d4:579b)
2020-10-16 03:08:07 +0200raehik(~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2020-10-16 03:08:21 +0200GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-16 03:08:22 +0200GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-16 03:08:22 +0200GyroW(~GyroW@unaffiliated/gyrow)
2020-10-16 03:09:03 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-10-16 03:09:31 +0200GyroW_(~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds)
2020-10-16 03:09:43 +0200Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 260 seconds)
2020-10-16 03:11:05 +0200Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-10-16 03:16:22 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2020-10-16 03:23:10 +0200crestfallen(~jvw@135.180.15.188)
2020-10-16 03:23:15 +0200thir(~thir@p200300f27f02580070028f68706a1e08.dip0.t-ipconnect.de)
2020-10-16 03:24:10 +0200Tario(~Tario@201.192.165.173)
2020-10-16 03:27:23 +0200nineonine(~nineonine@50.216.62.2) (Remote host closed the connection)
2020-10-16 03:27:25 +0200thir(~thir@p200300f27f02580070028f68706a1e08.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-10-16 03:28:16 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 03:28:19 +0200mozzarella(~sam@unaffiliated/sam113101)
2020-10-16 03:29:54 +0200 <crestfallen> hi in line 29 we have do {ma <- mma; ma} so this behaves like bind, but there is no indication of (>>= id) . Does that work solely on how mma and ma are named in " mma <- ma " ? https://github.com/varreli/haskell/blob/master/monads/joinBind.txt
2020-10-16 03:30:54 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-10-16 03:31:10 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 03:32:32 +0200irc_user(uid423822@gateway/web/irccloud.com/x-tarrfebyaowlqxvj)
2020-10-16 03:33:49 +0200 <crestfallen> correction {ma <- mma}
2020-10-16 03:34:11 +0200 <koz_> crestfallen: If you look right above, it explains how bind relates to join. Then, you can read about do-notation to see how it desugars into bind.
2020-10-16 03:34:19 +0200 <Axman6> I don't understand the quetion, but the names don't matter at all
2020-10-16 03:34:32 +0200 <koz_> Literally look up the desugaring of do-notation, and rewrite that example with explicit use of return and bind.
2020-10-16 03:34:37 +0200 <koz_> It'll be quite enlightening.
2020-10-16 03:34:56 +0200 <Axman6> m do {ma <- mma; ma} becomes mma >>= \ma -> ma, aka mma >>= id
2020-10-16 03:35:18 +0200 <koz_> Axman6: So much mixed martial arts. :P
2020-10-16 03:35:43 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-10-16 03:36:07 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-10-16 03:38:57 +0200cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 256 seconds)
2020-10-16 03:39:01 +0200 <crestfallen> koz_: Axman6: all do notation desugars into bind?
2020-10-16 03:39:08 +0200 <koz_> crestfallen: Yes, and return.
2020-10-16 03:39:28 +0200 <crestfallen> hold on please, not what I believed..
2020-10-16 03:40:28 +0200 <crestfallen> I understand well the unification above you pointed out koz_ .
2020-10-16 03:41:03 +0200m0rphism(~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 258 seconds)
2020-10-16 03:41:19 +0200 <crestfallen> ...
2020-10-16 03:43:30 +0200 <crestfallen> so if you have it looking like this:
2020-10-16 03:43:56 +0200 <crestfallen> (>>=) (Just (Just 5)) id
2020-10-16 03:44:16 +0200nineonine(~nineonine@50.216.62.2)
2020-10-16 03:44:19 +0200justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-10-16 03:44:33 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-16 03:44:46 +0200 <koz_> > Just (Just 5) >>= id
2020-10-16 03:44:48 +0200 <lambdabot> Just 5
2020-10-16 03:45:22 +0200 <Axman6> > Just (Just 5) >>= \just5 -> just5
2020-10-16 03:45:24 +0200 <lambdabot> Just 5
2020-10-16 03:45:55 +0200 <koz_> Axman6: Are you Just-ice? :P
2020-10-16 03:46:17 +0200 <crestfallen> so does id apply to the first Just in (Just (Just 5)) ?
2020-10-16 03:46:28 +0200 <crestfallen> and take it away?
2020-10-16 03:46:56 +0200 <koz_> crestfallen: Let's look at the type of bind.
2020-10-16 03:47:02 +0200 <koz_> :t (>>=)
2020-10-16 03:47:03 +0200 <crestfallen> Axman6: that is very interesting: \just5 -> just5 *IS* id , right?
2020-10-16 03:47:04 +0200 <lambdabot> Monad m => m a -> (a -> m b) -> m b
2020-10-16 03:47:22 +0200 <koz_> Now, consider the case we were just looking at - what is 'm' here?
2020-10-16 03:47:22 +0200 <Axman6> Just a >>= f = f a; Nothing >>= _ = Nothing
2020-10-16 03:47:37 +0200 <koz_> (namely, 'Just (Just 5) >>= id')
2020-10-16 03:48:20 +0200 <crestfallen> 'm' here is Just
2020-10-16 03:48:47 +0200 <koz_> crestfallen: Incorrect.
2020-10-16 03:48:54 +0200Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas)
2020-10-16 03:49:08 +0200 <koz_> You're mixing type and value level.
2020-10-16 03:49:17 +0200 <koz_> Try again, and think about it carefully.
2020-10-16 03:50:49 +0200 <koz_> base-4.10 is GHC-8.what?
2020-10-16 03:50:57 +0200 <crestfallen> oh yeah ok so...
2020-10-16 03:52:10 +0200Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 258 seconds)
2020-10-16 03:52:33 +0200 <crestfallen> so in Axman6 's example, 'a' is (Just a) ; it
2020-10-16 03:52:46 +0200 <Axman6> yep
2020-10-16 03:52:48 +0200 <crestfallen> it's the inner Just
2020-10-16 03:52:56 +0200 <Axman6> uh, which example
2020-10-16 03:53:13 +0200 <crestfallen> Just a >>= f = f a
2020-10-16 03:53:20 +0200 <Axman6> Just a >>= f = f a; Nothing >>= _ = Nothing is the definition of (>>=) for Maybe
2020-10-16 03:53:41 +0200 <crestfallen> so id is applied to the inner (Just a)
2020-10-16 03:53:50 +0200 <Axman6> yep
2020-10-16 03:54:18 +0200ashbreeze(~mark@72-161-253-104.dyn.centurytel.net)
2020-10-16 03:55:20 +0200 <crestfallen> so Axman6 koz_ when you used this lambda notation Just (Just 5) >>= \just5 -> just5 ...
2020-10-16 03:55:38 +0200 <koz_> \just5 -> just5 is alpha-equivalent to id.
2020-10-16 03:55:54 +0200 <koz_> As is \foo -> foo, \bar -> bar, \koz -> koz, etc etc etc.
2020-10-16 03:56:07 +0200 <crestfallen> that is very interesting. I mean, I know that, but seeing that is awesome.
2020-10-16 03:56:39 +0200_ashbreeze_(~mark@72-161-255-212.dyn.centurytel.net) (Ping timeout: 260 seconds)
2020-10-16 03:57:13 +0200 <crestfallen> so id is not applied to the outer 'container', only Just a, the inner container.
2020-10-16 03:57:52 +0200 <crestfallen> thanks kindly, today is a success koz_ Axman6
2020-10-16 03:58:15 +0200 <koz_> crestfallen: I was leading you there, but yeah. It's _very_ key that you follow the types.
2020-10-16 03:58:25 +0200 <koz_> This can sometimes mean by-hand substitutions to get what's going on.
2020-10-16 03:58:33 +0200 <koz_> I do it all the time, and it's actually quite enlightening.
2020-10-16 03:59:19 +0200reppertj(~textual@pool-96-246-209-59.nycmny.fios.verizon.net) (Quit: Textual IRC Client: www.textualapp.com)
2020-10-16 03:59:44 +0200 <crestfallen> koz_: yeah thanks. the unification of (>>=) and id , I fully get type-wise. sometimes when I try to visualize function application in the implementation, I visualize it differently from how I understand the types.
2020-10-16 04:00:25 +0200 <crestfallen> by-hand substitutions I really enjoy koz_
2020-10-16 04:00:38 +0200 <koz_> I actually had to do this recently to get myself out of CPS hell.
2020-10-16 04:00:41 +0200 <koz_> (at Real Job)
2020-10-16 04:01:09 +0200lagothrix(~lagothrix@unaffiliated/lagothrix) (Killed (card.freenode.net (Nickname regained by services)))
2020-10-16 04:01:15 +0200lagothrix(~lagothrix@unaffiliated/lagothrix)
2020-10-16 04:01:51 +0200 <crestfallen> koz_: you said to literally look up ...
2020-10-16 04:02:10 +0200 <crestfallen> dang it irssi won't give me scrollback!
2020-10-16 04:02:37 +0200 <koz_> crestfallen: Yep, in the sense of 'in the thing you pasted'.
2020-10-16 04:03:35 +0200 <crestfallen> <koz_> Literally look up the desugaring of do-notation, and rewrite that example with explicit use of return and bind.
2020-10-16 04:03:35 +0200xff0x(~fox@2001:1a81:538a:0:f127:8532:42d4:579b) (Ping timeout: 272 seconds)
2020-10-16 04:03:45 +0200 <koz_> Oh, in that sense.
2020-10-16 04:04:02 +0200 <koz_> Then I meant 'investigate' or 'find reference materials on'.
2020-10-16 04:04:08 +0200 <koz_> In the 'look up X in the dictionary' use.
2020-10-16 04:04:53 +0200xff0x(~fox@2001:1a81:5391:7900:f127:8532:42d4:579b)
2020-10-16 04:05:16 +0200 <crestfallen> yeah, you see I thought {ma <- mma; ma} was somehow knowing how to strip off the outer Just, as well as in {y <- x; y} .. somehow
2020-10-16 04:05:28 +0200Tops2(~Tobias@dyndsl-095-033-092-130.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2020-10-16 04:05:31 +0200urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2020-10-16 04:05:44 +0200 <crestfallen> but of course that is impossible koz_
2020-10-16 04:05:59 +0200lemmih_(~lemmih@218.186.157.57) (Remote host closed the connection)
2020-10-16 04:05:59 +0200 <koz_> crestfallen: Don't let syntax confuse you - the types tell the truth.
2020-10-16 04:06:23 +0200lemmih_(~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c)
2020-10-16 04:06:25 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
2020-10-16 04:06:42 +0200lucasb(uid333435@gateway/web/irccloud.com/x-qhpgfsleurzdehfq) (Quit: Connection closed for inactivity)
2020-10-16 04:06:57 +0200 <crestfallen> so I'm trying to think of where to find a good explanation of desugared do-notation ... working koz_ ...
2020-10-16 04:07:27 +0200elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
2020-10-16 04:07:59 +0200lemmih_(~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c) (Remote host closed the connection)
2020-10-16 04:08:29 +0200 <koz_> crestfallen: https://wiki.haskell.org/Typeclassopedia#do_notation
2020-10-16 04:08:37 +0200 <koz_> The Typeclassopedia is the source of considerable wisdom.
2020-10-16 04:08:42 +0200lemmih_(~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c)
2020-10-16 04:08:44 +0200 <koz_> There's a desugaring grammar right in that entry.
2020-10-16 04:09:52 +0200 <crestfallen> hit on academic paper by marlow, peyton-jones, kmett et al :/
2020-10-16 04:10:16 +0200 <koz_> crestfallen: Yeah, have a read of the link above.
2020-10-16 04:10:16 +0200 <crestfallen> thanks kindly copy that koz_
2020-10-16 04:10:18 +0200oisdk(~oisdk@2001:bb6:3329:d100:11d5:8dc1:169a:e187) (Quit: oisdk)
2020-10-16 04:10:57 +0200pera(~pera@unaffiliated/pera) (Ping timeout: 258 seconds)
2020-10-16 04:11:04 +0200 <crestfallen> I do get your explanation now and Ax*man's
2020-10-16 04:11:06 +0200pera(~pera@unaffiliated/pera)
2020-10-16 04:12:42 +0200fraktor(~walt@129.93.191.18)
2020-10-16 04:12:49 +0200conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-10-16 04:14:45 +0200 <fraktor> Would it be hypothetically possible to create something like Elm, where web apps are done using FRP and then rendered using a DOM diffing algorithm, to truly native applications?
2020-10-16 04:14:58 +0200 <koz_> fraktor: Hypothetically yes.
2020-10-16 04:15:04 +0200 <koz_> Given that Elm does this.
2020-10-16 04:15:14 +0200 <koz_> However, the practical details of this are... somewhat difficult.
2020-10-16 04:15:53 +0200conal(~conal@64.71.133.70)
2020-10-16 04:16:35 +0200 <fraktor> Yeah. Native GUIs don't have the same features for manipulating a DOM that web browsers do. Plus you need a cross-platform GUI library in the first place.
2020-10-16 04:17:30 +0200conal(~conal@64.71.133.70) (Client Quit)
2020-10-16 04:18:15 +0200goepsilongo(~textual@2604:2000:1201:442c:2468:86aa:3a30:53a6)
2020-10-16 04:18:25 +0200conal(~conal@64.71.133.70)
2020-10-16 04:18:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-10-16 04:18:37 +0200conal(~conal@64.71.133.70) (Client Quit)
2020-10-16 04:19:13 +0200drbean(~drbean@TC210-63-209-75.static.apol.com.tw)
2020-10-16 04:19:18 +0200polyrain(~polyrain@2001:8003:e501:6901:5438:7f7:706e:c9b0)
2020-10-16 04:20:08 +0200 <fraktor> Speaking of which, I haven't done GUI programming in Haskell. Is there a preferred cross-platform library for it?
2020-10-16 04:20:18 +0200 <koz_> For what definition of 'cross-platform'?
2020-10-16 04:20:59 +0200 <koz_> If you consider GTK 'cross-platform', then there's some stuff on top of that.
2020-10-16 04:21:16 +0200 <koz_> I think there's some FLTK stuff as well.
2020-10-16 04:23:19 +0200Stanley00(~stanley00@unaffiliated/stanley00)
2020-10-16 04:23:58 +0200theDon(~td@muedsl-82-207-238-240.citykom.de) (Ping timeout: 272 seconds)
2020-10-16 04:24:59 +0200 <crestfallen> koz_: also if I may, this is bugging me. how if we write it using prefix notation:
2020-10-16 04:25:02 +0200 <crestfallen> (>>=) (Just (Just 5)) id
2020-10-16 04:25:22 +0200 <koz_> crestfallen: What are you asking? 'how if we write it using prefix notation:' is not a sentence.
2020-10-16 04:25:22 +0200theDon(~td@muedsl-82-207-238-153.citykom.de)
2020-10-16 04:25:37 +0200 <crestfallen> sorry I'm writing it..
2020-10-16 04:26:26 +0200Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
2020-10-16 04:26:41 +0200 <crestfallen> it looks like (m m a) is being applied to id
2020-10-16 04:27:02 +0200danso(~dan@107-190-41-58.cpe.teksavvy.com)
2020-10-16 04:28:45 +0200 <koz_> crestfallen: I still don't understand. What do you mean by that?
2020-10-16 04:28:57 +0200 <koz_> Like, are you saying that you don't get how prefix syntax is being used with an infix function?
2020-10-16 04:28:58 +0200revprez_1nzio(~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 246 seconds)
2020-10-16 04:29:01 +0200 <koz_> Or something else?
2020-10-16 04:30:06 +0200revprez_anzio(~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net)
2020-10-16 04:30:11 +0200 <crestfallen> sorry my thinking is faulty. (<$>) (*10) [4,5,6] << yeah the pattern is the same here
2020-10-16 04:31:23 +0200 <crestfallen> > (*10) <$> [4,5,6]
2020-10-16 04:31:25 +0200 <lambdabot> [40,50,60]
2020-10-16 04:31:50 +0200 <crestfallen> no it's reversed. do you see my point koz_ ?
2020-10-16 04:32:01 +0200 <koz_> Nothing is reversed.
2020-10-16 04:32:16 +0200 <koz_> You can make an infix operator prefix by wrapping it in ().
2020-10-16 04:32:26 +0200 <koz_> And you can make a prefix function infix by wrapping it in ``.
2020-10-16 04:32:40 +0200 <koz_> Like, are you confused by the prefix-infix distinction?
2020-10-16 04:32:50 +0200 <koz_> I'm genuinely not sure what you're trying to say, or indeed, what isn't clear to you.
2020-10-16 04:33:48 +0200nbloomf(~nbloomf@2600:1700:83e0:1f40:55b2:236:b746:75d5) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 04:33:59 +0200lemmih_(~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c) (Remote host closed the connection)
2020-10-16 04:35:01 +0200lemmih(~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c)
2020-10-16 04:35:21 +0200 <crestfallen> in this case , the function is listed on the rhs of the infix: (Just (Just 5)) >>= id
2020-10-16 04:35:29 +0200 <crestfallen> koz_: ^
2020-10-16 04:35:46 +0200 <koz_> crestfallen: Functions can be arguments to other functions.
2020-10-16 04:35:59 +0200lemmih(~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c) (Remote host closed the connection)
2020-10-16 04:36:00 +0200 <koz_> There's nothing special about 'functions as arguments' versus 'non-functions as arguments'.
2020-10-16 04:36:12 +0200 <crestfallen> in this case, the function is on the lhs : (*10) <$> [4,5,6]
2020-10-16 04:36:24 +0200 <koz_> crestfallen: Yeah, and that's no different.
2020-10-16 04:36:29 +0200 <koz_> :t (>>)
2020-10-16 04:36:31 +0200 <lambdabot> Monad m => m a -> m b -> m b
2020-10-16 04:36:32 +0200lemmih(~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c)
2020-10-16 04:36:33 +0200 <koz_> Sorry
2020-10-16 04:36:38 +0200 <koz_> :t (>>=)
2020-10-16 04:36:39 +0200 <lambdabot> Monad m => m a -> (a -> m b) -> m b
2020-10-16 04:36:44 +0200 <koz_> This takes a function as an argument.
2020-10-16 04:36:53 +0200 <koz_> :t (<$>)
2020-10-16 04:36:54 +0200 <lambdabot> Functor f => (a -> b) -> f a -> f b
2020-10-16 04:36:59 +0200 <koz_> This also takes a function as an argument.
2020-10-16 04:37:04 +0200 <koz_> Note where they are positioned.
2020-10-16 04:37:14 +0200 <koz_> This is literally readable straight out of the type.
2020-10-16 04:37:29 +0200lemmih(~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c) (Remote host closed the connection)
2020-10-16 04:37:58 +0200 <crestfallen> yes the operands have the function in the first and second places respectively
2020-10-16 04:38:00 +0200cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-10-16 04:38:13 +0200lemmih(~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c)
2020-10-16 04:38:18 +0200 <koz_> crestfallen: So... what's the issue?
2020-10-16 04:38:39 +0200 <koz_> The reason the arguments are arranged that way is literally written into their types.
2020-10-16 04:38:40 +0200cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Client Quit)
2020-10-16 04:38:48 +0200 <koz_> Is your question '_why_ is it that they're arranged that way?'.
2020-10-16 04:38:54 +0200 <koz_> The answer is 'because someone decided it so'.
2020-10-16 04:38:59 +0200lemmih(~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c) (Remote host closed the connection)
2020-10-16 04:39:06 +0200reallymemorable(~quassel@ip68-9-215-56.ri.ri.cox.net)
2020-10-16 04:39:12 +0200 <koz_> There's no (particular) reason why the arguments to bind or <$> are in the order that they are.
2020-10-16 04:39:17 +0200 <koz_> But that's how they're defined.
2020-10-16 04:39:31 +0200 <crestfallen> ok fair enough. because yeah I would have thought that the function would have been in the same operand place
2020-10-16 04:39:31 +0200lemmih(~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c)
2020-10-16 04:39:41 +0200 <koz_> crestfallen: No, there's no reason for this.
2020-10-16 04:40:00 +0200 <koz_> Order of arguments is arbitrary. There are some ergonomic issues regarding currying, but in this case, it's arbitrary.
2020-10-16 04:40:12 +0200 <solonarv> oh! I see what you mean now. This is a reason I often use =<< instead of >>=
2020-10-16 04:40:29 +0200lemmih(~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c) (Remote host closed the connection)
2020-10-16 04:40:38 +0200 <koz_> solonarv: Yeah, and I think there's a flipped fmap too.
2020-10-16 04:41:00 +0200thc202(~thc202@unaffiliated/thc202) (Ping timeout: 244 seconds)
2020-10-16 04:41:01 +0200lemmih(~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c)
2020-10-16 04:41:30 +0200 <crestfallen> excellent. yeah because technically, despite the context that bind is giving us, in some sense id is being applied to (Just (Just 5)) , right?
2020-10-16 04:41:58 +0200 <koz_> crestfallen: I don't understand what you're saying.
2020-10-16 04:41:59 +0200lemmih(~lemmih@2406:3003:2072:44:e1c8:96e1:7910:2c4c) (Remote host closed the connection)
2020-10-16 04:42:04 +0200 <koz_> Bind is defined the way it is.
2020-10-16 04:42:08 +0200 <koz_> It means what its definition says.
2020-10-16 04:42:14 +0200 <crestfallen> but if you look at it as > (>>=) (Just (Just 5)) id it looks odd
2020-10-16 04:42:28 +0200 <koz_> Yeah - there's a reason we don't often write infix operators prefix.
2020-10-16 04:42:44 +0200 <koz_> We can do it, and sometimes it can be more useful or readable that way, but there's a reason why >>= is infix.
2020-10-16 04:43:18 +0200 <koz_> There's no a priori reason why bind needed to be an infix operator. We could actually do _everything_ prefix!
2020-10-16 04:43:37 +0200ensyde(~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7) (Ping timeout: 260 seconds)
2020-10-16 04:43:46 +0200djellemah(~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54) (Ping timeout: 244 seconds)
2020-10-16 04:43:49 +0200whatisRT(~whatisRT@2002:5b41:6a33:0:e9bc:8751:d550:a446)
2020-10-16 04:44:06 +0200 <crestfallen> yeah, the distinction affects my perception of it, tis all..
2020-10-16 04:44:26 +0200 <monochrom> Some people want to write everything mixfix.
2020-10-16 04:44:35 +0200 <koz_> monochrom: These people write Agda.
2020-10-16 04:44:42 +0200 <monochrom> yeah :)
2020-10-16 04:44:56 +0200 <crestfallen> like looking at a function and saying, ok this goes here, and that goes there, and this is what the machine is doing :)
2020-10-16 04:45:43 +0200 <crestfallen> thanks great session koz_ et al
2020-10-16 04:47:52 +0200 <crestfallen> yeah solonarv 's point makes it more intuitive:
2020-10-16 04:47:55 +0200 <crestfallen> λ> (=<<) id (Just (Just 5))
2020-10-16 04:48:49 +0200 <crestfallen> but that's wrong to think of it that way. because id is not applied that way, right koz_ ?
2020-10-16 04:49:04 +0200 <koz_> crestfallen: I genuinely don't understand what you're saying or asking.
2020-10-16 04:49:13 +0200 <koz_> So I have no idea whether it's wrong to think of 'it' 'that way' or not.
2020-10-16 04:50:16 +0200 <crestfallen> nevermind thanks I'm overthinking it to poor results
2020-10-16 04:51:05 +0200renzhi(~renzhi@modemcable070.17-177-173.mc.videotron.ca) (Ping timeout: 240 seconds)
2020-10-16 04:51:14 +0200nbloomf(~nbloomf@2600:1700:83e0:1f40:21a4:edc3:68a:18f4)
2020-10-16 04:51:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-16 04:52:41 +0200 <fraktor> I am also quite confused
2020-10-16 04:56:57 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-10-16 04:59:48 +0200vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-10-16 04:59:54 +0200GyroW(~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
2020-10-16 05:00:01 +0200I440r(~I440r@195.206.169.184) ()
2020-10-16 05:00:12 +0200GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-16 05:00:12 +0200GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-16 05:00:12 +0200GyroW(~GyroW@unaffiliated/gyrow)
2020-10-16 05:00:51 +0200lagothrix(~lagothrix@unaffiliated/lagothrix) (Killed (verne.freenode.net (Nickname regained by services)))
2020-10-16 05:01:00 +0200lagothrix(~lagothrix@unaffiliated/lagothrix)
2020-10-16 05:05:46 +0200crestfallen(~jvw@135.180.15.188) (Quit: leaving)
2020-10-16 05:05:55 +0200whatisRT(~whatisRT@2002:5b41:6a33:0:e9bc:8751:d550:a446) (Ping timeout: 240 seconds)
2020-10-16 05:06:05 +0200crestfallen(~jvw@135-180-15-188.fiber.dynamic.sonic.net)
2020-10-16 05:10:42 +0200geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-10-16 05:12:51 +0200wroathe_(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-16 05:13:25 +0200wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2020-10-16 05:13:32 +0200goepsilongo(~textual@2604:2000:1201:442c:2468:86aa:3a30:53a6) (Quit: Textual IRC Client: www.textualapp.com)
2020-10-16 05:19:46 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-10-16 05:20:09 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-10-16 05:22:02 +0200crestfallen(~jvw@135-180-15-188.fiber.dynamic.sonic.net) (Quit: Lost terminal)
2020-10-16 05:23:32 +0200mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh) (Read error: Connection reset by peer)
2020-10-16 05:23:51 +0200thir(~thir@p200300f27f02580079ce311adf6fad1c.dip0.t-ipconnect.de)
2020-10-16 05:24:51 +0200Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds)
2020-10-16 05:25:15 +0200unlink2(~unlink2@p200300ebcf17c500f1cd4c5efbdddd1e.dip0.t-ipconnect.de)
2020-10-16 05:27:47 +0200monochrom(trebla@216.138.220.146) (Quit: NO CARRIER)
2020-10-16 05:28:32 +0200thir(~thir@p200300f27f02580079ce311adf6fad1c.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-16 05:28:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-16 05:29:55 +0200ashbreeze(~mark@72-161-253-104.dyn.centurytel.net) (Ping timeout: 258 seconds)
2020-10-16 05:30:22 +0200polyrain(~polyrain@2001:8003:e501:6901:5438:7f7:706e:c9b0) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 05:32:15 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2020-10-16 05:32:16 +0200ashbreeze(~mark@72-161-252-240.dyn.centurytel.net)
2020-10-16 05:32:43 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-10-16 05:33:01 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-10-16 05:35:23 +0200justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-10-16 05:35:48 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-10-16 05:36:07 +0200jokester(~mono@unaffiliated/jokester) (Ping timeout: 260 seconds)
2020-10-16 05:36:09 +0200larou(5201f2b7@gateway/web/cgi-irc/kiwiirc.com/ip.82.1.242.183)
2020-10-16 05:36:27 +0200 <larou> i rewrote the "typing the knot" with a "cycle"
2020-10-16 05:36:28 +0200hackagehakyll-process 0.0.1.0 - Hakyll compiler for arbitrary external processes. https://hackage.haskell.org/package/hakyll-process-0.0.1.0 (jhmcstanton)
2020-10-16 05:36:28 +0200 <larou> https://pastebin.com/raw/J0e4fa3d
2020-10-16 05:37:51 +0200 <larou> it gives;
2020-10-16 05:37:52 +0200 <larou> *DLink> (fromCycle . (toCycle @False)) [1,2,3]
2020-10-16 05:37:53 +0200 <larou> [1,2,3]
2020-10-16 05:38:14 +0200 <larou> the regular tying the knot would not be able to do this
2020-10-16 05:38:21 +0200 <larou> since it could not "detect the cycle"
2020-10-16 05:38:41 +0200 <larou> ie, it would not support "fromCycle"
2020-10-16 05:39:03 +0200 <larou> i dont think the type applications machinery it requires was available at the time
2020-10-16 05:39:28 +0200da39a3ee5e6b4b0d(~textual@n11211935170.netvigator.com)
2020-10-16 05:39:34 +0200 <larou> or maybe even GADTs used this way
2020-10-16 05:39:38 +0200jokester(~mono@unaffiliated/jokester)
2020-10-16 05:39:51 +0200Amras(~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds)
2020-10-16 05:39:58 +0200 <larou> im struggling to write "cons" though
2020-10-16 05:40:56 +0200 <larou> i think this should work even if it is positioned somewhere other than with the cycle immediately behind it
2020-10-16 05:41:15 +0200 <larou> so i cant just cast it to a list, cons to the list and cast back
2020-10-16 05:41:21 +0200 <larou> which would be slow anyway...
2020-10-16 05:41:53 +0200 <larou> but i cant understand how to link it back together, if it has to somehow itterate over the backwards portion until the cycle
2020-10-16 05:42:31 +0200 <larou> aswell as the regular iterations over the forwards part, that would basically be the inlined version (cf. fusion) of the to/from list
2020-10-16 05:42:36 +0200jedws(~jedws@121.209.161.98) (Quit: Textual IRC Client: www.textualapp.com)
2020-10-16 05:42:58 +0200monochrom(trebla@216.138.220.146)
2020-10-16 05:42:58 +0200 <larou> where these recursions are supposed to reestablish the links to the updated nodes successively
2020-10-16 05:45:12 +0200TheScoop(~TheScoop@unaffiliated/tryte)
2020-10-16 05:47:13 +0200 <hololeap> the exponential law `x^(m+n) = (x^m)(x^n)` translates into haskell types as `Either m n -> x` ~ `(m -> x, n -> x)`
2020-10-16 05:47:19 +0200 <hololeap> is this basically correct?
2020-10-16 05:49:01 +0200 <dolio> hololeap: Yes.
2020-10-16 05:49:14 +0200 <int-e> :t either
2020-10-16 05:49:15 +0200 <lambdabot> (a -> c) -> (b -> c) -> Either a b -> c
2020-10-16 05:49:37 +0200 <int-e> :t uncurry either
2020-10-16 05:49:38 +0200 <lambdabot> (a -> c, b -> c) -> Either a b -> c
2020-10-16 05:49:47 +0200 <int-e> (one half of the isomorphism)
2020-10-16 05:49:56 +0200 <int-e> (ignoring bottoms, of course)
2020-10-16 05:50:28 +0200 <hololeap> int-e: good example :) but what is the other half?
2020-10-16 05:50:40 +0200 <int-e> :t (. Left) &&& (. Right)
2020-10-16 05:50:42 +0200 <lambdabot> (Either a b -> c) -> (a -> c, b -> c)
2020-10-16 05:50:58 +0200hackagepandoc 2.11.0.2 - Conversion between markup formats https://hackage.haskell.org/package/pandoc-2.11.0.2 (JohnMacFarlane)
2020-10-16 05:51:27 +0200 <larou> :t (&&&)
2020-10-16 05:51:27 +0200 <hololeap> right, fanout
2020-10-16 05:51:29 +0200 <lambdabot> Arrow a => a b c -> a b c' -> a b (c, c')
2020-10-16 05:51:51 +0200 <larou> % :t (&&&) @(->)
2020-10-16 05:51:51 +0200 <yahb> larou: (b -> c) -> (b -> c') -> b -> (c, c')
2020-10-16 05:52:31 +0200 <larou> :t either
2020-10-16 05:52:32 +0200 <lambdabot> (a -> c) -> (b -> c) -> Either a b -> c
2020-10-16 05:53:00 +0200 <larou> % :t bimap @Either
2020-10-16 05:53:01 +0200 <yahb> larou: (a -> b) -> (c -> d) -> Either a c -> Either b d
2020-10-16 05:53:29 +0200 <larou> is there a way to cast those (->) to `Arrow a' ?
2020-10-16 05:53:52 +0200 <larou> like something like (&&&) but for Either instead of (,) ?
2020-10-16 05:54:08 +0200 <larou> (i guess it should work for arbitrary bifunctors)
2020-10-16 05:54:23 +0200 <hololeap> ah, but `(. Left) &&& (. Right)` means you have to have a value available for both types `a` and `b`, right?
2020-10-16 05:54:23 +0200 <int-e> :t (|||)
2020-10-16 05:54:24 +0200 <lambdabot> ArrowChoice a => a b d -> a c d -> a (Either b c) d
2020-10-16 05:54:56 +0200 <hololeap> doesn't that contradict the semantics of Either?
2020-10-16 05:55:29 +0200 <larou> that maps from Either to d
2020-10-16 05:56:02 +0200 <int-e> larou: it's the arrow equiovalent of `either`
2020-10-16 05:56:17 +0200 <larou> % :t (|||) @Either
2020-10-16 05:56:17 +0200 <yahb> larou: ; <interactive>:1:1: error: No instance for (ArrowChoice Either) arising from a use of `|||'
2020-10-16 05:56:21 +0200 <larou> rrg
2020-10-16 05:56:25 +0200nineonin_(~nineonine@216-19-190-182.dyn.novuscom.net)
2020-10-16 05:56:44 +0200 <int-e> ?!
2020-10-16 05:56:44 +0200 <lambdabot> Maybe you meant: v @ ? .
2020-10-16 05:56:47 +0200 <larou> % :t (|||) @(->)
2020-10-16 05:56:47 +0200 <yahb> larou: (b -> d) -> (c -> d) -> Either b c -> d
2020-10-16 05:56:51 +0200 <larou> :t either
2020-10-16 05:56:52 +0200 <lambdabot> (a -> c) -> (b -> c) -> Either a b -> c
2020-10-16 05:56:56 +0200 <larou> oh!
2020-10-16 05:57:07 +0200 <larou> i was thinking of bimap still, sry
2020-10-16 05:57:29 +0200Ahmuck1(~Ahmuck@195.206.169.184)
2020-10-16 05:57:42 +0200 <larou> ah right, that c is like `c^(a+b)`
2020-10-16 05:57:52 +0200ddellacosta(~dd@86.106.121.168) (Ping timeout: 246 seconds)
2020-10-16 05:58:05 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 240 seconds)
2020-10-16 05:58:15 +0200 <hololeap> sorry, i was mixing up my variables in the two definitions. i forgot that an Arrow is usually the variable `a`
2020-10-16 05:58:30 +0200 <int-e> :t (arr Left >>>) &&& (arr Right >>>)
2020-10-16 05:58:32 +0200 <lambdabot> Arrow cat => cat (Either a b) c -> (cat a c, cat b c)
2020-10-16 05:58:50 +0200 <hololeap> :t arr Left
2020-10-16 05:58:52 +0200 <lambdabot> Arrow a1 => a1 a2 (Either a2 b)
2020-10-16 05:59:14 +0200 <hololeap> :i ArrowChoice
2020-10-16 05:59:16 +0200 <int-e> So yes, both of these generalize to arrows.
2020-10-16 05:59:23 +0200 <larou> bimap would be `(c+d)^(a+b)`
2020-10-16 05:59:25 +0200 <hololeap> % :i ArrowChoice
2020-10-16 05:59:25 +0200 <yahb> hololeap: type ArrowChoice :: (* -> * -> *) -> Constraint; class Arrow a => ArrowChoice a where; left :: a b c -> a (Either b d) (Either c d); right :: a b c -> a (Either d b) (Either d c); (+++) :: a b c -> a b' c' -> a (Either b b') (Either c c'); (|||) :: a b d -> a c d -> a (Either b c) d; {-# MINIMAL (left | (+++)) #-}; -- Defined in `Control.Arrow'; instance [safe] Comonad w => ArrowChoice (Cokle
2020-10-16 05:59:51 +0200nineonine(~nineonine@50.216.62.2) (Ping timeout: 260 seconds)
2020-10-16 06:00:01 +0200alexelcu(~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in)
2020-10-16 06:00:03 +0200polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 244 seconds)
2020-10-16 06:00:32 +0200 <larou> ah, so (+++) is like bimap
2020-10-16 06:00:44 +0200 <int-e> no
2020-10-16 06:00:52 +0200alexelcu(~alexelcu@142.93.180.198)
2020-10-16 06:00:55 +0200 <int-e> err wait, sorry.
2020-10-16 06:00:59 +0200 <hololeap> oh, int-e already mentioned (|||)
2020-10-16 06:01:00 +0200 <int-e> yes, but specifically for Either.
2020-10-16 06:01:17 +0200 <larou> right
2020-10-16 06:01:38 +0200 <int-e> hololeap: yes, and I was careful to wrote "arrow" in lower case because it's an extra class.
2020-10-16 06:02:25 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-10-16 06:02:29 +0200 <larou> is the idea that arrows by pair kind of subsume list
2020-10-16 06:03:25 +0200 <larou> thinking of how conal was implementing stacks for his "compilers to categories"
2020-10-16 06:03:38 +0200 <larou> compiling*
2020-10-16 06:03:40 +0200XorSwap(~user@wnpgmb016qw-ds01-98-128.dynamic.bellmts.net)
2020-10-16 06:03:44 +0200 <hololeap> arrows by pair subsume list?
2020-10-16 06:03:47 +0200 <hololeap> what does that mean?
2020-10-16 06:04:11 +0200 <larou> something about matching on cons being like a pair lens thing
2020-10-16 06:04:14 +0200Rudd0(~Rudd0@185.189.115.108)
2020-10-16 06:04:34 +0200 <larou> like, the arrows way would just be to have nested pairs instead of lists
2020-10-16 06:04:43 +0200mirrorbird(~psutcliff@m83-187-163-53.cust.tele2.se)
2020-10-16 06:04:54 +0200 <larou> and then to lens over any element by distributing over pair
2020-10-16 06:05:00 +0200kupi(uid212005@gateway/web/irccloud.com/x-xztwkgxiilqycepj) (Quit: Connection closed for inactivity)
2020-10-16 06:05:14 +0200 <hololeap> can you give a small example?
2020-10-16 06:05:26 +0200 <larou> i cant actually lens speak
2020-10-16 06:05:27 +0200whiteline(~whiteline@unaffiliated/whiteline) (Ping timeout: 260 seconds)
2020-10-16 06:05:43 +0200 <larou> or arrow speak for that matter
2020-10-16 06:05:51 +0200 <larou> so no! sorry...
2020-10-16 06:06:26 +0200 <hololeap> just something pseudo-haskelly to illustrate the point
2020-10-16 06:06:34 +0200 <larou> i think basically he managed to get quite a lot of expression from just category and arrow
2020-10-16 06:06:47 +0200 <larou> like, enough to write a compiler of sorts, with this idea of a stack
2020-10-16 06:06:59 +0200 <larou> erm, ok, i guess something like;
2020-10-16 06:07:34 +0200 <larou> update 1 (+1) (1,(2,3)) = (1,(3,3))
2020-10-16 06:07:37 +0200 <larou> ===
2020-10-16 06:07:47 +0200 <larou> update 1 (+1) [1,2,3] = [1,3,3]
2020-10-16 06:08:25 +0200elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2020-10-16 06:08:50 +0200 <larou> not that that shows anything about the compiler stack idea
2020-10-16 06:09:17 +0200 <larou> the talk was here; https://www.youtube.com/watch?v=wvQbpS6wBa0
2020-10-16 06:09:20 +0200jedws(~jedws@121.209.161.98)
2020-10-16 06:09:40 +0200Reiser2Reiser
2020-10-16 06:09:44 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-10-16 06:09:47 +0200Reiser(~0a2a0001@static.210.242.216.95.clients.your-server.de) (Changing host)
2020-10-16 06:09:47 +0200Reiser(~0a2a0001@unaffiliated/reisen)
2020-10-16 06:10:03 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-10-16 06:10:31 +0200 <hololeap> i know i asked for pseudo-haskell, but what would the type be for `update` in the first example?
2020-10-16 06:10:48 +0200 <hololeap> i don't understand what the first 1 is for
2020-10-16 06:11:02 +0200 <larou> well in the list example its the index
2020-10-16 06:11:13 +0200 <larou> > [1,2,3] !! 1
2020-10-16 06:11:16 +0200 <lambdabot> 2
2020-10-16 06:11:25 +0200 <hololeap> oh
2020-10-16 06:11:47 +0200 <larou> the type signature totally fails for the first example because really, nested pairs are not lists...
2020-10-16 06:13:25 +0200 <larou> i think in the talk he was flipping the order of the pair around
2020-10-16 06:13:28 +0200 <hololeap> update 0 = _1 ; update n f = _2 . update (n-1) f
2020-10-16 06:13:31 +0200 <larou> so that the tail was on the first
2020-10-16 06:13:43 +0200 <hololeap> (that might not be correct, i didn't test it)
2020-10-16 06:14:00 +0200ensyde(~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7)
2020-10-16 06:15:15 +0200 <larou> i dont think you should be dotting? like the update (n-1) is the function passed to _2 right?
2020-10-16 06:15:20 +0200 <larou> % :t _2
2020-10-16 06:15:20 +0200 <yahb> larou: (Field2 s t a b, Functor f) => (a -> f b) -> s -> f t
2020-10-16 06:15:36 +0200 <hololeap> :% t (_2 . _2 . _2 . _1)
2020-10-16 06:15:51 +0200 <hololeap> broke it
2020-10-16 06:15:52 +0200 <larou> % t (_2 . _2 . _2 . _1)
2020-10-16 06:15:52 +0200 <yahb> larou: ; <interactive>:41:1: error: Variable not in scope: t :: ((a3 -> f0 b3) -> s0 -> f0 t0) -> t
2020-10-16 06:16:05 +0200 <hololeap> % :t (_2 . _2 . _2 . _1)
2020-10-16 06:16:06 +0200 <yahb> hololeap: (Functor f, Field2 s t a1 b1, Field2 a1 b1 a2 b2, Field2 a2 b2 a3 b3, Field1 a3 b3 a4 b4) => (a4 -> f b4) -> s -> f t
2020-10-16 06:16:49 +0200 <larou> % :t \f -> (_2 (_1 f))
2020-10-16 06:16:50 +0200 <yahb> larou: (Field2 s1 t s2 b1, Functor f, Field1 s2 b1 a b2) => (a -> f b2) -> s1 -> f t
2020-10-16 06:17:53 +0200 <larou> % :t (\f -> (_2 (_1 f))) (+1) (1,(2,3))
2020-10-16 06:17:53 +0200 <yahb> larou: (Functor f, Num a, Num b1, Num (f b2)) => f (a, (b2, b1))
2020-10-16 06:17:57 +0200 <hololeap> % :t \n f = let foo n = case n of ; 0 -> _1 ; n' -> _2 . foo (n-1)
2020-10-16 06:17:57 +0200 <yahb> hololeap: ; <interactive>:1:6: error: parse error on input `='
2020-10-16 06:17:57 +0200 <larou> % (\f -> (_2 (_1 f))) (+1) (1,(2,3))
2020-10-16 06:17:58 +0200 <yahb> larou: ; <interactive>:46:1: error:; * Ambiguous type variables `f0', `b0' arising from a use of `print'; prevents the constraint `(Show (f0 (Integer, (b0, Integer))))' from being solved.; Probable fix: use a type annotation to specify what `f0', `b0' should be.; These potential instances exist:; instance Show a => Show (ZipList a) -- Defined in `Control.Applicative'; insta
2020-10-16 06:18:08 +0200 <larou> !
2020-10-16 06:18:09 +0200 <hololeap> % :t \n = let foo n = case n of ; 0 -> _1 ; n' -> _2 . foo (n-1)
2020-10-16 06:18:09 +0200 <yahb> hololeap: ; <interactive>:1:4: error: parse error on input `='
2020-10-16 06:18:39 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-10-16 06:18:42 +0200ensyde(~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7) (Ping timeout: 260 seconds)
2020-10-16 06:18:54 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-10-16 06:18:59 +0200 <larou> % :t \n -> let foo n = case n of ; 0 -> _1 ; n' -> _2 . foo (n-1)
2020-10-16 06:18:59 +0200 <yahb> larou: ; <interactive>:1:61: error: parse error (possibly incorrect indentation or mismatched brackets)
2020-10-16 06:19:31 +0200 <larou> % :t \n -> let foo n = case n of ; 0 -> _1 ; n' -> _2 . foo (n-1) in foo 1 (+1) (1,(2,3))
2020-10-16 06:19:31 +0200 <yahb> larou: ; <interactive>:1:65: error:; * Occurs check: cannot construct the infinite type: b1 ~ (f b, b1); arising from a functional dependency between:; constraint `Field2 (f b, (f b, b1)) (b, (f b, b1)) (f b, (f b, b1)) (b, (f b, b1))' arising from a use of `foo'; instance Field2 (a, b2) (a, b') b2 b' at <no location info>; * In the expression: foo 1 (+ 1) (1, (2, 3));
2020-10-16 06:19:45 +0200 <larou> this isnt working at all!
2020-10-16 06:20:11 +0200 <larou> crazy lenses...
2020-10-16 06:20:33 +0200 <hololeap> % update 0 = _1 ; update n = _2 . update (n-1)
2020-10-16 06:20:33 +0200 <yahb> hololeap:
2020-10-16 06:20:36 +0200 <hololeap> % :t update
2020-10-16 06:20:37 +0200 <yahb> hololeap: (Eq t, Num t, Field1 a1 b1 a2 b2, Functor f, Field2 a1 b1 a1 b1) => t -> (a2 -> f b2) -> a1 -> f b1
2020-10-16 06:20:48 +0200 <hololeap> anyway, that's what i was going for
2020-10-16 06:21:09 +0200 <larou> how is that used?
2020-10-16 06:21:22 +0200plast1k_(~plast1k_@196.207.181.246)
2020-10-16 06:24:36 +0200 <larou> % update 1 return (1,(2,3))
2020-10-16 06:24:37 +0200 <yahb> larou: ; <interactive>:52:1: error:; * Occurs check: cannot construct the infinite type: b ~ (a, b); arising from a functional dependency between:; constraint `Field2 (a, (a, b)) (a, (a, b)) (a, (a, b)) (a, (a, b))' arising from a use of `update'; instance Field2 (a1, b1) (a1, b') b1 b' at <no location info>; * In the expression: update 1 return (1, (2, 3)); In an equat
2020-10-16 06:24:59 +0200 <larou> how does that even typecheck!?
2020-10-16 06:25:03 +0200nbloomf(~nbloomf@2600:1700:83e0:1f40:21a4:edc3:68a:18f4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 06:27:17 +0200 <larou> i think you would have to make update a function of a class so it could match on the type it was being applied to
2020-10-16 06:29:47 +0200da39a3ee5e6b4b0d(~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 06:30:31 +0200 <hololeap> yeah this doesn't typecheck well when applied to an actual value
2020-10-16 06:30:45 +0200fraktor(~walt@129.93.191.18) (Quit: WeeChat 2.8)
2020-10-16 06:31:58 +0200Guest34869(~chris@81.96.113.213) (Remote host closed the connection)
2020-10-16 06:32:00 +0200 <hololeap> there was a library that could convert (1,2,3,4) to [1,2,3,4] somehow
2020-10-16 06:32:00 +0200XorSwap(~user@wnpgmb016qw-ds01-98-128.dynamic.bellmts.net) (Quit: XorSwap)
2020-10-16 06:33:25 +0200 <larou> you mean (1,(2,(3,4))) ?
2020-10-16 06:33:54 +0200Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-10-16 06:34:10 +0200Tario(~Tario@201.192.165.173)
2020-10-16 06:34:38 +0200 <hololeap> i remember it being (1,2,3,4) -> [1,2,3,4]. you would have to convert (1,(2,(3,4))) to (1,2,3,4) first i suppose
2020-10-16 06:34:52 +0200 <larou> well thats no good!
2020-10-16 06:34:58 +0200 <hololeap> anyway, possible, but tricky with haskell's type system
2020-10-16 06:35:04 +0200sdx23(~sdx23@unaffiliated/sdx23) (Ping timeout: 265 seconds)
2020-10-16 06:35:10 +0200 <larou> anyway, whats the point in having something that typechecks except when its applied to a value
2020-10-16 06:35:37 +0200 <hololeap> there isn't one. i made a mistake
2020-10-16 06:35:52 +0200 <larou> k
2020-10-16 06:35:52 +0200conal(~conal@64.71.133.70)
2020-10-16 06:35:58 +0200hackagesweet-egison 0.1.1.1 - Shallow embedding implementation of non-linear pattern matching https://hackage.haskell.org/package/sweet-egison-0.1.1.1 (SatoshiEgi)
2020-10-16 06:36:00 +0200 <larou> btw did anyone see this>
2020-10-16 06:36:01 +0200 <larou> https://pastebin.com/raw/J0e4fa3d
2020-10-16 06:36:02 +0200 <larou> ?
2020-10-16 06:36:04 +0200 <hololeap> although it should be possible
2020-10-16 06:36:11 +0200 <hololeap> using type families or something
2020-10-16 06:36:15 +0200 <larou> i was trying to write cons for a cyclic list
2020-10-16 06:36:30 +0200 <larou> but got stuck
2020-10-16 06:38:01 +0200geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
2020-10-16 06:38:19 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-16 06:38:32 +0200Tario(~Tario@201.192.165.173) (Ping timeout: 258 seconds)
2020-10-16 06:38:43 +0200ech(~user@gateway/tor-sasl/ech) (Ping timeout: 240 seconds)
2020-10-16 06:38:58 +0200da39a3ee5e6b4b0d(~textual@n11211935170.netvigator.com)
2020-10-16 06:41:14 +0200conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-10-16 06:41:24 +0200da39a3ee5e6b4b0d(~textual@n11211935170.netvigator.com) (Client Quit)
2020-10-16 06:41:43 +0200blissful(~azuline@unaffiliated/azuline) (Quit: The Lounge - https://thelounge.chat)
2020-10-16 06:43:01 +0200jneira_(~jneira@80.30.100.250) (Ping timeout: 246 seconds)
2020-10-16 06:43:09 +0200jneira_(~jneira@211.red-176-87-17.dynamicip.rima-tde.net)
2020-10-16 06:43:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-10-16 06:43:32 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-10-16 06:43:41 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-10-16 06:44:56 +0200blissful(~azuline@unaffiliated/azuline)
2020-10-16 06:45:21 +0200larou(5201f2b7@gateway/web/cgi-irc/kiwiirc.com/ip.82.1.242.183) (Quit: Connection closed)
2020-10-16 06:46:03 +0200snakemas1(~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
2020-10-16 06:48:01 +0200chris(~chris@81.96.113.213)
2020-10-16 06:48:26 +0200chrisGuest39829
2020-10-16 06:49:05 +0200day_(~Unknown@unaffiliated/day)
2020-10-16 06:50:21 +0200Tario(~Tario@201.192.165.173)
2020-10-16 06:50:41 +0200ech(~user@gateway/tor-sasl/ech)
2020-10-16 06:52:36 +0200day(~Unknown@unaffiliated/day) (Ping timeout: 256 seconds)
2020-10-16 06:52:36 +0200day_day
2020-10-16 06:53:42 +0200ericsagnes(~ericsagne@2405:6580:0:5100:548b:75ef:7d3b:2917) (Ping timeout: 260 seconds)
2020-10-16 06:54:53 +0200Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-10-16 06:55:11 +0200Tario(~Tario@201.192.165.173)
2020-10-16 06:59:45 +0200Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
2020-10-16 06:59:52 +0200jsynacek(~jsynacek@ip-185-149-130-112.kmenet.cz)
2020-10-16 07:05:42 +0200ericsagnes(~ericsagne@2405:6580:0:5100:ad7e:a36b:18dd:5e0b)
2020-10-16 07:06:11 +0200 <hololeap> https://dpaste.com/3FX3PKNAB
2020-10-16 07:12:18 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-16 07:12:49 +0200foldr(~foldr@90.248.57.181) (Ping timeout: 264 seconds)
2020-10-16 07:12:52 +0200snakemas1(~snakemast@213.100.206.23)
2020-10-16 07:14:09 +0200da39a3ee5e6b4b0d(~textual@n11211935170.netvigator.com)
2020-10-16 07:14:58 +0200hackagesweet-egison 0.1.1.2 - Shallow embedding implementation of non-linear pattern matching https://hackage.haskell.org/package/sweet-egison-0.1.1.2 (SatoshiEgi)
2020-10-16 07:17:43 +0200polyrain(~polyrain@130.102.13.188)
2020-10-16 07:22:14 +0200jneira_(~jneira@211.red-176-87-17.dynamicip.rima-tde.net) (Ping timeout: 258 seconds)
2020-10-16 07:26:27 +0200lemmih(~lemmih@2406:3003:2072:44:70c9:d5cf:dc27:2e6a)
2020-10-16 07:29:53 +0200lemmih(~lemmih@2406:3003:2072:44:70c9:d5cf:dc27:2e6a) (Client Quit)
2020-10-16 07:31:04 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz)
2020-10-16 07:32:22 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2020-10-16 07:32:26 +0200lemmih(~lemmih@2406:3003:2072:44:70c9:d5cf:dc27:2e6a)
2020-10-16 07:32:58 +0200cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 258 seconds)
2020-10-16 07:35:07 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
2020-10-16 07:38:14 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-10-16 07:39:16 +0200ggole(~ggole@2001:8003:8119:7200:245d:f234:9b48:f3a5)
2020-10-16 07:44:52 +0200MattMareo(~mattl@unaffiliated/mattmareo) (Remote host closed the connection)
2020-10-16 07:44:55 +0200AHADI-DANIEL(~Thunderbi@45.195.7.35)
2020-10-16 07:46:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-10-16 07:46:55 +0200alp(~alp@2a01:e0a:58b:4920:bc3f:65f1:5680:9d66)
2020-10-16 07:47:11 +0200MattMareo(~mattl@unaffiliated/mattmareo)
2020-10-16 07:47:40 +0200Guest88073lep-delete
2020-10-16 07:47:41 +0200lep-deleteGuest88073
2020-10-16 07:47:42 +0200Guest88073lep-delete
2020-10-16 07:47:48 +0200lep-deleteGuest88073
2020-10-16 07:48:18 +0200Sanchayan(~Sanchayan@171.61.90.104)
2020-10-16 07:52:40 +0200Guest39829(~chris@81.96.113.213) (Remote host closed the connection)
2020-10-16 07:52:46 +0200Sheilong(uid293653@gateway/web/irccloud.com/x-xesqnwopwcihzfhi) (Quit: Connection closed for inactivity)
2020-10-16 07:52:49 +0200nyd(~lpy@unaffiliated/elysian)
2020-10-16 07:53:12 +0200danso(~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
2020-10-16 07:54:09 +0200danso(~dan@107-190-41-58.cpe.teksavvy.com)
2020-10-16 07:56:16 +0200bahamas(~lucian@unaffiliated/bahamas)
2020-10-16 07:57:18 +0200snakemas1(~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
2020-10-16 08:00:01 +0200Ahmuck1(~Ahmuck@195.206.169.184) ()
2020-10-16 08:01:05 +0200alp(~alp@2a01:e0a:58b:4920:bc3f:65f1:5680:9d66) (Ping timeout: 272 seconds)
2020-10-16 08:03:02 +0200sleblanc(~sleblanc@unaffiliated/sebleblanc) (Ping timeout: 265 seconds)
2020-10-16 08:03:42 +0200acidjnk_new2(~acidjnk@p200300d0c723787058597087ca157dd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-16 08:05:36 +0200Guest88073(~lep@94.31.82.44) (Read error: Connection reset by peer)
2020-10-16 08:05:56 +0200lep-delete(~lep@94.31.82.44)
2020-10-16 08:05:59 +0200whatisRT(~whatisRT@2002:5b41:6a33:0:e9bc:8751:d550:a446)
2020-10-16 08:06:22 +0200lep-deleteGuest88073
2020-10-16 08:10:53 +0200 <hololeap> @pf runMatchT m = runMaybeT . runReaderT (getMatchT m)
2020-10-16 08:10:53 +0200 <lambdabot> Maybe you meant: pl bf
2020-10-16 08:11:01 +0200 <hololeap> @pl runMatchT m = runMaybeT . runReaderT (getMatchT m)
2020-10-16 08:11:02 +0200 <lambdabot> runMatchT = (runMaybeT .) . runReaderT . getMatchT
2020-10-16 08:11:30 +0200cfricke(~cfricke@unaffiliated/cfricke)
2020-10-16 08:12:09 +0200irc_user(uid423822@gateway/web/irccloud.com/x-tarrfebyaowlqxvj) (Quit: Connection closed for inactivity)
2020-10-16 08:13:27 +0200hackageegison 4.1.1 - Programming language with non-linear pattern-matching against non-free data https://hackage.haskell.org/package/egison-4.1.1 (SatoshiEgi)
2020-10-16 08:13:47 +0200toorevitimirp(~tooreviti@117.182.180.0)
2020-10-16 08:15:00 +0200bitmagie(~Thunderbi@200116b8068ac700b1ff22a8b63421be.dip.versatel-1u1.de)
2020-10-16 08:17:33 +0200solonarv(~solonarv@anancy-651-1-202-101.w109-217.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2020-10-16 08:19:53 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-16 08:21:24 +0200plast1k_(~plast1k_@196.207.181.246) (Ping timeout: 265 seconds)
2020-10-16 08:21:53 +0200Wayno(~Wayno@185.163.110.116)
2020-10-16 08:24:54 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-10-16 08:30:28 +0200aqd(~aqd@87-92-145-87.rev.dnainternet.fi)
2020-10-16 08:31:46 +0200chris(~chris@81.96.113.213)
2020-10-16 08:32:09 +0200chrisGuest79846
2020-10-16 08:34:21 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 260 seconds)
2020-10-16 08:35:04 +0200mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh)
2020-10-16 08:37:12 +0200plast1k_(~plast1k_@196.207.181.246)
2020-10-16 08:37:55 +0200aqd(~aqd@87-92-145-87.rev.dnainternet.fi) (Quit: Textual IRC Client: www.textualapp.com)
2020-10-16 08:38:11 +0200avdb(~avdb@ip-83-134-109-138.dsl.scarlet.be)
2020-10-16 08:39:45 +0200avdb(~avdb@ip-83-134-109-138.dsl.scarlet.be) (Client Quit)
2020-10-16 08:40:14 +0200avdb(~avdb@ip-83-134-109-138.dsl.scarlet.be)
2020-10-16 08:42:14 +0200danso(~dan@107-190-41-58.cpe.teksavvy.com) (Quit: WeeChat 2.9)
2020-10-16 08:43:10 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz)
2020-10-16 08:45:25 +0200ensyde(~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7)
2020-10-16 08:45:35 +0200kritzefitz(~kritzefit@fw-front.credativ.com)
2020-10-16 08:48:03 +0200ech(~user@gateway/tor-sasl/ech) (Ping timeout: 240 seconds)
2020-10-16 08:48:03 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 260 seconds)
2020-10-16 08:49:09 +0200Guest79846(~chris@81.96.113.213) (Remote host closed the connection)
2020-10-16 08:50:00 +0200wroathe_wroathe
2020-10-16 08:50:29 +0200ensyde(~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7) (Ping timeout: 272 seconds)
2020-10-16 08:51:29 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-10-16 08:51:46 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-10-16 08:51:58 +0200fragamus(~michaelgo@73.93.155.61)
2020-10-16 08:52:25 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds)
2020-10-16 08:52:29 +0200dhouthoo(~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be)
2020-10-16 08:52:53 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2020-10-16 08:53:08 +0200 <fragamus> howdy do we have a way to solve a set of six linear equations
2020-10-16 08:53:55 +0200 <fragamus> I kinda want to not use something that would require me to add a bulky external package
2020-10-16 08:54:01 +0200ech(~user@gateway/tor-sasl/ech)
2020-10-16 08:54:22 +0200 <Axman6> what does "external" mean?
2020-10-16 08:54:30 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-10-16 08:54:32 +0200 <Axman6> I'm sure hmatrix has something?
2020-10-16 08:54:34 +0200 <fragamus> I just want a sleek all haskell package that solves a system of linear equations
2020-10-16 08:55:01 +0200 <fragamus> external means someone wrote one in C and then someone else ported it to haskell
2020-10-16 08:55:07 +0200 <fragamus> I just want all haskell
2020-10-16 08:55:14 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2020-10-16 08:55:15 +0200 <fragamus> I will have a look at hmatrix
2020-10-16 08:55:44 +0200 <fragamus> I don't want one that uses FFI
2020-10-16 08:55:54 +0200 <Axman6> I believe hmatrix uses lapack
2020-10-16 08:56:49 +0200dcoutts_(~duncan@33.14.75.194.dyn.plus.net)
2020-10-16 08:57:20 +0200 <Axman6> https://hackage.haskell.org/package/linear-1.21.3/docs/Linear-Matrix.html#v:luSolve?
2020-10-16 08:57:20 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving)
2020-10-16 08:57:30 +0200 <Axman6> pretty sure there' no C deps for the linear package
2020-10-16 08:57:32 +0200 <fragamus> I just want to do gaussian elimination on a six by six matrix
2020-10-16 08:58:02 +0200 <fragamus> yes Linear is nice but it appears to top out at vecors of length 4
2020-10-16 08:58:02 +0200polyrain(~polyrain@130.102.13.188) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 08:58:16 +0200 <fragamus> vectors even
2020-10-16 08:58:32 +0200 <Axman6> V is an arbitrary sizex vector
2020-10-16 08:58:50 +0200alp(~alp@2a01:e0a:58b:4920:e911:6d8c:d3c2:ba84)
2020-10-16 08:58:54 +0200 <fragamus> elimination and back substitution
2020-10-16 08:59:02 +0200 <Axman6> so you want V 6 (V 6 Double) or something
2020-10-16 08:59:33 +0200 <fragamus> ok lemme try that
2020-10-16 09:00:02 +0200 <Axman6> I have no idea if this'll work though, I'm just following the types
2020-10-16 09:00:18 +0200rprije(~rprije@14-203-72-60.tpgi.com.au) (Ping timeout: 260 seconds)
2020-10-16 09:00:32 +0200 <fragamus> V would have to implement typeclass Additive etc.
2020-10-16 09:00:49 +0200 <Axman6> which it does
2020-10-16 09:02:37 +0200xff0x(~fox@2001:1a81:5391:7900:f127:8532:42d4:579b) (Ping timeout: 244 seconds)
2020-10-16 09:03:56 +0200sdx23(~sdx23@unaffiliated/sdx23)
2020-10-16 09:04:59 +0200snakemas1(~snakemast@213.100.206.23)
2020-10-16 09:08:10 +0200 <fragamus> ok Linear.V looks like a winner
2020-10-16 09:08:40 +0200 <fragamus> what does Portability non-portable mean?
2020-10-16 09:08:57 +0200 <Axman6> probably works with GHC
2020-10-16 09:09:22 +0200 <fragamus> ok so it is prtable
2020-10-16 09:09:29 +0200 <fragamus> portable even
2020-10-16 09:09:44 +0200pera(~pera@unaffiliated/pera) (Ping timeout: 256 seconds)
2020-10-16 09:09:49 +0200snakemas1(~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
2020-10-16 09:10:42 +0200chaosmasttter(~chaosmast@p200300c4a710fa01b4d1efe2d5e04ce9.dip0.t-ipconnect.de)
2020-10-16 09:11:20 +0200whatisRT(~whatisRT@2002:5b41:6a33:0:e9bc:8751:d550:a446) (Ping timeout: 246 seconds)
2020-10-16 09:13:16 +0200Sgeo_(~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer)
2020-10-16 09:13:42 +0200whiteline(~whiteline@unaffiliated/whiteline)
2020-10-16 09:16:12 +0200tzh(~tzh@2601:448:c500:5300::8e04) (Quit: zzz)
2020-10-16 09:16:21 +0200aqd(~aqd@ip-87-108-38-187.customer.academica.fi)
2020-10-16 09:16:23 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-10-16 09:16:38 +0200Buntspecht(~user@unaffiliated/siracusa) (Quit: Bye!)
2020-10-16 09:19:54 +0200vilpan(~0@mail.elitnet.lt)
2020-10-16 09:20:15 +0200bliminse(~bliminse@host217-42-95-37.range217-42.btcentralplus.com) (Quit: leaving)
2020-10-16 09:23:23 +0200perdent(~blah@101.175.98.122) (Remote host closed the connection)
2020-10-16 09:23:33 +0200bliminse(~bliminse@host217-42-95-37.range217-42.btcentralplus.com)
2020-10-16 09:25:21 +0200thir(~thir@p200300f27f02580079ce311adf6fad1c.dip0.t-ipconnect.de)
2020-10-16 09:25:40 +0200 <merijn> honestly "portability" and "stability" fields have no well defined meaning
2020-10-16 09:25:51 +0200 <merijn> Some of my packages have stability "haha" :p
2020-10-16 09:26:31 +0200snakemas1(~snakemast@213.100.206.23)
2020-10-16 09:26:57 +0200funkatronixxx(~funkatron@a83-161-198-206.adsl.xs4all.nl)
2020-10-16 09:30:02 +0200thir(~thir@p200300f27f02580079ce311adf6fad1c.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-16 09:30:38 +0200AHADI-DANIEL(~Thunderbi@45.195.7.35) (Ping timeout: 256 seconds)
2020-10-16 09:30:44 +0200nikotineping
2020-10-16 09:31:02 +0200GyroW(~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
2020-10-16 09:31:20 +0200GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-16 09:31:21 +0200GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-16 09:31:21 +0200GyroW(~GyroW@unaffiliated/gyrow)
2020-10-16 09:31:52 +0200polyrain(~polyrain@130.102.13.188)
2020-10-16 09:31:54 +0200AHADI-DANIEL(~Thunderbi@45.195.7.35)
2020-10-16 09:35:01 +0200snakemas1(~snakemast@213.100.206.23) (Ping timeout: 264 seconds)
2020-10-16 09:36:50 +0200olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 272 seconds)
2020-10-16 09:39:45 +0200dddddd(~dddddd@unaffiliated/dddddd) (Ping timeout: 240 seconds)
2020-10-16 09:39:45 +0200danvet_(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-10-16 09:41:01 +0200snakemas1(~snakemast@213.100.206.23)
2020-10-16 09:42:43 +0200coot(~coot@37.30.50.102.nat.umts.dynamic.t-mobile.pl)
2020-10-16 09:44:58 +0200AHADI-DANIEL1(~Thunderbi@45.195.7.35)
2020-10-16 09:44:59 +0200AHADI-DANIEL(~Thunderbi@45.195.7.35) (Read error: Connection reset by peer)
2020-10-16 09:45:00 +0200AHADI-DANIEL1AHADI-DANIEL
2020-10-16 09:49:39 +0200olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-10-16 09:50:26 +0200xff0x(~fox@217.110.198.158)
2020-10-16 09:53:28 +0200sw1nn(~sw1nn@host86-173-104-87.range86-173.btcentralplus.com) (Quit: WeeChat 2.9)
2020-10-16 09:53:39 +0200sea-gull(~sea-gull@li1815-136.members.linode.com) (Ping timeout: 258 seconds)
2020-10-16 09:53:46 +0200sea-gull(~sea-gull@li1815-136.members.linode.com)
2020-10-16 09:55:00 +0200sw1nn(~sw1nn@host86-173-104-87.range86-173.btcentralplus.com)
2020-10-16 09:55:02 +0200toorevitimirp(~tooreviti@117.182.180.0) (Remote host closed the connection)
2020-10-16 09:55:08 +0200supercoven(~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi)
2020-10-16 09:55:09 +0200supercoven(~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi) (Max SendQ exceeded)
2020-10-16 09:55:14 +0200Stanley00(~stanley00@unaffiliated/stanley00) (Read error: Connection reset by peer)
2020-10-16 09:55:16 +0200Stanley|00(~stanley00@unaffiliated/stanley00)
2020-10-16 09:55:23 +0200supercoven(~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi)
2020-10-16 09:55:30 +0200toorevitimirp(~tooreviti@117.182.180.0)
2020-10-16 09:56:02 +0200raichoo(~raichoo@213.240.178.58)
2020-10-16 09:57:55 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net)
2020-10-16 09:59:23 +0200supercoven(~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi) (Max SendQ exceeded)
2020-10-16 09:59:24 +0200jgt1(~jgt@77-255-14-254.adsl.inetia.pl) (Read error: Connection reset by peer)
2020-10-16 09:59:41 +0200supercoven(~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi)
2020-10-16 10:00:04 +0200Stanley|00(~stanley00@unaffiliated/stanley00) (Ping timeout: 246 seconds)
2020-10-16 10:00:12 +0200jgt1(~jgt@77-255-14-254.adsl.inetia.pl)
2020-10-16 10:00:13 +0200anik(~anik@103.23.207.150)
2020-10-16 10:00:24 +0200 <avdb> What's the best way to install all Haskell tools on Linux? I did a fresh installation yesterday and I'd rather not clutter it again by installing GHC, Stack & Cabal in 5 different ways
2020-10-16 10:00:45 +0200 <avdb> I head you're not supposed to use Haskell Platform or something because it was harmful
2020-10-16 10:00:56 +0200jgt1(~jgt@77-255-14-254.adsl.inetia.pl) (Client Quit)
2020-10-16 10:01:05 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-10-16 10:01:53 +0200 <merijn> define "all haskell tools" :)
2020-10-16 10:02:20 +0200 <merijn> Are you on Arch? Because if so, rule one is: avoid the official packages :)
2020-10-16 10:02:30 +0200justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-10-16 10:02:32 +0200 <avdb> I need GHC, GHCi, Stack, Cabal and the base packages
2020-10-16 10:02:50 +0200 <avdb> Nope, Gentoo, Haskell support is amazing
2020-10-16 10:02:55 +0200 <merijn> avdb: GHC+cabal are probably most easily/portably done via ghcup
2020-10-16 10:03:13 +0200 <merijn> stack is most easily done via, well, stack (which will get GHC for you)
2020-10-16 10:03:24 +0200 <avdb> Alright, that was the method I read about in "What I wish I knew before learning Haskell"
2020-10-16 10:03:57 +0200 <merijn> If you're a Luddite whose pedantic about his environment there's also the "just download the GHC bindist" approach
2020-10-16 10:04:13 +0200 <avdb> Unlike other books, instead of letting you dip your toes in the water first, it throws you directly in the cold water
2020-10-16 10:04:16 +0200 <merijn> Which is what I stick with, but that's not for everyone :p
2020-10-16 10:05:17 +0200untseac(~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
2020-10-16 10:06:03 +0200anik(~anik@103.23.207.150) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-10-16 10:07:25 +0200 <maerwald> avdb: you can't have multiple GHC in gentoo
2020-10-16 10:08:29 +0200 <maerwald> and it exposes hackage packages in a way that makes it impossible to have the same version installed multiple times, effectively leading to lots of dependency resolution problems
2020-10-16 10:09:12 +0200lagothrixGuest70556
2020-10-16 10:09:12 +0200Guest70556(~lagothrix@unaffiliated/lagothrix) (Killed (tolkien.freenode.net (Nickname regained by services)))
2020-10-16 10:09:21 +0200lagothrix(~lagothrix@unaffiliated/lagothrix)
2020-10-16 10:09:52 +0200 <avdb> Alright, so I need to stick with my package manager?
2020-10-16 10:10:32 +0200 <[exa]> "your package manager" as the distro's package manager?
2020-10-16 10:10:42 +0200 <avdb> Portage
2020-10-16 10:10:51 +0200 <avdb> We have a Haskell overlay
2020-10-16 10:10:54 +0200 <maerwald> avdb: as I said, you can only have one GHC and haskell packages are not handled properly
2020-10-16 10:11:10 +0200 <maerwald> it's not worth the trouble
2020-10-16 10:11:36 +0200 <[exa]> avdb: certainly use ghcup and local cabal for your development packages... the way haskell packages work is problematic for distros to grasp correctly to allow both development and reliably installed packages
2020-10-16 10:12:17 +0200isovector1(~isovector@172.103.216.166) (Quit: Leaving)
2020-10-16 10:12:29 +0200 <avdb> Oh okay, but how do I update ghcup without hassle?
2020-10-16 10:12:30 +0200 <maerwald> most package managers were written in an era where packages were C packages and maintainers lost sleep over changing/breaking API
2020-10-16 10:12:37 +0200 <avdb> Since it's not recorded in Portage
2020-10-16 10:12:57 +0200 <avdb> Hahaha, XMonad wasn't easy on dependencies either :$
2020-10-16 10:13:00 +0200 <maerwald> now we have SemVer, npm and need tools like nix to handle any of that, but no one really understands
2020-10-16 10:13:01 +0200 <[exa]> avdb: you don't need to, it's basically an onetime script
2020-10-16 10:13:33 +0200 <[exa]> avdb: also it can kindof update itself, like rustups, pips and other "local" managers
2020-10-16 10:13:58 +0200 <[exa]> anyway I have to say that I'd welcome ghcup in distro packages
2020-10-16 10:14:10 +0200 <maerwald> it's a bit sad that you need the least ergonomic package manager out there to handle haskell packages correctly
2020-10-16 10:14:22 +0200 <avdb> Oh that's cool, seems like it installs itself in my home directory
2020-10-16 10:14:49 +0200isovector1(~isovector@172.103.216.166.cable.tpia.cipherkey.com)
2020-10-16 10:15:07 +0200 <[exa]> avdb: it's really convenient for development, just gives the user a working copy of ghc and cabal, with easy way to switch versions etc. Certainly the easiest way around, by far
2020-10-16 10:15:17 +0200lagothrix(~lagothrix@unaffiliated/lagothrix) (Killed (hitchcock.freenode.net (Nickname regained by services)))
2020-10-16 10:15:26 +0200lagothrix(~lagothrix@unaffiliated/lagothrix)
2020-10-16 10:16:31 +0200 <[exa]> avdb: if you don't mind a bit of `make install`, you can install ghc+cabal yourself from binary distribution on the web, which will give you a similar result with a bit more control. Eventually you could compile ghc, but that's a longer adventure
2020-10-16 10:17:04 +0200 <[exa]> (by "longer" I mean "please don't do this to yourself now")
2020-10-16 10:18:12 +0200 <merijn> You shouldn't compile GHC yourself unless you really have to
2020-10-16 10:18:22 +0200 <merijn> And actually you run into circular issues anyway
2020-10-16 10:18:27 +0200polyrain(~polyrain@130.102.13.188) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 10:18:34 +0200 <merijn> You need to already have a working GHC to compile GHC from source
2020-10-16 10:18:48 +0200 <merijn> So, why would you bother building it if you've already got it :p
2020-10-16 10:19:22 +0200addcninblue(~addison@c-73-158-198-149.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2020-10-16 10:19:26 +0200 <avdb> [exa]: Oh no, I already had horrible experiences compiling rust in the past
2020-10-16 10:20:00 +0200 <jchia> i'm wondering how much performance improvement you can get by compiling ghc yourself with optimization options fit for the target machine
2020-10-16 10:20:09 +0200 <avdb> You're 100% right merijn. Compiling packages from source is only useful for customization with USE flags or ports.
2020-10-16 10:20:27 +0200 <[exa]> jchia: that's very gentoo-oriented question right. :D
2020-10-16 10:20:43 +0200 <avdb> Oh and optimizations, forgot.
2020-10-16 10:20:47 +0200 <jchia> [exa]: i just find ghc, but i don't use gentoo
2020-10-16 10:20:50 +0200 <jchia> i find ghc slow
2020-10-16 10:21:16 +0200Stanley00(~stanley00@unaffiliated/stanley00)
2020-10-16 10:21:38 +0200lagothrix(~lagothrix@unaffiliated/lagothrix) (Ping timeout: 258 seconds)
2020-10-16 10:21:40 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 10:21:45 +0200 <jchia> So if i can even get 5% improvement from building ghc from source, i would do it. i just haven't tried
2020-10-16 10:22:19 +0200 <[exa]> I don't really believe the machine-specific optimizations would help it... ghc is slow because it handles giant heaps of irregular structures and tries to do it in a (relatively) sane and clean way, which can be hardly optimized by lowlevel changes in the compiler
2020-10-16 10:22:49 +0200 <[exa]> jchia: would be interesting to see the benchmark though
2020-10-16 10:23:25 +0200lagothrix(~lagothrix@unaffiliated/lagothrix)
2020-10-16 10:24:12 +0200nyd(~lpy@unaffiliated/elysian) (Quit: nyd)
2020-10-16 10:26:21 +0200bahamas(~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds)
2020-10-16 10:26:38 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2020-10-16 10:26:55 +0200moy(a4b11321@static-csq-cds-019033.business.bouyguestelecom.com)
2020-10-16 10:27:19 +0200moyGuest6760
2020-10-16 10:28:11 +0200sdx23(~sdx23@unaffiliated/sdx23) (Quit: Lost terminal)
2020-10-16 10:31:55 +0200bahamas(~lucian@unaffiliated/bahamas)
2020-10-16 10:32:39 +0200 <Guest6760> Hello. Im discovering Haskell through the development of a little chat server using TCP protocole. Sadly, i can only parse the message sent initially at the client connexion. If a client keep the socket open and continue sending message, i cant get them server side. Anyone with some experience with the Network module has a clue ?
2020-10-16 10:32:51 +0200 <Guest6760> as example im using the snippet found on the Network module documentation :
2020-10-16 10:33:13 +0200 <Guest6760> https://hackage.haskell.org/package/network-3.1.1.1/docs/Network-Socket.html
2020-10-16 10:33:43 +0200invaser(~Thunderbi@31.148.23.125)
2020-10-16 10:35:23 +0200 <[exa]> Guest6760: how exactly you "can't" get them on server side? the client disconnects? the read from the connection hangs forever?
2020-10-16 10:36:02 +0200sdx23(~sdx23@unaffiliated/sdx23)
2020-10-16 10:37:47 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 10:37:52 +0200 <[exa]> (also, it might help a lot to pastebin some representative sample of your code)
2020-10-16 10:39:06 +0200 <Guest6760> ah yeah pastebin ill do that. by i cant i mean i dont find how to do it. The client does not disconnect, but i dont know how to listen to/parse the message that the client keep sending
2020-10-16 10:40:09 +0200 <Guest6760> https://pastebin.com/RCyZcwVb here is my server code
2020-10-16 10:41:00 +0200 <Guest6760> i can log the message client send on connexion, and answer it also, at the connexion, but then nothing
2020-10-16 10:41:57 +0200hackagebenchpress 0.2.2.15 - Micro-benchmarking with detailed statistics. https://hackage.haskell.org/package/benchpress-0.2.2.15 (willsewell)
2020-10-16 10:42:36 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-10-16 10:42:53 +0200 <[exa]> ok good, you probably don't want to use plain 'recv' but you can wrap the socket with a handle-like interface; convert it using `socketToHandle` first. Then you can e.g. read the first "line" from the client using `hGetLine`
2020-10-16 10:43:38 +0200 <[exa]> Guest6760: btw, highly suggest using some kind of telnet or netcat tool to debug&inspect client and server separately
2020-10-16 10:43:52 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz)
2020-10-16 10:45:10 +0200 <Guest6760> ok thanks a lot, i'll give it a try. Im using netcat as client but im was not aware i could use it to debug
2020-10-16 10:45:21 +0200 <Guest6760> i was not aware
2020-10-16 10:45:24 +0200snakemas1(~snakemast@213.100.206.23) (Ping timeout: 258 seconds)
2020-10-16 10:45:29 +0200ph88(~ph88@2a02:8109:9e40:2704:21a2:9414:d2e6:266d)
2020-10-16 10:45:34 +0200 <maerwald> avdb: compiling from source is about trust too... and I don't mean that from some paranoid privacy perspective, but from the perspective that package maintainers tend to mess up
2020-10-16 10:46:06 +0200 <ph88> you mean you have to trust them not to mess up ? :P
2020-10-16 10:46:24 +0200 <[exa]> Guest6760: if you are using it as client, you are probably already there :]
2020-10-16 10:46:26 +0200 <maerwald> no, I don't have to, because I can see what they are doing exactly
2020-10-16 10:48:13 +0200isovector1(~isovector@172.103.216.166.cable.tpia.cipherkey.com) (Ping timeout: 260 seconds)
2020-10-16 10:48:20 +0200toorevitimirp(~tooreviti@117.182.180.0) (Quit: Konversation terminated!)
2020-10-16 10:48:57 +0200mirrorbird(~psutcliff@m83-187-163-53.cust.tele2.se) (Quit: Leaving)
2020-10-16 10:49:03 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 256 seconds)
2020-10-16 10:49:38 +0200whiteline(~whiteline@unaffiliated/whiteline) (Remote host closed the connection)
2020-10-16 10:50:01 +0200whiteline(~whiteline@unaffiliated/whiteline)
2020-10-16 10:51:45 +0200drbean(~drbean@TC210-63-209-75.static.apol.com.tw) (Ping timeout: 240 seconds)
2020-10-16 10:52:58 +0200hackageconduit 1.3.3 - Streaming data processing library. https://hackage.haskell.org/package/conduit-1.3.3 (MichaelSnoyman)
2020-10-16 10:53:08 +0200whiteline(~whiteline@unaffiliated/whiteline) (Client Quit)
2020-10-16 10:53:30 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 10:54:14 +0200toorevitimirp(~tooreviti@117.182.180.0)
2020-10-16 10:54:29 +0200AHADI-DANIEL(~Thunderbi@45.195.7.35) (Quit: AHADI-DANIEL)
2020-10-16 10:54:38 +0200chris(~chris@81.96.113.213)
2020-10-16 10:55:02 +0200chrisGuest86129
2020-10-16 10:55:11 +0200Guest86129(~chris@81.96.113.213) (Remote host closed the connection)
2020-10-16 10:58:05 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2020-10-16 11:00:01 +0200Wayno(~Wayno@185.163.110.116) ()
2020-10-16 11:01:06 +0200thc202(~thc202@unaffiliated/thc202)
2020-10-16 11:01:31 +0200DavidEichmann(~david@43.240.198.146.dyn.plus.net)
2020-10-16 11:01:46 +0200anik(~anik@103.23.207.158)
2020-10-16 11:01:46 +0200ixlun(~matthew@213.205.241.94) (Read error: Connection reset by peer)
2020-10-16 11:02:09 +0200rprije(~rprije@203-219-208-42.static.tpgi.com.au)
2020-10-16 11:05:40 +0200jrqc(~rofl@96.78.87.197) (Remote host closed the connection)
2020-10-16 11:05:40 +0200plast1k_(~plast1k_@196.207.181.246) (Remote host closed the connection)
2020-10-16 11:05:57 +0200jrqc(~rofl@96.78.87.197)
2020-10-16 11:06:01 +0200plast1k_(~plast1k_@196.207.181.246)
2020-10-16 11:06:23 +0200ubert(~Thunderbi@p200300ecdf10db93e6b318fffe838f33.dip0.t-ipconnect.de)
2020-10-16 11:06:25 +0200fragamus(~michaelgo@73.93.155.61) (Ping timeout: 240 seconds)
2020-10-16 11:07:13 +0200plast1k_(~plast1k_@196.207.181.246) (Client Quit)
2020-10-16 11:08:25 +0200anik(~anik@103.23.207.158) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-10-16 11:08:45 +0200Franciman(~francesco@host-82-48-166-25.retail.telecomitalia.it)
2020-10-16 11:08:54 +0200 <Franciman> Hi, what is the most mature GUI toolkit for haskell?
2020-10-16 11:08:54 +0200cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-10-16 11:08:59 +0200 <Franciman> gi-gtk?
2020-10-16 11:09:01 +0200 <Franciman> or gtk3?
2020-10-16 11:10:55 +0200hnOsmium0001(uid453710@gateway/web/irccloud.com/x-ritgaqlnctnhotjj) (Quit: Connection closed for inactivity)
2020-10-16 11:13:04 +0200 <merijn> Mature in which sense?
2020-10-16 11:14:16 +0200 <merijn> The most robust is probably ftlkhs, but it doesn't look all nice and shiny
2020-10-16 11:14:44 +0200coot_(~coot@37.30.35.208.nat.umts.dynamic.t-mobile.pl)
2020-10-16 11:15:31 +0200snakemas1(~snakemast@213.100.206.23)
2020-10-16 11:16:58 +0200 <Guest6760> [exa] I'm experiencing the same issue with Handles : i read the first message sent, then the talk function is called again recursively, there is nothing to read, then it stop to listen to messages (i guess)
2020-10-16 11:17:04 +0200 <Guest6760> https://pastebin.com/PBkc0KNe
2020-10-16 11:17:43 +0200 <Guest6760> It seems that talk stop calling itself recursively after the 2nd execution
2020-10-16 11:17:57 +0200coot(~coot@37.30.50.102.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 256 seconds)
2020-10-16 11:17:58 +0200coot_coot
2020-10-16 11:19:49 +0200SysRun(~SysRun@s91904426.blix.com)
2020-10-16 11:20:45 +0200thir(~thir@p200300f27f02580054c95ee62928d196.dip0.t-ipconnect.de)
2020-10-16 11:21:22 +0200anik(~anik@103.23.207.144)
2020-10-16 11:21:48 +0200 <dminuoso> Guest6760: Did you read the note at
2020-10-16 11:21:54 +0200 <dminuoso> https://hackage.haskell.org/package/network-3.1.2.0/docs/Network-Socket.html#v:socketToHandle
2020-10-16 11:22:01 +0200 <dminuoso> "By default, the new handle is unbuffered. Use hSetBuffering to change the buffering.'
2020-10-16 11:22:40 +0200 <Guest6760> i red it but it didnt mean much to me :p
2020-10-16 11:23:07 +0200 <dminuoso> Well, hGetLine will block until it gets a newline
2020-10-16 11:23:13 +0200snakemas1(~snakemast@213.100.206.23) (Ping timeout: 260 seconds)
2020-10-16 11:23:40 +0200 <dminuoso> But if the handle is unbuffered, it wont get to a newline even though one may be in its buffer already
2020-10-16 11:23:46 +0200 <dminuoso> Oh
2020-10-16 11:23:48 +0200 <dminuoso> Haha
2020-10-16 11:23:53 +0200 <dminuoso> Wait, I read this the wrong way around.
2020-10-16 11:24:15 +0200snakemas1(~snakemast@213.100.206.23)
2020-10-16 11:24:37 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 11:25:13 +0200thir(~thir@p200300f27f02580054c95ee62928d196.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-10-16 11:25:19 +0200anik(~anik@103.23.207.144) (Client Quit)
2020-10-16 11:26:06 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
2020-10-16 11:27:23 +0200Amras(~Amras@unaffiliated/amras0000)
2020-10-16 11:28:58 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
2020-10-16 11:29:52 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net)
2020-10-16 11:31:25 +0200vilpan(~0@mail.elitnet.lt) (Ping timeout: 246 seconds)
2020-10-16 11:32:22 +0200petersen(~petersen@redhat/juhp) (Quit: petersen)
2020-10-16 11:32:24 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2020-10-16 11:32:35 +0200 <maerwald> Franciman: gi-gtk is better maintained afair
2020-10-16 11:34:10 +0200snakemas1(~snakemast@213.100.206.23) (Ping timeout: 256 seconds)
2020-10-16 11:34:13 +0200 <maerwald> Franciman: the gtk3 readme says "For all new application development you should consider using haskell-gi as it has much more complete bindings."
2020-10-16 11:34:44 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net) (Ping timeout: 256 seconds)
2020-10-16 11:35:30 +0200perdent(~blah@101.175.98.122)
2020-10-16 11:36:38 +0200 <Franciman> merijn, yeah I meant between gi-gtk and gtk3
2020-10-16 11:36:41 +0200 <Franciman> thanks maerwald
2020-10-16 11:37:16 +0200 <merijn> Just throwing it out there because I know deech has put a ton of time into making it work/compile well on all platforms :)
2020-10-16 11:39:38 +0200GyroW(~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
2020-10-16 11:39:48 +0200GyroW_(~GyroW@d54C03E98.access.telenet.be)
2020-10-16 11:39:48 +0200GyroW_(~GyroW@d54C03E98.access.telenet.be) (Changing host)
2020-10-16 11:39:48 +0200GyroW_(~GyroW@unaffiliated/gyrow)
2020-10-16 11:40:38 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 11:41:20 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1)
2020-10-16 11:45:09 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-10-16 11:45:24 +0200 <Franciman> merijn, but is fltkhs as low level as fltk?
2020-10-16 11:45:49 +0200 <Franciman> I wanted to make something similar to https://github.com/wavewave/hoodle
2020-10-16 11:47:43 +0200GyroW_(~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds)
2020-10-16 11:48:10 +0200polyrain(~polyrain@130.102.13.188)
2020-10-16 11:48:27 +0200GyroW(~GyroW@d54C03E98.access.telenet.be)
2020-10-16 11:48:27 +0200GyroW(~GyroW@d54C03E98.access.telenet.be) (Changing host)
2020-10-16 11:48:27 +0200GyroW(~GyroW@unaffiliated/gyrow)
2020-10-16 11:49:33 +0200 <merijn> Franciman: Well, the docs claims "comes with GUI builder support to alleviate the tedium of laying out widgets by hand."
2020-10-16 11:52:11 +0200 <merijn> tbh, I've mostly given up on GUIs for a while because they tended to be rather painful to setup and the ease of building ftlkhs is what got my attention, but if it can't really do what you need, then yeah, that matters very little :)
2020-10-16 11:52:26 +0200 <Guest6760> setted the buffering mode to line buffering but the issue remains, i never get past the 2nd hGetLine call
2020-10-16 11:53:45 +0200 <merijn> What is the remote side sending you, though?
2020-10-16 11:54:50 +0200Kaeipi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-10-16 11:55:00 +0200 <Guest6760> opening a connection client side with the command : echo "hello" | nc 127.0.0.1 3000
2020-10-16 11:55:16 +0200 <Guest6760> then typing text in the opened process
2020-10-16 11:55:20 +0200Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection)
2020-10-16 11:55:22 +0200 <merijn> eh
2020-10-16 11:55:28 +0200 <merijn> That's not going to work
2020-10-16 11:55:39 +0200 <merijn> stdin is going to point to echo, not to nc
2020-10-16 11:55:48 +0200 <merijn> and echo won't read anything from stdin
2020-10-16 11:56:00 +0200 <Guest6760> AH
2020-10-16 11:56:16 +0200bahamas(~lucian@unaffiliated/bahamas) (Ping timeout: 256 seconds)
2020-10-16 11:56:34 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 11:57:51 +0200 <Guest6760> AAAAAAAAAH, without echo it work perfectly
2020-10-16 11:58:15 +0200 <Guest6760> i spent a whole day of this i feel ashamed.
2020-10-16 11:58:20 +0200 <Guest6760> on
2020-10-16 12:00:26 +0200 <Guest6760> thank u merijn, apologize since it was not haskell related at all
2020-10-16 12:00:55 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
2020-10-16 12:01:16 +0200knupfer(~Thunderbi@200116b82cf69500a8fc9dfffe346029.dip.versatel-1u1.de)
2020-10-16 12:01:17 +0200knupfer(~Thunderbi@200116b82cf69500a8fc9dfffe346029.dip.versatel-1u1.de) (Client Quit)
2020-10-16 12:01:32 +0200knupfer(~Thunderbi@i5E86B451.versanet.de)
2020-10-16 12:06:00 +0200geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2020-10-16 12:07:07 +0200snakemas1(~snakemast@213.100.206.23)
2020-10-16 12:11:25 +0200snakemas1(~snakemast@213.100.206.23) (Ping timeout: 240 seconds)
2020-10-16 12:12:55 +0200xerox_(~xerox@unaffiliated/xerox) (Ping timeout: 265 seconds)
2020-10-16 12:13:52 +0200Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas)
2020-10-16 12:14:03 +0200bliminse(~bliminse@host217-42-95-37.range217-42.btcentralplus.com) (Ping timeout: 256 seconds)
2020-10-16 12:14:53 +0200bliminse(~bliminse@host217-42-95-37.range217-42.btcentralplus.com)
2020-10-16 12:16:57 +0200cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone)
2020-10-16 12:17:02 +0200yeeeefe(~Username@95.7.254.155.in-addr.arpa)
2020-10-16 12:17:19 +0200jedws(~jedws@121.209.161.98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 12:17:39 +0200yeeeefe(~Username@95.7.254.155.in-addr.arpa) (Client Quit)
2020-10-16 12:19:18 +0200raehik(~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net)
2020-10-16 12:19:36 +0200GyroW(~GyroW@unaffiliated/gyrow) (Ping timeout: 272 seconds)
2020-10-16 12:19:36 +0200invaser(~Thunderbi@31.148.23.125) (Ping timeout: 272 seconds)
2020-10-16 12:19:44 +0200GyroW_(~GyroW@d54C03E98.access.telenet.be)
2020-10-16 12:19:44 +0200GyroW_(~GyroW@d54C03E98.access.telenet.be) (Changing host)
2020-10-16 12:19:44 +0200GyroW_(~GyroW@unaffiliated/gyrow)
2020-10-16 12:20:01 +0200rprije(~rprije@203-219-208-42.static.tpgi.com.au) (Ping timeout: 264 seconds)
2020-10-16 12:20:21 +0200 <tomsmeding> Guest6760: { echo "hello"; cat; } | nc 127.0.0.1 3000
2020-10-16 12:20:45 +0200 <tomsmeding> assuming you're using bash or something similar
2020-10-16 12:24:06 +0200da39a3ee5e6b4b0d(~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 12:24:08 +0200invaser(~Thunderbi@31.148.23.125)
2020-10-16 12:24:26 +0200cosimone(~cosimone@2001:b07:ae5:db26:9217:95c7:973d:d0ad)
2020-10-16 12:27:29 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 12:27:58 +0200vilpan(~0@mail.elitnet.lt)
2020-10-16 12:28:09 +0200 <dminuoso> What's the right way to gracefully shut down a warp server running in some thread?
2020-10-16 12:28:18 +0200oisdk(~oisdk@2001:bb6:3329:d100:11d5:8dc1:169a:e187)
2020-10-16 12:28:20 +0200 <dminuoso> Is there a particular async exception to throw?
2020-10-16 12:29:42 +0200cosimone(~cosimone@2001:b07:ae5:db26:9217:95c7:973d:d0ad) (Ping timeout: 260 seconds)
2020-10-16 12:30:39 +0200 <phadej> KillThread?
2020-10-16 12:31:05 +0200 <phadej> or ratheer https://hackage.haskell.org/package/base-4.14.0.0/docs/Control-Concurrent.html#v:killThread
2020-10-16 12:31:37 +0200avdb(~avdb@ip-83-134-109-138.dsl.scarlet.be) (Ping timeout: 246 seconds)
2020-10-16 12:31:58 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-10-16 12:32:00 +0200sQVe(~sQVe@unaffiliated/sqve)
2020-10-16 12:32:02 +0200chaosmasttter(~chaosmast@p200300c4a710fa01b4d1efe2d5e04ce9.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-16 12:36:28 +0200jonathanx(~jonathan@185.224.57.161)
2020-10-16 12:40:04 +0200lukelau(~lukelau@2a03:b0c0:1:d0::1bc:b001) (Quit: Bye)
2020-10-16 12:40:15 +0200lukelau_(~lukelau@46.101.13.214)
2020-10-16 12:40:23 +0200alp(~alp@2a01:e0a:58b:4920:e911:6d8c:d3c2:ba84) (Ping timeout: 272 seconds)
2020-10-16 12:42:09 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1) (Quit: karanlikmadde)
2020-10-16 12:42:45 +0200djellemah(~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54)
2020-10-16 12:43:29 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 12:44:10 +0200alp(~alp@2a01:e0a:58b:4920:5d8e:fcca:f937:63bd)
2020-10-16 12:44:46 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz)
2020-10-16 12:45:36 +0200xerox_(~xerox@unaffiliated/xerox)
2020-10-16 12:45:50 +0200ensyde(~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7)
2020-10-16 12:46:14 +0200snakemas1(~snakemast@213.100.206.23)
2020-10-16 12:47:11 +0200sleblanc(~sleblanc@unaffiliated/sebleblanc)
2020-10-16 12:47:53 +0200GyroW(~GyroW@d54C03E98.access.telenet.be)
2020-10-16 12:47:53 +0200GyroW(~GyroW@d54C03E98.access.telenet.be) (Changing host)
2020-10-16 12:47:53 +0200GyroW(~GyroW@unaffiliated/gyrow)
2020-10-16 12:48:04 +0200GyroW_(~GyroW@unaffiliated/gyrow) (Ping timeout: 258 seconds)
2020-10-16 12:48:23 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2020-10-16 12:48:45 +0200olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds)
2020-10-16 12:49:57 +0200ensyde(~ensyde@2600:1702:2e30:1a40:48f9:cdc3:db29:25b7) (Ping timeout: 244 seconds)
2020-10-16 12:49:59 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 258 seconds)
2020-10-16 12:50:58 +0200hackageradius 0.7.1.0 - Remote Authentication Dial In User Service (RADIUS) https://hackage.haskell.org/package/radius-0.7.1.0 (erick)
2020-10-16 12:51:48 +0200snakemas1(~snakemast@213.100.206.23) (Ping timeout: 256 seconds)
2020-10-16 12:51:56 +0200dddddd(~dddddd@unaffiliated/dddddd)
2020-10-16 12:56:33 +0200raichoo(~raichoo@213.240.178.58) (Quit: Lost terminal)
2020-10-16 12:57:19 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1)
2020-10-16 12:59:06 +0200sQVe(~sQVe@unaffiliated/sqve) (Quit: Bye!)
2020-10-16 12:59:17 +0200dhil(~dhil@195.213.192.122)
2020-10-16 12:59:39 +0200Lycurgus(~niemand@98.4.96.235)
2020-10-16 13:03:47 +0200outerpassage(~outerpass@li1196-30.members.linode.com)
2020-10-16 13:04:05 +0200sleblanc(~sleblanc@unaffiliated/sebleblanc) ("Leaving")
2020-10-16 13:05:28 +0200hackageaeson-commit 1.2 - Parse Aeson data with commitment https://hackage.haskell.org/package/aeson-commit-1.2 (jonascarpay)
2020-10-16 13:05:57 +0200cosimone(~cosimone@2001:b07:ae5:db26:9217:95c7:973d:d0ad)
2020-10-16 13:07:21 +0200plutoniix(~q@175.176.222.7) (Quit: Leaving)
2020-10-16 13:11:14 +0200da39a3ee5e6b4b0d(~textual@n11211935170.netvigator.com)
2020-10-16 13:14:39 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 13:19:34 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-10-16 13:20:20 +0200son0p(~son0p@181.58.39.86)
2020-10-16 13:20:25 +0200snakemas1(~snakemast@213.100.206.23)
2020-10-16 13:21:35 +0200thir(~thir@p200300f27f02580078db57e7930eddd6.dip0.t-ipconnect.de)
2020-10-16 13:25:09 +0200machined1od(~machinedg@24.105.81.50)
2020-10-16 13:25:28 +0200snakemas1(~snakemast@213.100.206.23) (Ping timeout: 272 seconds)
2020-10-16 13:25:58 +0200m0rphism(~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de)
2020-10-16 13:26:27 +0200thir(~thir@p200300f27f02580078db57e7930eddd6.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-10-16 13:32:16 +0200polyrain(~polyrain@130.102.13.188) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 13:34:44 +0200 <dminuoso> phadej: Mmm, is that the most graceful thing to do?
2020-10-16 13:34:55 +0200 <dminuoso> That might kill handlers right in the middle of it, wouldn't it?
2020-10-16 13:34:55 +0200 <phadej> dminuoso: yes
2020-10-16 13:35:03 +0200 <phadej> to graceful
2020-10-16 13:35:23 +0200 <phadej> to handlers, I think they will run to completion, as they are in separate threads
2020-10-16 13:35:31 +0200 <phadej> I don't think warp links them
2020-10-16 13:36:07 +0200alp(~alp@2a01:e0a:58b:4920:5d8e:fcca:f937:63bd) (Ping timeout: 272 seconds)
2020-10-16 13:37:49 +0200alp(~alp@2a01:e0a:58b:4920:117b:f16b:d9b4:551d)
2020-10-16 13:41:02 +0200 <phadej> the docs imply that with runSettingsSocket you can control graceful shutdown of live (keep-alive)connections. You should read the code on what happens if exception is thrown to the warp's main thread
2020-10-16 13:43:14 +0200raichoo(~raichoo@213.240.178.58)
2020-10-16 13:43:26 +0200zerstroyer[m](zerstroyer@gateway/shell/matrix.org/x-odscjndwbucnjdke)
2020-10-16 13:43:59 +0200cosimone(~cosimone@2001:b07:ae5:db26:9217:95c7:973d:d0ad) (Quit: cosimone)
2020-10-16 13:44:12 +0200 <Franciman> I see merijn thanks
2020-10-16 13:44:32 +0200cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-10-16 13:46:39 +0200GyroW_(~GyroW@d54C03E98.access.telenet.be)
2020-10-16 13:46:39 +0200GyroW_(~GyroW@d54C03E98.access.telenet.be) (Changing host)
2020-10-16 13:46:39 +0200GyroW_(~GyroW@unaffiliated/gyrow)
2020-10-16 13:47:01 +0200GyroW(~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds)
2020-10-16 13:47:15 +0200raehik(~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net) (Quit: WeeChat 2.8)
2020-10-16 13:52:49 +0200alx741(~alx741@181.196.68.181) (Ping timeout: 246 seconds)
2020-10-16 13:53:27 +0200hackagepandoc-crossref 0.3.8.3 - Pandoc filter for cross-references https://hackage.haskell.org/package/pandoc-crossref-0.3.8.3 (lierdakil)
2020-10-16 13:56:23 +0200fendor(~fendor@046124068105.public.t-mobile.at)
2020-10-16 13:56:25 +0200shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-10-16 13:56:39 +0200shatriff(~vitaliish@176.52.219.10)
2020-10-16 14:00:02 +0200SysRun(~SysRun@s91904426.blix.com) ()
2020-10-16 14:01:32 +0200snakemas1(~snakemast@213.100.206.23)
2020-10-16 14:01:49 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 14:05:38 +0200alx741(~alx741@181.196.68.136)
2020-10-16 14:06:59 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
2020-10-16 14:09:52 +0200da39a3ee5e6b4b0d(~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 14:10:12 +0200cgfbee(~bot@oc1.itim-cj.ro) (Remote host closed the connection)
2020-10-16 14:11:08 +0200chaosmasttter(~chaosmast@p200300c4a710fa01b4d1efe2d5e04ce9.dip0.t-ipconnect.de)
2020-10-16 14:11:44 +0200funkatronixxx(~funkatron@a83-161-198-206.adsl.xs4all.nl) (Quit: Textual IRC Client: www.textualapp.com)
2020-10-16 14:14:09 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1) (Quit: karanlikmadde)
2020-10-16 14:15:51 +0200bahamas(~lucian@unaffiliated/bahamas)
2020-10-16 14:15:53 +0200gienah(~mwright@gentoo/developer/gienah) (Ping timeout: 260 seconds)
2020-10-16 14:16:13 +0200gienah(~mwright@gentoo/developer/gienah)
2020-10-16 14:16:28 +0200hongminhee(~dahlia@207.148.91.209) (Ping timeout: 260 seconds)
2020-10-16 14:16:28 +0200kini(~kini@unaffiliated/kini) (Ping timeout: 260 seconds)
2020-10-16 14:16:35 +0200 <gentauro> is there anybody that would like to talk about some work/hobby project in about two weeks for MF#K? https://www.meetup.com/MoedegruppeFunktionelleKoebenhavnere/events/rqbcdlybcnbkc/
2020-10-16 14:16:37 +0200hongminhee(~dahlia@207.148.91.209)
2020-10-16 14:16:48 +0200 <gentauro> it would be an online event ofc
2020-10-16 14:16:56 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1)
2020-10-16 14:17:15 +0200 <gentauro> here are some slides about MF#K :) http://blog.stermon.com/assets/talks/2019-12-13_Siteimprove-Community-Day.pdf
2020-10-16 14:20:11 +0200 <dminuoso> phadej: Mmm, indeed. that seems to be it. Im mapping out the source code at the moment, but it seems as if settingsInstallShutdownHandler does the trick.
2020-10-16 14:20:36 +0200Stanley00(~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
2020-10-16 14:20:58 +0200 <dminuoso> At any rate, warp sets FileCloseOnExec - presumably throwing an async exception should be fine. Ill dig further whether warp links threads or not
2020-10-16 14:21:15 +0200 <[exa]> gentauro: probably depends on how advanced stuff you'd want there
2020-10-16 14:21:46 +0200shortdudey1231(~shortdude@185.204.1.185)
2020-10-16 14:22:43 +0200revprez_anzio(~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Quit: Lost terminal)
2020-10-16 14:22:52 +0200 <gentauro> [exa]: depending on the topic, the crowd will match ;) I think Oskar Wickström had a 2-3 hour Q&A :)
2020-10-16 14:23:01 +0200 <gentauro> and Marlow had 1 hour ;)
2020-10-16 14:23:24 +0200 <gentauro> Marlow said "please stawp" xD
2020-10-16 14:24:05 +0200 <[exa]> ok I guess I'm not that advanced in FP :]
2020-10-16 14:24:34 +0200geekosaur(82659a0e@host154-014.vpn.uakron.edu)
2020-10-16 14:24:42 +0200cgfbee(~bot@oc1.itim-cj.ro)
2020-10-16 14:24:43 +0200 <gentauro> [exa]: that said, we also had less advanced talks ;)
2020-10-16 14:24:58 +0200kini(~kini@unaffiliated/kini)
2020-10-16 14:25:43 +0200 <gentauro> for the Agda talks, we have very few participants, for the more "normal" ones, the amount in participants increase
2020-10-16 14:26:06 +0200 <gentauro> and if you can relate the FP topic with daily work, you will get a full house ;)
2020-10-16 14:26:28 +0200justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-10-16 14:26:33 +0200Guest6760(a4b11321@static-csq-cds-019033.business.bouyguestelecom.com) (Remote host closed the connection)
2020-10-16 14:28:05 +0200invaser(~Thunderbi@31.148.23.125) (Ping timeout: 260 seconds)
2020-10-16 14:29:01 +0200carlomagno1(~cararell@inet-hqmc02-o.oracle.com)
2020-10-16 14:29:41 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1) (Quit: karanlikmadde)
2020-10-16 14:30:26 +0200son0p(~son0p@181.58.39.86) (Quit: leaving)
2020-10-16 14:32:00 +0200oisdk(~oisdk@2001:bb6:3329:d100:11d5:8dc1:169a:e187) (Quit: oisdk)
2020-10-16 14:32:01 +0200carlomagno(~cararell@inet-hqmc02-o.oracle.com) (Ping timeout: 246 seconds)
2020-10-16 14:33:10 +0200acidjnk_new2(~acidjnk@p200300d0c723787058597087ca157dd5.dip0.t-ipconnect.de)
2020-10-16 14:33:15 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 14:37:37 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
2020-10-16 14:38:52 +0200GyroW(~GyroW@d54C03E98.access.telenet.be)
2020-10-16 14:38:52 +0200GyroW(~GyroW@d54C03E98.access.telenet.be) (Changing host)
2020-10-16 14:38:52 +0200GyroW(~GyroW@unaffiliated/gyrow)
2020-10-16 14:40:02 +0200GyroW_(~GyroW@unaffiliated/gyrow) (Ping timeout: 256 seconds)
2020-10-16 14:45:38 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz)
2020-10-16 14:46:39 +0200Sanchayan(~Sanchayan@171.61.90.104) (Quit: leaving)
2020-10-16 14:49:18 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 14:50:25 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 240 seconds)
2020-10-16 14:50:37 +0200 <[exa]> gentauro: well right, not very sure about that :D I'll think that through
2020-10-16 14:50:40 +0200whatisRT(~whatisRT@2002:5b41:6a33:0:e9bc:8751:d550:a446)
2020-10-16 14:50:58 +0200hackageelynx-markov 0.4.1 - Simulate molecular sequences along trees https://hackage.haskell.org/package/elynx-markov-0.4.1 (dschrempf)
2020-10-16 14:51:57 +0200hackageelynx 0.4.1, tlynx 0.4.1, slynx 0.4.1, elynx-tree 0.4.1, elynx-tools 0.4.1, elynx-seq 0.4.1, elynx-nexus 0.4.1 (dschrempf)
2020-10-16 14:53:51 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-10-16 14:56:12 +0200 <gentauro> [exa]: please do and we will be happy to host your talk :)
2020-10-16 14:57:03 +0200p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-10-16 15:00:14 +0200drbean(~drbean@TC210-63-209-44.static.apol.com.tw)
2020-10-16 15:02:22 +0200jedws(~jedws@121.209.161.98)
2020-10-16 15:02:27 +0200stefan-__(~cri@42dots.de)
2020-10-16 15:03:25 +0200ubert(~Thunderbi@p200300ecdf10db93e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-10-16 15:04:10 +0200urodna(~urodna@unaffiliated/urodna)
2020-10-16 15:05:04 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 15:06:54 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser) (Quit: WeeChat 2.7.1)
2020-10-16 15:09:33 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2020-10-16 15:09:49 +0200geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
2020-10-16 15:12:18 +0200stefan-__stefan-_
2020-10-16 15:12:51 +0200hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-10-16 15:14:15 +0200vilpan(~0@mail.elitnet.lt) (Ping timeout: 256 seconds)
2020-10-16 15:14:17 +0200nbloomf(~nbloomf@2600:1700:83e0:1f40:21a4:edc3:68a:18f4)
2020-10-16 15:15:29 +0200cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-10-16 15:15:35 +0200ubert(~Thunderbi@p200300ecdf10db93e6b318fffe838f33.dip0.t-ipconnect.de)
2020-10-16 15:16:02 +0200dhil(~dhil@195.213.192.122) (Ping timeout: 258 seconds)
2020-10-16 15:16:45 +0200jonathanx(~jonathan@185.224.57.161) (Ping timeout: 240 seconds)
2020-10-16 15:16:54 +0200GyroW_(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-16 15:16:54 +0200GyroW_(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-16 15:16:54 +0200GyroW_(~GyroW@unaffiliated/gyrow)
2020-10-16 15:17:04 +0200polyrain(~polyrain@2001:8003:e501:6901:38e4:6ee5:bca4:d4a)
2020-10-16 15:17:08 +0200GyroW(~GyroW@unaffiliated/gyrow) (Ping timeout: 260 seconds)
2020-10-16 15:17:24 +0200nek0(~nek0@mail.nek0.eu) (Remote host closed the connection)
2020-10-16 15:17:27 +0200AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl)
2020-10-16 15:18:00 +0200nek0(~nek0@mail.nek0.eu)
2020-10-16 15:20:49 +0200invaser(~Thunderbi@31.148.23.125)
2020-10-16 15:21:31 +0200chris(~chris@81.96.113.213)
2020-10-16 15:21:54 +0200chrisGuest55918
2020-10-16 15:22:00 +0200nbloomf(~nbloomf@2600:1700:83e0:1f40:21a4:edc3:68a:18f4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 15:22:32 +0200thir(~thir@p200300f27f025800a12cbcb87939dcdb.dip0.t-ipconnect.de)
2020-10-16 15:24:31 +0200Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
2020-10-16 15:24:34 +0200nek0(~nek0@mail.nek0.eu) (Remote host closed the connection)
2020-10-16 15:24:40 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-10-16 15:26:49 +0200nbloomf(~nbloomf@2600:1700:83e0:1f40:1998:2d6c:5e41:4ff5)
2020-10-16 15:26:52 +0200GyroW_(~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
2020-10-16 15:27:01 +0200thir(~thir@p200300f27f025800a12cbcb87939dcdb.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-10-16 15:27:09 +0200geekosaur(82659a0e@host154-014.vpn.uakron.edu) (Ping timeout: 245 seconds)
2020-10-16 15:27:10 +0200GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-16 15:27:10 +0200GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-16 15:27:10 +0200GyroW(~GyroW@unaffiliated/gyrow)
2020-10-16 15:27:30 +0200ystael(~ystael@209.6.50.55)
2020-10-16 15:28:59 +0200dhil(~dhil@78.156.97.38)
2020-10-16 15:29:57 +0200da39a3ee5e6b4b0d(~textual@n11211935170.netvigator.com)
2020-10-16 15:30:09 +0200xerox_(~xerox@unaffiliated/xerox) (Ping timeout: 260 seconds)
2020-10-16 15:31:30 +0200Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
2020-10-16 15:31:58 +0200hackagemcmc 0.2.4 - Sample from a posterior using Markov chain Monte Carlo https://hackage.haskell.org/package/mcmc-0.2.4 (dschrempf)
2020-10-16 15:31:59 +0200nyd(~lpy@unaffiliated/elysian)
2020-10-16 15:32:50 +0200polyrain_(~polyrain@58.161.83.164)
2020-10-16 15:33:08 +0200jedws(~jedws@121.209.161.98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 15:34:03 +0200Benzi-Junior(~BenziJuni@88-149-67-198.du.xdsl.is) (Ping timeout: 258 seconds)
2020-10-16 15:34:06 +0200kindaro(1f08d425@h31-8-212-37.dyn.bashtel.ru)
2020-10-16 15:34:20 +0200 <kindaro> How can I encode my type to a `ByteString` with custom Aeson options?
2020-10-16 15:34:23 +0200mirrorbird(~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1)
2020-10-16 15:34:41 +0200 <kindaro> The default `encode` does not accept options.
2020-10-16 15:35:33 +0200 <kindaro> My type is Generic, so I can use `genericToJSON` to obtain `Value`, however I cannot find a way to convert `Value` to the serial representation.
2020-10-16 15:35:45 +0200DavidEichmann(~david@43.240.198.146.dyn.plus.net) (Remote host closed the connection)
2020-10-16 15:35:55 +0200polyrain(~polyrain@2001:8003:e501:6901:38e4:6ee5:bca4:d4a) (Ping timeout: 240 seconds)
2020-10-16 15:36:09 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 15:36:28 +0200 <kindaro> I read the docs with all eyes I have but I could not find an appropriate function.
2020-10-16 15:37:09 +0200geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-10-16 15:37:18 +0200nados(~dan@107-190-41-58.cpe.teksavvy.com)
2020-10-16 15:37:29 +0200invaser(~Thunderbi@31.148.23.125) (Quit: invaser)
2020-10-16 15:40:57 +0200 <lortabac> kindaro: one way to do it is to define a ToJSON instance: toJSON = genericToJSON options
2020-10-16 15:40:59 +0200Benzi-Junior(~BenziJuni@88-149-67-198.du.xdsl.is)
2020-10-16 15:41:03 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds)
2020-10-16 15:41:41 +0200 <kindaro> So then a type can only be encoded one way, I see.
2020-10-16 15:43:42 +0200 <lortabac> if you don't want to rely on the type classes, you can find a way to produce a Value and then just 'encode' the Value
2020-10-16 15:44:01 +0200 <lortabac> Value has a ToJSON instance
2020-10-16 15:45:28 +0200hackagepusher-http-haskell 2.0.0.2 - Haskell client library for the Pusher Channels HTTP API https://hackage.haskell.org/package/pusher-http-haskell-2.0.0.2 (willsewell)
2020-10-16 15:46:27 +0200 <kindaro> Oh, I did not realize this. Thanks.
2020-10-16 15:46:44 +0200 <lortabac> unless you need to customize the Value -> ByteString part
2020-10-16 15:47:20 +0200drbean(~drbean@TC210-63-209-44.static.apol.com.tw) (Ping timeout: 272 seconds)
2020-10-16 15:47:21 +0200 <merijn> At that point you need to question your life choices, tbh
2020-10-16 15:47:31 +0200 <kindaro> `encode ∘ genericToJSON options` is what I need.
2020-10-16 15:47:38 +0200Guest55918(~chris@81.96.113.213) (Remote host closed the connection)
2020-10-16 15:47:45 +0200 <kindaro> Life choices?
2020-10-16 15:48:08 +0200 <merijn> If you need to customize the "Value -> ByteString" part as lortabac commented
2020-10-16 15:48:38 +0200 <kindaro> Ah. Well, in my case I do not.
2020-10-16 15:48:38 +0200jespada(~jespada@90.254.245.15) (Ping timeout: 260 seconds)
2020-10-16 15:49:00 +0200kindaro(1f08d425@h31-8-212-37.dyn.bashtel.ru) (Remote host closed the connection)
2020-10-16 15:49:04 +0200 <lortabac> I said that because I was not sure I understood your question correctly
2020-10-16 15:49:20 +0200 <lortabac> I was not encouraging to do that :)
2020-10-16 15:49:56 +0200jespada(~jespada@90.254.245.15)
2020-10-16 15:51:31 +0200 <phadej> genericToEncoding might be more direct way
2020-10-16 15:51:43 +0200 <phadej> refer to the documentation how to convert Encoding to (lazy) ByteString
2020-10-16 15:52:14 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 15:52:16 +0200irc_user(uid423822@gateway/web/irccloud.com/x-juqawwjwttxnnpia)
2020-10-16 15:52:18 +0200Kaivo(~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com) (Quit: WeeChat 2.9)
2020-10-16 15:54:31 +0200whatisRT(~whatisRT@2002:5b41:6a33:0:e9bc:8751:d550:a446) (Read error: Connection reset by peer)
2020-10-16 15:54:36 +0200Kaivo(~Kaivo@104-200-86-99.mc.derytele.com)
2020-10-16 15:56:36 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-10-16 15:57:21 +0200alp(~alp@2a01:e0a:58b:4920:117b:f16b:d9b4:551d) (Ping timeout: 272 seconds)
2020-10-16 15:58:15 +0200Lycurgus(~niemand@98.4.96.235) (Quit: Exeunt)
2020-10-16 15:58:45 +0200cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-10-16 16:00:16 +0200ubert(~Thunderbi@p200300ecdf10db93e6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-10-16 16:01:46 +0200GyroW(~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
2020-10-16 16:02:04 +0200GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-16 16:02:05 +0200GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-16 16:02:05 +0200GyroW(~GyroW@unaffiliated/gyrow)
2020-10-16 16:02:14 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1)
2020-10-16 16:02:16 +0200dcoutts_(~duncan@33.14.75.194.dyn.plus.net) (Ping timeout: 256 seconds)
2020-10-16 16:03:09 +0200chris(~chris@81.96.113.213)
2020-10-16 16:03:20 +0200Tario(~Tario@201.192.165.173) (Ping timeout: 256 seconds)
2020-10-16 16:03:34 +0200chrisGuest17130
2020-10-16 16:06:17 +0200Sgeo(~Sgeo@ool-18b982ad.dyn.optonline.net)
2020-10-16 16:07:05 +0200polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2020-10-16 16:07:34 +0200Guest17130(~chris@81.96.113.213) (Ping timeout: 260 seconds)
2020-10-16 16:09:09 +0200fendor(~fendor@046124068105.public.t-mobile.at) (Remote host closed the connection)
2020-10-16 16:09:37 +0200 <hyperisco> > (\if then 1 else 0) True
2020-10-16 16:09:37 +0200fendor(~fendor@046124068105.public.t-mobile.at)
2020-10-16 16:09:39 +0200 <lambdabot> <hint>:1:6: error: <hint>:1:6: error: parse error on input ‘then’
2020-10-16 16:10:08 +0200 <phadej> :t bool 0 1
2020-10-16 16:10:10 +0200 <lambdabot> Num a => Bool -> a
2020-10-16 16:10:20 +0200 <phadej> bool 0 1 False
2020-10-16 16:10:26 +0200 <phadej> > bool 0 1 False
2020-10-16 16:10:29 +0200 <lambdabot> 0
2020-10-16 16:10:40 +0200 <Uniaika> phadej: I feel you
2020-10-16 16:11:12 +0200Tario(~Tario@201.192.165.173)
2020-10-16 16:11:47 +0200GyroW(~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
2020-10-16 16:11:57 +0200GyroW(~GyroW@d54C03E98.access.telenet.be)
2020-10-16 16:11:57 +0200GyroW(~GyroW@d54C03E98.access.telenet.be) (Changing host)
2020-10-16 16:11:57 +0200GyroW(~GyroW@unaffiliated/gyrow)
2020-10-16 16:12:19 +0200conal(~conal@64.71.133.70)
2020-10-16 16:12:49 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1) (Quit: karanlikmadde)
2020-10-16 16:14:33 +0200 <hyperisco> > flip map [1,2,3] \x -> x + 1
2020-10-16 16:14:35 +0200 <lambdabot> error:
2020-10-16 16:14:35 +0200 <lambdabot> Unexpected lambda expression in function application:
2020-10-16 16:14:35 +0200 <lambdabot> \ x -> x + 1
2020-10-16 16:14:44 +0200 <hyperisco> is that extension in GHC yet and what is it called?
2020-10-16 16:16:10 +0200bitmapper(uid464869@gateway/web/irccloud.com/x-dkvrjjnwvljgfxqg) (Quit: Connection closed for inactivity)
2020-10-16 16:16:26 +0200kuribas(~user@ptr-25vy0i94ezsnlaecbal.18120a2.ip6.access.telenet.be)
2020-10-16 16:16:57 +0200 <ski> % (`map` [1,2,3]) \x -> x + 1
2020-10-16 16:16:58 +0200 <yahb> ski: ; <interactive>:58:17: error:; Unexpected lambda expression in function application:; \ x -> x + 1; You could write it with parentheses; Or perhaps you meant to enable BlockArguments?
2020-10-16 16:17:09 +0200 <kuribas> I wonder what the added value of recursion schemes is. They are fun to learn, but I feel they ultimately don't solve a real problem.
2020-10-16 16:17:15 +0200 <ski> % :set -XBlockArguments
2020-10-16 16:17:15 +0200 <yahb> ski:
2020-10-16 16:17:17 +0200 <ski> % (`map` [1,2,3]) \x -> x + 1
2020-10-16 16:17:18 +0200 <yahb> ski: [2,3,4]
2020-10-16 16:17:26 +0200 <dolio> kuribas: Yep.
2020-10-16 16:17:27 +0200 <kuribas> you get slightly less verbose code...
2020-10-16 16:18:01 +0200 <hyperisco> am I looking in the wrong place? not documented https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html
2020-10-16 16:18:01 +0200 <dolio> The value is that endless papers can be written about them.
2020-10-16 16:18:28 +0200 <ski> <https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#extension-BlockA…> ?
2020-10-16 16:18:33 +0200plast1k_(~plast1k_@196.207.181.246)
2020-10-16 16:18:55 +0200 <kuribas> dolio: indeed
2020-10-16 16:18:57 +0200 <hyperisco> apparently I kept typing "black" instead of "block"
2020-10-16 16:20:19 +0200 <kuribas> maybe they could better prove termination in a total language?
2020-10-16 16:20:38 +0200 <dolio> I've never seen anyone use them in a total language.
2020-10-16 16:20:58 +0200 <dolio> Also, some of them are not total.
2020-10-16 16:21:33 +0200 <kuribas> anamorphism...
2020-10-16 16:21:52 +0200 <merijn> I tried learning recursion schemes once
2020-10-16 16:21:52 +0200unlink2(~unlink2@p200300ebcf17c500f1cd4c5efbdddd1e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-16 16:21:53 +0200 <phadej> anamorphims is corecursion, not recursion
2020-10-16 16:21:57 +0200 <merijn> Decided it wasn't worth it
2020-10-16 16:22:06 +0200 <hyperisco> we've all used foldr … the problem is that we have not learned enough as a community
2020-10-16 16:22:07 +0200 <merijn> So hard to see what's going
2020-10-16 16:22:14 +0200 <dolio> hylo is non-total.
2020-10-16 16:22:30 +0200 <merijn> "oh, but by not reimplementing the recursion each time you avoid screwing it up"
2020-10-16 16:22:42 +0200 <merijn> Which, in the grand scheme of things seems like a non-issue
2020-10-16 16:22:58 +0200 <hyperisco> I'd say it is the wrong perspective
2020-10-16 16:23:00 +0200 <merijn> I can't recall the last time I messed up implementing some recursive function
2020-10-16 16:23:11 +0200 <kuribas> merijn: I find I can still screw up with cata :)
2020-10-16 16:23:19 +0200 <hyperisco> the point should be removing the need to think about recursion, that is what it removes
2020-10-16 16:23:23 +0200 <merijn> I spend more time trying to figure out recursion schemes then I ever spend debugging recursion
2020-10-16 16:23:42 +0200 <merijn> hyperisco: But thinking about recursion is an order of magnitude easier than thinking about recursion schemes
2020-10-16 16:23:51 +0200GyroW_(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-16 16:23:51 +0200GyroW_(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-16 16:23:51 +0200GyroW_(~GyroW@unaffiliated/gyrow)
2020-10-16 16:23:56 +0200 <hyperisco> maybe, or maybe it is just an education problem
2020-10-16 16:24:12 +0200ephemera_(~E@122.34.1.187)
2020-10-16 16:24:25 +0200 <hyperisco> and probably, before that, a lack of many people having experience
2020-10-16 16:24:32 +0200GyroW(~GyroW@unaffiliated/gyrow) (Ping timeout: 256 seconds)
2020-10-16 16:24:37 +0200 <phadej> merijn: learning a bit about recursion schemes might make you think about ordinary recursive functions in more principled way
2020-10-16 16:24:43 +0200 <merijn> Seems like a big coincidence that the 10+ blogposts by different authors, 3 papers and the docs of recursion schemes are all inscrutable, even for the ones I know
2020-10-16 16:24:53 +0200 <phadej> merijn: not much different than learning a bit of Haskell might make you better Python programmer
2020-10-16 16:24:56 +0200 <merijn> phadej: Sure, but so far the ROI seems slim to non-existent
2020-10-16 16:25:09 +0200 <phadej> merijn: maybe
2020-10-16 16:25:48 +0200 <hyperisco> several arguments can be brought out that are hard to distinguish from, say, an OO programmer bemoaning the needless obscurity of FP
2020-10-16 16:26:35 +0200 <typetetris> Someone here using ghc8102 for his production software already?
2020-10-16 16:26:40 +0200 <merijn> I'll reconsider/reevaluate my opinion if/when someone shows me a tangible example that's improve
2020-10-16 16:26:47 +0200 <merijn> typetetris: Define production
2020-10-16 16:26:58 +0200 <hyperisco> I'd say all the same things about lens :P
2020-10-16 16:27:04 +0200 <merijn> hyperisco: I don't use lens either
2020-10-16 16:27:08 +0200 <typetetris> merijn: run software compiled with ghc8.10.2 to earn money.
2020-10-16 16:27:26 +0200 <dolio> Lens is way more useful than fancy recursion schemes.
2020-10-16 16:27:39 +0200 <merijn> dolio: Oh, I'm sold on the usefulness of lens
2020-10-16 16:27:48 +0200 <merijn> dolio: I just haven't done anything where it was worth bothering
2020-10-16 16:28:21 +0200 <merijn> I'm all about Luddite haskell :p
2020-10-16 16:28:33 +0200 <merijn> (he says, after enabling TypeFamilies and GADTs everywhere...)
2020-10-16 16:28:50 +0200 <kuribas> lens is great, but most stuff in lens is unnecessary IMHO
2020-10-16 16:29:02 +0200DavidEichmann(~david@43.240.198.146.dyn.plus.net)
2020-10-16 16:29:14 +0200 <phadej> merijn: UTerm in unification-fd is a very neat example of using recursion schemes ideas
2020-10-16 16:29:18 +0200 <hyperisco> I am finding that some things just serve an implementation, and that isn't really where the challenge is
2020-10-16 16:29:27 +0200hackagelucid-cdn 0.2.2.0 - Curated list of CDN imports for lucid. https://hackage.haskell.org/package/lucid-cdn-0.2.2.0 (locallycompact)
2020-10-16 16:29:37 +0200 <hyperisco> I feel like lens is that sort of thing… but I am pretty stupid about lens.
2020-10-16 16:29:37 +0200 <phadej> UTerm though being the same as Free
2020-10-16 16:29:56 +0200 <merijn> I'm still undecided about free too :p
2020-10-16 16:30:12 +0200 <phadej> it's used very differently though
2020-10-16 16:30:15 +0200 <phadej> UTerm is very data-like
2020-10-16 16:30:17 +0200 <merijn> I was trying to do a fancy AST with Free, ended with tons of boilerplate
2020-10-16 16:30:22 +0200 <phadej> Free is hardly ever presented as it
2020-10-16 16:30:46 +0200 <merijn> Talked to Ed about it and he told me he was just using a regular AST type instead of free for that reason
2020-10-16 16:30:48 +0200 <phadej> boilerplate is worth if you can have something "for free" (like unification)
2020-10-16 16:30:55 +0200djellemah(~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54) (Ping timeout: 240 seconds)
2020-10-16 16:31:02 +0200 <phadej> for abitrary `f`
2020-10-16 16:31:19 +0200 <phadej> but if you don't need (or cannot have) that kind of separation
2020-10-16 16:31:23 +0200 <merijn> phadej: Sure, but I feel some of these solutions get over-hyped and then drag beginners into abstraction tarpits :)
2020-10-16 16:31:45 +0200 <phadej> merijn: yes. I do think that all extensible-effects things are overhyped
2020-10-16 16:31:59 +0200 <hyperisco> I think incorporating a generalisation and only using it in special cases is often increasing burden without benefit
2020-10-16 16:32:01 +0200 <phadej> most people don't have the problems they solve
2020-10-16 16:32:23 +0200oxide(~lambda@unaffiliated/mclaren) (Ping timeout: 260 seconds)
2020-10-16 16:33:07 +0200 <lortabac> what problems do they solve?
2020-10-16 16:33:12 +0200ph88(~ph88@2a02:8109:9e40:2704:21a2:9414:d2e6:266d) (Quit: Leaving)
2020-10-16 16:33:27 +0200 <merijn> lortabac: Staying employed as PL researcher ;)
2020-10-16 16:33:30 +0200merijnducks
2020-10-16 16:33:31 +0200 <phadej> "separation of concerns"
2020-10-16 16:33:41 +0200 <hyperisco> getting Monad machinery from just a Functor is helpful when your total effort needs not be much more than obtaining Monad machinery
2020-10-16 16:34:17 +0200 <phadej> which in that case is decoupling syntax from semantics
2020-10-16 16:34:19 +0200 <hyperisco> if you then have to go on defining several more things, the benefit of Free becomes comparatively small and the burden multiplies over your remaining effort
2020-10-16 16:34:39 +0200 <phadej> (specifically having different semantics for the same syntax)
2020-10-16 16:34:49 +0200 <phadej> if these words don't mean anything to you, you don't have that problem ;)
2020-10-16 16:35:04 +0200 <lortabac> I think I don't have that problem :)
2020-10-16 16:35:06 +0200 <hyperisco> in other words, Free life seems to start with your Functor, then you start adding on more definitions, then you realise what Free is giving you isn't worth it
2020-10-16 16:35:29 +0200 <phadej> (here syntax is "program text", and semantics "what this text actually does, if executed")
2020-10-16 16:35:31 +0200 <dolio> It might just mean you don't recognize that you have the problem.
2020-10-16 16:36:14 +0200 <lortabac> dolio: possible
2020-10-16 16:36:28 +0200bitmapper(uid464869@gateway/web/irccloud.com/x-vecxpakzwaisvdlf)
2020-10-16 16:37:13 +0200 <hyperisco> the truly free Free would be an automatic derivation, something that adapts to your data definition rather than you having to adapt to Free
2020-10-16 16:37:17 +0200 <merijn> Meanwhile I just want checked exceptions in Haskell :(
2020-10-16 16:37:28 +0200 <merijn> Also, proper first class concurrency/threading
2020-10-16 16:37:40 +0200 <merijn> With resource domains
2020-10-16 16:37:44 +0200 <hyperisco> merijn, have you used checked exceptions in any other language?
2020-10-16 16:37:59 +0200 <merijn> hyperisco: Yes, but those are shit, because they're not inferred
2020-10-16 16:38:18 +0200nek0(~nek0@mail.nek0.eu)
2020-10-16 16:38:30 +0200 <hyperisco> personally I failed to find a compelling use
2020-10-16 16:38:41 +0200 <merijn> hyperisco: I want to be able to know "what *exact* set of exceptions can this throw?" and "this can never throw an exception"
2020-10-16 16:38:52 +0200chris(~chris@81.96.113.213)
2020-10-16 16:39:04 +0200 <merijn> None of this Haskell shit of "look at the docs and pray someone documented all exceptions (spoiler: they never do)"
2020-10-16 16:39:11 +0200 <dolio> So, an extensible effects system.
2020-10-16 16:39:14 +0200amosbird(~amosbird@23.98.37.89) (Quit: ZNC 1.7.5 - https://znc.in)
2020-10-16 16:39:15 +0200chrisGuest82554
2020-10-16 16:39:16 +0200 <hyperisco> I found some utility with file system operations, because you learn things about files through exceptions
2020-10-16 16:39:16 +0200 <merijn> dolio: No
2020-10-16 16:39:28 +0200 <merijn> dolio: I want it pure, because I think I've worked it out
2020-10-16 16:39:37 +0200 <merijn> dolio: Specifically I *don't* want it in the types
2020-10-16 16:39:40 +0200 <merijn> or rather
2020-10-16 16:39:44 +0200 <merijn> not in the types we have now
2020-10-16 16:39:51 +0200 <merijn> I want orthogonal types for exceptions
2020-10-16 16:40:26 +0200 <merijn> "(/) :: Int -> Int -> Maybe Int" (or whatever checked variant) is unacceptable
2020-10-16 16:40:35 +0200 <kuribas> hyperisco: I have in java, and it's still better than nothing.
2020-10-16 16:40:45 +0200 <xsperry> having used checked exceptions in java, I don't miss them
2020-10-16 16:40:47 +0200 <dolio> Maybe isn't an extensible effects system.
2020-10-16 16:40:55 +0200aqd(~aqd@ip-87-108-38-187.customer.academica.fi) (Quit: Textual IRC Client: www.textualapp.com)
2020-10-16 16:41:05 +0200 <merijn> I wanna determine that "(/) :: Int -> Int -> Int" can throw "division by zero" *without* any change to that type signature
2020-10-16 16:41:25 +0200 <xsperry> determine how? by getting a compile error if you don't catch that exception, every single tim eyou use /?
2020-10-16 16:41:27 +0200evanjs-(~evanjs@075-129-188-019.res.spectrum.com)
2020-10-16 16:41:31 +0200 <merijn> And I'm 95% certain it can be done
2020-10-16 16:41:37 +0200 <hyperisco> merijn, I would be more inclined to that idea
2020-10-16 16:41:57 +0200 <hyperisco> my issue is that different types of exceptions have scant uses, at least in my experience
2020-10-16 16:42:00 +0200 <merijn> xsperry: In java you need to annotate them in all intermediate functions, ain't nobody got time for that
2020-10-16 16:42:08 +0200ddellacosta(~dd@86.106.121.168)
2020-10-16 16:42:14 +0200 <hyperisco> in other words, having one type for all exceptions seems to cover almost every use
2020-10-16 16:42:14 +0200 <kuribas> merijn: I'd prefer a theorem prover, than proves the denominator is never 0 :)
2020-10-16 16:42:26 +0200evanjs(~evanjs@075-129-188-019.res.spectrum.com) (Ping timeout: 256 seconds)
2020-10-16 16:42:28 +0200 <merijn> kuribas: That's nice, but not always possible
2020-10-16 16:43:11 +0200 <lortabac> merijn: do you have some draft/prototype of your idea?
2020-10-16 16:43:11 +0200 <merijn> Maybe once my thesis is finally done I'll get around to revisiting my idea and make a prototype
2020-10-16 16:43:30 +0200 <merijn> lortabac: I started working on one, but it's on indefinite hold
2020-10-16 16:43:41 +0200 <hyperisco> merijn, even annotating just top level definitions I found was a chore
2020-10-16 16:43:54 +0200 <davean> kuribas: and we already have that :)
2020-10-16 16:44:00 +0200 <kuribas> merijn: then you can always do: if denom == 0 then exceptionCase else compute...
2020-10-16 16:44:04 +0200 <hyperisco> if you try and be fine-grained and have different exceptions for different sorts of problems, there is a systemic problem with it
2020-10-16 16:44:06 +0200 <kuribas> davean: liquid haskell?
2020-10-16 16:44:14 +0200 <merijn> kuribas: No, because that only works there
2020-10-16 16:44:19 +0200 <merijn> kuribas: It doesn't propagate
2020-10-16 16:44:25 +0200cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Ping timeout: 240 seconds)
2020-10-16 16:44:38 +0200xerox_(~xerox@unaffiliated/xerox)
2020-10-16 16:44:40 +0200 <merijn> kuribas: If I map a throwing exception over a list, I wanna track that without handling it right away
2020-10-16 16:44:54 +0200 <merijn> kuribas: Your solution is "just handle the case so you don't have an exception"
2020-10-16 16:44:58 +0200hackagesecp256k1-haskell 0.5.0 - Bindings for secp256k1 https://hackage.haskell.org/package/secp256k1-haskell-0.5.0 (jprupp)
2020-10-16 16:45:24 +0200 <hyperisco> I think the focus is maybe too much on "how" and not enough on the "what" and "why"
2020-10-16 16:45:37 +0200 <merijn> I want to have it transparently and be able to assert "this doesn't throw" (either due to not throwing or an underlying catch dealing with it)
2020-10-16 16:46:23 +0200ephemera_(~E@122.34.1.187) (Ping timeout: 260 seconds)
2020-10-16 16:46:23 +0200 <davean> kuribas: thats one of them
2020-10-16 16:46:30 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz)
2020-10-16 16:47:01 +0200evanjs-(~evanjs@075-129-188-019.res.spectrum.com) (Quit: ZNC 1.8.1 - https://znc.in)
2020-10-16 16:47:03 +0200ephemera_(~E@122.34.1.187)
2020-10-16 16:47:59 +0200 <hyperisco> what is the actual problem? if the problem is merely knowing if something throws or not, that doesn't require anything too fancy
2020-10-16 16:48:09 +0200 <hyperisco> it is just one bit of information
2020-10-16 16:48:22 +0200Sheilong(uid293653@gateway/web/irccloud.com/x-ukzmbdoxywbjiwys)
2020-10-16 16:48:48 +0200 <merijn> hyperisco: 1) that's harder than you think and 2) handling multiple possible errors isn't much harder
2020-10-16 16:49:28 +0200 <davean> hyperisco: Its somewhat uninteresting as every unmasked thing throws
2020-10-16 16:49:38 +0200 <hyperisco> 1) I didn't say how difficult it was 2) but what is the point
2020-10-16 16:49:41 +0200 <merijn> davean: Well, see my 2nd point
2020-10-16 16:49:45 +0200 <phadej> pure exceptions are hard in lazy language
2020-10-16 16:49:53 +0200 <merijn> davean: I want proper first class concurrency and resource domains too
2020-10-16 16:49:59 +0200 <phadej> you cannot have pure `try`
2020-10-16 16:49:59 +0200 <davean> yes, sure
2020-10-16 16:49:59 +0200 <merijn> phadej: I'm not convinced
2020-10-16 16:50:06 +0200Guest82554(~chris@81.96.113.213) (Remote host closed the connection)
2020-10-16 16:50:18 +0200evanjs(~evanjs@075-129-188-019.res.spectrum.com)
2020-10-16 16:50:25 +0200 <hyperisco> I am saying I've been around this block twice in two different ways over the past 3 years and both times it proved fruitless
2020-10-16 16:50:27 +0200 <merijn> phadej: I think you can! Now I just need to free up half a year to prove it :p
2020-10-16 16:50:32 +0200 <davean> phadej: there is an entire deterministic class of exceptions.
2020-10-16 16:50:34 +0200 <xsperry> merijn, how can you ensure that "this does not throw out of memory exception"?
2020-10-16 16:50:43 +0200 <davean> phadej: really we already *have* pure try
2020-10-16 16:50:46 +0200 <merijn> xsperry: Ok, that one is tricky
2020-10-16 16:51:01 +0200 <merijn> xsperry: Or really, not really interesting, since everything can throw that
2020-10-16 16:51:05 +0200 <xsperry> disk failure. or even not enoug hspace on disk
2020-10-16 16:51:15 +0200 <phadej> disk failure is not pure exception
2020-10-16 16:51:17 +0200 <phadej> it's IOError
2020-10-16 16:51:23 +0200 <davean> xsperry: those are the unmasked exception case
2020-10-16 16:51:28 +0200 <kuribas> merijn: something like "(/) :: Int -> Int -> Int throwing DivideByZeroException"?
2020-10-16 16:51:29 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 258 seconds)
2020-10-16 16:51:51 +0200 <merijn> kuribas: I like types, so I think we need more of them!
2020-10-16 16:52:00 +0200 <merijn> kuribas: You need finer grained in a lazy setting, tbh
2020-10-16 16:52:17 +0200 <kuribas> merijn: then what is the type of? map (/) numbers
2020-10-16 16:52:18 +0200bahamas(~lucian@unaffiliated/bahamas) (Quit: leaving)
2020-10-16 16:52:21 +0200 <phadej> davean: which is? do you mean deepseq, I don't think it's "pure try"
2020-10-16 16:52:22 +0200 <xsperry> phadej, what's a pure exception? you can't throw exceptions in non-IO code in haskell
2020-10-16 16:52:29 +0200 <phadej> xsperry: sure you can
2020-10-16 16:52:32 +0200 <phadej> :t throw
2020-10-16 16:52:32 +0200 <merijn> I want a type signature for exceptions (inferred) and resource domains, but without the usual nonsense of stuffing everything into the "functional" type
2020-10-16 16:52:34 +0200 <lambdabot> Exception e => e -> a
2020-10-16 16:52:44 +0200 <phadej> you shouldn't, but you can
2020-10-16 16:52:45 +0200 <phadej> and / throws
2020-10-16 16:52:49 +0200 <phadej> > 1 / 0 :: Int
2020-10-16 16:52:51 +0200 <lambdabot> error:
2020-10-16 16:52:51 +0200 <lambdabot> • No instance for (Fractional Int) arising from a use of ‘/’
2020-10-16 16:52:51 +0200 <lambdabot> • In the expression: 1 / 0 :: Int
2020-10-16 16:52:53 +0200Tops2(~Tobias@dyndsl-091-249-082-055.ewe-ip-backbone.de)
2020-10-16 16:52:55 +0200 <phadej> > 1 `div` 0 :: Int
2020-10-16 16:52:57 +0200 <lambdabot> *Exception: divide by zero
2020-10-16 16:53:01 +0200 <davean> phadej: no, All the exception monads that aren't transforms of IO/ST
2020-10-16 16:53:20 +0200 <merijn> davean: I don't consider those exceptions, tbh
2020-10-16 16:53:25 +0200 <merijn> (stuff like ExceptT)
2020-10-16 16:53:26 +0200 <dolio> You can throw IOErrors in pure code if you want in GHC.
2020-10-16 16:53:56 +0200ephemera_(~E@122.34.1.187) (Remote host closed the connection)
2020-10-16 16:54:02 +0200 <davean> dolio: I don't want, can I still do it?
2020-10-16 16:54:14 +0200 <dolio> You can.
2020-10-16 16:54:24 +0200 <davean> Damn
2020-10-16 16:54:24 +0200 <dolio> But if you don't want, you probably won't.
2020-10-16 16:54:39 +0200 <phadej> davean: these have overheads, mostyl acceptable, sometimes not
2020-10-16 16:54:43 +0200p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
2020-10-16 16:54:46 +0200 <phadej> and that sometimes is nasty :(
2020-10-16 16:55:06 +0200 <davean> phadej: They have overhead, sure, but they do catch pure exceptions effectively.
2020-10-16 16:55:15 +0200ephemera_(~E@122.34.1.187)
2020-10-16 16:55:34 +0200 <davean> Theres no reason we couldn't build a better version of them
2020-10-16 16:55:36 +0200 <phadej> davean: but they aren't vocabulary. If you want to catch division by zero, you need to rewrite about everything
2020-10-16 16:55:48 +0200 <davean> phadej: thats just a failing of Haskell currently.
2020-10-16 16:55:59 +0200 <davean> Because our sollutions are bad doesn't mean we can't have less shitty ones
2020-10-16 16:56:13 +0200 <davean> It is clearly a solvable problem
2020-10-16 16:56:16 +0200 <merijn> Like I said, I think it can be done
2020-10-16 16:56:26 +0200 <davean> We absolutely *know* it can be done
2020-10-16 16:56:30 +0200 <phadej> I don't think people would agree on Either someting a to be the result type of division
2020-10-16 16:56:32 +0200 <merijn> Probably not in a backwards compatible way with Haskell, which is a shame :\
2020-10-16 16:56:38 +0200 <merijn> phadej: Without that
2020-10-16 16:56:41 +0200 <phadej> it have to be convinienet enough to be used
2020-10-16 16:56:45 +0200 <phadej> (or first accepted)
2020-10-16 16:57:31 +0200 <hyperisco> mm how about use constraints
2020-10-16 16:57:33 +0200 <merijn> Actually, maybe it could be backward compatible enough...
2020-10-16 16:57:47 +0200 <davean> The question isn't if it can be done, its how much we like the best version we know how to make
2020-10-16 16:57:50 +0200 <hyperisco> (/) :: Exceptional => Int -> Int -> Int
2020-10-16 16:57:51 +0200 <merijn> You know what I also want that ties into this
2020-10-16 16:57:59 +0200 <hyperisco> or Partial
2020-10-16 16:58:08 +0200 <merijn> strictness polymorphic code
2020-10-16 16:58:25 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1)
2020-10-16 16:58:27 +0200 <davean> merijn: Thats sorta levity polymorphism ...
2020-10-16 16:58:33 +0200 <davean> (Which Haskell sucks at)
2020-10-16 16:58:36 +0200 <phadej> merijn: that sounds that you don't want Haskell anymore, but something else ;)
2020-10-16 16:58:37 +0200djellemah(~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54)
2020-10-16 16:58:42 +0200 <merijn> phadej: I do
2020-10-16 16:58:48 +0200 <hyperisco> catch :: (Partial => x) -> (Exception -> x) -> x
2020-10-16 16:58:49 +0200 <merijn> (want something else)
2020-10-16 16:58:57 +0200 <phadej> that's fair
2020-10-16 16:59:09 +0200 <merijn> But implementing a sufficiently well-performing alternative to Haskell is more than a 1 person job :p
2020-10-16 16:59:22 +0200 <merijn> phadej: I want something that is a lot *like* Haskell, but not Haskell
2020-10-16 16:59:32 +0200geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 272 seconds)
2020-10-16 16:59:41 +0200 <phadej> merijn: having a prototype toy language is something 1 person can still make
2020-10-16 16:59:44 +0200 <merijn> Maybe csaba's whole program compilation stuff will help me get started
2020-10-16 17:00:01 +0200 <hyperisco> I bet that is doable with backwards compatibility
2020-10-16 17:00:01 +0200shortdudey1231(~shortdude@185.204.1.185) ()
2020-10-16 17:00:03 +0200 <phadej> then bigger community can think whether it can be bolted back to GHC Haskell, if its found valuable
2020-10-16 17:00:22 +0200lnlsn(~lnlsn@189.100.212.150)
2020-10-16 17:00:33 +0200machined1od(~machinedg@24.105.81.50) (Quit: leaving)
2020-10-16 17:00:47 +0200 <merijn> phadej: A lot of the things I truly want are probably to invasive to ever get into GHC (it'd be a mess trying to intergrate it with the existing dependent haskell stuff, etc.)
2020-10-16 17:01:11 +0200machinedgod(~machinedg@24.105.81.50)
2020-10-16 17:01:16 +0200 <phadej> well, LinearTypes got in...
2020-10-16 17:01:20 +0200 <hyperisco> then we can watch the Partial constraint get inferred on most of Haskell code :P
2020-10-16 17:01:21 +0200 <merijn> But csaba's has (wildly ambitious plans) to develop/split of the Core pipeline from GHC, which I think would be an *amazing* development
2020-10-16 17:01:28 +0200 <merijn> phadej: People got paid to make linear types ;)
2020-10-16 17:01:31 +0200 <phadej> I do think everything is possible if you want (and yell) hard enough
2020-10-16 17:02:07 +0200 <merijn> If GHC's code generation could be split off and reused I think that'd encourage/help experimenting with other languages a lot
2020-10-16 17:02:21 +0200 <phadej> yes
2020-10-16 17:02:23 +0200 <merijn> Like, having something that can ingest something like Core
2020-10-16 17:02:34 +0200 <merijn> I can work with Core and reasonably target it
2020-10-16 17:02:52 +0200 <phadej> Well, no. Core evolves
2020-10-16 17:02:57 +0200 <phadej> it changed with linear types e.g.
2020-10-16 17:03:03 +0200 <phadej> and will further change with more dependent haskell
2020-10-16 17:03:06 +0200toorevitimirp(~tooreviti@117.182.180.0) (Ping timeout: 260 seconds)
2020-10-16 17:03:18 +0200kritzefitz(~kritzefit@fw-front.credativ.com) (Ping timeout: 260 seconds)
2020-10-16 17:03:27 +0200 <phadej> so it's not that stable interface (though quite small, so you may be able to adopt)
2020-10-16 17:04:02 +0200 <phadej> but it's very likely it will iss some feature that an experimental frontend would like to have
2020-10-16 17:04:14 +0200 <phadej> (that's the case with LLVM IR e.g.)
2020-10-16 17:04:52 +0200 <merijn> phadej: Yeah, but an evolving high level interface is much better than having to compile to LLVM IR myself
2020-10-16 17:04:53 +0200 <phadej> one IR to rule them all is quite ambitious goal :)
2020-10-16 17:05:01 +0200 <merijn> that's way too low level to deal with
2020-10-16 17:05:02 +0200Deide(~Deide@217.155.19.23)
2020-10-16 17:05:19 +0200 <phadej> (the type-theoreitical IR = Core-like language, it is)
2020-10-16 17:05:53 +0200 <phadej> but I do agree, that making GHC Core usable without GHC frontend is a good first step
2020-10-16 17:05:55 +0200 <dolio> LLVM seems to lack features for compiling functional languages, too.
2020-10-16 17:05:58 +0200 <phadej> and quite big one
2020-10-16 17:06:00 +0200 <merijn> phadej: but having to develop a full native code backend is just way too much work for someone to attempt with a useful goal
2020-10-16 17:06:28 +0200 <phadej> (i..e. if GHC Core is good enough for your experiment, it's a shame it cannot be used today)
2020-10-16 17:07:16 +0200 <merijn> Or GRIN, I suppose
2020-10-16 17:09:49 +0200damianfral(uid469644@gateway/web/irccloud.com/x-glchetbxfivfvobd)
2020-10-16 17:10:52 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 17:11:27 +0200pjb(~t@2a01cb04063ec500259c126a59c35166.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2020-10-16 17:13:22 +0200vicfred(~vicfred@unaffiliated/vicfred)
2020-10-16 17:14:20 +0200chaosmasttter(~chaosmast@p200300c4a710fa01b4d1efe2d5e04ce9.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2020-10-16 17:14:24 +0200vicfred(~vicfred@unaffiliated/vicfred) (Max SendQ exceeded)
2020-10-16 17:14:55 +0200vicfred(~vicfred@unaffiliated/vicfred)
2020-10-16 17:15:33 +0200hiroaki(~hiroaki@ip4d176049.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2020-10-16 17:16:00 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2020-10-16 17:23:07 +0200unlink2(~unlink2@p57b852f3.dip0.t-ipconnect.de)
2020-10-16 17:23:15 +0200thir(~thir@p200300f27f0258004ce58c845c83e0b2.dip0.t-ipconnect.de)
2020-10-16 17:23:38 +0200addcninblue(~addison@c-73-158-198-149.hsd1.ca.comcast.net)
2020-10-16 17:24:55 +0200dhil(~dhil@78.156.97.38) (Ping timeout: 246 seconds)
2020-10-16 17:27:25 +0200thir(~thir@p200300f27f0258004ce58c845c83e0b2.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-10-16 17:30:21 +0200isovector1(~isovector@172.103.216.166.cable.tpia.cipherkey.com)
2020-10-16 17:30:27 +0200hackagesubG 0.1.0.0 - Some extension to the Foldable and Monoid classes. https://hackage.haskell.org/package/subG-0.1.0.0 (OleksandrZhabenko)
2020-10-16 17:30:35 +0200pera(~pera@unaffiliated/pera)
2020-10-16 17:32:15 +0200Guest37834(uid469646@gateway/web/irccloud.com/x-jcuztqspwxvcsinh)
2020-10-16 17:32:53 +0200Guest37834(uid469646@gateway/web/irccloud.com/x-jcuztqspwxvcsinh) (Client Quit)
2020-10-16 17:34:04 +0200snakemas1(~snakemast@213.100.206.23) (Quit: WeeChat 2.9)
2020-10-16 17:35:58 +0200pera(~pera@unaffiliated/pera) (Ping timeout: 260 seconds)
2020-10-16 17:36:19 +0200chris(~chris@81.96.113.213)
2020-10-16 17:36:42 +0200chrisGuest67441
2020-10-16 17:37:00 +0200blip(5e86b451@gateway/web/cgi-irc/kiwiirc.com/ip.94.134.180.81)
2020-10-16 17:37:36 +0200 <blip> Is it possible to get the ghc version used to compile a module without cpp?
2020-10-16 17:38:27 +0200Guest67441(~chris@81.96.113.213) (Remote host closed the connection)
2020-10-16 17:38:27 +0200 <kuribas> merijn: I'd like a language which allows type level computations in it using the same language.
2020-10-16 17:38:44 +0200 <kuribas> merijn: but still with separation between types and kinds (not dependend types).
2020-10-16 17:39:11 +0200 <kuribas> merijn: so you can still have hindley millner inference for most programs.
2020-10-16 17:39:45 +0200xff0x(~fox@217.110.198.158) (Ping timeout: 240 seconds)
2020-10-16 17:40:03 +0200 <kuribas> merijn: GRIN looks nice as an IR.
2020-10-16 17:41:35 +0200 <dolio> Have you tried dependently typed languages? Agda and Idris are not exactly poor when it comes to inference.
2020-10-16 17:42:10 +0200 <kuribas> dolio: I still prefer haskell inference
2020-10-16 17:43:00 +0200 <kuribas> merijn: if you want to make a derivative language using GRIN, you can count me in :)
2020-10-16 17:43:22 +0200 <monochrom> "One IR to rule them all" sounds like standardizing C all over again, you will just end up having 90% of it UB or implementation-defined.
2020-10-16 17:43:52 +0200 <kuribas> monochrom: GRIN is meant as a step above C or LLVM, to defunctionalize a program.
2020-10-16 17:44:02 +0200 <kuribas> monochrom: it's not meant to be between the machine and the program
2020-10-16 17:44:04 +0200 <hyperisco> every time you read or hear "the IO monad" just imagine "the dog animal"
2020-10-16 17:44:24 +0200 <hyperisco> and we can expunge this from common parlance
2020-10-16 17:44:31 +0200 <monochrom> Do you also extend that to "the Maybe monad"?
2020-10-16 17:45:01 +0200emmanuel_erc(~user@2604:2000:1382:ce03:1864:d59f:f9f2:35b1) (Ping timeout: 272 seconds)
2020-10-16 17:45:01 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 17:45:10 +0200 <dolio> How about the free monoid monad?
2020-10-16 17:45:21 +0200 <monochrom> "the integer monoid"? "the integer group"? "the integer ring"? "the integer commutative ring"? "the integer module"?
2020-10-16 17:45:42 +0200 <monochrom> "the human species"? "the dog species"?
2020-10-16 17:47:16 +0200 <monochrom> I know there are terrible writers who write "the IO monad" blindly. But for the rest of us, if we bother to write that, the context is we're focusing on the monadness. Just like when we bother to write "the human species" instead of just "humans".
2020-10-16 17:47:16 +0200pera(~pera@unaffiliated/pera)
2020-10-16 17:47:17 +0200Wamanuz(~wamanuz@78-70-34-81-no84.tbcn.telia.com) (Remote host closed the connection)
2020-10-16 17:48:23 +0200 <carbolymer> I'm looking for mutable thread-safe, performant, hash map implementation, sth like Java's concurrenthashmap; I've found stm-containers, but the docs are vague and after reading the code I'm under impression ithat it just shoves whole multimap into TVar - which isn't really what I want
2020-10-16 17:49:08 +0200 <hyperisco> well then the substitution makes sense and you can carry on :P
2020-10-16 17:49:42 +0200 <hyperisco> I guess we don't say "dog animal", even though it follows the same pattern
2020-10-16 17:50:05 +0200 <dolio> They do in Battlefield Earth.
2020-10-16 17:50:17 +0200 <carbolymer> do you know which map implementation would be good? or should I just use `Map Text (TMVar DList a)` ?
2020-10-16 17:50:50 +0200 <monochrom> We say "the dog phylum" or whatever level in the hierarchy it is, similar to "the human species".
2020-10-16 17:51:18 +0200 <monochrom> because "animal" is too broad in that hierarchy.
2020-10-16 17:51:33 +0200 <monochrom> and "the sine function", and "the sine wave".
2020-10-16 17:52:16 +0200emmanuel_erc(~user@2604:2000:1382:ce03:e422:6bdf:36af:752a)
2020-10-16 17:52:25 +0200 <monochrom> There is a reason natural languages nor programming languages are xz files.
2020-10-16 17:53:06 +0200 <hyperisco> hm, is "the sine function" another extraneous phrase
2020-10-16 17:54:04 +0200 <monochrom> NO
2020-10-16 17:54:17 +0200 <monochrom> <monochrom> "the integer monoid"? "the integer group"? "the integer ring"? "the integer commutative ring"? "the integer module"?
2020-10-16 17:54:30 +0200 <monochrom> Read that 100 times until it feels natural.
2020-10-16 17:54:47 +0200 <hyperisco> it feels natural if we're talking about algebraic structures
2020-10-16 17:54:50 +0200 <monochrom> err s/100 times/repeatedly/
2020-10-16 17:55:27 +0200 <monochrom> Then "the sine function" is natural when talking about function structures. "the sine wave" is natural when talking wave structures.
2020-10-16 17:55:39 +0200 <monochrom> "the IO monad" is natural when talking about monad structures.
2020-10-16 17:55:51 +0200 <hyperisco> yes I am just saying I think I usually hear "the sine function" and never simply "sine"
2020-10-16 17:55:53 +0200 <monochrom> So you have always known it, you just don't want to admit it.
2020-10-16 17:56:16 +0200 <EvanR> carbolymer: any reason you need specifically that data structure
2020-10-16 17:56:20 +0200acidjnk_new2(~acidjnk@p200300d0c723787058597087ca157dd5.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-10-16 17:56:20 +0200 <hyperisco> granted, it is a homophone with too many other meanings
2020-10-16 17:56:45 +0200 <EvanR> generally haskell's GC works better with immutable
2020-10-16 17:57:40 +0200 <hyperisco> the weirdness isn't when you're talking about >>= and you say "the IO monad", it is when you're talking about putStrLn and you say "it runs in the IO monad"
2020-10-16 17:58:11 +0200 <monochrom> The Haskell library doesn't have imperative lock-free concurrent mutable data structures.
2020-10-16 17:58:22 +0200 <monochrom> There is not enough demand to begin with.
2020-10-16 17:58:39 +0200 <hyperisco> but maybe that happens because "IO" isn't unambiguous enough
2020-10-16 17:59:24 +0200da39a3ee5e6b4b0d(~textual@n11211935170.netvigator.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 17:59:36 +0200 <monochrom> One single IORef, atomically used, that points to an immutable version, solves 99% of the same problems.
2020-10-16 17:59:51 +0200 <monochrom> Note that you get ACID automatically.
2020-10-16 18:02:56 +0200sfvm(~sfvm@37.228.215.148)
2020-10-16 18:03:04 +0200toorevitimirp(~tooreviti@117.182.180.0)
2020-10-16 18:03:26 +0200 <kuribas> the danger is that the monadicness of IO looks like something special by beginners. But IO works perfectly without a Monad instance.
2020-10-16 18:03:49 +0200addcninblue(~addison@c-73-158-198-149.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2020-10-16 18:03:53 +0200polyrain_(~polyrain@58.161.83.164) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-10-16 18:04:01 +0200 <c_wraith> and conversely, monads have nothing to do with "impurity"
2020-10-16 18:04:28 +0200 <dolio> Seems like sometimes people decide it's useful to communicate with more than the absolute minimum number of bits of information possible, and that isn't really a problem to be solved.
2020-10-16 18:04:35 +0200addcninblue(~addison@c-73-158-198-149.hsd1.ca.comcast.net)
2020-10-16 18:04:46 +0200 <monochrom> Right, I don't say "monad" when the context is teaching IO itself.
2020-10-16 18:04:51 +0200solonarv(~solonarv@anancy-651-1-202-101.w109-217.abo.wanadoo.fr)
2020-10-16 18:04:53 +0200jespada(~jespada@90.254.245.15) (Quit: Leaving)
2020-10-16 18:04:54 +0200hnOsmium0001(uid453710@gateway/web/irccloud.com/x-wfqfiwhdaazevkgj)
2020-10-16 18:05:10 +0200 <monochrom> But that is hardly the only valid context.
2020-10-16 18:05:54 +0200 <c_wraith> dolio: no, I think this one is. The problem is that people really do think monads are special because they think IO is what monads are. It's IO that's special, not monads. But they get conflated by a *lot* of people because they always see IO described as a monad.
2020-10-16 18:06:19 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-10-16 18:06:27 +0200fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net)
2020-10-16 18:08:27 +0200hackagesubG 0.1.1.0 - Some extension to the Foldable and Monoid classes. https://hackage.haskell.org/package/subG-0.1.1.0 (OleksandrZhabenko)
2020-10-16 18:08:47 +0200 <blip> Why are there only Natural nums on the type level?
2020-10-16 18:09:04 +0200 <kuribas> Then it seems monads are only necessary because you have a pure language, and they are no more than a kludge to fix a language that can only appeal to accedemics.
2020-10-16 18:09:08 +0200 <blip> What about a promoted 4.7?
2020-10-16 18:09:14 +0200 <Rembane> blip: Because it's almost impossible to put other kind of numbers there.
2020-10-16 18:09:21 +0200 <Rembane> blip: How would you represent 4.7 as a type?
2020-10-16 18:09:44 +0200 <blip> for example : Proxy :: Proxy (4, 7)
2020-10-16 18:10:00 +0200 <blip> why wouldn't that be possible?
2020-10-16 18:10:30 +0200pera(~pera@unaffiliated/pera) (Ping timeout: 256 seconds)
2020-10-16 18:10:48 +0200 <blip> why isn't it syntactically suported? Often I use negative numbers at the type level
2020-10-16 18:12:30 +0200 <Rembane> blip: That sounds like a more possible, representation.
2020-10-16 18:12:37 +0200Deide(~Deide@217.155.19.23) (Read error: Connection reset by peer)
2020-10-16 18:12:47 +0200 <solonarv> it probably just isn't supported because nobody has said to GHC devs "hey, I really need type level non-integer numbers"
2020-10-16 18:12:49 +0200Deide(~Deide@217.155.19.23)
2020-10-16 18:13:00 +0200LKoen(~LKoen@81.255.219.130)
2020-10-16 18:13:03 +0200 <blip> non-natural
2020-10-16 18:13:36 +0200 <solonarv> you can of course define type-level integers or rationals yourself, you just won't get nice syntax where you just write down a numeric literal
2020-10-16 18:13:42 +0200 <dolio> Monads (and similar stuff) are useful for many things that are not directly related to 'purity'.
2020-10-16 18:14:01 +0200 <davean> I mean you can create a TDouble Nat Nat, but defining rules for it will be "fun"
2020-10-16 18:14:03 +0200 <blip> solonarv: yes, but that get's ugly fast
2020-10-16 18:14:58 +0200 <kuribas> blip: I think because Naturals are used for array indexing, one of the main usecases for typelevel numbers, but Double is much less handy.
2020-10-16 18:15:37 +0200 <blip> Well, but negatives can be nicely used for physical dimensions for example.
2020-10-16 18:15:55 +0200 <davean> what physical dimensions can be negative?
2020-10-16 18:16:03 +0200 <davean> weight can't be, length can't be ...
2020-10-16 18:16:03 +0200gxt(~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
2020-10-16 18:16:21 +0200 <kuribas> blip: how do you use physical dimensions on type level?
2020-10-16 18:16:47 +0200 <blip> davean: length can be, for example 5 s/m
2020-10-16 18:17:04 +0200 <davean> blip: Theres no negative there
2020-10-16 18:17:16 +0200 <blip> davean: yes, there are
2020-10-16 18:17:18 +0200 <davean> kuribas: Oh thats easy, you often want to run a program for a specific case, so you pass parameterize at the type level by the static information
2020-10-16 18:17:29 +0200 <blip> m^(-1)
2020-10-16 18:17:40 +0200 <davean> no, theres no negative there, theres a m^-1
2020-10-16 18:17:44 +0200 <davean> but thats not a negative value
2020-10-16 18:17:53 +0200 <kuribas> davean: I don't get it
2020-10-16 18:17:54 +0200 <davean> Which is a very important thing to realize
2020-10-16 18:17:58 +0200 <blip> well, -1 looks negative to me
2020-10-16 18:18:44 +0200gxt(~gxt@gateway/tor-sasl/gxt)
2020-10-16 18:19:11 +0200 <blip> 60 :: Meter^1 * Second^(-1)
2020-10-16 18:19:13 +0200nineonin_(~nineonine@216-19-190-182.dyn.novuscom.net) (Remote host closed the connection)
2020-10-16 18:19:49 +0200nineonine(~nineonine@50.216.62.2)
2020-10-16 18:20:18 +0200 <davean> blip: its a negative exponent, but not a negative value, it produces a unit and the value of the unit isn't negative. You can choose to talk about it as an exponent, or directly what it is
2020-10-16 18:20:31 +0200 <davean> The negativeness there is just notation for the unit
2020-10-16 18:21:44 +0200 <davean> in the same sense that subtraction isn't a negative number
2020-10-16 18:22:01 +0200Wamanuz(~wamanuz@78-70-34-81-no84.tbcn.telia.com)
2020-10-16 18:22:43 +0200dhouthoo(~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
2020-10-16 18:23:01 +0200 <solonarv> right, and if you want to write down the negative exponent on the type level, you need negative type-level integers
2020-10-16 18:23:02 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 18:23:02 +0200 <kuribas> blip: I am missing the explanation why this would be interesting *at type level*.
2020-10-16 18:23:17 +0200 <solonarv> I do think blip's notation is sensible and desirable
2020-10-16 18:23:31 +0200 <blip> kuribas: you could avoid adding seconds to meters for example
2020-10-16 18:23:39 +0200geekosaur(82659a0e@host154-014.vpn.uakron.edu)
2020-10-16 18:23:46 +0200 <solonarv> putting units/dimensions on the type level lets you make the typechecker do dimensional analysis for you
2020-10-16 18:24:08 +0200 <kuribas> blip: then you just need a Meter newtype and Seconds newtype.
2020-10-16 18:24:43 +0200 <kuribas> solonarv: in that case I would just have one canonical type.
2020-10-16 18:25:03 +0200 <solonarv> now if you want to multiply two Meter values you also need an Area newtype, if you want to divide a Meter value by a Seconds value you need a MeterPerSecond newtype... it's a profusion of newtypes!
2020-10-16 18:25:47 +0200 <blip> kuribas: how would you possibly implement multiplication
2020-10-16 18:26:01 +0200 <phadej> https://hackage.haskell.org/package/uom-plugin
2020-10-16 18:26:07 +0200ericsagnes(~ericsagne@2405:6580:0:5100:ad7e:a36b:18dd:5e0b) (Ping timeout: 260 seconds)
2020-10-16 18:26:23 +0200 <kuribas> blip: a Squared type?
2020-10-16 18:26:52 +0200 <kuribas> like (Squared Meter)
2020-10-16 18:26:55 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1) (Quit: karanlikmadde)
2020-10-16 18:27:17 +0200 <blip> (:*:) :: (Meter x, Second y, Mass z, ...) -> (Meter x', Second y', Mass z', ...) -> (Meter (x+x'), Second (y+y'), Mass (z + z')...)
2020-10-16 18:27:29 +0200 <solonarv> and now you need a Cubed type, and you need to figure out division still...
2020-10-16 18:27:30 +0200 <blip> of any SI-Dimension
2020-10-16 18:27:37 +0200 <solonarv> there *are* libraries that do this already, mind you
2020-10-16 18:27:48 +0200 <davean> dimensional for example
2020-10-16 18:27:54 +0200 <davean> a few others
2020-10-16 18:27:57 +0200 <kuribas> solonarv: or just... don't? Don't try to encode everything in types?
2020-10-16 18:28:35 +0200 <phadej> >>> It is traditional here to cite the Mars Climate Orbiter, or the Gimli Glider
2020-10-16 18:28:38 +0200 <phadej> (http://lamar.colostate.edu/~hillger/unit-mixups.html).
2020-10-16 18:28:48 +0200 <davean> kuribas: so, for example, if I want to setup a control system, knowing the paraeters staticly let me generate code that optimally performs the control operation for each enumerated case
2020-10-16 18:28:53 +0200 <solonarv> but this is actually a sensible thing to encode in types. The system of dimensions (or units) *is* a type system already, and it can be embedded into Haskell's type system.
2020-10-16 18:29:17 +0200 <phadej> solonarv: can, but it can also be painful without compiler support. See uom-plugin paper
2020-10-16 18:30:09 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-10-16 18:30:18 +0200xff0x(~fox@217.110.198.158)
2020-10-16 18:31:55 +0200alp(~alp@2a01:e0a:58b:4920:d1be:ca38:a451:6036)
2020-10-16 18:32:42 +0200jneira[m](~jneira@191.red-37-10-143.dynamicip.rima-tde.net)
2020-10-16 18:33:22 +0200 <dolio> 'Dimensional analysis' that physicists talk about is basically type checking.
2020-10-16 18:33:34 +0200 <kuribas> solonarv: Squared and Cubed sounds ok to me. How many dimension do you really need? Besides, a lot more can go wrong in numerical calculations than wrong dimensions.
2020-10-16 18:34:00 +0200 <blip> kuribas: up to ^5
2020-10-16 18:34:06 +0200 <blip> isn't that uncommon in physics
2020-10-16 18:34:11 +0200 <dolio> Maybe only physics professors.
2020-10-16 18:34:42 +0200 <solonarv> even fractional exponents come up sometimes! although admittedly not often
2020-10-16 18:34:49 +0200 <blip> dimensional analysis: don't do only profs, that's taught in schools
2020-10-16 18:35:27 +0200 <solonarv> yeah, I was taught DA in high school. We even properly distinguished units from dimensions.
2020-10-16 18:37:18 +0200 <blip> if my pupils don't do DA, I slap them with a Force of 5 kg :)
2020-10-16 18:37:44 +0200 <blip> kuribas: so you would use a newtype for Newtons?
2020-10-16 18:38:07 +0200 <kuribas> blip: possibly?
2020-10-16 18:38:10 +0200chris(~chris@81.96.113.213)
2020-10-16 18:38:17 +0200 <blip> hm
2020-10-16 18:38:23 +0200 <davean> blip: have you looked at 'dimensional', etc?
2020-10-16 18:38:24 +0200ericsagnes(~ericsagne@2405:6580:0:5100:2c71:50df:a168:e256)
2020-10-16 18:38:33 +0200chrisGuest68069
2020-10-16 18:38:40 +0200 <blip> davean: yes, but I'm using that just as an example
2020-10-16 18:38:45 +0200 <solonarv> @hackage units - the one I remembered first when this discussion came up
2020-10-16 18:38:46 +0200 <lambdabot> https://hackage.haskell.org/package/units - the one I remembered first when this discussion came up
2020-10-16 18:39:16 +0200 <blip> I'm more generally interested in representing more stuff ergonomically at type level
2020-10-16 18:39:25 +0200 <blip> I'm a bit of a TL fan
2020-10-16 18:39:48 +0200 <solonarv> type-level (negative) integers and fractions might be within the realm of what a GHC plugin can do
2020-10-16 18:39:48 +0200nados(~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
2020-10-16 18:39:58 +0200lnlsn(~lnlsn@189.100.212.150) (Read error: Connection reset by peer)
2020-10-16 18:40:01 +0200 <kuribas> type level, ergonomic and haskell don't really go together
2020-10-16 18:40:08 +0200 <kuribas> except for simple stuff
2020-10-16 18:40:14 +0200 <blip> don't be that negative
2020-10-16 18:40:23 +0200 <solonarv> there is some facility within GHC plugins to add new syntax if it can be cobbled together from existing syntax
2020-10-16 18:40:25 +0200 <davean> I don't know why you'd use a plugin for it, you can just do it if you want
2020-10-16 18:40:27 +0200nados(~dan@107-190-41-58.cpe.teksavvy.com)
2020-10-16 18:40:51 +0200 <davean> You have to lie and just claim laws, but thats easy
2020-10-16 18:41:21 +0200 <kuribas> blip: I am not negative. It's nice to have it, but most of it was an afterthought.
2020-10-16 18:41:22 +0200 <blip> Well, kind-safety is overrated
2020-10-16 18:41:29 +0200 <blip> yeah
2020-10-16 18:41:41 +0200 <blip> But it's getting better over time
2020-10-16 18:42:19 +0200 <kuribas> blip: actually, that's something I miss, well kinded type level computation. For example servant is pretty ad-hoc.
2020-10-16 18:42:43 +0200trevorriles(uid469656@gateway/web/irccloud.com/x-ruimatphqohrzmib)
2020-10-16 18:42:48 +0200LKoen(~LKoen@81.255.219.130) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2020-10-16 18:43:02 +0200 <blip> I actually love servant, and think it's relatively non-ad-hoc for what it's doing.
2020-10-16 18:43:31 +0200 <blip> that's a lot more ad-hoc: https://github.com/knupfer/type-of-html
2020-10-16 18:44:25 +0200 <blip> considering that we've got Type :: Type, I think we've lost on the well kinded front
2020-10-16 18:44:54 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1)
2020-10-16 18:45:17 +0200aenesidemus(~aenesidem@c-73-53-247-25.hsd1.fl.comcast.net)
2020-10-16 18:45:28 +0200xff0x(~fox@217.110.198.158) (Ping timeout: 256 seconds)
2020-10-16 18:46:11 +0200 <dolio> I don't think that really follows.
2020-10-16 18:46:38 +0200lnlsn(~lnlsn@189.100.212.150)
2020-10-16 18:47:02 +0200lnlsn-(~lnlsn@189.100.212.150)
2020-10-16 18:47:06 +0200trevorrilesvisi0n
2020-10-16 18:47:19 +0200visi0ntrevorriles
2020-10-16 18:47:22 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz)
2020-10-16 18:47:38 +0200addcninblue(~addison@c-73-158-198-149.hsd1.ca.comcast.net) (Ping timeout: 258 seconds)
2020-10-16 18:48:31 +0200addcninblue(~addison@c-73-158-198-149.hsd1.ca.comcast.net)
2020-10-16 18:48:44 +0200mmohammadi981266(~mmohammad@2.178.247.129)
2020-10-16 18:48:53 +0200plast1k_(~plast1k_@196.207.181.246) (Quit: Leaving)
2020-10-16 18:49:52 +0200avdb(~avdb@ip-213-49-124-15.dsl.scarlet.be)
2020-10-16 18:50:28 +0200hackageZ-Data 0.1.7.1 - Array, vector and text https://hackage.haskell.org/package/Z-Data-0.1.7.1 (winterland)
2020-10-16 18:50:38 +0200pera(~pera@unaffiliated/pera)
2020-10-16 18:50:38 +0200tv(~tv@unaffiliated/tv) (Ping timeout: 260 seconds)
2020-10-16 18:51:20 +0200cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-10-16 18:51:27 +0200hackagesubG 0.1.1.1 - Some extension to the Foldable and Monoid classes. https://hackage.haskell.org/package/subG-0.1.1.1 (OleksandrZhabenko)
2020-10-16 18:52:25 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 246 seconds)
2020-10-16 18:54:19 +0200Guest68069(~chris@81.96.113.213) (Remote host closed the connection)
2020-10-16 18:58:00 +0200 <nerdypepper> hiya, is there a shorter way to do this: https://pastebin.com/0XBjebVt ?
2020-10-16 18:58:23 +0200 <davean> sure
2020-10-16 18:58:27 +0200 <nerdypepper> there is no particular reason i want to shorten it however, just trying to scratch an itch
2020-10-16 18:58:32 +0200lnlsn-(~lnlsn@189.100.212.150) (Read error: Connection reset by peer)
2020-10-16 18:58:32 +0200lnlsn(~lnlsn@189.100.212.150) (Write error: Connection reset by peer)
2020-10-16 18:59:17 +0200lnlsn(~lnlsn@189.100.212.150)
2020-10-16 18:59:27 +0200multichill(~multichil@84.39.116.180)
2020-10-16 18:59:52 +0200 <lyxia> It looks good already to me.
2020-10-16 19:00:36 +0200 <solonarv> I agree. There is no immediately obvious way to shorten it, which to me means I should leave it alone
2020-10-16 19:00:49 +0200 <solonarv> (well, you save two characters with s/return/pure/ :p )
2020-10-16 19:01:17 +0200 <siraben> `(some_computation val >>= another_computation) >> pure result`
2020-10-16 19:01:31 +0200 <fryguybob> carbolymer: stm-container is based on the Hashed Array-Mapped Trie data structure and has internal TVar's.
2020-10-16 19:01:33 +0200 <geekosaur> there's a way to shorten it but it's not obvious
2020-10-16 19:01:43 +0200mmohammadi981266(~mmohammad@2.178.247.129) (Ping timeout: 260 seconds)
2020-10-16 19:01:55 +0200gxt(~gxt@gateway/tor-sasl/gxt) (Remote host closed the connection)
2020-10-16 19:01:59 +0200 <blip> siraben: wrong
2020-10-16 19:02:14 +0200 <siraben> blip: interesting, which part?
2020-10-16 19:02:35 +0200 <blip> your `result` doesn't exist
2020-10-16 19:02:35 +0200 <siraben> Oh oops
2020-10-16 19:02:36 +0200 <siraben> missed the result
2020-10-16 19:02:37 +0200gxt(~gxt@gateway/tor-sasl/gxt)
2020-10-16 19:02:38 +0200 <siraben> lol
2020-10-16 19:02:48 +0200 <siraben> then it's fine as is
2020-10-16 19:03:02 +0200 <nerdypepper> lyxia, solonarv : fair enough, thanks
2020-10-16 19:03:13 +0200 <blip> `f val >>= \r -> g f >> pure r`
2020-10-16 19:03:33 +0200 <blip> `f val >>= \r -> g r >> pure r`
2020-10-16 19:03:47 +0200Mathnerd314(uid442749@supertux/Mathnerd314)
2020-10-16 19:04:43 +0200 <carbolymer> fryguybob, thanks for the info, I think I've overlooked that
2020-10-16 19:05:27 +0200 <carbolymer> EvanR, I just need a bit finer locking than on a whole Map level
2020-10-16 19:05:28 +0200 <nerdypepper> blip: nice!
2020-10-16 19:05:38 +0200 <blip> `f val >>= uncurry (>>) . (g &&& pure)` ??
2020-10-16 19:06:26 +0200tv(~tv@unaffiliated/tv)
2020-10-16 19:07:42 +0200 <blip> actually `*>` is nicer than `>>`
2020-10-16 19:07:50 +0200 <nerdypepper> blip: sweet, i was looking to do this somehow using arrow combinators, thanks a lot
2020-10-16 19:07:52 +0200GyroW_(~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
2020-10-16 19:07:58 +0200 <nerdypepper> blip: any reason *> is better than >> ?
2020-10-16 19:08:07 +0200GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-16 19:08:08 +0200GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-16 19:08:08 +0200GyroW(~GyroW@unaffiliated/gyrow)
2020-10-16 19:08:12 +0200 <blip> it's usable in more cases
2020-10-16 19:08:27 +0200 <blip> it's more honest
2020-10-16 19:08:37 +0200 <blip> it's like using `pure` and not `return`
2020-10-16 19:09:00 +0200 <nerdypepper> gotcha
2020-10-16 19:09:11 +0200 <blip> and it's combinable with applicative do
2020-10-16 19:09:44 +0200hekkaidekapus_hekkaidekapus
2020-10-16 19:10:36 +0200 <fryguybob> carbolymer: A non-STM, concurrent version of the HAMT is in the ctrie package.
2020-10-16 19:11:57 +0200 <fryguybob> That one can have non-blocking snapshots, but I don't think the ctrie package implementes it.
2020-10-16 19:12:04 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2020-10-16 19:12:07 +0200 <blip> proposal: let's deprecate mapM
2020-10-16 19:12:17 +0200 <hekkaidekapus> dminuoso, tomjaguarpaw: Actionable input is required at <https://gitlab.haskell.org/ghc/ghc/-/issues/18836#note_307788>. After all, you’ll started it :) So, ”would you care to […] propose a paragraph or two that would have cleared it up for you?”
2020-10-16 19:13:03 +0200lnlsn(~lnlsn@189.100.212.150) (Read error: Connection reset by peer)
2020-10-16 19:13:42 +0200 <hekkaidekapus> *you all
2020-10-16 19:16:11 +0200raichoo(~raichoo@213.240.178.58) (Quit: Lost terminal)
2020-10-16 19:17:11 +0200bitmagie(~Thunderbi@200116b8068ac700b1ff22a8b63421be.dip.versatel-1u1.de) (Quit: bitmagie)
2020-10-16 19:18:25 +0200juuandyy(~juuandyy@90.166.144.65)
2020-10-16 19:18:53 +0200plast1k_(~plast1k_@196.207.181.246)
2020-10-16 19:18:56 +0200juuandyy(~juuandyy@90.166.144.65) (Client Quit)
2020-10-16 19:19:14 +0200mmohammadi981266(~mmohammad@5.106.141.98)
2020-10-16 19:23:24 +0200Buntspecht(~user@unaffiliated/siracusa)
2020-10-16 19:24:07 +0200thir(~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de)
2020-10-16 19:26:46 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1) (Quit: karanlikmadde)
2020-10-16 19:27:59 +0200hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Quit: Curry, you fools!)
2020-10-16 19:28:22 +0200xff0x(~fox@2001:1a81:5391:7900:f127:8532:42d4:579b)
2020-10-16 19:29:56 +0200frdg(47b88ff9@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-10-16 19:30:22 +0200Tops2(~Tobias@dyndsl-091-249-082-055.ewe-ip-backbone.de) (Quit: Leaving.)
2020-10-16 19:31:56 +0200mmohammadi981266(~mmohammad@5.106.141.98) (Ping timeout: 256 seconds)
2020-10-16 19:32:29 +0200mmohammadi981266(~mmohammad@2.178.247.129)
2020-10-16 19:38:00 +0200nyd(~lpy@unaffiliated/elysian) (Quit: nyd)
2020-10-16 19:38:23 +0200AWizzArd(~code@gehrels.uberspace.de) (Changing host)
2020-10-16 19:38:23 +0200AWizzArd(~code@unaffiliated/awizzard)
2020-10-16 19:39:59 +0200mmohammadi981266(~mmohammad@2.178.247.129) (Quit: I quit (╯°□°)╯︵ ┻━┻)
2020-10-16 19:40:50 +0200amosbird(~amosbird@13.75.119.182)
2020-10-16 19:41:14 +0200cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2020-10-16 19:42:11 +0200howdoi(uid224@gateway/web/irccloud.com/x-vzqpthvuyxsqigap)
2020-10-16 19:43:53 +0200acidjnk_new2(~acidjnk@p200300d0c723787058597087ca157dd5.dip0.t-ipconnect.de)
2020-10-16 19:46:23 +0200jinblack(~JinBlack@2001:41d0:8:4b28::1) (Ping timeout: 244 seconds)
2020-10-16 19:46:36 +0200ephemera_(~E@122.34.1.187) (Remote host closed the connection)
2020-10-16 19:47:03 +0200Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 258 seconds)
2020-10-16 19:47:54 +0200ephemera_(~E@122.34.1.187)
2020-10-16 19:49:52 +0200GyroW(~GyroW@unaffiliated/gyrow) (Quit: Someone ate my pie)
2020-10-16 19:50:02 +0200GyroW(~GyroW@d54c03e98.access.telenet.be)
2020-10-16 19:50:02 +0200GyroW(~GyroW@d54c03e98.access.telenet.be) (Changing host)
2020-10-16 19:50:02 +0200GyroW(~GyroW@unaffiliated/gyrow)
2020-10-16 19:51:35 +0200plast1k_(~plast1k_@196.207.181.246) (Quit: Leaving)
2020-10-16 19:53:04 +0200avdb(~avdb@ip-213-49-124-15.dsl.scarlet.be) (Quit: WeeChat 2.9)
2020-10-16 19:53:58 +0200ephemera_(~E@122.34.1.187) (Ping timeout: 256 seconds)
2020-10-16 19:55:25 +0200GyroW(~GyroW@unaffiliated/gyrow) (Ping timeout: 264 seconds)
2020-10-16 19:55:44 +0200alp(~alp@2a01:e0a:58b:4920:d1be:ca38:a451:6036) (Remote host closed the connection)
2020-10-16 19:55:47 +0200ephemera_(~E@122.34.1.187)
2020-10-16 19:55:50 +0200alp_(~alp@88.126.45.36)
2020-10-16 19:56:10 +0200GyroW(~GyroW@d54c03e98.access.telenet.be)
2020-10-16 19:56:10 +0200GyroW(~GyroW@d54c03e98.access.telenet.be) (Changing host)
2020-10-16 19:56:10 +0200GyroW(~GyroW@unaffiliated/gyrow)
2020-10-16 19:56:18 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1)
2020-10-16 20:00:02 +0200multichill(~multichil@84.39.116.180) ()
2020-10-16 20:01:02 +0200Tops2(~Tobias@dyndsl-091-249-082-055.ewe-ip-backbone.de)
2020-10-16 20:01:49 +0200mirrorbird(~psutcliff@2a00:801:42b:7891:16b1:e53f:55b2:15e1) (Ping timeout: 272 seconds)
2020-10-16 20:02:28 +0200anik(~anik@103.23.207.158)
2020-10-16 20:06:34 +0200hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-10-16 20:07:25 +0200ephemera_(~E@122.34.1.187) (Ping timeout: 240 seconds)
2020-10-16 20:08:48 +0200anik(~anik@103.23.207.158) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-10-16 20:08:48 +0200nados(~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer)
2020-10-16 20:08:52 +0200 <hyperisco> still on the hunt for a templating solution that is just a library for parsing templates and evaluating them
2020-10-16 20:08:57 +0200ephemera_(~E@122.34.1.187)
2020-10-16 20:09:05 +0200 <hyperisco> something not oddly conflated with JSON and CLI
2020-10-16 20:09:27 +0200nados(~dan@107-190-41-58.cpe.teksavvy.com)
2020-10-16 20:09:41 +0200fragamus(~michaelgo@73.93.153.117)
2020-10-16 20:10:44 +0200larou(5201f2b7@gateway/web/cgi-irc/kiwiirc.com/ip.82.1.242.183)
2020-10-16 20:11:24 +0200Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas)
2020-10-16 20:11:29 +0200 <dsal> What kind of templates? I'd expect there would be too many to choose from. e.g. https://hackage.haskell.org/package/mustache
2020-10-16 20:11:52 +0200 <fragamus> I'm having trouble constructing a Linear.V vector from a list can anyone help
2020-10-16 20:12:26 +0200 <larou> i was wondering about arrows and the support for various channels of communication over adaptive programs...
2020-10-16 20:13:26 +0200 <larou> fragamus: did you see; http://hackage.haskell.org/package/vector-0.12.1.2/docs/Data-Vector.html#g:7
2020-10-16 20:14:08 +0200 <amf> in the 4 version approach (e.g. 0.1.2.3) what number would i bump if i were to add deriving Generic to one of the exported types?
2020-10-16 20:14:33 +0200 <fragamus> looking now
2020-10-16 20:14:39 +0200geekosaur(82659a0e@host154-014.vpn.uakron.edu) (Ping timeout: 245 seconds)
2020-10-16 20:14:54 +0200 <larou> probably you want; http://hackage.haskell.org/package/vector-0.12.1.2/docs/Data-Vector.html#g:36
2020-10-16 20:15:38 +0200 <larou> amf: im not sure thats subjective?
2020-10-16 20:16:22 +0200__monty__(~toonn@unaffiliated/toonn)
2020-10-16 20:16:32 +0200anik(~anik@103.23.207.149)
2020-10-16 20:17:39 +0200Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2020-10-16 20:17:44 +0200conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-10-16 20:17:46 +0200chaosmasttter(~chaosmast@p200300c4a710fa01b4d1efe2d5e04ce9.dip0.t-ipconnect.de)
2020-10-16 20:17:50 +0200 <monochrom> amf: I think it's 0.1.2.3 -> 0.1.3.3. But see eg https://pvp.haskell.org/#leaking-instances and later the "decision tree"
2020-10-16 20:17:52 +0200 <davean> amf: 0 or 1
2020-10-16 20:18:04 +0200 <davean> well, yahm depends on your feeling on leaked instances :)
2020-10-16 20:18:35 +0200 <fragamus> larou: I am trying to construct a Linear.V V
2020-10-16 20:18:57 +0200 <larou> thats just a newtype wrapper
2020-10-16 20:19:08 +0200 <larou> so you would just dot with the newtype constructor
2020-10-16 20:19:22 +0200 <larou> V . toList
2020-10-16 20:19:37 +0200 <larou> does that work?
2020-10-16 20:19:51 +0200avdb(~avdb@ip-213-49-124-15.dsl.scarlet.be)
2020-10-16 20:19:56 +0200 <amf> or... i could just let the lib maintainer handle it :)
2020-10-16 20:19:58 +0200wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
2020-10-16 20:20:06 +0200 <fragamus> sorry larou I am not understanding
2020-10-16 20:20:35 +0200jneira_(~jneira@80.30.100.250)
2020-10-16 20:20:35 +0200jneira[m](~jneira@191.red-37-10-143.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
2020-10-16 20:20:41 +0200 <monochrom> Your case is not even an orphaned instance.
2020-10-16 20:20:53 +0200 <fragamus> larou: are you saying I must first construct a Data.Vector Vector
2020-10-16 20:20:54 +0200dhil(~dhil@195.213.192.122)
2020-10-16 20:21:03 +0200 <larou> erm, fromlist sorry
2020-10-16 20:21:11 +0200 <larou> fromList :: [a] -> Vector a
2020-10-16 20:21:16 +0200 <fragamus> ah
2020-10-16 20:21:42 +0200 <larou> V :: Vector a -> V n a
2020-10-16 20:21:52 +0200 <fragamus> ok
2020-10-16 20:21:58 +0200 <larou> so; V . fromList :: [a] -> V n a
2020-10-16 20:22:22 +0200 <fragamus> ok
2020-10-16 20:22:24 +0200ao2(~ao2@185.163.110.116)
2020-10-16 20:22:30 +0200 <fragamus> ill give that a go thanks
2020-10-16 20:22:46 +0200ao2Guest25237
2020-10-16 20:22:47 +0200 <monochrom> amf: Ah, instead, https://pvp.haskell.org/#version-numbers point 2 is the applicable point. You are adding a non-orphan instance.
2020-10-16 20:22:55 +0200 <larou> so, i was thinking, for "arrows for different coms channels within modifiable programs"
2020-10-16 20:23:31 +0200 <larou> about the kind of picture there is in arrows docs, where a pair or an either can kind of have an "arrow going through a node"
2020-10-16 20:23:49 +0200 <monochrom> and point 6 is saying "woe to your user if they added their own orphan Generic to your type" :)
2020-10-16 20:24:07 +0200 <larou> like, maybe for most of the operation of the program types are just composed together in functions as usual
2020-10-16 20:24:22 +0200thir(~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-10-16 20:24:32 +0200 <larou> but then, there can be an option to like, generate a replacement for some function, and pass this through the program to where it replaces some node
2020-10-16 20:24:51 +0200thir(~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de)
2020-10-16 20:25:03 +0200 <larou> so it would kind of have an Either, from if it was one or the other of these kinds of data being passed through the program
2020-10-16 20:25:11 +0200 <larou> and a pair, to allow it to get to where it needs to go
2020-10-16 20:25:14 +0200anik(~anik@103.23.207.149) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2020-10-16 20:25:15 +0200justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-10-16 20:25:42 +0200 <larou> im not sure what those opperations are called in arrows... but does that seem comprehensible?
2020-10-16 20:25:56 +0200wroathe_(~wroathe@75-146-43-37-Minnesota.hfc.comcastbusiness.net)
2020-10-16 20:26:51 +0200 <larou> i guess this ends up being quite complicated though. like, if one function can be modified by another, thats fine, since then this pathway can be "hard coded"
2020-10-16 20:27:14 +0200 <larou> but if you need any part to be able to modify any other part, then it seems like some kind of crossroads would be needed
2020-10-16 20:27:42 +0200 <larou> like signal boxes on train tracks, to direct the modification to where it needs to go
2020-10-16 20:27:56 +0200 <amf> monochrom: ah ok, that does make sense, thanks!
2020-10-16 20:27:58 +0200hackagehslua 1.3.0 - Bindings to Lua, an embeddable scripting language https://hackage.haskell.org/package/hslua-1.3.0 (tarleb)
2020-10-16 20:28:19 +0200wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2020-10-16 20:28:24 +0200 <larou> it needs to be able to pass the data through the program along pathways that can be dynamically configured
2020-10-16 20:28:27 +0200alp_(~alp@88.126.45.36) (Ping timeout: 258 seconds)
2020-10-16 20:29:04 +0200 <larou> kind of like in FPGAs where the logic units are connected together by programable switching paths, i forget what they are called,
2020-10-16 20:29:19 +0200ephemera_(~E@122.34.1.187) (Remote host closed the connection)
2020-10-16 20:29:25 +0200thir(~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-10-16 20:29:31 +0200 <larou> oh, they call it "programable routing"
2020-10-16 20:29:40 +0200alp_(~alp@2a01:e0a:58b:4920:70f4:103a:daad:d45e)
2020-10-16 20:30:27 +0200 <larou> or "programable interconnections"
2020-10-16 20:30:36 +0200ephemera_(~E@122.34.1.187)
2020-10-16 20:30:40 +0200 <larou> they just have a 2d grid, so its quite simple
2020-10-16 20:30:41 +0200wroathe_wroathe
2020-10-16 20:30:50 +0200 <hyperisco> dsal, mustache is oddly confused with both JSON and CLI
2020-10-16 20:30:56 +0200 <larou> with just 4 wires and the switching block
2020-10-16 20:30:58 +0200 <hyperisco> but those sorts of templates, yes
2020-10-16 20:31:03 +0200 <dsal> It's just the first thing I thought of.
2020-10-16 20:31:29 +0200 <hyperisco> not savvy on templating languages anymore
2020-10-16 20:31:43 +0200 <dsal> My last web thing was in elm, which doesn't do templating language at all. :/
2020-10-16 20:31:57 +0200 <larou> "Each CLB is tied to a switch matrix to access the general routing structure. The switch matrix provides programmable multiplexers, which are used to select the signals in a given routing channel and thereby connect vertical and horizontal lines."
2020-10-16 20:32:02 +0200 <larou> https://towardsdatascience.com/introduction-to-fpga-and-its-architecture-20a62c14421c
2020-10-16 20:32:15 +0200 <larou> i was thinking something like this might be doable with arrows
2020-10-16 20:32:29 +0200 <larou> but on an arbitrary architecture, not just a 2d grid
2020-10-16 20:32:50 +0200DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2020-10-16 20:34:09 +0200 <larou> and obviously, with arbitrary types of data sent along the edges, not just the binary or floating point signals - since we have functions in a program instead of logic units, or configurable logic blocks, as in a FPGA
2020-10-16 20:34:12 +0200 <hyperisco> maybe I should just whip up my own with megaparsec lol, isn't that complicated oO
2020-10-16 20:34:28 +0200hackagetasty-lua 0.2.3.1 - Write tests in Lua, integrate into tasty. https://hackage.haskell.org/package/tasty-lua-0.2.3.1 (tarleb)
2020-10-16 20:34:38 +0200geekosaur(82659a0e@host154-014.vpn.uakron.edu)
2020-10-16 20:35:13 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-10-16 20:35:18 +0200conal(~conal@64.71.133.70)
2020-10-16 20:36:32 +0200 <monochrom> larou: The value of your messages to #haskell is decreasing rapidly. I ask you to stop.
2020-10-16 20:37:57 +0200hackagehslua-module-text 0.3.0.1 - Lua module for text https://hackage.haskell.org/package/hslua-module-text-0.3.0.1 (tarleb)
2020-10-16 20:38:08 +0200 <larou> ah, your right, im getting distracted - sorry. it was just an afterthought to a discussion about the "fanout" operation yesterday
2020-10-16 20:38:28 +0200 <larou> i guess id be better off trying to grapple with the arrows framework in a less complex application
2020-10-16 20:38:30 +0200 <hyperisco> why are all template processors dependent on Aeson lol
2020-10-16 20:38:34 +0200tabaqui(~tabaqui@46.39.45.136)
2020-10-16 20:38:38 +0200 <tabaqui> hey all
2020-10-16 20:38:51 +0200 <monochrom> aeson is our go-to JSON library.
2020-10-16 20:39:57 +0200 <tabaqui> Do you know a good tutorial for recursion-schemes?
2020-10-16 20:40:28 +0200hackagehslua-module-system 0.2.2.1 - Lua module wrapper around Haskell's System module. https://hackage.haskell.org/package/hslua-module-system-0.2.2.1 (tarleb)
2020-10-16 20:40:38 +0200 <phadej> tabaqui: there isn't
2020-10-16 20:40:47 +0200 <monochrom> Yes IMO but my opinion includes only learning catamorphisms and anamorphisms, and ignoring the rest.
2020-10-16 20:41:07 +0200 <phadej> that's not wrong :)
2020-10-16 20:41:28 +0200hackagehakyll-process 0.0.2.0 - Hakyll compiler for arbitrary external processes. https://hackage.haskell.org/package/hakyll-process-0.0.2.0 (jhmcstanton)
2020-10-16 20:41:28 +0200 <tabaqui> well, -morphisms are pretty easy, but I'm interesting in Fi'ed datatype
2020-10-16 20:41:35 +0200 <tabaqui> *Fix'ed datatypes
2020-10-16 20:41:43 +0200 <phadej> you don't need Fix for recursion schemes
2020-10-16 20:42:14 +0200 <tabaqui> I want to combine them to build AST interpreter
2020-10-16 20:42:36 +0200 <phadej> you don
2020-10-16 20:42:37 +0200 <phadej> 't
2020-10-16 20:42:44 +0200 <phadej> use concretely recursive types
2020-10-16 20:42:54 +0200 <tabaqui> nah, it's boring:)
2020-10-16 20:43:01 +0200kuribas(~user@ptr-25vy0i94ezsnlaecbal.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2020-10-16 20:43:20 +0200 <monochrom> in which case something like http://www.cs.ox.ac.uk/publications/publication2360-abstract.html
2020-10-16 20:43:31 +0200 <phadej> you get barely any mileage from recursion s chemes for an AST
2020-10-16 20:43:44 +0200 <phadej> about everything interesting isn't just cata
2020-10-16 20:44:04 +0200ephemera_(~E@122.34.1.187) (Ping timeout: 246 seconds)
2020-10-16 20:44:05 +0200jneira_(~jneira@80.30.100.250) (Ping timeout: 240 seconds)
2020-10-16 20:44:21 +0200 <monochrom> and http://www.cs.ru.nl/B.Jacobs/PAPERS/JR.pdf
2020-10-16 20:44:23 +0200ephemera_(~E@122.34.1.187)
2020-10-16 20:44:33 +0200 <tabaqui> monochrom: seems good, thanks
2020-10-16 20:44:34 +0200jneira_(~jneira@191.red-37-10-143.dynamicip.rima-tde.net)
2020-10-16 20:45:25 +0200thc202(~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
2020-10-16 20:45:42 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 20:46:20 +0200 <monochrom> Gibbon's work with the Fix type IIRC. Jacob's is general math.
2020-10-16 20:46:23 +0200 <tabaqui> phadej: why not, it looks very promising
2020-10-16 20:46:50 +0200 <monochrom> But I certainly needed Jacob's to prepare me. It also teaches many other things.
2020-10-16 20:48:16 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz)
2020-10-16 20:48:41 +0200 <monochrom> And now, for "just one step away from cata/ana", I present to you http://www.cs.ox.ac.uk/ralf.hinze/publications/index.html#P32
2020-10-16 20:50:11 +0200 <zincy__> What is/are Jacobs?
2020-10-16 20:50:26 +0200 <monochrom> Paper author
2020-10-16 20:50:47 +0200 <larou> "adjoint folds and unfolds" !?
2020-10-16 20:50:48 +0200jneira_(~jneira@191.red-37-10-143.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
2020-10-16 20:50:52 +0200 <monochrom> I guess Jacobs's
2020-10-16 20:50:54 +0200 <monochrom> Yeah
2020-10-16 20:50:59 +0200 <tabaqui> monochrom: till now, I've only learned this: https://www.youtube.com/watch?v=TEvDaKg4XXA
2020-10-16 20:51:19 +0200jneira_(~jneira@80.30.100.102)
2020-10-16 20:51:33 +0200 <larou> if there is a way to make anything less appealing it is to add the word "adjoint" to it...
2020-10-16 20:51:34 +0200 <geekosaur> "Jacobs'" if we're being pedantic. Except usage is still changing and not settled
2020-10-16 20:51:43 +0200 <geekosaur> yay natural language
2020-10-16 20:51:45 +0200 <zincy__> Can someone unpack this sentence "The distinction between algebra and coalgebra pervades CS .. described usually in terms of data versus machines?
2020-10-16 20:51:53 +0200 <monochrom> Well mine was a simple typo.
2020-10-16 20:52:15 +0200 <tabaqui> fun fact: haskell programmers don't laugh at function "anaL"
2020-10-16 20:52:23 +0200 <monochrom> Don't attribute to rich linguistic studies what can be attributed to typos and ELS.
2020-10-16 20:52:27 +0200hackagehslua-aeson 1.0.3.1 - Allow aeson data types to be used with lua. https://hackage.haskell.org/package/hslua-aeson-1.0.3.1 (tarleb)
2020-10-16 20:52:51 +0200 <monochrom> Like, as well, "Gibbon's work with Fix" should be "Gibbon's works with Fix", too.
2020-10-16 20:52:53 +0200 <larou> zincy__ : its a nod towards folds and unfolds
2020-10-16 20:53:01 +0200 <larou> i think...
2020-10-16 20:53:07 +0200 <monochrom> err and there I have a new typo of a spurrious space
2020-10-16 20:53:11 +0200 <zincy__> Oh thanks
2020-10-16 20:53:13 +0200 <larou> slightly confused about this being in terms of "algebras"
2020-10-16 20:53:37 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 264 seconds)
2020-10-16 20:54:08 +0200 <monochrom> I have a feeling that future archaelogical linguistics in the 25th century looking at my IRC log and trying to theorize on my peculiar writing "style", any theory except honest typo.
2020-10-16 20:54:28 +0200Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2020-10-16 20:55:03 +0200 <larou> hmm, actually, if "coalgegras" is going to include "things that dont have constructors" including *modifiers*, im not sure the fold vs unfold perspective isnt stretched beyond applicability
2020-10-16 20:55:20 +0200 <geekosaur> one hopes their corpus consists of a bit more than just your IRC messages :)
2020-10-16 20:56:32 +0200 <geekosaur> (then again, if they've any sense at all they'll see English and give up :)
2020-10-16 20:56:51 +0200 <monochrom> zincy__: Do you already know of "Let F be a functor. An F-algebra is defined as: ..."?
2020-10-16 20:57:22 +0200 <monochrom> Err actually I have a more elementary way. Do you already know of both foldr and unfoldr for []?
2020-10-16 20:58:02 +0200albertus1(~seb@x4db5a1e1.dyn.telefonica.de)
2020-10-16 20:58:10 +0200 <monochrom> foldr is a logical conclusion of "data [] a = [] | a : [] a" so it feels like data.
2020-10-16 20:58:33 +0200Guest88073lep-delete
2020-10-16 20:58:55 +0200 <monochrom> unfoldr is a little program that emits a list, it feels like a list-producing machine. You can even ascribe an "internal state" to it.
2020-10-16 20:59:59 +0200thir(~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de)
2020-10-16 21:00:10 +0200 <larou> i get confused about list being CoFree
2020-10-16 21:00:17 +0200 <zincy__> Yeah I only know about foldr and unfoldr
2020-10-16 21:00:25 +0200 <larou> but its still "data" as opposed to "codata"
2020-10-16 21:00:30 +0200 <larou> whatever that is...
2020-10-16 21:01:05 +0200 <larou> list is both isnt it, both foldable and unfoldable...
2020-10-16 21:01:07 +0200 <monochrom> > unfoldr (\s -> if s==10 then Nothing else Just (even s, s+1)) 0
2020-10-16 21:01:10 +0200 <lambdabot> [True,False,True,False,True,False,True,False,True,False]
2020-10-16 21:01:35 +0200pjb(~t@2a01cb04063ec50091a4fa1f69281349.ipv6.abo.wanadoo.fr)
2020-10-16 21:02:07 +0200 <larou> and what about Free cf. Free Monads, for Free f, where f is a Functor
2020-10-16 21:02:08 +0200 <monochrom> My example can be narrated as: I have an internal state, initially 0. If the state value hits 10, end; else, emit one more message "even s" and the next state is s+1.
2020-10-16 21:02:28 +0200 <zincy__> So is this kinda like - machines produce data and unfoldr is our machine and lists are data?
2020-10-16 21:02:40 +0200 <larou> (monoids in the category of endofunctors.... algebra?)
2020-10-16 21:02:40 +0200 <monochrom> So I have a little automaton that has an internal state and emits messages accordingly for several steps.
2020-10-16 21:02:47 +0200 <monochrom> Yes
2020-10-16 21:02:51 +0200 <zincy__> Oh cool
2020-10-16 21:03:05 +0200 <larou> :t build
2020-10-16 21:03:07 +0200 <lambdabot> error:
2020-10-16 21:03:07 +0200 <lambdabot> • Variable not in scope: build
2020-10-16 21:03:07 +0200 <lambdabot> • Perhaps you meant ‘buildG’ (imported from Data.Graph)
2020-10-16 21:03:15 +0200berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds)
2020-10-16 21:03:31 +0200berberman(~berberman@unaffiliated/berberman)
2020-10-16 21:03:44 +0200 <larou> :t \f -> foldr f (:) []
2020-10-16 21:03:45 +0200 <lambdabot> (a1 -> (a2 -> [a2] -> [a2]) -> a2 -> [a2] -> [a2]) -> a2 -> [a2] -> [a2]
2020-10-16 21:04:03 +0200 <larou> oh no, i got that very wrong...
2020-10-16 21:04:37 +0200 <larou> but like "unfold" isnt the machine... nor is the argument to it. its both the unfold and its argument, that produces the list
2020-10-16 21:04:44 +0200 <larou> :t unfoldr
2020-10-16 21:04:45 +0200 <lambdabot> (b -> Maybe (a, b)) -> b -> [a]
2020-10-16 21:05:04 +0200 <larou> so i guess its just anything thats (b -> [a])
2020-10-16 21:05:25 +0200 <larou> ah, i was thinking of Church encoding, not build
2020-10-16 21:05:30 +0200 <larou> like, a partially applied fold
2020-10-16 21:05:49 +0200 <larou> :t foldr undefined
2020-10-16 21:05:50 +0200 <lambdabot> Foldable t => b -> t a -> b
2020-10-16 21:06:06 +0200boo(d03b9e15@208.59.158.21)
2020-10-16 21:06:08 +0200 <larou> oh, i guess it needs the initial data too...
2020-10-16 21:06:12 +0200 <larou> :t foldr undefined undefined
2020-10-16 21:06:13 +0200 <lambdabot> Foldable t => t a -> b
2020-10-16 21:06:25 +0200xerox_(~xerox@unaffiliated/xerox) (Ping timeout: 240 seconds)
2020-10-16 21:06:37 +0200booGuest98072
2020-10-16 21:06:38 +0200 <monochrom> larou, you're being anal about "unfoldr is the machine". Clearly, you could have also picked on "the State monad" --- there is no State monad, you always have to pick a type T and say "the State T monad".
2020-10-16 21:06:38 +0200 <larou> which is dual to (b -> t a) from the partially applied unfold
2020-10-16 21:07:08 +0200Franciman(~francesco@host-82-48-166-25.retail.telecomitalia.it) (Ping timeout: 260 seconds)
2020-10-16 21:07:35 +0200 <larou> well, just considering; f a -> b, and b -> f a, its clear one of them produces data and one of them consumes it
2020-10-16 21:07:42 +0200thir(~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-10-16 21:08:33 +0200 <larou> anyway, where does the "adjoint" enter?
2020-10-16 21:08:41 +0200 <larou> its supposed to generalise over this right/
2020-10-16 21:09:42 +0200nineonine(~nineonine@50.216.62.2) (Ping timeout: 272 seconds)
2020-10-16 21:10:01 +0200 <monochrom> There is a URL, you could use it.
2020-10-16 21:10:28 +0200Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 256 seconds)
2020-10-16 21:11:01 +0200 <monochrom> Like I said the value of your messages is dropping under 0.
2020-10-16 21:11:13 +0200 <larou> nice summary
2020-10-16 21:11:35 +0200gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
2020-10-16 21:12:21 +0200 <larou> can you explain though? i dont know enough theory to understand this paper...
2020-10-16 21:12:53 +0200 <larou> some vague intuition to serve as a foundation to grasp at the abstract concepts?
2020-10-16 21:13:03 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz)
2020-10-16 21:13:22 +0200 <monochrom> Learn adjoint functors, then?
2020-10-16 21:13:33 +0200 <larou> what are those for?
2020-10-16 21:13:33 +0200xerox_(~xerox@unaffiliated/xerox)
2020-10-16 21:13:39 +0200 <monochrom> Adjunction itself takes a while to learn already.
2020-10-16 21:13:47 +0200 <monochrom> For reading Hinze's paper?
2020-10-16 21:13:52 +0200 <larou> ...
2020-10-16 21:14:16 +0200 <monochrom> I certainly avoided learning adjunction until I found Hinze's paper. I learned adjunction for it.
2020-10-16 21:14:35 +0200 <larou> ah, that must have given you the ability to explain it in less technical terms!
2020-10-16 21:14:40 +0200 <monochrom> It's a good enough justification for me.
2020-10-16 21:15:03 +0200 <monochrom> Do I owe you something?
2020-10-16 21:15:48 +0200nineonine(~nineonine@50.216.62.2)
2020-10-16 21:16:01 +0200 <larou> its like Kan extensions, there is this commuting diagram
2020-10-16 21:16:07 +0200 <larou> ok....
2020-10-16 21:17:38 +0200kenran(~maier@b2b-37-24-119-190.unitymedia.biz) (Ping timeout: 265 seconds)
2020-10-16 21:18:48 +0200wroathe(~wroathe@75-146-43-37-Minnesota.hfc.comcastbusiness.net) (Ping timeout: 260 seconds)
2020-10-16 21:18:56 +0200kenran(~maier@87.123.205.83)
2020-10-16 21:20:36 +0200conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-10-16 21:20:37 +0200mirrorbird(~psutcliff@m83-187-163-53.cust.tele2.se)
2020-10-16 21:21:54 +0200gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-10-16 21:22:55 +0200 <larou> so we have datatypes as the fixed points of base functors...
2020-10-16 21:24:18 +0200 <larou> F(uF) = uF
2020-10-16 21:24:36 +0200conal(~conal@64.71.133.70)
2020-10-16 21:25:03 +0200 <larou> vF = F(vF)
2020-10-16 21:25:08 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-16 21:25:18 +0200 <larou> those cant be equals signs, they must be some kind of arrow
2020-10-16 21:25:41 +0200 <larou> thats like monoids in endofunctors by the looks of it
2020-10-16 21:25:50 +0200 <larou> or comonoids... for the dual
2020-10-16 21:26:58 +0200hackagesilkscreen 0.0.0.3 - Prettyprinting transformers. https://hackage.haskell.org/package/silkscreen-0.0.0.3 (robrix)
2020-10-16 21:27:08 +0200 <larou> it says that in haskell, the inductive and coinductive data coincide, unlike Charity or Coq
2020-10-16 21:28:08 +0200 <larou> (since we can pattern match on the constructor - foldables are unfoldables?)
2020-10-16 21:30:05 +0200dhil(~dhil@195.213.192.122) (Ping timeout: 240 seconds)
2020-10-16 21:30:19 +0200 <larou> it references this; https://www.cs.tufts.edu/~nr/cs257/archive/tim-sheard/two-level-unification.pdf
2020-10-16 21:31:03 +0200 <larou> "The first of these is the definition of recursive
2020-10-16 21:31:03 +0200 <larou> data types using two levels: a structure defining level, and
2020-10-16 21:31:04 +0200 <larou> a recursive knot-tying level"
2020-10-16 21:31:14 +0200 <larou> woop woop!
2020-10-16 21:31:33 +0200conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-10-16 21:31:54 +0200tensorpudding(~michael@unaffiliated/tensorpudding) (Quit: ZNC - http://znc.in)
2020-10-16 21:32:45 +0200ephemera_(~E@122.34.1.187) (Remote host closed the connection)
2020-10-16 21:34:03 +0200ephemera_(~E@122.34.1.187)
2020-10-16 21:34:14 +0200conal(~conal@64.71.133.70)
2020-10-16 21:34:34 +0200 <larou> hmm, then it says something about termination. seems like folds need to terminate, so inductive data is finite - while unfolds are potentially infinite
2020-10-16 21:34:43 +0200 <larou> i guess thats why we have lazy evaluation
2020-10-16 21:36:54 +0200 <monochrom> Haha "class Pretty a" "Overloaded conversion to Doc." "Laws: 1. output should be pretty. :-)"
2020-10-16 21:37:10 +0200fragamus(~michaelgo@73.93.153.117) (Ping timeout: 256 seconds)
2020-10-16 21:37:12 +0200 <dsal> *objectively*
2020-10-16 21:39:10 +0200 <larou> argh! then it does trees as mutually recursive base functors as a categorical product
2020-10-16 21:41:07 +0200 <larou> it says " Haskell has no concept of pairs on the type level, that is, no product
2020-10-16 21:41:08 +0200 <larou> kinds"
2020-10-16 21:41:12 +0200 <larou> is that still true?
2020-10-16 21:42:38 +0200Tops2(~Tobias@dyndsl-091-249-082-055.ewe-ip-backbone.de) (Quit: Leaving.)
2020-10-16 21:43:24 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net)
2020-10-16 21:43:43 +0200dhil(~dhil@78.156.97.38)
2020-10-16 21:44:42 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 265 seconds)
2020-10-16 21:45:10 +0200 <monochrom> I forgot what it means, but in 2010 even GHC didn't have an interesting kind system.
2020-10-16 21:45:48 +0200cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 272 seconds)
2020-10-16 21:46:50 +0200kenran(~maier@87.123.205.83) (Ping timeout: 260 seconds)
2020-10-16 21:48:05 +0200 <larou> well, the paper goes from mutually recursive datatypes as fixed points of pairs of base functors
2020-10-16 21:48:09 +0200 <dminuoso> hekkaidekapus: Cheers, yeah I noticed. Been pondering a bit about it
2020-10-16 21:48:21 +0200 <larou> and then extends this to parametric recursive datatypes
2020-10-16 21:48:42 +0200 <larou> anyway, i got to the point where it mentions adjunction
2020-10-16 21:49:49 +0200 <larou> basiclly just says the fixed point definition for the base functor in the Monad vs Comonad style F-algebra, need to be adjoint to each other
2020-10-16 21:50:09 +0200 <dminuoso> hekkaidekapus: My main issue is, we dont have any specification in the Haskell report to talk about what context in instance declarations means. And Im struggling at understanding at full depth the quoted Note.
2020-10-16 21:50:27 +0200 <larou> something about a datatypes realisation being "unique" to a given fixed point induction/coinduction
2020-10-16 21:51:28 +0200hackagelittle-logger 0.3.0 - Basic logging based on co-log https://hackage.haskell.org/package/little-logger-0.3.0 (ejconlon)
2020-10-16 21:53:45 +0200 <larou> rarg. then instead of having the datatype as the solution of the fixed point equation of the base functor
2020-10-16 21:54:01 +0200 <larou> it does a pullback by the adjoint morphism (or something)
2020-10-16 21:54:22 +0200 <larou> like, you use the unfold version of the base function, and the casting from that to the fold version
2020-10-16 21:54:36 +0200 <larou> and *that* gives an "adjoint fold"
2020-10-16 21:54:46 +0200 <larou> what a bizarre concept
2020-10-16 21:55:54 +0200 <larou> so you get "adjoint base functions"
2020-10-16 21:57:00 +0200Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 256 seconds)
2020-10-16 21:57:05 +0200 <larou> if i was going to say things that are almost wrong to explain, it would be something like "imagine if you tried to fold using the unfolding function, and that worked somehow, but you were doing this to define the datatypes"
2020-10-16 21:57:35 +0200 <larou> almost not wrong*
2020-10-16 21:58:13 +0200 <larou> apparently this is more expressive!?
2020-10-16 21:58:34 +0200 <larou> like adjoint-folds "capture more" than regular folds...
2020-10-16 21:59:41 +0200 <larou> he says they are at least as expressive since Id is dual to itself...
2020-10-16 21:59:45 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2020-10-16 21:59:49 +0200 <larou> *baffled*
2020-10-16 22:01:34 +0200Xnuk(~xnuk@vultr.xnu.kr) (Quit: ZNC - https://znc.in)
2020-10-16 22:01:45 +0200 <larou> and then, apparently, the adjunction expressed by currying somehow leads to accumulator patterns!?
2020-10-16 22:01:49 +0200Xnuk(~xnuk@vultr.xnu.kr)
2020-10-16 22:03:29 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
2020-10-16 22:04:53 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net)
2020-10-16 22:05:23 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net) (Read error: Connection reset by peer)
2020-10-16 22:05:28 +0200avdb(~avdb@ip-213-49-124-15.dsl.scarlet.be) (Ping timeout: 260 seconds)
2020-10-16 22:05:50 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net)
2020-10-16 22:06:03 +0200 <larou> and then something to do with the adjunction with categorical product giving mutuomorphisms such as the paramorphism required for the basecase guard used in the definition of fac
2020-10-16 22:06:23 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net) (Read error: No route to host)
2020-10-16 22:06:48 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net)
2020-10-16 22:06:48 +0200conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-10-16 22:08:08 +0200conal(~conal@64.71.133.70)
2020-10-16 22:11:05 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net) (Ping timeout: 240 seconds)
2020-10-16 22:11:30 +0200 <larou> and then by adjunction with the type application for summing over parametric datatypes as an adjoint fold...
2020-10-16 22:11:48 +0200 <larou> adjunction with the opperation of type application*
2020-10-16 22:12:03 +0200 <larou> which is equally as peculiar
2020-10-16 22:13:29 +0200Guest_72(1fcdcd84@31.205.205.132)
2020-10-16 22:13:40 +0200Guest_72(1fcdcd84@31.205.205.132) (Remote host closed the connection)
2020-10-16 22:14:45 +0200 <larou> and then finally concatination by the adjunction ebtween left and right kan extensions... just because...
2020-10-16 22:15:04 +0200Guest98072(d03b9e15@208.59.158.21) (Ping timeout: 245 seconds)
2020-10-16 22:15:06 +0200 <larou> what a waste of time
2020-10-16 22:15:08 +0200larou(5201f2b7@gateway/web/cgi-irc/kiwiirc.com/ip.82.1.242.183) (Quit: Connection closed)
2020-10-16 22:19:43 +0200rprije(~rprije@203-219-208-42.static.tpgi.com.au)
2020-10-16 22:20:09 +0200conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-10-16 22:20:46 +0200GyroW(~GyroW@unaffiliated/gyrow) (Ping timeout: 258 seconds)
2020-10-16 22:21:28 +0200GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be)
2020-10-16 22:21:31 +0200GyroW(~GyroW@ptr-48ujrfd1ztq5fjywfw3.18120a2.ip6.access.telenet.be) (Changing host)
2020-10-16 22:21:31 +0200GyroW(~GyroW@unaffiliated/gyrow)
2020-10-16 22:21:45 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-16 22:26:25 +0200jneira_(~jneira@80.30.100.102) (Ping timeout: 240 seconds)
2020-10-16 22:26:28 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-10-16 22:27:11 +0200jneira_(~jneira@191.red-37-10-143.dynamicip.rima-tde.net)
2020-10-16 22:29:05 +0200supercoven(~Supercove@dsl-hkibng32-54fb54-166.dhcp.inet.fi) (Ping timeout: 240 seconds)
2020-10-16 22:29:53 +0200 <johnw> who are you talking to, larou?
2020-10-16 22:30:18 +0200 <geekosaur> they left. thankfully
2020-10-16 22:30:25 +0200shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:613f:c21f:11b3:bc2c) (Ping timeout: 240 seconds)
2020-10-16 22:30:40 +0200 <johnw> his speech sounds awfully similar to another user we banned about six montsh ago
2020-10-16 22:31:20 +0200knupfer(~Thunderbi@i5E86B451.versanet.de) (Quit: knupfer)
2020-10-16 22:31:20 +0200jneira_(~jneira@191.red-37-10-143.dynamicip.rima-tde.net) (Read error: Connection reset by peer)
2020-10-16 22:31:21 +0200knupfer1(~Thunderbi@200116b82cf69500681ba1c078ac2f17.dip.versatel-1u1.de)
2020-10-16 22:31:29 +0200thir(~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de)
2020-10-16 22:31:40 +0200jneira_(~jneira@80.30.100.250)
2020-10-16 22:33:12 +0200Tops2(~Tobias@dyndsl-091-249-082-055.ewe-ip-backbone.de)
2020-10-16 22:33:44 +0200knupfer1knupfer
2020-10-16 22:35:51 +0200thir(~thir@p200300f27f02580074cf2a3fa9ab5ee7.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2020-10-16 22:36:21 +0200shutdown_-h_now(~arjan@2001:1c06:2d0b:2312:9049:722b:5333:309e)
2020-10-16 22:38:14 +0200Gurkenglas_(~Gurkengla@unaffiliated/gurkenglas)
2020-10-16 22:39:13 +0200geekosaur(82659a0e@host154-014.vpn.uakron.edu) (Remote host closed the connection)
2020-10-16 22:39:59 +0200knupfer(~Thunderbi@200116b82cf69500681ba1c078ac2f17.dip.versatel-1u1.de) (Ping timeout: 244 seconds)
2020-10-16 22:40:37 +0200blip(5e86b451@gateway/web/cgi-irc/kiwiirc.com/ip.94.134.180.81) (Ping timeout: 246 seconds)
2020-10-16 22:44:59 +0200cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-10-16 22:46:29 +0200alp_(~alp@2a01:e0a:58b:4920:70f4:103a:daad:d45e) (Ping timeout: 272 seconds)
2020-10-16 22:47:31 +0200ggole(~ggole@2001:8003:8119:7200:245d:f234:9b48:f3a5) (Quit: Leaving)
2020-10-16 22:48:46 +0200knupfer(~Thunderbi@i5E86B451.versanet.de)
2020-10-16 22:49:06 +0200 <gentauro> johnw: who left?
2020-10-16 22:51:01 +0200 <Uniaika> johnw: yeah I kinda noticed that
2020-10-16 22:55:13 +0200hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Quit: Curry, you fools!)
2020-10-16 22:55:50 +0200tv(~tv@unaffiliated/tv) (Read error: Connection reset by peer)
2020-10-16 22:56:31 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-10-16 22:57:12 +0200conal(~conal@64.71.133.70)
2020-10-16 22:57:17 +0200heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-10-16 22:57:22 +0200xff0x(~fox@2001:1a81:5391:7900:f127:8532:42d4:579b) (Ping timeout: 260 seconds)
2020-10-16 22:57:30 +0200alp_(~alp@2a01:e0a:58b:4920:8c10:5fbc:1459:e068)
2020-10-16 22:57:55 +0200xff0x(~fox@2001:1a81:5391:7900:1d93:24cf:d0e0:8889)
2020-10-16 22:59:14 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:e990:a27c:f553:f1d1) (Quit: karanlikmadde)
2020-10-16 23:00:01 +0200Guest25237(~ao2@185.163.110.116) ()
2020-10-16 23:01:09 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-16 23:03:20 +0200elliott__(~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
2020-10-16 23:03:42 +0200 <monochrom> I'm waiting for one last straw to be an excuse to ban them. :)
2020-10-16 23:03:56 +0200 <monochrom> Actually if some of you already want to ban now, I can do it.
2020-10-16 23:04:28 +0200hackagebuffet 0.5.0 - Assembles many Dockerfiles in one. https://hackage.haskell.org/package/buffet-0.5.0 (evolutics)
2020-10-16 23:05:28 +0200hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-10-16 23:05:44 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net)
2020-10-16 23:05:54 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2020-10-16 23:07:23 +0200hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-10-16 23:08:02 +0200toorevitimirp(~tooreviti@117.182.180.0) (Ping timeout: 260 seconds)
2020-10-16 23:08:20 +0200justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-10-16 23:10:06 +0200 <proofofme> which package do you guys use to convert a string of CSV to a list of elements? I saw there are several
2020-10-16 23:12:43 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
2020-10-16 23:13:03 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net)
2020-10-16 23:13:13 +0200tv(~tv@unaffiliated/tv)
2020-10-16 23:13:42 +0200 <monochrom> I use cassava
2020-10-16 23:14:45 +0200 <monochrom> More honestly, there is some 10% of the easy case I just use Data.List.span/break and split at commas :)
2020-10-16 23:15:05 +0200Zush(~Zushauque@d67-193-170-251.home3.cgocable.net)
2020-10-16 23:15:10 +0200Zush(~Zushauque@d67-193-170-251.home3.cgocable.net) (Client Quit)
2020-10-16 23:15:37 +0200Zus(~Zushauque@d67-193-170-251.home3.cgocable.net)
2020-10-16 23:16:19 +0200 <monochrom> But I escalate to cassava when I need it properly done, esp if there is something like 43591,"monochrom, inc."
2020-10-16 23:16:44 +0200 <proofofme> thank you! I will try Data.List.span/break!
2020-10-16 23:18:23 +0200p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Quit: ZNC 1.8.1 - https://znc.in)
2020-10-16 23:18:55 +0200p3n(~p3n@217.198.124.246)
2020-10-16 23:19:36 +0200frdg(47b88ff9@pool-71-184-143-249.bstnma.fios.verizon.net) ()
2020-10-16 23:19:42 +0200frdg(47b88ff9@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-10-16 23:20:53 +0200hive-mind(~hivemind@rrcs-67-53-148-69.west.biz.rr.com) (Ping timeout: 265 seconds)
2020-10-16 23:21:19 +0200danvet_(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
2020-10-16 23:24:45 +0200 <proofofme> hmmm. how does span translate the literal string to the list of elements?
2020-10-16 23:25:03 +0200 <monochrom> It doesn't. It just splits on the first comma.
2020-10-16 23:25:21 +0200 <monochrom> Actually even a bit less than that.
2020-10-16 23:25:45 +0200 <monochrom> > break (',' ==) "abc,def,ghi"
2020-10-16 23:25:47 +0200 <lambdabot> ("abc",",def,ghi")
2020-10-16 23:26:28 +0200 <monochrom> You add your own code to detect the leading comma in ",def..." and strip it
2020-10-16 23:26:44 +0200 <monochrom> You also add your own recursion to continue.
2020-10-16 23:27:15 +0200 <monochrom> You can steal code from "words" keeping in mind "words" splits on spaces.
2020-10-16 23:27:41 +0200 <proofofme> hmmm I seee
2020-10-16 23:27:58 +0200 <proofofme> can this be foldr'ed?
2020-10-16 23:28:08 +0200 <monochrom> and the fact that words "abc def" = ["abc", "def"] but you want something different for "abc,,,,,def"
2020-10-16 23:28:24 +0200knupfer(~Thunderbi@i5E86B451.versanet.de) (Ping timeout: 272 seconds)
2020-10-16 23:28:28 +0200hackagepostgres-websockets 0.10.0.0 - Middleware to map LISTEN/NOTIFY messages to Websockets https://hackage.haskell.org/package/postgres-websockets-0.10.0.0 (diogob)
2020-10-16 23:28:36 +0200 <monochrom> No.
2020-10-16 23:30:21 +0200machinedgod(~machinedg@24.105.81.50)
2020-10-16 23:30:45 +0200 <monochrom> Maybe I should also let you know of http://hackage.haskell.org/package/split so you don't have to write your own recursion.
2020-10-16 23:31:04 +0200 <monochrom> But here is my real consideration:
2020-10-16 23:31:50 +0200 <monochrom> If you don't plan to worry about 43591,"monochrom, inc.", why incur a dependency? The recursion is just 3 lines.
2020-10-16 23:32:27 +0200 <monochrom> If you do want to incur a dependency, why not incur the proper one?
2020-10-16 23:32:43 +0200justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
2020-10-16 23:33:08 +0200 <proofofme> so you WOULD use the split package for an easy case?
2020-10-16 23:33:15 +0200 <monochrom> No.
2020-10-16 23:33:43 +0200Alleria_(~AllahuAkb@2604:2000:1484:26:c13:bf83:d3a4:854a) (Ping timeout: 244 seconds)
2020-10-16 23:34:11 +0200 <proofofme> the elements I want to split contain stuff like the 43591, "monochrom, inc."
2020-10-16 23:34:25 +0200 <monochrom> Then use cassava
2020-10-16 23:34:28 +0200 <proofofme> there are a lot of random chars, even ',' that will be in it. ah ok
2020-10-16 23:34:30 +0200 <proofofme> cool
2020-10-16 23:34:55 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-10-16 23:35:16 +0200slack1256(~slack1256@181.203.95.77)
2020-10-16 23:36:11 +0200Alleria_(~AllahuAkb@2604:2000:1484:26:dcad:5cf5:9c19:447f)
2020-10-16 23:38:18 +0200proofofme(~proofofme@184-96-74-65.hlrn.qwest.net) (Remote host closed the connection)
2020-10-16 23:38:28 +0200whatisRT(~whatisRT@2002:5b41:6a33:0:d585:23a3:86e4:f2b4)
2020-10-16 23:41:35 +0200Ariakenom(~Ariakenom@h-98-128-228-53.NA.cust.bahnhof.se)
2020-10-16 23:41:36 +0200 <johnw> gentauro: I was thinking of 'fog'
2020-10-16 23:42:27 +0200 <gentauro> johnw: ahh, fair nok
2020-10-16 23:42:52 +0200Alleria_(~AllahuAkb@2604:2000:1484:26:dcad:5cf5:9c19:447f) (Ping timeout: 260 seconds)
2020-10-16 23:43:28 +0200karanlikmadde(~karanlikm@2a01:c23:6037:1800:955:6189:d72:9daf)
2020-10-16 23:44:05 +0200Lycurgus(~niemand@98.4.96.235)
2020-10-16 23:44:12 +0200delYsid(~user@84-115-55-45.cable.dynamic.surfer.at)
2020-10-16 23:44:14 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 272 seconds)
2020-10-16 23:47:48 +0200hive-mind(~hivemind@rrcs-67-53-148-69.west.biz.rr.com)
2020-10-16 23:58:51 +0200 <dibblego> I use https://hackage.haskell.org/package/sv