Home liberachat/#haskell: Logs Calendar

Logs on 2021-11-14 (liberachat/#haskell)

00:00:01 allbery_b is now known as geekosaur
00:00:04 jkaye joins (~jkaye@2601:281:8300:7530:3c34:ee17:936f:a727)
00:04:18 × zava quits (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Quit: WeeChat 3.3)
00:05:17 × tcard quits (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Ping timeout: 256 seconds)
00:05:20 × Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
00:08:13 tcard joins (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp)
00:08:37 × acidjnk_new3 quits (~acidjnk@p200300d0c736cb18d4b31450c12316ac.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
00:13:26 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Remote host closed the connection)
00:15:45 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:d32:7961:c8e7:76c1)
00:16:09 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
00:21:09 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
00:23:14 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
00:23:26 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
00:26:32 × slice quits (~slice@user/slice) (Quit: zzz)
00:28:15 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
00:28:36 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
00:29:18 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
00:29:54 Lord_of_Life_ is now known as Lord_of_Life
00:31:08 × msmhbvd^ quits (~msmhbvd@h50.174.139.63.static.ip.windstream.net) (Remote host closed the connection)
00:31:17 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
00:31:20 × sprout quits (~quassel@2a02:a467:ccd6:1:34a5:6053:7bcf:2391) (Ping timeout: 265 seconds)
00:36:16 × mmhat quits (~mmh@55d46755.access.ecotel.net) (Quit: WeeChat 3.3)
00:39:34 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
00:39:45 machinedgod joins (~machinedg@24.105.81.50)
00:43:56 sprout joins (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260)
00:44:31 mvk joins (~mvk@2607:fea8:5cc3:e900::df92)
00:48:21 × tcard quits (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Ping timeout: 256 seconds)
00:48:26 × sprout quits (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260) (Ping timeout: 245 seconds)
00:51:26 tcard joins (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp)
01:01:37 lavaman joins (~lavaman@98.38.249.169)
01:02:00 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Remote host closed the connection)
01:05:47 × aegon quits (~mike@174.127.249.180) (Remote host closed the connection)
01:06:10 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
01:08:18 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
01:08:25 pavonia joins (~user@user/siracusa)
01:11:59 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:d32:7961:c8e7:76c1) (Remote host closed the connection)
01:12:36 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
01:15:26 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:15:55 <sm> soo.. haskell numbers defeat me again. I want to raise to a power, like ** 1.5. How do I make a `Floating a` ?
01:16:24 <sm> also, which is the partial conversion function that should be avoided ? fromIntegral, fromInteger.. ?
01:16:42 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 268 seconds)
01:20:24 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
01:21:38 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 268 seconds)
01:25:02 <sm> the answer seems to be: more fromIntegral
01:25:53 <sm> `tot + round ( fromIntegral tot * 1 ** ((fromIntegral sp - 15) / 10) )`
01:26:07 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
01:30:23 × jkaye quits (~jkaye@2601:281:8300:7530:3c34:ee17:936f:a727) (Ping timeout: 264 seconds)
01:31:22 × burnsidesLlama quits (~burnsides@dhcp168-014.wadham.ox.ac.uk) (Remote host closed the connection)
01:31:46 sprout joins (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260)
01:36:39 × gdown quits (~gavin@h69-11-248-109.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection)
01:36:39 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:d32:7961:c8e7:76c1)
01:37:03 × sprout quits (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260) (Ping timeout: 268 seconds)
01:45:23 falafel joins (~falafel@2603-8000-d800-688c-34f9-26f3-71b0-5b78.res6.spectrum.com)
01:48:49 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
01:53:47 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
02:04:24 <monochrom> @quote monochrom fromIntegral
02:04:24 <lambdabot> monochrom says: You've got an Int / But you want Double / Who do you call? / "fromIntegral!"
02:08:07 × falafel quits (~falafel@2603-8000-d800-688c-34f9-26f3-71b0-5b78.res6.spectrum.com) (Read error: Connection reset by peer)
02:12:07 notzmv joins (~zmv@user/notzmv)
02:12:16 × random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
02:13:14 slice joins (~slice@user/slice)
02:16:14 slice_ joins (~slice@user/slice)
02:16:52 sprout joins (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260)
02:17:47 × slice quits (~slice@user/slice) (Ping timeout: 264 seconds)
02:19:12 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
02:20:53 geekosaur joins (~geekosaur@xmonad/geekosaur)
02:21:59 × sprout quits (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260) (Ping timeout: 264 seconds)
02:24:54 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
02:30:35 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
02:42:16 retro_ joins (~retro@176.255.22.26)
02:43:03 × sander quits (~sander@user/sander) (Quit: So long! :))
02:45:30 × retroid_ quits (~retro@176.255.22.26) (Ping timeout: 268 seconds)
02:46:24 sander joins (~sander@user/sander)
02:50:49 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
02:50:58 sprout joins (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260)
02:53:31 × xff0x quits (~xff0x@2001:1a81:526d:df00:b864:176f:3a64:2e83) (Ping timeout: 268 seconds)
02:54:44 atlas joins (~jbox@user/jbox)
02:54:58 xff0x joins (~xff0x@2001:1a81:52ad:7900:2980:608c:4201:500d)
02:55:50 × waleee quits (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Quit: WeeChat 3.3)
02:55:59 × sprout quits (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260) (Ping timeout: 268 seconds)
02:58:23 Maxdamantus joins (~Maxdamant@user/maxdamantus)
02:58:35 × jbox quits (~jbox@user/jbox) (Ping timeout: 264 seconds)
03:05:54 Codaraxis joins (~Codaraxis@user/codaraxis)
03:14:01 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
03:16:11 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:17:29 lavaman joins (~lavaman@98.38.249.169)
03:24:55 img joins (~img@user/img)
03:25:40 sprout joins (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260)
03:27:02 wei2912 joins (~wei2912@138.75.71.147)
03:30:04 atlas is now known as jbox
03:30:13 jbox is now known as atlas
03:30:31 × sprout quits (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260) (Ping timeout: 245 seconds)
03:31:33 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
03:31:45 × retro_ quits (~retro@176.255.22.26) (Ping timeout: 268 seconds)
03:32:19 × atlas quits (~jbox@user/jbox) (Quit: Leaving)
03:32:56 retroid_ joins (~retro@176.255.22.26)
03:33:23 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 264 seconds)
03:36:43 jbox joins (~jbox@user/jbox)
03:40:13 slack1256 joins (~slack1256@181.42.50.223)
03:41:37 × retroid_ quits (~retro@176.255.22.26) (Ping timeout: 268 seconds)
03:44:49 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
03:48:33 × xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
03:50:26 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
03:55:35 × renzhi quits (~xp@2607:fa49:6500:b100::6e7f) (Ping timeout: 264 seconds)
03:58:22 × td_ quits (~td@muedsl-82-207-238-039.citykom.de) (Ping timeout: 260 seconds)
04:00:01 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
04:00:10 td_ joins (~td@muedsl-82-207-238-006.citykom.de)
04:00:39 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
04:01:03 sprout joins (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260)
04:01:45 × jmorris quits (uid433911@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
04:03:12 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
04:03:12 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
04:03:12 finn_elija is now known as FinnElija
04:04:25 × slack1256 quits (~slack1256@181.42.50.223) (Ping timeout: 256 seconds)
04:05:22 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
04:06:23 × sprout quits (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260) (Ping timeout: 264 seconds)
04:15:20 jmorris joins (uid433911@hampstead.irccloud.com)
04:21:38 retroid_ joins (~retro@97e2ba2e.skybroadband.com)
04:25:23 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 256 seconds)
04:25:43 justsomeguy joins (~justsomeg@user/justsomeguy)
04:25:57 × rtsn quits (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 256 seconds)
04:26:29 rtsn joins (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se)
04:31:35 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 264 seconds)
04:35:03 SeungheonOh joins (~Thunderbi@2600:1700:5168:1400:c39d:a61d:4d11:1e35)
04:37:15 sprout joins (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260)
04:40:07 × SeungheonOh quits (~Thunderbi@2600:1700:5168:1400:c39d:a61d:4d11:1e35) (Quit: SeungheonOh)
04:42:11 × sprout quits (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260) (Ping timeout: 265 seconds)
04:46:01 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
04:52:31 × motherfsck quits (~motherfsc@user/motherfsck) (Quit: quit)
04:52:47 motherfsck joins (~motherfsc@user/motherfsck)
04:53:39 Maxdamantus joins (~Maxdamant@user/maxdamantus)
04:54:46 MoC_ joins (~moc@user/moc)
04:54:51 × MoC quits (~moc@user/moc) (Ping timeout: 256 seconds)
04:54:58 × motherfsck quits (~motherfsc@user/motherfsck) (Client Quit)
04:55:43 motherfsck joins (~motherfsc@user/motherfsck)
04:58:21 deadmarshal joins (~deadmarsh@95.38.117.102)
05:12:20 yauhsien joins (~yauhsien@49.216.238.61)
05:16:18 × deadmarshal quits (~deadmarsh@95.38.117.102) (Ping timeout: 260 seconds)
05:29:53 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
05:44:50 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
05:45:10 deadmarshal joins (~deadmarsh@95.38.117.102)
05:46:58 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:53:07 vicfred joins (~vicfred@user/vicfred)
05:56:15 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
05:56:45 Guest80 joins (~Guest80@pd9ed7762.dip0.t-ipconnect.de)
05:59:23 × emergence quits (~emergence@vm0.max-p.me) (Quit: emergence)
06:00:02 emergence joins (~emergence@vm0.max-p.me)
06:04:00 MoC_ is now known as MoC
06:05:56 × hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Ping timeout: 245 seconds)
06:20:59 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
06:21:10 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds)
06:24:54 × yauhsien quits (~yauhsien@49.216.238.61) (Ping timeout: 260 seconds)
06:26:04 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
06:32:27 hughjfchen joins (~hughjfche@vmi556545.contaboserver.net)
06:35:45 <energizer> takeWhile f = foldr (\x acc -> if f x then x : acc else []) []
06:36:15 <energizer> can someone explain how that's proportional to the length of the output (not the length of the input)
06:36:35 <energizer> i assume it's because of nonstrict, but i can't get my head around it
06:37:41 EvanR joins (~evan@2600:1700:ba69:10:f592:1a89:999e:d55f)
06:38:31 <energizer> ok maybe i get it now
06:38:38 <energizer> that's crazy
06:39:52 <energizer> ..it is because of nonstrict, right?
06:40:27 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Remote host closed the connection)
06:40:59 benin2 joins (~benin@183.82.176.36)
06:42:10 × benin quits (~benin@183.82.176.36) (Ping timeout: 260 seconds)
06:42:10 benin2 is now known as benin
06:42:36 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
06:45:59 × mvk quits (~mvk@2607:fea8:5cc3:e900::df92) (Ping timeout: 264 seconds)
06:47:03 × bbhoss quits (sid18216@tinside.irccloud.com) (Ping timeout: 256 seconds)
06:47:47 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
06:47:51 × slice_ quits (~slice@user/slice) (Quit: zzz)
06:49:32 slice joins (~slice@user/slice)
06:50:21 bbhoss joins (sid18216@tinside.irccloud.com)
06:51:02 × phma quits (phma@2001:5b0:2144:33f8:194f:6c28:dad5:4e86) (Read error: Connection reset by peer)
06:52:26 phma joins (phma@2001:5b0:211f:46f8:6fa2:18b9:ccfa:b3da)
07:04:05 shidima joins (~shidima@84-104-108-90.cable.dynamic.v4.ziggo.nl)
07:05:38 mbuf joins (~Shakthi@122.178.124.57)
07:07:01 × bliminse quits (~bliminse@host86-185-253-43.range86-185.btcentralplus.com) (Quit: leaving)
07:09:21 bliminse joins (~bliminse@host86-185-253-43.range86-185.btcentralplus.com)
07:09:41 × [exa] quits (exa@user/exa/x-3587197) (Ping timeout: 264 seconds)
07:10:54 sprout joins (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260)
07:14:39 × slice quits (~slice@user/slice) (Quit: zzz)
07:15:23 × EvanR quits (~evan@2600:1700:ba69:10:f592:1a89:999e:d55f) (Ping timeout: 264 seconds)
07:15:59 × sprout quits (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260) (Ping timeout: 264 seconds)
07:19:55 × deadmarshal quits (~deadmarsh@95.38.117.102) (Ping timeout: 256 seconds)
07:22:33 deadmarshal joins (~deadmarsh@95.38.117.102)
07:24:40 <c_wraith> energizer: yes. It's because as soon as (f x) in the lambda returns false, acc is unused. Recursion only happens in folder when acc is used.
07:24:47 <c_wraith> *in foldr
07:24:56 <c_wraith> I'm obviously thinking phonetically
07:27:47 sprout joins (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260)
07:28:16 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
07:32:11 × sprout quits (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260) (Ping timeout: 245 seconds)
07:32:57 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
07:40:00 <energizer> ok
07:40:53 × deadmarshal quits (~deadmarsh@95.38.117.102) (Ping timeout: 256 seconds)
07:41:37 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
07:48:49 × kristjansson_ quits (sid126207@tinside.irccloud.com) (Ping timeout: 256 seconds)
07:49:08 <int-e> c_wraith: fold-arr ;-)
07:50:27 kristjansson_ joins (sid126207@tinside.irccloud.com)
07:53:52 sprout joins (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260)
07:59:37 × Guest80 quits (~Guest80@pd9ed7762.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
07:59:52 × sprout quits (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260) (Ping timeout: 265 seconds)
08:01:15 burnsidesLlama joins (~burnsides@dhcp168-014.wadham.ox.ac.uk)
08:04:20 takuan joins (~takuan@178-116-218-225.access.telenet.be)
08:07:25 anna_user2_ joins (~anna_user@207.181.251.46)
08:08:11 <anna_user2_> I'm a beginner and I don't know how to call my function. I get "The IO action ‘main’ is not defined in module ‘Main’
08:08:11 <anna_user2_> "
08:09:51 <anna_user2_> error is pasted on tomsemeding
08:11:03 sprout joins (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260)
08:11:13 deadmarshal joins (~deadmarsh@95.38.117.102)
08:11:49 <gentauro> anna_user2_: do you expose it? Like this? `module Main (main) where`
08:13:43 <anna_user2_> I just said "main :: IO()" and "main = return()" and it compiles and links now. IDK if it is doing anything. I would like to load up an array and pass it to my funciton.
08:14:57 gehmehgeh joins (~user@user/gehmehgeh)
08:15:59 × sprout quits (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260) (Ping timeout: 264 seconds)
08:16:19 <anna_user2_> Maybe I say "data = ..."?
08:17:30 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:21:15 sprout joins (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260)
08:22:30 <anna_user2_> Can anyone please tell me how to create a small array of integers?
08:24:22 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
08:24:50 kadir joins (~kadir@78.178.105.36)
08:24:59 <anna_user2_> OK I may have created an array. I would like to dispaly it to the console
08:26:51 <gentauro> anna_user2_: if you are using `return`, then you are a `function` of the Monad type-class
08:28:03 <gentauro> please start the `interpreter` (if you use `stack`, it's like this: `stack ghci`). Then you can type: `:info Monad` and you will see: `class Applicative m => Monad m where … return :: a -> m a`
08:28:04 <anna_user2_> I don't know if I need a Monday type-class. I just want to load up an array and pass it with an integer to my funciton, which inserts the integer
08:28:23 <gentauro> so the correct syntax would be: `main = do return ()` as it seems that you are using `do-notation`
08:28:41 <anna_user2_> Since I have no idea what a Monad is...
08:28:42 nrl^ joins (~nrl@h50.174.139.63.static.ip.windstream.net)
08:29:22 <gentauro> anna_user2_: then I would suggest you read this "online tutorial" first :) http://learnyouahaskell.com/chapters
08:30:30 gentauro I hope SPJ before leaving to play Fortninte that he renames the Monad type in Haskell to Monday :)
08:32:41 [exa] joins (exa@user/exa/x-3587197)
08:33:19 × jbox quits (~jbox@user/jbox) (Read error: Connection reset by peer)
08:33:41 jbox joins (~jbox@user/jbox)
08:37:35 × deadmarshal quits (~deadmarsh@95.38.117.102) (Ping timeout: 264 seconds)
08:37:35 × amk quits (~amk@109.255.169.126) (Ping timeout: 264 seconds)
08:38:17 × shidima quits (~shidima@84-104-108-90.cable.dynamic.v4.ziggo.nl) (Remote host closed the connection)
08:39:59 amk joins (~amk@109.255.169.126)
08:44:33 alzgh joins (~alzgh@user/alzgh)
08:45:51 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:d32:7961:c8e7:76c1) (Remote host closed the connection)
08:49:37 <tomsmeding> Foldable -> Friday, Traversable -> Thursday?
08:49:53 <tomsmeding> or rather Functor -> Friday
08:51:23 <[exa]> constructing a haskellish advent calendar?
08:51:43 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
08:52:55 <tomsmeding> [exa]: https://ircbrowse.tomsmeding.com/day/lchaskell/2021/11/14?id=271388#trid271388
08:53:56 <[exa]> ah rofl.
08:55:23 × wei2912 quits (~wei2912@138.75.71.147) (Quit: Lost terminal)
08:55:44 slice joins (~slice@user/slice)
08:58:49 × meridion quits (~meridion@punt.hetgrotebos.org) (Read error: Connection reset by peer)
08:59:54 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
09:03:46 deadmarshal joins (~deadmarsh@95.38.117.102)
09:04:16 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
09:05:59 × burnsidesLlama quits (~burnsides@dhcp168-014.wadham.ox.ac.uk) (Remote host closed the connection)
09:09:52 max22- joins (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
09:17:43 allbery_b joins (~geekosaur@xmonad/geekosaur)
09:17:43 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
09:17:46 allbery_b is now known as geekosaur
09:28:44 mmhat joins (~mmh@55d47fa1.access.ecotel.net)
09:29:21 zava joins (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
09:31:33 acidjnk_new3 joins (~acidjnk@p200300d0c736cb18d4b31450c12316ac.dip0.t-ipconnect.de)
09:40:16 burnsidesLlama joins (~burnsides@dhcp168-014.wadham.ox.ac.uk)
09:42:24 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
09:43:28 × nrl^ quits (~nrl@h50.174.139.63.static.ip.windstream.net) (Remote host closed the connection)
09:44:41 × burnsidesLlama quits (~burnsides@dhcp168-014.wadham.ox.ac.uk) (Ping timeout: 245 seconds)
09:46:35 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:185c:f2cc:27d3:da20)
09:49:05 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
09:49:59 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
09:50:56 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:185c:f2cc:27d3:da20) (Ping timeout: 245 seconds)
09:51:44 × kadir quits (~kadir@78.178.105.36) (Quit: WeeChat 3.3)
09:55:54 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
10:01:44 Guest80 joins (~Guest80@pd9ed7762.dip0.t-ipconnect.de)
10:07:30 incendiary joins (~i@5.18.232.236)
10:09:23 × xff0x quits (~xff0x@2001:1a81:52ad:7900:2980:608c:4201:500d) (Ping timeout: 264 seconds)
10:09:45 × MoC quits (~moc@user/moc) (Read error: Connection reset by peer)
10:09:51 MoC_ joins (~moc@user/moc)
10:10:10 × MoC_ quits (~moc@user/moc) (Client Quit)
10:10:12 xff0x joins (~xff0x@2001:1a81:52ad:7900:fdd2:161e:af5e:122)
10:11:45 × jmorris quits (uid433911@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
10:13:02 dsrt^ joins (~dsrt@h50.174.139.63.static.ip.windstream.net)
10:25:03 × slice quits (~slice@user/slice) (Quit: cya)
10:28:24 burnsidesLlama joins (~burnsides@dhcp168-014.wadham.ox.ac.uk)
10:29:16 × deadmarshal quits (~deadmarsh@95.38.117.102) (Ping timeout: 245 seconds)
10:30:13 deadmarshal joins (~deadmarsh@95.38.117.102)
10:34:27 <gentauro> tomsmeding: I like it :)
10:43:32 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
10:45:00 Vajb joins (~Vajb@2001:999:85:46d7:d6a4:d6c1:950b:ce99)
10:45:06 random-jellyfish joins (~random-je@user/random-jellyfish)
10:48:07 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:53:54 × xff0x quits (~xff0x@2001:1a81:52ad:7900:fdd2:161e:af5e:122) (Ping timeout: 268 seconds)
10:54:24 xff0x joins (~xff0x@2001:1a81:52ad:7900:8288:e51a:352c:7fbc)
10:59:28 × xff0x quits (~xff0x@2001:1a81:52ad:7900:8288:e51a:352c:7fbc) (Ping timeout: 268 seconds)
11:00:34 Alleria joins (~textual@user/alleria)
11:01:25 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
11:03:01 kupi joins (uid212005@hampstead.irccloud.com)
11:04:48 xff0x joins (~xff0x@2001:1a81:52ad:7900:8288:e51a:352c:7fbc)
11:06:14 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
11:22:27 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
11:24:16 × deadmarshal quits (~deadmarsh@95.38.117.102) (Ping timeout: 245 seconds)
11:27:18 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
11:29:51 × Guest80 quits (~Guest80@pd9ed7762.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
11:32:52 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
11:33:38 cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
11:37:08 × cheater quits (~Username@user/cheater) (Ping timeout: 246 seconds)
11:37:35 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
11:39:06 Midjak joins (~Midjak@82-65-111-221.subs.proxad.net)
11:41:01 cheater joins (~Username@user/cheater)
11:43:56 mei joins (~mei@user/mei)
11:45:35 × acidjnk_new3 quits (~acidjnk@p200300d0c736cb18d4b31450c12316ac.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
11:48:59 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:185c:f2cc:27d3:da20)
11:53:26 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:185c:f2cc:27d3:da20) (Ping timeout: 245 seconds)
11:57:18 × cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Quit: ERC (IRC client for Emacs 27.1))
12:00:08 peutri_ is now known as peutri
12:00:25 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
12:02:20 × Flonk quits (~Flonk@vps-zap441517-1.zap-srv.com) (Quit: The Lounge - https://thelounge.chat)
12:03:27 Flonk joins (~Flonk@vps-zap441517-1.zap-srv.com)
12:04:15 × stevenxl quits (sid133530@uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
12:04:23 × mikoto-chan quits (~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Ping timeout: 256 seconds)
12:04:26 × Flonk quits (~Flonk@vps-zap441517-1.zap-srv.com) (Client Quit)
12:04:28 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
12:09:04 __monty__ joins (~toonn@user/toonn)
12:09:29 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
12:16:20 cheater joins (~Username@user/cheater)
12:20:47 deadmarshal joins (~deadmarsh@95.38.117.102)
12:23:18 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
12:25:21 × deadmarshal quits (~deadmarsh@95.38.117.102) (Ping timeout: 256 seconds)
12:26:36 × phma quits (phma@2001:5b0:211f:46f8:6fa2:18b9:ccfa:b3da) (Read error: Connection reset by peer)
12:27:28 phma joins (phma@2001:5b0:210f:6c88:14c5:503:d6e5:c919)
12:29:37 Lycurgus joins (~juan@98.4.112.204)
12:31:44 <AndreasK__> Anyone have a good implementation of a "sized IntSet". Basically IntSet with size being O(1)
12:32:36 <xerox> size is O(1) in IntSet
12:33:07 <xerox> oh dang it's not!
12:33:15 <Hecate> https://hackage.haskell.org/package/containers-0.6.5.1/docs/Data-IntSet.html#v:size
12:33:18 <Hecate> nope
12:33:19 <Hecate> :'D
12:33:39 <xerox> I had this one in mind https://www.stackage.org/haddock/lts-18.16/containers-0.6.5.1/src/Data-Set-Internal.html#size
12:33:42 <AndreasK__> xerox: If only it would be that easy :D
12:34:00 <[exa]> O(1) size?
12:34:01 <xerox> whereas theirs does work https://www.stackage.org/haddock/lts-18.16/containers-0.6.5.1/src/Data-IntSet-Internal.html#size
12:34:35 <[exa]> can you just keep a counter next to the set?
12:34:38 <AndreasK__> The code I'm looking at currently uses what amounts to `Data.Set Int` which isn't anywhere near optimal.
12:35:03 <AndreasK__> [exa]: Yes. But the question is then how do you update the counter?`insert doesn't tell you if it modified the set.
12:35:22 <[exa]> yeah you need to have a special insert that tells you :/
12:35:49 <[exa]> anyway, there are weight-balanced trees somewhere in haskell (at least in Set), getting a size there is O(1)
12:36:01 <AndreasK__> [exa]: Then there are more complex operations like union etc. It's not trivial. Which is why I would rather just use someone elses work haha
12:36:08 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
12:36:36 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
12:36:40 <AndreasK__> [exa]: Yeah `Data.Set Int` works. But everything except size is just soo much slower than IntSet
12:37:25 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
12:38:44 <[exa]> AndreasK__: btw what's your usecase? there might be a specialzied approach
12:39:07 <AndreasK__> [exa]: Looking at optimizing https://github.com/ghc/ghc/blob/c60652929ebd2510e52c05a2f61d52e2bf1846ad/compiler/GHC/Cmm/Expr.hs#L313
12:40:19 <AndreasK__> [exa]: The set is used in dataflow analysis for things like liveness, we check if facts changed by checking if the size changed
12:40:34 <[exa]> the RegSet is relatively tiny right? (less than 100 elements?)
12:41:12 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
12:41:14 <AndreasK__> Not guaranteed but often yes.
12:43:36 <[exa]> in that case you might just want to take a vector of ones/zeroes and some magic with fromEnum
12:45:57 <[exa]> running through a continuous array of ~100 elements is usually faster on average than just jumping 2 pointers
12:46:55 <AndreasK__> Given that as you traverse the programm you can encounter any "number" going forward I'm not sure how to construct such a magic function unless we go all the way to using a hashmap.
12:48:18 <[exa]> I understood that GlobalReg and LocalReg are "finite" right?
12:48:46 <AndreasK__> LocalReg represents virtual registers, of which there can be arbitrary many
12:49:00 <AndreasK__> I've seen code where we can have >3k
12:49:18 <[exa]> ah okay
12:49:49 <AndreasK__> GlobalReg is properly finite. But that's also not really causing performance issues.
12:50:23 <AndreasK__> Yeah otherwise you could just compute a static mapping from Reg <-> Int
12:50:56 × jbox quits (~jbox@user/jbox) (Ping timeout: 245 seconds)
12:51:05 × max22- quits (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 268 seconds)
12:51:17 deadmarshal joins (~deadmarsh@95.38.117.102)
12:54:21 <AndreasK__> I think in this case such a magic function would need to use a map internally, and you would end up with the same problem in a very roundabout way.
12:55:19 × Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt)
13:00:35 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
13:00:50 chexum joins (~quassel@gateway/tor-sasl/chexum)
13:01:48 machinedgod joins (~machinedg@24.105.81.50)
13:03:15 jakalx joins (~jakalx@base.jakalx.net)
13:05:54 Flonk joins (~Flonk@vps-zap441517-1.zap-srv.com)
13:08:43 × cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds)
13:14:04 × Flonk quits (~Flonk@vps-zap441517-1.zap-srv.com) (Quit: The Lounge - https://thelounge.chat)
13:14:40 Flonk joins (~Flonk@vps-zap441517-1.zap-srv.com)
13:16:32 azimut_ joins (~azimut@gateway/tor-sasl/azimut)
13:16:39 × nf quits (~n@monade.li) (Quit: Fairfarren.)
13:17:18 × Flonk quits (~Flonk@vps-zap441517-1.zap-srv.com) (Client Quit)
13:17:30 nf joins (~n@monade.li)
13:18:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:19:13 shriekingnoise joins (~shrieking@186.137.144.80)
13:20:27 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
13:22:05 × pwug quits (~pwug@user/pwug) (Remote host closed the connection)
13:23:42 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
13:23:43 Flonk joins (~Flonk@vps-zap441517-1.zap-srv.com)
13:24:05 pwug joins (~pwug@user/pwug)
13:24:34 jpds joins (~jpds@gateway/tor-sasl/jpds)
13:31:30 × Flonk quits (~Flonk@vps-zap441517-1.zap-srv.com) (Quit: The Lounge - https://thelounge.chat)
13:33:48 Flonk joins (~Flonk@vps-zap441517-1.zap-srv.com)
13:34:47 <yin> do peano encoded nats "collapse" as they are evaluated? will `n > 9` be faster after i do `n > 7`?
13:35:21 <yin> i know "collapse" may not be the right word here
13:35:49 Everything joins (~Everythin@37.115.210.35)
13:36:39 <hpc> the term to google is "thunk"
13:37:23 <hpc> basically before something is evaluated, it's stored as a chunk of code that would compute the actual value
13:37:36 <hpc> then once it's evaluated, as long as it stays in memory it doesn't have to be recomputed
13:38:05 <hpc> how long it stays in memory is complicated, and what actually gets evaluated by each expression is complicated
13:38:47 <yin> i guess what im asking is if `data Nat = Z | Succ Nat` will behave the same as `iterate succ 0`
13:39:06 <hpc> oh, no it won't
13:39:17 <hpc> you'll always have that chain of Succ
13:39:38 <hpc> an equivalent operation would be turning a linked list into an array automatically
13:39:48 <hpc> which ghc also doesn't do
13:40:10 <hpc> however, you do get a built-in Natural type
13:40:32 <hpc> which uses libgmp, so it's not a peano nat
13:42:55 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Read error: Connection reset by peer)
13:43:05 takuan joins (~takuan@178-116-218-225.access.telenet.be)
13:43:14 <yin> is that GHC.TypeLits.Nat ?
13:44:25 <hpc> https://hackage.haskell.org/package/base-4.16.0.0/docs/Numeric-Natural.html#t:Natural
13:44:46 <hpc> that one is for type-level nonsense :D
13:46:44 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
13:46:59 lavaman joins (~lavaman@98.38.249.169)
13:47:06 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
13:47:20 lavaman joins (~lavaman@98.38.249.169)
13:47:28 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
13:47:36 × deadmarshal quits (~deadmarsh@95.38.117.102) (Ping timeout: 245 seconds)
13:47:42 lavaman joins (~lavaman@98.38.249.169)
13:47:49 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
13:48:03 lavaman joins (~lavaman@98.38.249.169)
13:48:11 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
13:48:47 × Flonk quits (~Flonk@vps-zap441517-1.zap-srv.com) (Quit: The Lounge - https://thelounge.chat)
13:49:09 Flonk joins (~Flonk@vps-zap441517-1.zap-srv.com)
13:49:36 × Flonk quits (~Flonk@vps-zap441517-1.zap-srv.com) (Client Quit)
13:49:56 Flonk joins (~Flonk@vps-zap441517-1.zap-srv.com)
13:50:34 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:185c:f2cc:27d3:da20)
13:50:56 cheater joins (~Username@user/cheater)
13:53:11 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
13:54:31 <yin> ok
13:55:06 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:185c:f2cc:27d3:da20) (Ping timeout: 245 seconds)
13:55:10 <yin> is there a way i can guarantee my program is total?
13:56:07 × meinside quits (uid24933@helmsley.irccloud.com) (Quit: Connection closed for inactivity)
13:56:54 skewerr is now known as spoonm
13:57:28 <yin> meaning no `undefined`
13:57:59 <hpc> that's equivalent to the halting problem, so no
13:58:06 <hpc> maybe someday
13:58:27 <hpc> there are other languages that deliberately fall just short of turing-completeness in order to have that guarantee though
13:58:48 <hpc> they're usually used for theorem proving, but that's a whooooole other topic
13:59:11 <yin> ah, no. i'm perfectly ok with non-termination. what i mean is no `error` or `undefined` as a result
13:59:51 <hpc> ah, then sort of
14:00:14 <hpc> you can have ghc warn on non-exhaustive patterns
14:00:31 <hpc> and iirc error/undefined are covered by the safe haskell stuff
14:00:32 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
14:00:51 <yin> what is "the safe haskell stuff"?
14:01:08 <yin> is there a safe prelude?
14:01:14 <hpc> you'll have to google it, i don't remember everything
14:01:50 <hpc> ah, nvm, that doesn't cover error/undefined
14:01:57 <hpc> it's just for type safety stuff
14:03:25 <yin> i see
14:05:32 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
14:10:10 × benin quits (~benin@183.82.176.36) (Ping timeout: 260 seconds)
14:10:48 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Remote host closed the connection)
14:16:04 EvanR joins (~evan@108-93-18-102.lightspeed.nworla.sbcglobal.net)
14:20:44 × EvanR quits (~evan@108-93-18-102.lightspeed.nworla.sbcglobal.net) (Ping timeout: 265 seconds)
14:21:10 max22- joins (~maxime@2a01cb08833598006adbffa1edba2526.ipv6.abo.wanadoo.fr)
14:26:50 deadmarshal joins (~deadmarsh@95.38.117.102)
14:41:52 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
14:41:58 × deadmarshal quits (~deadmarsh@95.38.117.102) (Quit: ZNC 1.8.2 - https://znc.in)
14:42:07 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
14:43:03 deadmarshal joins (~deadmarsh@95.38.117.102)
14:45:02 × Unhammer quits (~Unhammer@user/unhammer) (Ping timeout: 240 seconds)
14:45:05 <albet70> could fmap or >>= break in []? like in other languages "for i in alist: if i==0: break"
14:46:27 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
14:50:58 × v01d4lph4 quits (~v01d4lph4@user/v01d4lph4) (Quit: my macbook has gone to sleep zzz)
14:51:22 <geekosaur> fmap can't really, althouhg you could fake it with a flag in the "accumulator"
14:51:55 <geekosaur> >>= will stop that path if you fail, but it will still try other paths; this is what leads to "nondeterminism"
14:53:23 <albet70> oh traverse may do the trick
14:54:55 <albet70> break a loop or iteration is a very common need in most languages, and it's hard in haskell...
14:55:23 <davean> albet70: its not hard - those aren't loops tohugh
14:55:54 <davean> Theres nothing even sequential about them
14:56:07 <davean> there as parallel as they are sequential
14:56:19 <davean> Theres no order at all, and they might all happen at the same time
14:56:24 <davean> THEY ARE NOT LOOPS
14:57:10 <davean> There are not even related to loops in any meaningful way
14:57:10 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
14:57:11 EvanR joins (~evan@2600:1700:ba69:10:a438:4841:cc0d:6c57)
14:57:47 <albet70> for i in alist: if i==0: break else: f(i) if there's no 0 in alist, f will apply on every element, you say this is not loop?
14:58:13 <davean> it is a loop, fmap and >>= are not
14:58:23 <davean> in any way
14:58:23 × Vajb quits (~Vajb@2001:999:85:46d7:d6a4:d6c1:950b:ce99) (Read error: Connection reset by peer)
14:58:38 Unhammer joins (~Unhammer@user/unhammer)
14:58:56 × deadmarshal quits (~deadmarsh@95.38.117.102) (Ping timeout: 256 seconds)
14:59:02 <albet70> when they meet []
14:59:35 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
15:00:03 <davean> I'm not sure what you mean by that, but if you're saying when they're on lists, no still no where related to a loop
15:00:05 <davean> ENTIRELY different
15:00:15 <davean> if you want a loop, use a loop
15:00:16 <albet70> when m~[], what's the fmap's behavior?
15:00:35 <geekosaur> sorry, I was thinking fold earlier, no9t fmap
15:00:38 <davean> Nothing at all related to a loop
15:01:02 <geekosaur> fmap can't be treated as a loop, as davean said. and >>= "follows all possible paths at once"
15:01:28 <davean> I can talk aboutspecific implimentations, but fmap fmaps, which is closer related to opengl than a loop
15:01:31 <davean> opengl has projections
15:01:35 <davean> fmap is projective
15:01:49 <davean> the actual evaluations, in GHC practice, will happen when they're looked at
15:01:54 × oats quits (~thomas@user/oats) (Quit: until later, my friends)
15:01:58 <davean> the order is *entirely undefined*
15:02:09 oats joins (~thomas@user/oats)
15:02:16 × burnsidesLlama quits (~burnsides@dhcp168-014.wadham.ox.ac.uk) (Remote host closed the connection)
15:02:59 gentauro joins (~gentauro@user/gentauro)
15:03:20 <davean> haskell has loops, if you want that, use that
15:05:08 <davean> albet70: fmap is fairly closely related to projecting 3D objects into 2D space - this might be worth thinking on
15:05:45 Guest42 joins (~Guest42@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
15:06:37 burnsidesLlama joins (~burnsides@dhcp168-014.wadham.ox.ac.uk)
15:07:36 <albet70> what's the fmap function definition about []? I can't find it
15:08:26 <albet70> https://hackage.haskell.org/package/mtl-2.2.2/docs/Control-Monad-List.html#v:fmap
15:09:50 <geekosaur> https://downloads.haskell.org/ghc/latest/docs/html/libraries/base-4.16.0.0/Prelude.html#g:10 leads to a list of instances for Functor, all of which have Source links
15:10:20 <geekosaur> which for instance Functor [] leads to https://downloads.haskell.org/ghc/latest/docs/html/libraries/base-4.16.0.0/src/GHC.Base.html#line-1158
15:11:08 <geekosaur> ("g:10" is "Monads and functors" in the sidebar for Prelude)
15:12:04 <geekosaur> and I knew to look in Prelude because you don't have to import anything to use fmap
15:13:33 <albet70> map f (x:xs) = f x : map f xs
15:14:03 xkuru joins (~xkuru@user/xkuru)
15:14:04 <davean> yep
15:15:15 <albet70> it's recursive, not iteration
15:15:28 <davean> Iteration is a special case of recursion
15:15:38 <geekosaur> also that's because lists are defined recursively
15:16:03 <geekosaur> data [] a = [] | a : [] a
15:16:12 <davean> also thats not performing the fmap the way you probably think of it, its declaring what it is, and setting up the computation
15:16:19 <albet70> "davean :Iteration is a special case of recursion", why you say that?
15:16:32 <davean> Because all iteration is recursion but not all recursion is iteration
15:17:06 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
15:18:15 <albet70> wait a sec, most languages support iteration, but not support TCO, you can't say all iteration is recursion
15:18:37 <davean> Yes I can, look at what the loop is
15:18:40 <davean> open up your assembler
15:18:47 <geekosaur> tco does not define recursion, it merely limits how the language can optimize it
15:19:02 <davean> your language HAPPENS to optimize loops specificly
15:19:07 <geekosaur> tco is tail call *optimization*
15:19:16 <davean> but if you look at the code generated, it is SPECIFICLY recursion
15:19:27 <davean> thats the ONLY IMPLIMENTATION
15:20:56 × EvanR quits (~evan@2600:1700:ba69:10:a438:4841:cc0d:6c57) (Ping timeout: 268 seconds)
15:20:57 <davean> They just don't have the power to optimize recursion *in general* so they give yo uspecial cases they CAN optimize
15:21:40 <davean> and now we're out side of haskell in to basic CS
15:21:56 <davean> https://en.wikipedia.org/wiki/Primitive_recursive_function
15:22:02 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
15:23:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
15:23:51 <davean> but seriously, open up the assembly your compilers generate, what they'll have is a small piece of code for the body of the loop, and a (conditional) jump from the end to the start (or they'll have a condition at the start to leave it, and a non-conditional jump at the end)
15:24:12 <davean> whats a jump? Its a TCO function call when tis to its parent function
15:24:25 stef204 joins (~stef204@user/stef204)
15:24:51 <yin> this pen is blue, so it follows that all pens are blue
15:25:35 <davean> yin: sunrise problem :)
15:25:47 <davean> I believe in this case its 50% probably all pens are blue?
15:26:35 <davean> (Ok, that s a VERY reductive comment, but yours is too so ...)
15:26:40 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
15:27:01 slowButPresent joins (~slowButPr@user/slowbutpresent)
15:27:21 <maerwald> davean: are you a Popper fan too?
15:27:57 gg joins (~gg@2a01:e0a:819:1510:9018:293a:5d7d:4597)
15:29:21 <davean> maerwald: No idea what you're even talking about so no
15:30:33 <yin> the criticism of inductive reasoning i think
15:31:04 <maerwald> yeah, specifically "The Logic of Scientific Discovery"
15:31:15 <maerwald> where he talks about the sunrise problem as well
15:31:40 <davean> the sunrise problem is very well known in statistics?
15:31:47 <davean> Its a classic problem
15:32:21 <yin> maerwald: is davean's method inductive or deductive though?
15:33:02 <yin> did he confirm his theory by looking at the assembly ode or did he derive it from observation?
15:33:21 <yin> s/ ode/code
15:34:49 <maerwald> yin: well, Popper didn't really say that induction is wrong. Inductive thoughts are the basis for ideas and theories, it's just that they carry little value as a naked argument.
15:35:34 × johnjay quits (~pi@192.142.100.50) (Ping timeout: 260 seconds)
15:35:40 <maerwald> he called it the "irrational moment" that happens when you "think up" a theory
15:36:38 johnjay joins (~pi@192.142.100.50)
15:37:01 <davean> I like the implication we have rational moments
15:37:04 <maerwald> haha
15:37:06 <davean> Its really optimistic
15:37:52 <geekosaur> does it imply that, or that we have other kinds of irrational ity at other times?
15:38:06 <davean> Good point
15:39:13 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
15:39:41 <maerwald> Well, the idea was to very clearly distinguish the construction of a theory from the discourse of whether it has merits, especially in order to allow and encourage more radical scientific theories, without getting nonsense like "how did you think of that?".
15:39:59 <maerwald> Like, it's really none of your business :D
15:42:27 <davean> The more interesting question is how you didn't think of things
15:42:31 <davean> thats where improvements are to be made
15:42:42 <davean> like understanding the computational hierarchy in albet70's case
15:45:33 Digit parts (~user@user/digit) (tidying)
15:51:53 justsomeguy joins (~justsomeg@user/justsomeguy)
15:52:29 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:55:57 × max22- quits (~maxime@2a01cb08833598006adbffa1edba2526.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
15:56:28 jkaye joins (~jkaye@2601:281:8300:7530:af2a:f6dc:e38f:a278)
15:56:44 × johnjay quits (~pi@192.142.100.50) (Ping timeout: 256 seconds)
15:56:46 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
15:57:07 mc47 joins (~mc47@xmonad/TheMC47)
15:57:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:00:06 × jesser[m] quits (~jessermat@2001:470:69fc:105::d5ae) (Quit: You have been kicked for being idle)
16:00:11 johnjay joins (~pi@192.142.100.50)
16:00:47 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 265 seconds)
16:03:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
16:05:27 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
16:11:46 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 245 seconds)
16:12:30 max22- joins (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
16:12:35 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
16:14:55 × max22- quits (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Remote host closed the connection)
16:15:46 justsomeguy joins (~justsomeg@user/justsomeguy)
16:18:48 bitmapper joins (uid464869@lymington.irccloud.com)
16:19:12 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:185c:f2cc:27d3:da20)
16:27:13 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
16:28:01 × johnjay quits (~pi@192.142.100.50) (Ping timeout: 245 seconds)
16:28:37 deadmarshal joins (~deadmarsh@95.38.117.102)
16:29:57 johnjay joins (~pi@192.142.100.50)
16:32:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:32:45 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
16:33:00 × deadmarshal quits (~deadmarsh@95.38.117.102) (Ping timeout: 256 seconds)
16:35:11 × johnjay quits (~pi@192.142.100.50) (Ping timeout: 264 seconds)
16:36:28 johnjay joins (~pi@192.142.100.50)
16:36:48 cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
16:37:35 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
16:39:29 <yin> oh no i had to get away for a bit. i was enjoying the conversation
16:39:50 × random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
16:40:29 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 268 seconds)
16:40:36 <yin> davean: i'm curious to know in what context is "all iteration recursion"
16:49:00 <Rembane_> yin: All kinds of iteration can be expressed as recursion. Not the other way around though.
16:49:38 <Rembane_> Hm... lets just assume I'm wrong about that and say that iteration = recursion.
16:51:38 Guest80 joins (~Guest80@pd9ed7762.dip0.t-ipconnect.de)
16:51:45 <yin> all right. but can we have iteration without recursion?
16:52:12 <jkaye> yin, in Haskell, or in general? I assume the former
16:52:43 EvanR joins (~evan@user/evanr)
16:53:08 <yin> my question is in which contexts can we make that argument and in which we can't
16:53:25 <c_wraith> it's mostly a math thing
16:54:00 <Rembane_> In C we can have iteration without recursion.
16:54:22 Guest89 joins (~Guest89@catv-89-134-211-102.catv.broadband.hu)
16:55:29 <yin> Rembane_: davean's argument is that if you look at the assembly code you'll always see it as recursion. isn't that also true for C?
16:57:41 <Rembane_> yin: It is? I gotta read some backlog.
16:57:43 <c_wraith> It's not really very interesting to argue about
16:58:03 <c_wraith> because to make any headway, you need to define "iteration" and "recursion" precisely.
16:58:14 <jkaye> You could write the loop in assembly without recursion using conditional jumps
16:58:17 <c_wraith> And doing that generally removes any questions
16:58:20 <jkaye> So, I'm not sure that's true?
16:58:43 <jkaye> c_wraith, yeah pretty much what I'm saying as well, I think it's definitional
16:59:02 <davean> jkaye: conditional jumps are conditional calls - a call is just a jump with register push
16:59:22 <jkaye> And right there we get to c_wraith's point that it's all in the definition
16:59:23 <yin> so my question becomes "what is the definitional difference between iteration and recursion we are assuming here?"
17:00:28 <jkaye> Iteration and recursion are (I think) isomorphic in that they can freely be converted from one to the other. Saying one cannot exist without the other therefore I think doesn't make sense, since the definition of either could be written in terms of the other
17:00:44 <jkaye> Regardless of which definitions we were to choose
17:00:54 <davean> jkaye: you can't convert recursion (except primitive recursion) to loops
17:01:01 <yin> ^ this
17:01:41 <jkaye> I'm fairly sure you can by using a stack. Could be mistaken
17:01:48 <davean> primitive recursion is exactly what you can do with loops
17:01:59 <jkaye> Can you show a situation that cannot be converted? We should be able to prove with contradiction if that is true
17:02:36 <geekosaur> make sure you look at not only the definition of primitive recursion, but also why there is a difference
17:02:46 max22- joins (~maxime@2a01cb08833598007277439ba0202f1c.ipv6.abo.wanadoo.fr)
17:02:58 <EvanR> the least defined thing so far is "loops"
17:03:00 <yin> i'm looking up the definition of loop
17:03:11 <yin> EvanR: exactly
17:03:14 <EvanR> primitive recursion is cool
17:03:31 <jkaye> Also, unrelated to all of this, but does anyone have a better way to do this? https://paste.tomsmeding.com/MppfHUD5 Thinking both towards efficiency and de-duplication of code if possible
17:04:12 <jkaye> This one is a little more complete in case it helps https://paste.tomsmeding.com/fbVa3VZE
17:04:15 × stef204 quits (~stef204@user/stef204) (Quit: WeeChat 3.3)
17:05:09 <EvanR> I like how the idea of loops comes up in so many ways without needing a concrete definition
17:05:42 <Guest89> j
17:07:36 <EvanR> if the pesky professor didn't define algorithms as a *finite* list of steps for yadda yadda maybe we wouldn't need loops xD
17:08:19 <yin> i'm curious to know how any usual definition of "loops" and "recursion" are different if we look at the actual way we run bits through logic gates. as i understand it, haskell translates recursive functions to loops wich can be then considered recursion
17:08:42 <hpc> i wonder what the difference even is, between finite and infinite lists of steps
17:09:14 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:09:21 <EvanR> presumably you can't load an infinite list of steps on a computer-- oh
17:09:33 <Rembane_> Decidability?
17:09:54 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
17:10:06 gehmehgeh joins (~user@user/gehmehgeh)
17:10:12 <monochrom> Doesn't an x86 CPU interprets your recursive asm code by a loop, and that counts as converting recursion to iteration?
17:10:24 <EvanR> yin: insisting on considering bits in gates and programming terms and recursion theory all at the same time seems... confusing
17:10:25 <yin> it's never finite if we consider that any "finite" computation outputs something, even if in the form of photons that are transmitted to our brain that then continues a (mostly believed) infinite computation of the world
17:10:42 <davean> monochrom: x86 doesn't have loops - I know no real archs with loops
17:10:53 <davean> It only has call/jump
17:10:54 <jkaye> That's why I was saying that I think the question is somewhat meaningless
17:11:05 jpds joins (~jpds@gateway/tor-sasl/jpds)
17:11:13 <monochrom> No I mean the microcode inside the CPU.
17:11:13 <yin> monochrom: that's what i'm thinking, but by then we must consider a loop as something that's recurring in the machine
17:11:25 <jkaye> davean, jump could easily be defined as a loop. You're saying "jump isn't loop" but you haven't shown why.
17:11:38 <EvanR> first do you even have an understanding of the terms isolated to their own area
17:11:48 <EvanR> before mixing them up and seeing if they explode
17:11:49 <davean> jkaye: no it can't becasue its clearly mathametically more powerful
17:11:52 <jkaye> You can't just keep saying "it is X" or "it is not X", there has to be a reason that's the case
17:12:11 <davean> conditional jump is turing complete
17:12:13 dankey joins (~dankey@85-250-184-204.bb.netvision.net.il)
17:12:20 <yin> EvanR: i don't (have an understanding of the terms isolater to their own area)
17:12:26 <jkaye> davean, if I can transform one to the other in practical space, I don't really care about the "mathematical power" of it :)
17:12:29 <davean> jkaye: its mostly I'm really bored by basic discussions
17:12:39 <EvanR> after enough time and no input from the outside world, any program with finite memory has to repeat, i.e. The Big Loop xD
17:12:41 <jkaye> As am I by circular logic
17:12:43 <davean> jkaye: mathematical pwoer says you can't do the conversion though
17:12:52 <jkaye> So let's prove it by contradiction!
17:13:03 <jkaye> I am happy to be wrong here, it's an interesting thought exercise
17:13:19 <monochrom> The following may be serious or may be trolling, I haven't decided yet: No, looping plus stack plus stack smashing is more powerful than recursion, you now even have call/cc.
17:13:24 <jkaye> We need a (working, in code) recursion implementation that cannot be converted to an iterative form
17:13:33 <jkaye> C or C++ should suffice
17:13:36 <dankey> test
17:14:27 <davean> jkaye: yes, and I'm saying that is a standard basic CS topic - I linked you to primative recursion which covers which ones can'ty
17:14:54 <davean> if you can't even read, then see the ackermann function - the classic example
17:15:39 <EvanR> in before someone questions the church turing thesis
17:15:47 <yin> :D
17:16:07 <jkaye> You have posted no links, and apparently cannot engage in conversation without degrading into whatever that was supposed to be. Probably not worth interacting with you I suppose
17:16:07 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
17:16:21 <yin> hey come on
17:16:27 <davean> I'm really not interested in this interaction
17:16:30 <yin> let's keep this entertaining
17:16:32 geekosaur joins (~geekosaur@xmonad/geekosaur)
17:16:44 <jkaye> Sorry yin, not worth my time for someone like that :)
17:16:49 <jkaye> I was having some fun too
17:18:49 jurjen joins (~jurjen@89-200-15-28.mobile.kpn.net)
17:19:22 <yin> https://www.youtube.com/watch?v=i7sm9dzFtEI
17:20:02 TranquilEcho joins (~grom@user/tranquilecho)
17:20:57 <monochrom> http://www.vex.net/~trebla/compsci/imperative-functional.html
17:22:21 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Quit: leaving)
17:23:03 <yin> and between these two links i think we can call it a day
17:23:31 × jess quits (~jess@libera/staff/jess) ()
17:24:12 × bbear quits (~znc@21212.s.t4vps.eu) (Quit: ZNC 1.7.4 - https://znc.in)
17:24:26 bbear joins (~znc@21212.s.t4vps.eu)
17:24:59 <EvanR> another gem from /~trebla/
17:25:07 <monochrom> :)
17:27:37 × Guest89 quits (~Guest89@catv-89-134-211-102.catv.broadband.hu) (Quit: Client closed)
17:28:14 Guest6622 joins (~Guest66@catv-89-134-211-102.catv.broadband.hu)
17:28:40 <Guest6622> Hi, I'm not sure what keywords to search for: I'm looking for a typeclass family, that looks like Applicative&Monad, but has no pure/return or fmap
17:29:17 <davean> what does that mean? what does it do? Maybe you mean something like semigroup/monoid?
17:29:23 <davean> got something more concrete?
17:30:08 <EvanR> a monad without pure is one thing but how could it not have fmap
17:30:11 <Guest6622> Basically I want to keep all values inside the typeclass, don't want to be able to inject values (like return) or functions (like fmap)
17:30:26 <davean> so how does it do anything at all?
17:30:27 <Franciman> Guest6622: what about extracting things ?
17:30:37 <davean> yah he could mean comonad
17:30:42 <Franciman> can you have a function with type, w a -> a ?
17:30:47 <EvanR> comonad has fmap
17:30:49 <Guest6622> no extraction either
17:31:02 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
17:31:37 <davean> Guest6622: so the only thing I can think of is semigroup/monoid
17:31:44 <davean> but I have no idea what you're attempting to do
17:32:19 <EvanR> so Guest6622 wants myMethod :: MyClass m => m a -> (a -> m b) -> m b, but no fmap
17:32:42 <Guest6622> I'm trying to ensure isolation between the world inside the typeclass and the world outside
17:32:47 × TranquilEcho quits (~grom@user/tranquilecho) (Ping timeout: 264 seconds)
17:32:52 <EvanR> I'm guessing there are no known laws to follow xD
17:32:54 waleee joins (~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
17:33:23 TranquilEcho joins (~grom@user/tranquilecho)
17:33:55 <EvanR> since the correspondence between bind and join relies on fmap, and you don't want it, maybe you want join :: MyClass m => m (m a) -> m a instead?
17:33:55 <davean> EvanR: but that injects a function?
17:34:22 <EvanR> yeah it's not clear
17:34:37 <Guest6622> EvanR: yes join seems like something I'd need
17:35:03 <EvanR> It's hard to imagine using join a lot without fmap...
17:35:03 <Guest6622> davean: could you elaborate? how does join inject a function?
17:36:20 <davean> EvanR talked about >>=
17:38:17 <EvanR> maybe you don't want a typeclass in the first place, it would be easier to know if you gave a better picture of the interface
17:38:52 <Guest6622> as I imagine it, bind would no allow arbitrary function injection, like fmap, only a pre-defined list of API functions, that would allow controlled entry into the type
17:39:01 chomwitt joins (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374)
17:39:44 <EvanR> no you can use any function with the right type
17:39:47 deadmarshal joins (~deadmarsh@95.38.117.102)
17:40:04 <Guest6622> EvanR: possibly. The basic idea is: I want to build a world, with no entry or exit into "normal" haskell world
17:40:06 <davean> he could name the functions in an associated data
17:41:20 <Guest6622> EvanR: right, but if there's no return, you cannot create arbitrary functions that generate values inside the closed type, only combine functions from the API
17:42:13 <EvanR> functions aren't what let you arbitrarily work on the type, that's determined by the type itself. Like do you expose the constructors or hide them and only expose operators
17:42:46 × sprout quits (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260) (Ping timeout: 265 seconds)
17:42:51 <EvanR> user functions given to bind or fmap can't do anything not allowed by the type's API
17:42:55 <Guest6622> a real world usage I can think of is an HSM or GPU, where you build up a world inside a separate system
17:43:15 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
17:43:48 <EvanR> oh yeah, sort of like compiling to a different category by conal
17:44:01 <Guest6622> the type itself would not have constructors
17:44:29 <EvanR> without changing the compiler you can't really stop the user form using haskell functions wherever they want
17:45:02 <EvanR> within the code of some value
17:45:10 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection)
17:45:18 × dankey quits (~dankey@85-250-184-204.bb.netvision.net.il) (Ping timeout: 260 seconds)
17:46:48 <EvanR> but maybe look at how this guy did it https://hackage.haskell.org/package/atom
17:49:10 <EvanR> it looks like you write an Atom () action which when passed to compile, generates C code
17:49:29 <EvanR> so it's ok if haskell code runs during that
17:53:09 <Guest6622> yes, this looks like an instance for what I'd like. I was hoping for a higher level abstraction that would cover the general case (maybe it's the Conal reference you shared earlier, I just started processing it)
17:54:52 <EvanR> there's a few shader DSLs on duckduckgo
17:57:09 <Guest6622> I'm not much of a theoretician, so I was hoping someone already did the generalisations from these DSLs
17:57:35 econo joins (uid147250@user/econo)
18:01:41 mikoto-chan joins (~mikoto-ch@esm-84-240-99-143.netplaza.fi)
18:04:11 yauhsien joins (~yauhsien@118-167-47-187.dynamic-ip.hinet.net)
18:04:41 × jkaye quits (~jkaye@2601:281:8300:7530:af2a:f6dc:e38f:a278) (Ping timeout: 245 seconds)
18:05:07 <yin> Guest6622: have you looked into GADTs to see if that's what you're after?
18:08:11 <Guest6622> yin: as I see it, GADTs are useful when you're creating those DSLs. What I'm looking for is more a framework, that covers this kind of "a system separate from this" case.
18:09:16 × yauhsien quits (~yauhsien@118-167-47-187.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
18:09:32 <Guest6622> not to say, that GADTs can't be useful for that as well, but they're lower level tool, than I was hoping already exists.
18:10:11 <EvanR> the idea of "no entry or exit" seems kind of besides the point, since when you design a DSL part of the idea is you could have different interpretations for the DSL programs. Whether you could interact with something is part of the interpretation
18:15:53 <Guest6622> mNo
18:16:25 <Guest6622> it isn't besides the point to me :)
18:17:15 <EvanR> if that is the only criteria... then it seems to me it leaves a lot of options open xD
18:17:41 <Guest6622> what I'm trying to look at is what meaningful abstractions have already been built for these use cases
18:18:44 sprout joins (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260)
18:19:39 × timCF quits (~timCF@m91-129-99-212.cust.tele2.ee) (Quit: leaving)
18:19:44 <Guest6622> yes, and I don't have the capacity to research those open options myself, so I was looking for the giants to hop their shoulders
18:20:36 lavaman joins (~lavaman@98.38.249.169)
18:21:23 × alx741 quits (~alx741@181.196.68.187) (Ping timeout: 264 seconds)
18:22:50 × NinjaTrappeur quits (~ninja@user/ninjatrappeur) (Ping timeout: 268 seconds)
18:25:35 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
18:25:43 × Everything quits (~Everythin@37.115.210.35) (Quit: leaving)
18:26:55 NinjaTrappeur joins (~ninja@user/ninjatrappeur)
18:29:09 × deadmarshal quits (~deadmarsh@95.38.117.102) (Ping timeout: 256 seconds)
18:35:44 × mbuf quits (~Shakthi@122.178.124.57) (Quit: Leaving)
18:35:50 alx741 joins (~alx741@181.196.68.69)
18:37:43 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
18:39:59 deadmarshal joins (~deadmarsh@95.38.117.102)
18:42:07 gaff joins (~gaff@49.207.207.122)
18:42:17 × gaff quits (~gaff@49.207.207.122) (Client Quit)
18:45:16 <yin> is there any reason *not* to use {-# LANGUAGE Safe #-} ?
18:45:27 × incendiary quits (~i@5.18.232.236) (Quit: Lost terminal)
18:45:52 Guest46 joins (~Guest46@apn-pool3-226-097.pennnet.nat.upenn.edu)
18:45:54 <[exa]> useful instances of unsafePerformIO in libs
18:46:11 <[exa]> also, (slightly faster) unsafe ops for vectors
18:46:19 <geekosaur> all your imports have to be FFI-free or guarantee that all their FFI uses are safe, iirc
18:47:10 <geekosaur> but a loot of things are done via FFI; I think this for example precludes ByteString and Text?
18:47:29 <geekosaur> s/loot/lot/
18:48:31 <yin> doesnt Safe allow for Trustworthy imports?
18:48:53 <geekosaur> that's what "guarantee all their FFI uses are safe" is
18:49:00 <yin> right
18:49:10 <geekosaur> the question becomes how well audited those libraries are
18:49:45 <yin> so i should get into the habit of having it on by default
18:49:56 <geekosaur> and whether their authors are willing to commit to their safety
18:50:12 <geekosaur> which is more or less what they are doing if they declare themselves Trustworthy
18:50:16 <yin> understood
18:50:53 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection)
18:51:18 <yin> is there an extension for guaranteeing that i don't import functions that are either incomplete or explicitly return bottom values?
18:53:43 <geekosaur> no
18:54:33 <monochrom> {-# LANGUAGE Agda #-} >:)
18:56:39 <EvanR> that would be an interesting "guarantee"
18:56:55 <EvanR> no obvious bottoms
19:02:19 lavaman joins (~lavaman@98.38.249.169)
19:07:37 × Guest46 quits (~Guest46@apn-pool3-226-097.pennnet.nat.upenn.edu) (Quit: Client closed)
19:08:23 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:11:12 <yin> well, i figure it wouldn't be that hard. just a check at the type level that all polimorphic functions eventually resolve to some "bottomless" type. i'm excluding non-termination, of course
19:11:55 <yin> s/functions/values ? (i don't really know what i'm talking about)
19:12:13 <geekosaur> pattern match checking has been shown to be anything but easy and still misses some cases, I think
19:14:54 × deadmarshal quits (~deadmarsh@95.38.117.102) (Ping timeout: 260 seconds)
19:15:06 × alx741 quits (~alx741@181.196.68.69) (Ping timeout: 245 seconds)
19:15:07 × jrm quits (~jrm@156.34.187.65) (Remote host closed the connection)
19:15:36 zincy_ joins (~zincy@2a00:23c8:970c:4801:350f:7ee:191a:6f65)
19:15:53 × max22- quits (~maxime@2a01cb08833598007277439ba0202f1c.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds)
19:17:30 fef joins (~thedawn@user/thedawn)
19:18:15 mvk joins (~mvk@2607:fea8:5cc3:e900::df92)
19:26:55 × Guest42 quits (~Guest42@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed)
19:28:47 × zincy_ quits (~zincy@2a00:23c8:970c:4801:350f:7ee:191a:6f65) (Remote host closed the connection)
19:29:26 <yin> shame shame
19:30:02 <geekosaur> the more complete you try to be about such things, the closer you get to the halting problem
19:30:21 <geekosaur> it's much harder than you think even if you try to scale the problem down to supposedly manageable subsets
19:31:34 × fef quits (~thedawn@user/thedawn) (Quit: Leaving)
19:31:50 <geekosaur> you end up doing what languages like agda do, restrict the scope of the language itself to prevent bottoms — but then you make the language much less usable
19:33:39 max22- joins (~maxime@2a01cb088335980063a544fa463a8015.ipv6.abo.wanadoo.fr)
19:33:54 <Franciman> much less usable how? You mean you found yourself in a situation where you couldn't write a program to solve your problem?
19:34:30 <Franciman> or that it's harder? You should also consider that you can tweak agda to get correct by construction software
19:34:43 <Franciman> up to agda bugs :P
19:36:37 <geekosaur> but agda won't let you write some things unless you also write a proof that it will terminate
19:36:54 <geekosaur> or that it won't bottom out some other way
19:40:18 Sgeo joins (~Sgeo@user/sgeo)
19:41:14 kuribas joins (~user@ptr-25vy0i7llzyvxfc43ot.18120a2.ip6.access.telenet.be)
19:42:11 <yin> what's liquid haskell?
19:42:36 <yin> what's -> how does it relate to this?
19:42:50 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
19:42:54 <geekosaur> it's a preprocessor (which I think is being rewritten to a set of ghc plugins?) that adds refinement types
19:43:23 random-jellyfish joins (~random-je@user/random-jellyfish)
19:43:24 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
19:44:31 <geekosaur> the problem with relating them to this discussion is that bottom is not a value, so cannot be captured or refuted by a refinement type
19:46:15 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
19:48:56 × jurjen quits (~jurjen@89-200-15-28.mobile.kpn.net) (Read error: Connection reset by peer)
19:54:43 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
19:55:50 Jeanne-Kamikaze joins (~Jeanne-Ka@static-198-54-131-136.cust.tzulo.com)
19:56:38 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
19:58:28 <dolio> Agda will let you write things that don't obviously terminate without a proof. It just won't let you give them a type that says they'll definitely terminate.
19:58:46 Guest43 joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
19:59:39 alx741 joins (~alx741@181.196.68.69)
20:00:15 <dolio> It'll even let you just declare that something terminates, too, strictly speaking.
20:00:29 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
20:02:54 × wolfshappen quits (~waff@irc.furworks.de) (Quit: later)
20:03:36 <kuribas> I found the concept of "fuel" in idris interesting. You can make a function that terminates given finite "fuel", and to make it run forever, you just give it infinite fuel.
20:03:47 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
20:04:51 <kuribas> On the other hand, "terminating" functions may not practically terminate.
20:05:03 <kuribas> As in they terminate but not in any reasonable time.
20:05:06 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
20:05:11 <dolio> Well, that's always been true.
20:05:21 <hpc> a better term for it might be "productivity"
20:05:29 × juhp quits (~juhp@128.106.188.220) (Ping timeout: 256 seconds)
20:05:38 <dolio> The Ackermann function is a terminating function, as far as type theory is concerned.
20:05:53 <kuribas> So terminating functions are mostly useful for proofs?
20:05:54 <hpc> you can define things that deal with infinite structures, but they have to always produce something at every step
20:06:13 <hpc> filtering an infinite list needs to always have a next element, for instance
20:06:15 <kuribas> streams are total in idris as well.
20:06:25 <kuribas> As it knows you are not producing the whole list.
20:06:46 juhp joins (~juhp@128.106.188.220)
20:06:56 <kuribas> But that could rule out a function like "loeb".
20:07:00 <dolio> Just because it doesn't solve all problems doesn't mean it's useless.
20:11:35 wolfshappen joins (~waff@irc.furworks.de)
20:18:29 × ystael quits (~ystael@user/ystael) (Quit: Lost terminal)
20:19:54 aegon joins (~mike@174.127.249.180)
20:20:36 jurjen joins (~jurjen@89-200-14-25.mobile.kpn.net)
20:25:32 × Jeanne-Kamikaze quits (~Jeanne-Ka@static-198-54-131-136.cust.tzulo.com) (Quit: Leaving)
20:26:51 <kuribas> dolio: not useless, but heavy for what it gives.
20:27:18 <kuribas> It may sometimes catch an accidental recursion, which is easy with lazyness.
20:30:20 zincy_ joins (~zincy@2a00:23c8:970c:4801:350f:7ee:191a:6f65)
20:33:37 acidjnk_new3 joins (~acidjnk@p200300d0c736cb18d4b31450c12316ac.dip0.t-ipconnect.de)
20:35:23 acidjnk_new joins (~acidjnk@p200300d0c74373762d98dd33bce98ac3.dip0.t-ipconnect.de)
20:38:42 × acidjnk_new3 quits (~acidjnk@p200300d0c736cb18d4b31450c12316ac.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
20:38:43 zebrag joins (~chris@user/zebrag)
20:42:48 × kupi quits (uid212005@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
20:44:21 cjb joins (~cjbayliss@user/cjb)
20:44:42 × jurjen quits (~jurjen@89-200-14-25.mobile.kpn.net) (Quit: WeeChat 3.0)
20:45:45 × random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
20:50:22 × tomsmeding quits (~tomsmedin@tomsmeding.com) (Quit: ZNC 1.8.2 - https://znc.in)
20:53:13 tomsmeding joins (~tomsmedin@tomsmeding.com)
20:55:31 ircbrowse_tom joins (~ircbrowse@static.162.49.55.162.clients.your-server.de)
20:55:33 Server sets mode +Cnt
20:58:54 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
20:59:07 chexum joins (~quassel@gateway/tor-sasl/chexum)
21:01:29 × edwtjo quits (~edwtjo@user/edwtjo) (Quit: WeeChat 3.0)
21:02:47 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 264 seconds)
21:04:24 × alx741 quits (~alx741@181.196.68.69) (Ping timeout: 268 seconds)
21:06:28 edwtjo joins (~edwtjo@h-109-228-137-133.A213.priv.bahnhof.se)
21:06:28 × edwtjo quits (~edwtjo@h-109-228-137-133.A213.priv.bahnhof.se) (Changing host)
21:06:28 edwtjo joins (~edwtjo@user/edwtjo)
21:06:49 × kuribas quits (~user@ptr-25vy0i7llzyvxfc43ot.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
21:10:23 × Guest6622 quits (~Guest66@catv-89-134-211-102.catv.broadband.hu) (Quit: Client closed)
21:13:46 mastarija joins (~mastarija@2a05:4f46:e06:ff00:9df8:7c4a:6bea:1e5a)
21:13:54 <[itchyjunk]> Hi, slightly offtopic link https://www.cambridge.org/core/blog/2021/11/11/journal-of-functional-programming-moving-to-open-access/
21:14:16 <[itchyjunk]> I don't have stomach for reading papers especially FP papers but there must be people who can digest it!
21:17:35 × burnsidesLlama quits (~burnsides@dhcp168-014.wadham.ox.ac.uk) (Remote host closed the connection)
21:18:21 alx741 joins (~alx741@181.196.68.69)
21:22:11 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
21:24:18 <tomsmeding> yay!
21:24:56 × ubert quits (~Thunderbi@p548c9652.dip0.t-ipconnect.de) (Remote host closed the connection)
21:25:14 ubert joins (~Thunderbi@p548c9652.dip0.t-ipconnect.de)
21:27:03 ec joins (~ec@gateway/tor-sasl/ec)
21:27:55 × ec quits (~ec@gateway/tor-sasl/ec) (Client Quit)
21:31:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:32:04 <tomsmeding> [exa]: I suddenly realise that your regex lib request was for adiff
21:41:27 machinedgod joins (~machinedg@24.105.81.50)
21:44:06 × zincy_ quits (~zincy@2a00:23c8:970c:4801:350f:7ee:191a:6f65) (Remote host closed the connection)
21:48:17 <[exa]> tomsmeding: precisely
21:48:18 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.3)
21:48:26 <[exa]> it's a bit on hold
21:48:38 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
21:48:40 <[exa]> :]
21:50:46 burnsidesLlama joins (~burnsides@dhcp168-014.wadham.ox.ac.uk)
21:50:47 × mvk quits (~mvk@2607:fea8:5cc3:e900::df92) (Ping timeout: 264 seconds)
21:51:21 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
21:53:01 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 245 seconds)
21:53:22 slack1256 joins (~slack1256@186.11.4.84)
21:56:33 × burnsidesLlama quits (~burnsides@dhcp168-014.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
21:56:34 × cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Quit: ERC (IRC client for Emacs 27.1))
21:58:27 × slack1256 quits (~slack1256@186.11.4.84) (Ping timeout: 265 seconds)
21:59:45 × mastarija quits (~mastarija@2a05:4f46:e06:ff00:9df8:7c4a:6bea:1e5a) (Quit: Leaving)
22:04:00 jbox joins (~jbox@user/jbox)
22:06:04 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
22:09:41 × cheater quits (~Username@user/cheater) (Ping timeout: 245 seconds)
22:18:12 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
22:18:37 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
22:19:21 <yin> @type flip id
22:19:22 <lambdabot> b -> (b -> c) -> c
22:19:28 cheater joins (~Username@user/cheater)
22:19:31 <energizer> which other languages have `where`?
22:19:50 <yin> ^ can anybody quickly help me wrap my head around this?
22:20:48 lavaman joins (~lavaman@98.38.249.169)
22:21:05 <[exa]> yin: do you know how substitutions and unifications work?
22:21:22 <yin> not formally but i got the intuition
22:21:23 <monochrom> Specialize id to (b->c)->(b->c) = (b->c)->b->c, which is ($).
22:21:31 <[exa]> yin: in short, you have: id :: x->x; flip :: (a -> (b -> c)) -> b -> (a -> c)
22:21:58 <[exa]> then you need to make x -> x fit into the first parameter, so you got equation x->x == a->(b->c)
22:22:10 <[exa]> in turn you'll get a == x == b->c
22:22:26 <yin> (b -> c) -> b -> (x -> x) -> c
22:22:27 <yin> ?
22:22:47 <yin> ah no
22:22:50 <yin> ok i got it
22:22:54 ec joins (~ec@gateway/tor-sasl/ec)
22:23:00 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:23:11 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
22:23:18 <[exa]> first step you solve x->x == a->(b->c) because you need to smash the `id` into the first argument
22:23:20 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 268 seconds)
22:23:37 <[exa]> solution of a symbolic equation is a substitution of variables that makes the sides equal
22:23:46 <yin> yeah it clicked
22:23:50 <yin> thanks
22:24:05 <yin> i'm tired
22:24:08 <sshine> x -> x = a -> b -> c, so that is when a = x, and (b -> c) = x.
22:24:10 <[exa]> (you can wiki "robinson unification" btw, the process is surprisingly straightforward) :]
22:24:32 <[exa]> anyway, just to finish that, you'll eventually get a fact that a==(b->c)
22:24:46 <EvanR> energizer, SQL? xD
22:24:55 <energizer> elixir, apparently
22:24:59 <[exa]> which should lead to final flip id :: b -> ((b->c) -> c)
22:25:03 <geekosaur> what variety of `where`?
22:25:06 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
22:25:16 <[exa]> EvanR: rofl
22:25:38 <geekosaur> if you mean where blocks, they exist but are not especially common. I couldn't name any off the top of my head though
22:26:31 <energizer> https://hexdocs.pm/elixir/guards.html#where-guards-can-be-used
22:27:15 <energizer> what's the other kind of where in haskell?
22:27:20 <[exa]> julia has a where keyword for type constraints
22:27:55 <[exa]> and then there's the SPARQL where but let's not open that box
22:28:19 <geekosaur> `where` has multiple meanings in haskell. consider `module Foo where`, `class Foo a where`, etc.
22:28:47 <geekosaur> syntactically they all have the same form, but have varied meanings
22:28:47 <yin> are we talking about a "where" keyword, or just syntactic sugar for closures in general?
22:29:17 <[exa]> sugary still a keyword though
22:39:04 danso joins (~danso@23-233-111-52.cpe.pppoe.ca)
22:39:53 mvk joins (~mvk@2607:fea8:5cc3:e900::df92)
22:43:34 burnsidesLlama joins (~burnsides@dhcp168-014.wadham.ox.ac.uk)
22:44:15 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
22:44:48 cads is now known as DoseMeBoofy
22:49:14 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
22:51:22 fuzzypixelz joins (~fuzzypixe@tchebychev.ensimag.fr)
22:51:30 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Remote host closed the connection)
22:51:42 × Guest43 quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 268 seconds)
22:51:47 × choucavalier quits (~choucaval@peanutbuttervibes.com) (Quit: ZNC 1.8.2 - https://znc.in)
22:51:50 unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
22:52:05 choucavalier joins (~choucaval@peanutbuttervibes.com)
22:54:46 zaquest joins (~notzaques@5.130.79.72)
22:58:26 × TranquilEcho quits (~grom@user/tranquilecho) (Quit: WeeChat 2.8)
22:58:39 yin parts (~z@user/zero) ()
23:00:05 brainfreeze joins (~brainfree@2a03:1b20:4:f011::20d)
23:05:16 × gawen quits (~gawen@user/gawen) (Ping timeout: 268 seconds)
23:07:08 Feuermagier joins (~Feuermagi@user/feuermagier)
23:08:17 gawen joins (~gawen@user/gawen)
23:09:57 jmorris joins (uid433911@hampstead.irccloud.com)
23:14:27 allbery_b joins (~geekosaur@xmonad/geekosaur)
23:14:27 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
23:14:29 allbery_b is now known as geekosaur
23:20:11 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
23:20:21 chexum joins (~quassel@gateway/tor-sasl/chexum)
23:22:42 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:26:28 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
23:28:17 AlexNoo_ joins (~AlexNoo@178.34.150.115)
23:30:41 × AlexZenon quits (~alzenon@178.34.163.122) (Ping timeout: 250 seconds)
23:31:46 × AlexNoo quits (~AlexNoo@178.34.163.122) (Ping timeout: 256 seconds)
23:32:11 × Alex_test quits (~al_test@178.34.163.122) (Ping timeout: 264 seconds)
23:32:55 × gawen quits (~gawen@user/gawen) (Quit: cya)
23:34:53 AlexZenon joins (~alzenon@178.34.150.115)
23:35:10 × alx741 quits (~alx741@181.196.68.69) (Ping timeout: 256 seconds)
23:35:53 Alex_test joins (~al_test@178.34.150.115)
23:36:06 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 268 seconds)
23:37:11 gawen joins (~gawen@user/gawen)
23:41:20 × max22- quits (~maxime@2a01cb088335980063a544fa463a8015.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
23:44:21 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
23:46:36 slice joins (~slice@user/slice)
23:46:46 × Midjak quits (~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
23:47:16 jrm joins (~jrm@156.34.187.65)
23:48:50 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds)
23:49:34 × Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
23:49:59 × gawen quits (~gawen@user/gawen) (Quit: cya)
23:50:20 olibiera joins (~olibiera@a85-138-214-194.cpe.netcabo.pt)
23:50:56 × Alleria quits (~textual@user/alleria) (Ping timeout: 245 seconds)
23:51:32 renzhi joins (~xp@2607:fa49:6500:b100::6e7f)
23:52:42 <olibiera> hello guys, is there any easy way to turn a string that is a math expression (ex: "4*3") in the result (12)
23:52:52 <olibiera> ?
23:53:36 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
23:54:03 <dsal> olibiera: you write a parser and evaluate the result.
23:54:13 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
23:54:19 gawen joins (~gawen@user/gawen)
23:54:26 <dsal> So, yeah, pretty easy, but you have to do some of the work.
23:55:06 <olibiera> my english is not really good, can u explain what a parser is pls
23:55:41 <dibblego> A parser for things is a function from strings to lists of pairs of things and strings.
23:56:13 <olibiera> oh k ty :)
23:57:44 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
23:58:12 Vajb joins (~Vajb@2001:999:85:46d7:d6a4:d6c1:950b:ce99)
23:58:58 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)

All times are in UTC on 2021-11-14.