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.