Logs on 2021-07-19 (liberachat/#haskell)
| 00:04:52 | × | drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Quit: ZNC 1.8.2 - https://znc.in) |
| 00:07:48 | × | phma quits (phma@2001:0:c38c:c38c:3cee:b989:bcd3:2f3d) (Ping timeout: 255 seconds) |
| 00:07:50 | → | phma_ joins (phma@2001:5b0:211f:1178:dd66:934e:c06f:5919) |
| 00:10:14 | × | Null_A quits (~null_a@2601:645:8700:2290:a961:38e5:e25d:7cd0) () |
| 00:10:17 | phma_ | is now known as phma |
| 00:11:34 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 00:13:19 | → | yauhsien joins (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) |
| 00:14:33 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds) |
| 00:15:38 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 00:18:21 | <dminuoso> | Mmm. Im doing an URL style percent encoding/decoding of bytestring. I have two Word8 and want to prepend them to a ByteString, what's the efficient way to do this here? |
| 00:19:32 | <Axman6> | I would have a look at the bytestring-base16 code to find efficient ways to do things. otherwise I'd probably just say use a builder if it's likely you'll be doing more appends/prepends |
| 00:21:33 | <dminuoso> | I was thinking along the lines of: let dualton c1 c2 = unsafeCreate 2 $ \p -> poke p c1 >> poke (p `plusPtr` 1) c2 in dualton x1 x2 <> rest |
| 00:21:45 | <dminuoso> | Axman6: Mmm. |
| 00:22:10 | <dminuoso> | Ah, yes. Perhaps that is the better way indeed |
| 00:22:57 | <Axman6> | if you know exactly how large the result will be there's definitely tricks to make it fast, but usually if the question is ')how do I construct a bytestring from parts" the answer is Builder |
| 00:23:52 | × | smtnet3 quits (~asdfasdfa@202.36.244.28) (Quit: Leaving) |
| 00:26:36 | <dminuoso> | Mmm, so on the outside Im inside conduit. Maybe there's a way to stream a bytestring builder into a conduit |
| 00:27:21 | <dminuoso> | Apparently not, but that's fine |
| 00:28:03 | → | zebrag joins (~chris@user/zebrag) |
| 00:29:03 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 00:29:46 | <dminuoso> | @tell burnsidesLlama It just occured to me, that the generalization you are looking for is `scanl` or `scanr`. |
| 00:29:46 | <lambdabot> | Consider it noted. |
| 00:32:22 | × | jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 00:32:42 | × | Atum_ quits (~IRC@user/atum/x-2392232) (Ping timeout: 240 seconds) |
| 00:36:38 | <Axman6> | dminuoso: using https://hackage.haskell.org/package/bytestring-0.11.1.0/docs/Data-ByteString-Builder-Internal.html#t:ChunkIOStream you can efficiently stream a bytestring |
| 00:40:20 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 00:41:38 | <Axman6> | ... maybe, actually struggling to see how to take in Builders and then use that |
| 00:42:41 | Ttech | is now known as Adran |
| 00:44:42 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds) |
| 00:44:52 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
| 00:45:00 | → | hughjfchen[m] joins (~hughjfche@2001:470:69fc:105::c29d) |
| 00:56:24 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 00:58:05 | × | Deide quits (~Deide@user/deide) (Quit: Seeee yaaaa) |
| 01:02:47 | × | Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer) |
| 01:02:53 | × | waleee quits (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 255 seconds) |
| 01:03:36 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 01:05:00 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 01:07:59 | → | shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 01:12:16 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 01:17:26 | → | enemeth79 joins (uid309041@id-309041.tooting.irccloud.com) |
| 01:18:37 | → | meinside_ joins (uid24933@id-24933.brockwell.irccloud.com) |
| 01:19:00 | × | nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
| 01:23:09 | × | xff0x_ quits (~xff0x@2001:1a81:525b:ea00:e4bc:612d:f531:cac7) (Ping timeout: 250 seconds) |
| 01:25:10 | → | xff0x_ joins (~xff0x@2001:1a81:5299:ea00:490d:5ed2:61e8:145d) |
| 01:25:57 | → | dre joins (~dre@2001:8003:c932:c301:e078:5df6:bd54:b22a) |
| 01:27:39 | → | jmorris joins (uid433911@id-433911.stonehaven.irccloud.com) |
| 01:29:29 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds) |
| 01:29:53 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 01:34:53 | → | derelict joins (~derelict@user/derelict) |
| 01:40:35 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds) |
| 01:43:32 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds) |
| 01:44:08 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 01:44:15 | → | nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
| 01:46:21 | × | ph88^ quits (~ph88@2a02:8109:9e00:7e5c:f938:d06a:9ad7:b39c) (Ping timeout: 255 seconds) |
| 01:47:15 | × | smichel17 quits (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) (Quit: smichel17) |
| 01:49:14 | × | nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds) |
| 01:49:50 | × | shailangsa quits (~shailangs@host86-145-14-107.range86-145.btcentralplus.com) (Ping timeout: 268 seconds) |
| 01:50:40 | × | yauhsien quits (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 01:51:56 | × | alx741 quits (~alx741@186.178.109.120) (Quit: alx741) |
| 02:00:19 | → | yauhsien joins (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) |
| 02:01:24 | → | nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
| 02:01:46 | → | ph88^ joins (~ph88@2a02:8109:9e00:7e5c:f938:d06a:9ad7:b39c) |
| 02:06:20 | × | nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds) |
| 02:11:02 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds) |
| 02:12:38 | × | td_ quits (~td@muedsl-82-207-238-204.citykom.de) (Ping timeout: 258 seconds) |
| 02:13:52 | → | nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
| 02:14:20 | → | td_ joins (~td@muedsl-82-207-238-108.citykom.de) |
| 02:15:11 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:15:11 | FinnElija | is now known as Guest3119 |
| 02:15:11 | × | Guest3119 quits (~finn_elij@user/finn-elija/x-0085643) (Killed (strontium.libera.chat (Nickname regained by services))) |
| 02:15:11 | finn_elija | is now known as FinnElija |
| 02:16:58 | × | cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds) |
| 02:17:07 | → | cheater joins (~Username@user/cheater) |
| 02:19:23 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 02:20:15 | → | h98 joins (~h98@187.83.249.216.dyn.smithville.net) |
| 02:25:36 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:25:58 | → | shailangsa joins (~shailangs@host86-186-191-14.range86-186.btcentralplus.com) |
| 02:29:18 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 268 seconds) |
| 02:35:28 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds) |
| 02:38:19 | × | peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 02:40:02 | × | chris_ quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 02:40:46 | <dmj`> | int-e: there is a patreon for GRIN work yes |
| 02:41:13 | <dmj`> | Some of what I said is related to that |
| 02:41:55 | → | chris_ joins (~chris@81.96.113.213) |
| 02:44:10 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 02:44:12 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 02:44:57 | allbery_b | is now known as geekosaur |
| 02:44:57 | → | lavaman joins (~lavaman@98.38.249.169) |
| 02:46:42 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 02:49:10 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
| 02:52:27 | → | myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net) |
| 02:56:57 | × | jushur quits (~human@user/jushur) (Quit: ¯\_(ツ)_/¯) |
| 02:59:42 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds) |
| 03:00:51 | × | vicfred quits (~vicfred@user/vicfred) (Quit: Leaving) |
| 03:01:41 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds) |
| 03:02:35 | → | vicfred joins (~vicfred@user/vicfred) |
| 03:05:12 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 03:11:10 | → | GeorgeArmani joins (~GeorgeArm@76-236-222-208.lightspeed.tukrga.sbcglobal.net) |
| 03:11:30 | <GeorgeArmani> | Can someone help me understand this error message ? |
| 03:11:32 | <GeorgeArmani> | any' :: (a -> Bool) -> a -> Bool |
| 03:11:32 | <GeorgeArmani> | any' f xs = foldl step False xs where |
| 03:11:33 | <GeorgeArmani> | step acc (y:ys) |
| 03:11:33 | <GeorgeArmani> | | f y = True |
| 03:11:34 | <GeorgeArmani> | | otherwise = acc |
| 03:11:41 | <GeorgeArmani> | Fold.hs:52:30: error: |
| 03:11:42 | <GeorgeArmani> | • Occurs check: cannot construct the infinite type: a ~ t0 [a] |
| 03:11:42 | <GeorgeArmani> | • In the third argument of ‘foldl’, namely ‘xs’ |
| 03:11:43 | <GeorgeArmani> | In the expression: foldl step False xs |
| 03:11:43 | <GeorgeArmani> | In an equation for ‘any'’: |
| 03:11:44 | <GeorgeArmani> | any' f xs |
| 03:11:44 | <GeorgeArmani> | = foldl step False xs |
| 03:11:45 | <GeorgeArmani> | where |
| 03:11:45 | <GeorgeArmani> | step acc (y : ys) |
| 03:11:46 | <GeorgeArmani> | | f y = True |
| 03:11:46 | <GeorgeArmani> | | otherwise = acc |
| 03:12:28 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds) |
| 03:13:31 | <geekosaur> | please don't paste directly into the channel like that |
| 03:13:32 | <Axman6> | @where paste |
| 03:13:32 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
| 03:14:55 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 03:14:59 | <geekosaur> | but it's telling you that 'a' cannot at the same time be a Foldable over a list and an element of that list |
| 03:15:15 | <GeorgeArmani> | https://paste.tomsmeding.com/qsfDJyUC#file-1 |
| 03:15:16 | <Axman6> | yeah take a close look at the type you've given any' |
| 03:15:18 | <geekosaur> | think about your type signature |
| 03:15:33 | × | shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 268 seconds) |
| 03:15:54 | × | myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds) |
| 03:18:15 | <geekosaur> | it may also be helpful to give step the type signature you think it should have |
| 03:18:30 | × | nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
| 03:19:23 | → | peterhil joins (~peterhil@mobile-access-b04801-219.dhcp.inet.fi) |
| 03:19:40 | → | wei2912 joins (~wei2912@112.199.250.21) |
| 03:24:01 | × | Guest152 quits (~acid@2a01:4f9:c010:898a::1) (Changing host) |
| 03:24:01 | → | Guest152 joins (~acid@user/acid) |
| 03:24:13 | Guest152 | is now known as acid |
| 03:26:28 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving) |
| 03:26:39 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 268 seconds) |
| 03:26:41 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 03:27:01 | × | enemeth79 quits (uid309041@id-309041.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
| 03:30:00 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
| 03:33:40 | → | Null_A joins (~null_a@2601:645:8700:2290:5577:9a94:3b66:c39d) |
| 03:34:28 | → | myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net) |
| 03:38:22 | × | hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 03:38:48 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 03:39:44 | <GeorgeArmani> | I'm really having a tough time sorting that out |
| 03:41:22 | <geekosaur> | what does the type "a" in your type signature represent? |
| 03:41:49 | <geekosaur> | remember that it's going to be the same type everywhere in that signature |
| 03:43:29 | <GeorgeArmani> | I think it should be a list every time its used? |
| 03:43:48 | <geekosaur> | is it in (a -> Bool)? |
| 03:44:45 | × | TranquilEcho quits (~grom@user/tranquilecho) (Quit: WeeChat 2.8) |
| 03:47:05 | <GeorgeArmani> | ahhhh so should it be ------- any' :: (a -> Bool) -> [a] -> Bool |
| 03:47:15 | <geekosaur> | yes |
| 03:49:09 | <geekosaur> | I suspect from your original error that this will only fix one problem, though |
| 03:49:25 | <GeorgeArmani> | correct |
| 03:49:39 | × | myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds) |
| 03:50:45 | <GeorgeArmani> | In fact, I had that type signature originally but changed it to deal with this error https://paste.tomsmeding.com/ntGaaQnX |
| 03:51:42 | <GeorgeArmani> | Wait just putting [xs] like that worked |
| 03:52:05 | <GeorgeArmani> | https://paste.tomsmeding.com/qirkhcRw |
| 03:52:10 | <GeorgeArmani> | Im not sure why though |
| 03:53:26 | × | derelict quits (~derelict@user/derelict) (Ping timeout: 255 seconds) |
| 03:54:20 | × | aegon quits (~mike@174.127.249.180) (Remote host closed the connection) |
| 03:55:08 | <GeorgeArmani> | I get it now. Thanks Geekosaur. |
| 03:55:53 | <geekosaur> | yeh, you are splitting the list in step as well when you don't need to because fold already is |
| 03:56:25 | <geekosaur> | so it thinks you need a list of lists. that's why I suggested putting a type signature on step |
| 03:56:37 | <GeorgeArmani> | exactly, I deleted calling head in step and removed the [] around xs |
| 03:56:58 | × | yauhsien quits (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 04:00:50 | → | lavaman joins (~lavaman@98.38.249.169) |
| 04:04:03 | <GeorgeArmani> | Sorry for asking so many questions. I am confused about the type signature for step. |
| 04:04:41 | <GeorgeArmani> | I thought it would be Bool -> a -> Bool , but it is throwing an error at compile |
| 04:07:51 | <h98> | what's your code right now? that type signature sounds right to me |
| 04:09:13 | <GeorgeArmani> | https://paste.tomsmeding.com/kU1zB95f |
| 04:09:30 | <geekosaur> | oh, right, this requires ScopedTypeVariables to specify a signature |
| 04:10:14 | → | derelict joins (~derelict@user/derelict) |
| 04:10:30 | <geekosaur> | otherwise the a you specify in the type signature for step is unrelated to the one specified for any', but that breaks f |
| 04:10:31 | <GeorgeArmani> | Ok ill look into that |
| 04:11:11 | <geekosaur> | sometimes ghc is annoying that way |
| 04:11:22 | <h98> | should compile as-is if you delete the type signature now |
| 04:11:42 | <GeorgeArmani> | ahhhh ok. That is a little frustrating. |
| 04:12:04 | <GeorgeArmani> | yeah h98 thank you. I just wanted to make sure that I understood what was going on fully. |
| 04:12:04 | <geekosaur> | yes, but I suggested adding the type signature, having forgotten it wouldn';t work :( |
| 04:12:42 | <GeorgeArmani> | All good :) . Appreciate the help, Geekosaur. |
| 04:13:42 | → | benin03694 joins (~benin@106.198.95.190) |
| 04:14:55 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 04:15:44 | × | benin0369 quits (~benin@183.82.204.23) (Ping timeout: 265 seconds) |
| 04:15:44 | benin03694 | is now known as benin0369 |
| 04:16:57 | → | falafel_ joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 04:17:03 | → | yauhsien joins (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) |
| 04:18:59 | → | benin03699 joins (~benin@183.82.205.17) |
| 04:19:05 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds) |
| 04:19:52 | × | Null_A quits (~null_a@2601:645:8700:2290:5577:9a94:3b66:c39d) (Remote host closed the connection) |
| 04:20:53 | × | benin0369 quits (~benin@106.198.95.190) (Ping timeout: 255 seconds) |
| 04:20:53 | benin03699 | is now known as benin0369 |
| 04:26:42 | → | oxide joins (~lambda@user/oxide) |
| 04:27:51 | → | myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net) |
| 04:30:06 | × | GeorgeArmani quits (~GeorgeArm@76-236-222-208.lightspeed.tukrga.sbcglobal.net) (Quit: Client closed) |
| 04:34:22 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 04:40:40 | × | Reyu[M] quits (~reyureyuz@matrix.reyuzenfold.com) (Remote host closed the connection) |
| 04:41:08 | → | anandprabhu joins (anandprabh@gateway/vpn/airvpn/anandprabhu) |
| 04:41:13 | → | Reyu[M] joins (~reyureyuz@matrix.reyuzenfold.com) |
| 04:41:45 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds) |
| 04:42:03 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 04:42:07 | geekosaur | is now known as brandon |
| 04:45:02 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
| 04:45:13 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 04:47:58 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 252 seconds) |
| 04:48:36 | × | myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds) |
| 04:52:56 | <lechner> | Hi, is it possible to catch decompression errors from LZMA here? https://salsa.debian.org/lintian/kickoff/-/blob/master/Collect.hs#L82 |
| 04:54:12 | × | yauhsien quits (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 04:55:46 | → | yauhsien joins (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) |
| 04:56:13 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:00:01 | × | ChanServ quits (ChanServ@services.libera.chat) (shutting down) |
| 05:00:04 | × | cheater quits (~Username@user/cheater) (Remote host closed the connection) |
| 05:00:24 | × | azeem quits (~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it) (Remote host closed the connection) |
| 05:00:48 | → | ChanServ joins (ChanServ@services.libera.chat) |
| 05:00:48 | cadmium.libera.chat | sets mode +o ChanServ |
| 05:01:39 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds) |
| 05:04:00 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 05:04:32 | → | lavaman joins (~lavaman@98.38.249.169) |
| 05:04:55 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 05:07:10 | × | falafel_ quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds) |
| 05:10:48 | <dsal> | lechner: It uses MonadFail. You could use exceptions |
| 05:10:52 | <dsal> | @package exceptions |
| 05:10:53 | <lambdabot> | https://hackage.haskell.org/package/exceptions |
| 05:12:06 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds) |
| 05:14:28 | → | MQ-17J joins (~MQ-17J@8.21.10.15) |
| 05:20:27 | → | Null_A joins (~null_a@2601:645:8700:2290:5577:9a94:3b66:c39d) |
| 05:22:12 | → | jneira joins (~jneira@212.8.115.226) |
| 05:24:13 | <Hecate> | o/ |
| 05:24:26 | <Hecate> | I'm trying to better understand how I can use Comonad in my programs |
| 05:25:04 | <Hecate> | I've seen *one* usage of Comonad in a codebase, in which it acted as a priviledged accessor, like https://twitter.com/TechnoEmpress/status/1416992128643776513 |
| 05:26:04 | <Hecate> | but I think the usecase really stops at running "whatever <- asks extract" |
| 05:27:01 | <Hecate> | But then it feels more like I've created one more indirection |
| 05:27:54 | <Hecate> | that being said if I need more polymorphism on the 'Comonad r' this could be good |
| 05:30:15 | → | wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com) |
| 05:30:27 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds) |
| 05:32:05 | <lechner> | dsal: thanks! |
| 05:32:57 | × | derelict quits (~derelict@user/derelict) (Quit: WeeChat 3.2) |
| 05:41:00 | → | Guest95 joins (~Guest95@50.47.115.102) |
| 05:43:02 | <Guest95> | Hello! I currently use Spacemacs as my Haskell code editor. What code editor would you recommend? Is Yi worth looking in to? |
| 05:43:24 | × | mthvedt quits (uid501949@id-501949.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 05:46:17 | <Hecate> | Guest95: Yi was an interesting project but I fear it may be dead these days |
| 05:46:31 | → | paolino joins (~paolo@84.33.141.5) |
| 05:46:33 | <Hecate> | Guest95: I use neovim + lua plugins and config (if you're allergic to too much VimL) |
| 05:46:34 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 05:50:41 | × | cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50) |
| 05:53:15 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 05:54:12 | × | Null_A quits (~null_a@2601:645:8700:2290:5577:9a94:3b66:c39d) (Read error: Connection reset by peer) |
| 05:55:07 | × | dre quits (~dre@2001:8003:c932:c301:e078:5df6:bd54:b22a) (Quit: Leaving) |
| 05:56:49 | × | Guest95 quits (~Guest95@50.47.115.102) (Quit: Client closed) |
| 05:56:50 | <lechner> | Thanks for the pointer to yi. I may have found a minimal replacement for things like commit messages for mg, which is even less maintained and can't do Unicode |
| 06:01:00 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 06:03:17 | × | MQ-17J quits (~MQ-17J@8.21.10.15) (Ping timeout: 268 seconds) |
| 06:05:23 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 06:05:47 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 06:11:47 | → | Guest55 joins (~Guest55@50.47.115.102) |
| 06:15:07 | → | dre joins (~dre@2001:8003:c932:c301:9820:d974:d4b6:d3c4) |
| 06:26:24 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 06:26:43 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds) |
| 06:31:22 | → | vysn joins (~vysn@user/vysn) |
| 06:32:22 | × | jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 06:34:39 | → | ishutin joins (~ishutin@85-238-93-30.pool.digikabel.hu) |
| 06:42:16 | jjhoo_ | is now known as jjhoo |
| 06:42:55 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 06:47:52 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
| 06:48:33 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 06:50:26 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds) |
| 06:51:31 | × | oxide quits (~lambda@user/oxide) (Read error: Connection reset by peer) |
| 06:51:55 | → | kuribas joins (~user@ptr-25vy0i7jsa6kv1vvjg7.18120a2.ip6.access.telenet.be) |
| 06:57:17 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 06:57:39 | → | chele joins (~chele@user/chele) |
| 06:58:33 | → | aman joins (~aman@user/aman) |
| 06:59:05 | × | wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 07:00:27 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 255 seconds) |
| 07:01:46 | × | aman quits (~aman@user/aman) (Client Quit) |
| 07:02:56 | → | jmorris joins (uid433911@id-433911.stonehaven.irccloud.com) |
| 07:05:33 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 07:07:25 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 07:08:04 | → | fendor joins (~fendor@77.119.223.215.wireless.dyn.drei.com) |
| 07:09:55 | × | h98 quits (~h98@187.83.249.216.dyn.smithville.net) (Quit: Client closed) |
| 07:11:38 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 07:12:29 | → | Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) |
| 07:16:41 | → | KUrare joins (~KUrare@user/kurare) |
| 07:16:55 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Quit: WeeChat 2.8) |
| 07:17:05 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 07:17:13 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 07:20:52 | × | KUrare quits (~KUrare@user/kurare) (Ping timeout: 252 seconds) |
| 07:21:03 | × | yauhsien quits (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 07:24:54 | → | smtnet3 joins (~asdfasdfa@202.36.244.28) |
| 07:26:33 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 07:26:47 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:28:48 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 07:28:57 | → | yauhsien joins (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) |
| 07:30:35 | → | hseg joins (~gesh@185.120.126.10) |
| 07:31:11 | × | brandon quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds) |
| 07:31:16 | → | analognoise1 joins (~analognoi@2600:8801:8c26:9e00:cdb0:ec42:cea0:b1e2) |
| 07:32:12 | × | analognoise quits (~analognoi@83.136.182.93) (Ping timeout: 245 seconds) |
| 07:34:08 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 07:34:12 | geekosaur | is now known as brandon |
| 07:39:25 | → | __monty__ joins (~toonn@user/toonn) |
| 07:41:25 | × | Guest55 quits (~Guest55@50.47.115.102) (Ping timeout: 246 seconds) |
| 07:41:32 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 07:41:47 | × | vicfred quits (~vicfred@user/vicfred) (Quit: Leaving) |
| 07:44:33 | × | analognoise1 quits (~analognoi@2600:8801:8c26:9e00:cdb0:ec42:cea0:b1e2) (Ping timeout: 255 seconds) |
| 07:47:15 | × | Brianmancer quits (~Neuromanc@user/briandamag) (Ping timeout: 255 seconds) |
| 07:51:33 | → | acidjnk joins (~acidjnk@p200300d0c72b9531f8c9d06c34eef88c.dip0.t-ipconnect.de) |
| 07:57:11 | × | isekaijin quits (~pyon@user/pyon) (Quit: WeeChat 3.2) |
| 07:59:29 | × | dre quits (~dre@2001:8003:c932:c301:9820:d974:d4b6:d3c4) (Quit: Leaving) |
| 07:59:33 | → | michalz joins (~michalz@185.246.204.55) |
| 08:06:37 | → | hendursa1 joins (~weechat@user/hendursaga) |
| 08:09:39 | × | hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
| 08:11:35 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
| 08:12:29 | × | shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit) |
| 08:17:32 | → | drd joins (~drd@93-39-151-19.ip76.fastwebnet.it) |
| 08:17:34 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 08:20:06 | × | brandon quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 255 seconds) |
| 08:24:49 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 08:28:39 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 08:30:00 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 08:31:05 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds) |
| 08:31:17 | Lord_of_Life_ | is now known as Lord_of_Life |
| 08:31:49 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 246 seconds) |
| 08:33:21 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 08:36:14 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 08:37:16 | × | chris_ quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 08:38:19 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 08:38:45 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 08:40:12 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 08:40:24 | → | lavaman joins (~lavaman@98.38.249.169) |
| 08:40:32 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 08:41:04 | → | lavaman joins (~lavaman@98.38.249.169) |
| 08:45:23 | → | davros joins (~davros@host86-185-61-40.range86-185.btcentralplus.com) |
| 08:47:17 | → | guest719 joins (~user@49.5.6.87) |
| 08:47:39 | → | lars8 joins (~bc817c21@217.29.117.252) |
| 08:48:19 | <guest719> | why `traverse` would immediatly exit when it meet a Left a? |
| 08:48:51 | <guest719> | traverse (\i -> if odd i then Right () else Left i) [1..10] |
| 08:49:42 | <lars8> | > traverse (\i -> if odd i then Right () else Left i) [1..10] |
| 08:49:44 | <lambdabot> | Left 2 |
| 08:51:41 | <lars8> | > sequence [Left 1, Right 2] |
| 08:51:42 | <lambdabot> | Left 1 |
| 08:51:46 | <lars8> | @src sequence |
| 08:51:46 | <lambdabot> | sequence [] = return [] |
| 08:51:46 | <lambdabot> | sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs) |
| 08:51:46 | <lambdabot> | --OR |
| 08:51:46 | <lambdabot> | sequence xs = foldr (liftM2 (:)) (return []) xs |
| 08:52:00 | <lars8> | does that help? |
| 08:52:50 | <lars8> | traverse f is basically sequence . map f |
| 08:53:22 | <guest719> | but why it meet Left a will early exit? |
| 08:53:48 | <lars8> | because that's what liftM2 does |
| 08:54:04 | <guest719> | @src liftM2 |
| 08:54:04 | <lambdabot> | liftM2 f m1 m2 = do |
| 08:54:04 | <lambdabot> | x1 <- m1 |
| 08:54:05 | <lambdabot> | x2 <- m2 |
| 08:54:05 | <lambdabot> | return (f x1 x2) |
| 08:54:23 | <lars8> | > liftM2 (+) (Right 1) (Right 2) |
| 08:54:25 | <lambdabot> | Right 3 |
| 08:54:35 | <lars8> | > liftM2 (+) (Right 1) (Left 2) |
| 08:54:36 | <lambdabot> | Left 2 |
| 08:54:48 | <dminuoso> | guest719: `Either a`, like `Maybe`, models computations with exceptions. |
| 08:55:07 | <dminuoso> | So a `Left err` or `Nothing` has the same semantics as an exception, it shortcircuits the entire computation |
| 08:55:12 | <lars8> | if any argument is Left, entire computation is Left |
| 08:55:17 | <guest719> | oh, Left 2 will break the computation chain in >>= |
| 08:55:21 | <dminuoso> | Yes. |
| 08:55:52 | <guest719> | dminuoso and why it's that? define in >>= ? |
| 08:55:55 | <dminuoso> | guest719: Yes. |
| 08:56:26 | <dminuoso> | The applicative and monadic interface of `Maybe` and `Either s` simply models exceptions. |
| 08:56:27 | <guest719> | dminuoso except Left a and Nothing, is there other would break computation chain? |
| 08:56:30 | <dminuoso> | There's no deeper reason than that. |
| 08:56:37 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 08:56:39 | <dminuoso> | Sure there are others |
| 08:56:46 | <guest719> | for examples? |
| 08:57:06 | <dminuoso> | ExceptT |
| 08:57:19 | <dminuoso> | Though that's just an `Either s` in disguise |
| 08:57:36 | <guest719> | I can't help when you said Exception, I always think about run-time Exceptions |
| 08:57:48 | <dminuoso> | Yes, these are pretty much like runtime exceptions! |
| 08:57:51 | <dminuoso> | Consider: |
| 08:57:53 | <guest719> | why haskell would give it another name |
| 08:58:02 | <dminuoso> | These are value-level/user-defined exceptions |
| 08:58:02 | <guest719> | wouldn't |
| 08:58:38 | <dminuoso> | guest719: We also have regular RTS exceptions as you know them inside IO. |
| 08:58:48 | <dminuoso> | But in pure computations it might still be useful to have shortcircuiting semantics |
| 08:58:57 | <dminuoso> | Like with traverse. |
| 08:59:18 | <dminuoso> | Say you have a tree, and you want to process each node - but in a way that if you generate an error at any, that the entire computation is considered failed. |
| 08:59:46 | <dminuoso> | Then you can use `Maybe` or `Either s` (depending on whether you want to keep information about the error condition) |
| 09:00:06 | <dminuoso> | Then producing `Nothing` is semantically equivalent to throwing an exception, except we can do this in pure code and without any special support from the runtime system. |
| 09:00:20 | <dminuoso> | data Maybe a = Nothin | Just a |
| 09:00:25 | <dminuoso> | instance Monad Maybe where ... |
| 09:00:42 | <dminuoso> | Voila! You have created exception semantics on your own, no exception primitive support needed in the language. |
| 09:01:23 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 265 seconds) |
| 09:02:48 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
| 09:03:00 | <albet70> | can we think it as a failure computation? |
| 09:03:37 | <albet70> | what about 1/0? |
| 09:03:47 | <albet70> | 1/0 is an Exception? |
| 09:04:05 | <albet70> | IO failure is an Exception? |
| 09:05:09 | <albet70> | fmap (+1) Nothing would be an Exception? |
| 09:05:30 | <dminuoso> | `Nothing` acts as an exception, yes. |
| 09:05:55 | <dminuoso> | 1/0 is an interesting subject for several reasons |
| 09:06:46 | <dminuoso> | % :t (1/0) |
| 09:06:46 | <yahb> | dminuoso: ; <interactive>:1:3: error: Variable not in scope: (/) :: t0 -> t1 -> t |
| 09:06:59 | <dminuoso> | % :q |
| 09:06:59 | <yahb> | dminuoso: |
| 09:07:00 | <dminuoso> | % :t (1/0) |
| 09:07:01 | <yahb> | dminuoso: Fractional a => a |
| 09:07:06 | <dminuoso> | % :i Fractional |
| 09:07:08 | <yahb> | dminuoso: type Fractional :: * -> Constraint; class Num a => Fractional a where; (/) :: a -> a -> a; recip :: a -> a; fromRational :: Rational -> a; {-# MINIMAL fromRational, (recip | (/)) #-}; -- Defined in `GHC.Real'; instance Fractional a => Fractional (Identity a) -- Defined in `Data.Functor.Identity'; instance forall a k (b :: k). Fractional a => Fractional (Const a b) -- Defined in `Data.Functor.Co |
| 09:07:19 | <dminuoso> | % :t (/) |
| 09:07:20 | <yahb> | dminuoso: Fractional a => a -> a -> a |
| 09:07:34 | <dminuoso> | albet70: ^- so you see, this is either Float or Double, at which point IEEE 754 semantics apply. |
| 09:08:05 | <dminuoso> | Under which 1/0 is defined to be either positive or negative infinity (depending on the sign of 0) |
| 09:08:26 | <dminuoso> | So 1/0 is actually a well defined value, perhaps unintuitively. |
| 09:09:18 | <dminuoso> | But, what you probably meant is: |
| 09:09:22 | <dminuoso> | % 1 `div` 0 |
| 09:09:22 | <yahb> | dminuoso: *** Exception: divide by zero |
| 09:09:31 | <dminuoso> | % :t div |
| 09:09:31 | <yahb> | dminuoso: Integral a => a -> a -> a |
| 09:09:46 | × | Patternmaster quits (~georg@li1192-118.members.linode.com) (Ping timeout: 252 seconds) |
| 09:09:58 | → | Patternmaster joins (~georg@li1192-118.members.linode.com) |
| 09:10:02 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 09:10:04 | <albet70> | yes, div 0 |
| 09:10:07 | <dminuoso> | albet70: ^- so yeah, this is a partial computation. We could have also made it non-partial and given it the type `div :: Integral a => a -> a -> Maybe a`, which produces Nothing for that case. |
| 09:10:30 | × | jolly quits (~jolly@208.180.97.158) (Ping timeout: 252 seconds) |
| 09:12:02 | <dminuoso> | albet70: In general, it's better to encode a failure as `Maybe` or `Either s` rather than producing an error (like div does) |
| 09:12:34 | <dminuoso> | albet70: The reason is, you cant catch an `error` sensibly (its impossible in pure code, and you have imprecise error semantics if you try to do this from IO). error is really a sad part in Haskell. |
| 09:12:55 | <dminuoso> | But you can catch a Nothing just fine (you just pattern match with case-of) |
| 09:13:02 | <dminuoso> | Dont even need IO for that. |
| 09:14:21 | → | lavaman joins (~lavaman@98.38.249.169) |
| 09:15:25 | <albet70> | but haskell does try catch to capture runtime errors like IO error |
| 09:15:48 | <albet70> | and IO socket error, how to use Either to detect? |
| 09:16:01 | <dminuoso> | haskell does not try and catch runtime errors at all |
| 09:16:08 | <dminuoso> | They blow up your entire program |
| 09:17:30 | <dminuoso> | You have to explicitly catch them in IO |
| 09:17:44 | <dminuoso> | And it's subtly difficult to do this because of lazy evaluation |
| 09:17:47 | <dminuoso> | Consider |
| 09:17:49 | <dminuoso> | % :t evaluate |
| 09:17:49 | <yahb> | dminuoso: a -> IO a |
| 09:18:39 | <dminuoso> | This one only evaluates up until WHNF. You could still have errors lingering in not-yet-evaluated parts. There's tricks to get around this, but you need to be aware of this |
| 09:18:57 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
| 09:19:34 | <dminuoso> | It's why uses of `error` are highly discouraged, since it's completely unclear which library functions could possibly trigger an `error`. The most common one that regularly causes headaches for me is\ |
| 09:19:36 | <dminuoso> | % :t read |
| 09:19:36 | <yahb> | dminuoso: Read a => String -> a |
| 09:19:56 | <dminuoso> | If you think about it, it should be dead obvious that this is *very* partial (by very I mean almost all strings produce an invalid result, only very few strings produce a parsable value) |
| 09:20:24 | <dminuoso> | But this type of error quickly bubbles up and cant be reasonably caught anymore |
| 09:20:55 | <dminuoso> | A way better function instead is: |
| 09:20:57 | <dminuoso> | % :t readMaybe |
| 09:20:57 | <yahb> | dminuoso: ; <interactive>:1:1: error: Variable not in scope: readMaybe |
| 09:21:07 | <dminuoso> | % import Data.Text (readMaybe) |
| 09:21:07 | <yahb> | dminuoso: ; <interactive>:1:19: error: Module `Data.Text' does not export `readMaybe' |
| 09:21:17 | <dminuoso> | % import Text.Read (readMaybe) |
| 09:21:18 | <yahb> | dminuoso: |
| 09:21:19 | <dminuoso> | % :t readMaybe |
| 09:21:19 | <yahb> | dminuoso: Read a => String -> Maybe a |
| 09:27:02 | → | rahguzar joins (~rahguzar@dynamic-adsl-94-34-39-251.clienti.tiscali.it) |
| 09:27:55 | → | azeem joins (~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it) |
| 09:28:04 | × | rahguzar quits (~rahguzar@dynamic-adsl-94-34-39-251.clienti.tiscali.it) (Client Quit) |
| 09:35:05 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Excess Flood) |
| 09:35:22 | → | dibblego joins (~dibblego@122-199-1-30.ip4.superloop.com) |
| 09:35:22 | × | dibblego quits (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host) |
| 09:35:22 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 09:39:05 | × | tom__ quits (~tom@2a00:23c8:9700:8001:a918:fa2c:4713:fcbd) (Remote host closed the connection) |
| 09:41:07 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 246 seconds) |
| 09:45:03 | → | dunj3 joins (~dunj3@2001:16b8:3046:8200:9324:28de:5bca:d5dc) |
| 09:45:16 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 09:47:09 | × | yauhsien quits (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 09:47:45 | × | peterhil quits (~peterhil@mobile-access-b04801-219.dhcp.inet.fi) (Ping timeout: 268 seconds) |
| 09:48:35 | → | lavaman joins (~lavaman@98.38.249.169) |
| 09:49:15 | → | jumper149 joins (~jumper149@80.240.31.34) |
| 09:53:01 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 246 seconds) |
| 10:06:07 | <guest719> | dminuoso about traverse "<dminuoso> Say you have a tree, and you want to process each node - but in a way that if you generate an error at any, that the entire computation is considered failed." could we use foldr >=> pure here? |
| 10:06:36 | <guest719> | a bunch of function inside a list, then foldr |
| 10:07:08 | <guest719> | apply on this tree, if one node failed, then return immediatly |
| 10:14:45 | <jumper149> | Is it wrong to say "MonadPlus is obsolete"? Just like `return` is obsolete because of `pure`? |
| 10:16:00 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 10:16:04 | × | hexfive quits (~eric@50.35.83.177) (Quit: WeeChat 3.0) |
| 10:16:16 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection) |
| 10:19:15 | × | xsperry quits (~as@user/xsperry) (Remote host closed the connection) |
| 10:19:25 | → | Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se) |
| 10:20:44 | → | xsperry joins (~as@user/xsperry) |
| 10:21:23 | → | peterhil joins (~peterhil@mobile-access-b04801-219.dhcp.inet.fi) |
| 10:22:22 | × | jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 10:23:45 | → | moondog joins (~root@185.234.208.208.r.toneticgroup.pl) |
| 10:25:06 | <moondog> | hi, quick question, suppose I'd like to parse Haskell files to find particular method calls and it's argument types, where should I start? Is there any tooling for that to avoid writing everything from scratch? |
| 10:25:24 | <dminuoso> | guest719: Firstly, `f >=> pure = f` |
| 10:25:25 | → | Brianmancer joins (~Neuromanc@user/briandamag) |
| 10:25:44 | <dminuoso> | guest719: And what you are thinking of already is traverse precisely. |
| 10:25:47 | <dminuoso> | % :t traverse |
| 10:25:47 | <yahb> | dminuoso: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) |
| 10:26:33 | <guest719> | dminuoso fmap can't do early exit because it's type, but >>= can do early exit |
| 10:26:48 | <dminuoso> | guest719: Yes, and traverse uses >> internally |
| 10:26:56 | <dminuoso> | (So it's a bit more general even) |
| 10:26:56 | <guest719> | dminuoso I remeber there're different between fmap and >>= |
| 10:27:10 | <dminuoso> | % :t (>>) |
| 10:27:10 | <yahb> | dminuoso: Monad m => m a -> m b -> m b |
| 10:27:11 | <guest719> | >>= can do if-else, and fmap can't do if-else |
| 10:27:17 | <dminuoso> | Well, strictly speaking: |
| 10:27:20 | <dminuoso> | % :t (*>) |
| 10:27:20 | <yahb> | dminuoso: Applicative f => f a -> f b -> f b |
| 10:27:54 | <dminuoso> | guest719: `traverse` can be thought to use (*>) internally, which is just an Applicative version of >> |
| 10:28:04 | <dminuoso> | Roughly the idea is: |
| 10:29:17 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:29:39 | <dminuoso> | We take this function (a -> f b) (say `String -> IO Int`)from above, and we `fmap` over the structure (say `[String]`). Then, each value is replaced with a computation of some type (say `IO Int`), so the whole structure then is `[IO Int]`. |
| 10:29:55 | <dibblego> | you might be thinking of traverse_ |
| 10:29:58 | <dminuoso> | Then we `sequence` this, which turns `[IO Int] -> IO [Int]` |
| 10:32:32 | <dminuoso> | Imagine this to be: sequence (x:xs) = (:) <$> x <*> sequence xs; sequence [] = pure [] |
| 10:32:58 | <dminuoso> | dibblego: Ah yeah. I guess that was wrong of me. |
| 10:33:06 | <dminuoso> | While I was typing the definition, I realized my mistake. |
| 10:33:44 | <dminuoso> | % mySequence (x:xs) = (:) <$> x <*> mySequence xs; mySequence [] = pure [] |
| 10:33:44 | <yahb> | dminuoso: |
| 10:33:46 | <dminuoso> | % :t mySequence |
| 10:33:46 | <yahb> | dminuoso: Applicative f => [f a] -> f [a] |
| 10:33:52 | <dibblego> | I think sequence is more obvious in the way you are trying to explain it, like this: |
| 10:33:53 | <dminuoso> | % mySequence [Just 10, Just 20, Just 30] |
| 10:33:53 | <yahb> | dminuoso: Just [10,20,30] |
| 10:34:20 | <dibblego> | (::.) = liftA2 (:); lift0 = pure; sequence (x:xs) = x ::. sequence xs; sequence [] = lift0 [] |
| 10:35:56 | <dibblego> | once liftA2 is understood conceptually, then (*>) is quite simply: const id with some liftA2-ness |
| 10:36:49 | → | yauhsien joins (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) |
| 10:40:21 | → | wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com) |
| 10:41:48 | × | wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Remote host closed the connection) |
| 10:42:51 | → | Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
| 10:44:49 | × | caubert quits (~caubert@136.244.111.235) (Quit: WeeChat 3.2) |
| 10:45:07 | → | caubert joins (~caubert@136.244.111.235) |
| 10:45:09 | × | Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 258 seconds) |
| 10:46:02 | → | Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se) |
| 10:46:27 | × | anandprabhu quits (anandprabh@gateway/vpn/airvpn/anandprabhu) (Quit: Leaving) |
| 10:49:28 | → | berberman_ joins (~berberman@user/berberman) |
| 10:50:04 | × | berberman quits (~berberman@user/berberman) (Ping timeout: 246 seconds) |
| 10:54:05 | → | Topsi joins (~Tobias@dyndsl-095-033-024-196.ewe-ip-backbone.de) |
| 10:56:36 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 11:01:58 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
| 11:03:26 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 11:06:28 | × | lars8 quits (~bc817c21@217.29.117.252) (Quit: quit) |
| 11:07:38 | → | AlexNoo_ joins (~AlexNoo@178.34.161.231) |
| 11:08:00 | → | cfricke joins (~cfricke@user/cfricke) |
| 11:08:01 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 11:08:31 | × | cfricke quits (~cfricke@user/cfricke) (Client Quit) |
| 11:09:18 | × | Alex_test quits (~al_test@178.34.162.246) (Ping timeout: 258 seconds) |
| 11:09:18 | × | AlexZenon quits (~alzenon@178.34.162.246) (Ping timeout: 258 seconds) |
| 11:11:06 | × | AlexNoo quits (~AlexNoo@178.34.162.246) (Ping timeout: 256 seconds) |
| 11:12:55 | × | Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer) |
| 11:13:12 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 11:15:17 | → | Alex_test joins (~al_test@178.34.161.231) |
| 11:16:34 | → | jmorris joins (uid433911@id-433911.stonehaven.irccloud.com) |
| 11:16:36 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 11:16:40 | → | AlexZenon joins (~alzenon@178.34.161.231) |
| 11:16:53 | × | moondog quits (~root@185.234.208.208.r.toneticgroup.pl) (Quit: leaving) |
| 11:18:35 | × | lambdap quits (~lambdap@static.167.190.119.168.clients.your-server.de) (Quit: lambdap) |
| 11:18:46 | <albet70> | so could we say traverse another version of fmap which it can do earlier exit? |
| 11:21:01 | <[exa]> | "another" may be a weak label for the myriad of extra stuff it can do :] |
| 11:21:11 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds) |
| 11:22:28 | → | elf_fortrez joins (~elf_fortr@adsl-72-50-4-55.prtc.net) |
| 11:27:07 | × | wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal) |
| 11:27:44 | × | Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt) |
| 11:28:04 | <dminuoso> | albet70: Mmm, not just that. |
| 11:28:37 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 11:28:38 | <dminuoso> | albet70: Say you have a Tree of values, say of type String. For each string you want to query some database, and replace the string with some value you read from the database, say something of type User. |
| 11:29:00 | <dminuoso> | then you can do: do { userTree <- traverse fetchUserFromString stringTree; ... } |
| 11:29:46 | <dminuoso> | albet70: The key thing to realize is that Applicative/Monad encode certain.. "effects". For `Maybe/Either e` the effect is that of an exception, for IO it's outside world interaction, for list it's non-determinism, etc.. |
| 11:30:00 | <dminuoso> | So we map each element to an effectful computation, and then sequence them |
| 11:30:38 | <dminuoso> | Important bit to notice, is that traverse fundamentally does not change the "shape" of that structure. So if you traverse over a tree, the shape of it remains (so you cant drop or create nodes) |
| 11:31:44 | <dminuoso> | traverse on a list for example gives us a more generalized version of effectful loops. So a Python loop in which you do say database queries can be written with `traverse` |
| 11:31:57 | <dminuoso> | But `traverse` allows us to do even more, not just database queries |
| 11:32:03 | <dminuoso> | And it works on not just lists, but also trees. |
| 11:32:42 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Ping timeout: 255 seconds) |
| 11:33:47 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 11:34:14 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds) |
| 11:39:18 | → | lambdap joins (~lambdap@static.167.190.119.168.clients.your-server.de) |
| 11:39:46 | → | turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it) |
| 11:39:46 | × | turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host) |
| 11:39:46 | → | turlando joins (~turlando@user/turlando) |
| 11:42:20 | × | turlando_ quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Ping timeout: 265 seconds) |
| 11:42:26 | × | lambdap quits (~lambdap@static.167.190.119.168.clients.your-server.de) (Client Quit) |
| 11:43:01 | AlexNoo_ | is now known as AlexNoo |
| 11:43:12 | × | elf_fortrez quits (~elf_fortr@adsl-72-50-4-55.prtc.net) (Quit: Client closed) |
| 11:44:34 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 258 seconds) |
| 11:45:34 | → | lambdap joins (~lambdap@static.167.190.119.168.clients.your-server.de) |
| 11:50:10 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 11:51:26 | × | siraben quits (~siraben@user/siraben) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | MatrixTravelerbo quits (~voyagert2@2001:470:69fc:105::22) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | Aleci[m] quits (~alecilibr@2001:470:69fc:105::32e7) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | ServerStatsDisco quits (~serversta@2001:470:69fc:105::1a) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | ac quits (~aloiscoch@2001:470:69fc:105::65) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | carmysilna quits (~brightly-@2001:470:69fc:105::2190) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | kadoban quits (~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | cdsmith quits (~cdsmithma@2001:470:69fc:105::284) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | Tisoxin quits (~ikosit@user/ikosit) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | rednaZ[m] quits (~r3dnazmat@2001:470:69fc:105::ba70) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | fgaz quits (~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | inkbottle[m] quits (~inkbottle@2001:470:69fc:105::2ff5) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | the-coot[m] quits (~the-cootm@2001:470:69fc:105::95f) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | boxscape quits (~boxscape@user/boxscape) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | hsiktas[m] quits (~hsiktasma@2001:470:69fc:105::30d4) (Quit: Bridge terminating on SIGTERM) |
| 11:51:27 | × | marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | lwe[m] quits (~dendrumat@2001:470:69fc:105::2f9b) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | peddie quits (~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | gxt quits (~gxt@2001:470:69fc:105::3513) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | cdepillabout[m] quits (~cdepillab@2001:470:69fc:105::3d3) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | ormaaj quits (~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | Las[m] quits (~lasmatrix@2001:470:69fc:105::74e) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | maralorn quits (~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | thedward[m] quits (~thedwardm@2001:470:69fc:105::f79) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | polykernel quits (~polykerne@user/polykernel) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | unclechu quits (~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | Deewiant quits (~deewiant@2001:470:69fc:105::2fd3) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | ru0mad[m] quits (~ru0madmat@2001:470:69fc:105::9b2) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | jophish quits (~jophish@2001:470:69fc:105::670) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | bitonic quits (~bitonic@2001:470:69fc:105::1812) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | bryan[m] quits (~bchreekat@2001:470:69fc:105::16b5) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | PotatoHatsue quits (~berberman@2001:470:69fc:105::b488) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | Orbstheorem quits (~orbstheor@2001:470:69fc:105::a56) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | jaror[m] quits (~jaror@2001:470:69fc:105::265) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | hjulle[m] quits (~hjullemat@2001:470:69fc:105::1dd) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | sridonhiatus[m] quits (~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM) |
| 11:51:28 | × | unrooted quits (~unrooted@2001:470:69fc:105::a4a) (Quit: Bridge terminating on SIGTERM) |
| 11:51:29 | × | amesgen[m] quits (~amesgenm]@2001:470:69fc:105::82b) (Quit: Bridge terminating on SIGTERM) |
| 11:51:29 | × | reza[m] quits (~rezaphone@2001:470:69fc:105::3eda) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | vbeatrice[m] quits (~vbeatrice@2001:470:69fc:105::3ebf) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | fakehacker[m] quits (~fakehacke@2001:470:69fc:105::b5f0) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | adziahel[m] quits (~adziahelm@2001:470:69fc:105::b4d) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | justosophy[m] quits (~justosoph@2001:470:69fc:105::572f) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | Guest7801 quits (~sylveonma@2001:470:69fc:105::2d95) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | jakefromstatefar quits (~jakefroms@2001:470:69fc:105::15ef) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | dualinverter[m] quits (~dualinver@2001:470:69fc:105::16a7) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | ixlun quits (~ixlun@2001:470:69fc:105::41b3) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | Drezil quits (~drezilkif@2001:470:69fc:105::7f8) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | jellz[m] quits (~jellzmatr@2001:470:69fc:105::2daa) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | dminuoso[m] quits (~dminuosom@2001:470:69fc:105::33bb) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | wallymathieu[m] quits (~wallymath@2001:470:69fc:105::16ae) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | kosmikus[m] quits (~andresloe@2001:470:69fc:105::95d) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | Morrow[m] quits (~morrowmma@2001:470:69fc:105::1d0) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | RohitGoswami[m] quits (~rgoswamim@2001:470:69fc:105::16cc) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | yin[m] quits (~zwromatri@2001:470:69fc:105::1d4) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | Soft quits (~soft-matr@2001:470:69fc:105::c75) (Quit: Bridge terminating on SIGTERM) |
| 11:51:31 | × | autrim64[m] quits (~autrim64m@2001:470:69fc:105::16a1) (Quit: Bridge terminating on SIGTERM) |
| 11:51:32 | × | oak- quits (~oakuniver@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM) |
| 11:51:32 | × | ecameron[m] quits (~ecameronm@2001:470:69fc:105::35df) (Quit: Bridge terminating on SIGTERM) |
| 11:51:32 | × | infinisil quits (~infinisil@2001:470:69fc:105::ff8) (Quit: Bridge terminating on SIGTERM) |
| 11:51:32 | × | Ollie[m] quits (~ollieocha@2001:470:69fc:105::41a5) (Quit: Bridge terminating on SIGTERM) |
| 11:51:32 | × | aveltras[m] quits (~aveltrasm@2001:470:69fc:105::3ef9) (Quit: Bridge terminating on SIGTERM) |
| 11:51:32 | × | octeep[m]1 quits (~octeepmoc@2001:470:69fc:105::695e) (Quit: Bridge terminating on SIGTERM) |
| 11:51:33 | × | hughjfchen[m] quits (~hughjfche@2001:470:69fc:105::c29d) (Quit: Bridge terminating on SIGTERM) |
| 11:51:33 | × | afotgkmnzj7asv3r quits (~afotgkmnz@2001:470:69fc:105::c24b) (Quit: Bridge terminating on SIGTERM) |
| 11:51:33 | × | zfnmxt quits (~zfnmxtzfn@user/zfnmxt) (Quit: Bridge terminating on SIGTERM) |
| 11:51:38 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM) |
| 11:51:38 | × | fabfianda[m] quits (~fabfianda@2001:470:69fc:105::6db) (Quit: Bridge terminating on SIGTERM) |
| 11:51:38 | × | bb010g quits (~bb010g@2001:470:69fc:105::9a5) (Quit: Bridge terminating on SIGTERM) |
| 11:51:39 | × | maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM) |
| 11:51:39 | × | SimonWeiss[m] quits (~weiss-dma@2001:470:69fc:105::bebd) (Quit: Bridge terminating on SIGTERM) |
| 11:51:51 | → | euandreh joins (~euandreh@191.181.59.160) |
| 11:54:47 | → | thedward[m] joins (~thedwardm@2001:470:69fc:105::f79) |
| 11:56:24 | → | shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 12:01:44 | → | cuz joins (~user@2601:182:cc02:8b0:5d77:6ee9:7f95:9dca) |
| 12:04:11 | <dibblego> | traverse is exactly fmap, if you use Identity in place of the general Applicative |
| 12:04:18 | → | ac joins (~aloiscoch@2001:470:69fc:105::65) |
| 12:04:18 | → | sm joins (~sm@plaintextaccounting/sm) |
| 12:04:18 | → | hjulle[m] joins (~hjullemat@2001:470:69fc:105::1dd) |
| 12:04:18 | → | fgaz joins (~fgaz@2001:470:69fc:105::842) |
| 12:04:18 | → | jaror[m] joins (~jaror@2001:470:69fc:105::265) |
| 12:04:18 | → | peddie joins (~peddie@2001:470:69fc:105::25d) |
| 12:04:18 | → | cdsmith joins (~cdsmithma@2001:470:69fc:105::284) |
| 12:04:18 | → | ru0mad[m] joins (~ru0madmat@2001:470:69fc:105::9b2) |
| 12:04:18 | → | fabfianda[m] joins (~fabfianda@2001:470:69fc:105::6db) |
| 12:04:18 | → | bb010g joins (~bb010g@2001:470:69fc:105::9a5) |
| 12:04:19 | → | Las[m] joins (~lasmatrix@2001:470:69fc:105::74e) |
| 12:04:19 | → | Artem[m] joins (~artemtype@2001:470:69fc:105::75b) |
| 12:04:19 | → | ServerStatsDisco joins (~serversta@2001:470:69fc:105::1a) |
| 12:04:19 | → | amesgen[m] joins (~amesgenm]@2001:470:69fc:105::82b) |
| 12:04:19 | → | the-coot[m] joins (~the-cootm@2001:470:69fc:105::95f) |
| 12:04:19 | → | vaibhavsagar[m] joins (~vaibhavsa@2001:470:69fc:105::ffe) |
| 12:04:19 | → | zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32) |
| 12:04:19 | → | kadoban joins (~kadoban@user/kadoban) |
| 12:04:19 | → | carmysilna joins (~brightly-@2001:470:69fc:105::2190) |
| 12:04:19 | → | MatrixTravelerbo joins (~voyagert2@2001:470:69fc:105::22) |
| 12:04:19 | → | bitonic joins (~bitonic@2001:470:69fc:105::1812) |
| 12:04:19 | → | ericson2314 joins (~ericson23@2001:470:69fc:105::70c) |
| 12:04:19 | → | jophish joins (~jophish@2001:470:69fc:105::670) |
| 12:04:19 | → | PotatoHatsue joins (~berberman@2001:470:69fc:105::b488) |
| 12:04:19 | → | siraben joins (~siraben@user/siraben) |
| 12:04:19 | → | Deewiant joins (~deewiant@2001:470:69fc:105::2fd3) |
| 12:04:19 | → | cdepillabout[m] joins (~cdepillab@2001:470:69fc:105::3d3) |
| 12:04:19 | → | ixlun joins (~ixlun@2001:470:69fc:105::41b3) |
| 12:04:19 | → | unclechu joins (~unclechu@2001:470:69fc:105::354) |
| 12:04:19 | → | bryan[m] joins (~bchreekat@2001:470:69fc:105::16b5) |
| 12:04:19 | → | unrooted joins (~unrooted@2001:470:69fc:105::a4a) |
| 12:04:19 | → | Aleci[m] joins (~alecilibr@2001:470:69fc:105::32e7) |
| 12:04:19 | → | rednaZ[m] joins (~r3dnazmat@2001:470:69fc:105::ba70) |
| 12:04:20 | → | maralorn joins (~maralorn@2001:470:69fc:105::251) |
| 12:04:20 | → | lwe[m] joins (~dendrumat@2001:470:69fc:105::2f9b) |
| 12:04:20 | → | inkbottle[m] joins (~inkbottle@2001:470:69fc:105::2ff5) |
| 12:04:20 | → | reza[m] joins (~rezaphone@2001:470:69fc:105::3eda) |
| 12:04:20 | → | gxt joins (~gxt@2001:470:69fc:105::3513) |
| 12:04:20 | → | marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8) |
| 12:04:20 | → | hsiktas[m] joins (~hsiktasma@2001:470:69fc:105::30d4) |
| 12:04:20 | → | boxscape joins (~boxscape@user/boxscape) |
| 12:04:20 | → | infinisil joins (~infinisil@2001:470:69fc:105::ff8) |
| 12:04:20 | → | ormaaj joins (~ormaaj@user/ormaaj) |
| 12:04:20 | → | Orbstheorem joins (~orbstheor@2001:470:69fc:105::a56) |
| 12:04:20 | → | Tisoxin joins (~ikosit@user/ikosit) |
| 12:04:20 | → | sridonhiatus[m] joins (~sridmatri@2001:470:69fc:105::1c2) |
| 12:04:20 | → | jakefromstatefar joins (~jakefroms@2001:470:69fc:105::15ef) |
| 12:04:20 | → | smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32) |
| 12:04:20 | → | polykernel joins (~polykerne@user/polykernel) |
| 12:04:20 | → | hughjfchen[m] joins (~hughjfche@2001:470:69fc:105::c29d) |
| 12:04:23 | → | maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee) |
| 12:04:30 | → | wallymathieu[m] joins (~wallymath@2001:470:69fc:105::16ae) |
| 12:04:30 | → | Drezil joins (~drezilkif@2001:470:69fc:105::7f8) |
| 12:04:30 | → | Morrow[m] joins (~morrowmma@2001:470:69fc:105::1d0) |
| 12:04:30 | → | dualinverter[m] joins (~dualinver@2001:470:69fc:105::16a7) |
| 12:04:31 | → | aveltras[m] joins (~aveltrasm@2001:470:69fc:105::3ef9) |
| 12:04:31 | → | Ollie[m] joins (~ollieocha@2001:470:69fc:105::41a5) |
| 12:04:31 | → | ecameron[m] joins (~ecameronm@2001:470:69fc:105::35df) |
| 12:04:31 | → | dminuoso[m] joins (~dminuosom@2001:470:69fc:105::33bb) |
| 12:04:31 | → | autrim64[m] joins (~autrim64m@2001:470:69fc:105::16a1) |
| 12:04:31 | → | kosmikus[m] joins (~andresloe@2001:470:69fc:105::95d) |
| 12:04:31 | → | adziahel[m] joins (~adziahelm@2001:470:69fc:105::b4d) |
| 12:04:31 | → | Soft joins (~soft-matr@2001:470:69fc:105::c75) |
| 12:04:31 | → | RohitGoswami[m] joins (~rgoswamim@2001:470:69fc:105::16cc) |
| 12:04:32 | → | yin[m] joins (~zwromatri@2001:470:69fc:105::1d4) |
| 12:04:32 | → | jellz[m] joins (~jellzmatr@2001:470:69fc:105::2daa) |
| 12:04:32 | → | SimonWeiss[m] joins (~weiss-dma@2001:470:69fc:105::bebd) |
| 12:04:32 | → | afotgkmnzj7asv3r joins (~afotgkmnz@2001:470:69fc:105::c24b) |
| 12:04:32 | → | octeep[m]1 joins (~octeepmoc@2001:470:69fc:105::695e) |
| 12:04:32 | → | fakehacker[m] joins (~fakehacke@2001:470:69fc:105::b5f0) |
| 12:04:32 | → | justosophy[m] joins (~justosoph@2001:470:69fc:105::572f) |
| 12:04:32 | <dibblego> | but it also does other Applicative things, not just Identity |
| 12:04:33 | → | Sylveon joins (~sylveonma@2001:470:69fc:105::2d95) |
| 12:04:33 | → | oak- joins (~oakuniver@2001:470:69fc:105::fcd) |
| 12:04:34 | → | vbeatrice[m] joins (~vbeatrice@2001:470:69fc:105::3ebf) |
| 12:04:56 | Sylveon | is now known as Guest6263 |
| 12:05:43 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 12:06:16 | → | zangi joins (~zangi@103.154.230.230) |
| 12:06:36 | × | gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
| 12:07:26 | → | gentauro joins (~gentauro@user/gentauro) |
| 12:09:05 | → | cfricke joins (~cfricke@user/cfricke) |
| 12:14:39 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 12:14:48 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 12:16:02 | → | burnside_ joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 12:16:02 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
| 12:18:02 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 12:20:34 | → | chomwitt joins (~chomwitt@2a02:587:dc04:b400:12c3:7bff:fe6d:d374) |
| 12:21:00 | × | burnside_ quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection) |
| 12:21:26 | → | smichel17 joins (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) |
| 12:34:32 | → | favonia joins (~favonia@user/favonia) |
| 12:35:30 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 12:35:38 | → | dudek joins (~dudek@185.150.236.155) |
| 12:36:56 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 252 seconds) |
| 12:39:11 | → | qbt joins (~edun@user/edun) |
| 12:40:23 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 244 seconds) |
| 12:41:01 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 246 seconds) |
| 12:42:18 | → | favonia joins (~favonia@user/favonia) |
| 12:42:40 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 12:45:53 | <hseg> | hi. have this generator http://ix.io/3tqe, and I would like to generalize it so its input generators can depend on each other's results (i.e. want to be able to pass [a -> Gen a]) |
| 12:46:15 | <hseg> | have tried just doing that, but it involves a lot of churn |
| 12:46:22 | × | yauhsien quits (~yauhsien@61-231-35-149.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 12:46:30 | <hseg> | is there a more mtl'y way of writing this that can help avoid this churn |
| 12:46:33 | <hseg> | ? |
| 12:47:55 | → | fef joins (~thedawn@user/thedawn) |
| 12:48:03 | <hseg> | presumably, I'd want to have inputs be sth like [n a] with MonadGen n and some constraint expressing that whatever effects n gives are liftable to m |
| 12:48:43 | <hseg> | but that looks overly involved |
| 12:51:44 | × | Xnuk quits (~xnuk@vultr.xnu.kr) (Quit: ZNC - https://znc.in) |
| 12:52:00 | → | Xnuk joins (~xnuk@vultr.xnu.kr) |
| 12:53:34 | → | jolly joins (~jolly@208.180.97.158) |
| 12:54:05 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 12:54:53 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection) |
| 12:54:59 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 12:58:34 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 240 seconds) |
| 12:58:35 | <zangi> | probably a paradox, but does having IO means haskell is impure? :) |
| 12:58:42 | <Axman6> | no |
| 12:59:30 | <zangi> | does IO itself impure? what does it mean to be "pure" in haskell sense? |
| 12:59:49 | <Axman6> | IO is pure, the execution of it may not be. dibblego is excellent at explaining why |
| 12:59:52 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 12:59:59 | Axman6 | handballs the conversation to dibblego |
| 13:00:15 | <DigitalKiwi> | what about unsafeCoerce |
| 13:00:52 | <zangi> | who's dibblego? |
| 13:01:07 | × | jneira quits (~jneira@212.8.115.226) (Quit: Client closed) |
| 13:01:09 | → | alx741 joins (~alx741@186.178.109.120) |
| 13:01:13 | <DigitalKiwi> | why's dibblego |
| 13:01:43 | <Axman6> | HE authored much of the NICTA/Data61/System-F FP course, where we explain why IO is pure |
| 13:01:46 | <Axman6> | He* |
| 13:02:18 | <zangi> | does he have any article about this issue? |
| 13:02:20 | <DigitalKiwi> | ofc we all know the answer to how's dibblego (by plane) |
| 13:02:27 | × | juhp quits (~juhp@128.106.188.66) (Quit: juhp) |
| 13:02:35 | <DigitalKiwi> | ba dum tsch |
| 13:02:40 | → | juhp joins (~juhp@128.106.188.66) |
| 13:03:14 | <DigitalKiwi> | https://github.com/system-f/fp-course |
| 13:03:41 | <DigitalKiwi> | https://www.youtube.com/watch?v=NzIZzvbplSM&list=PLly9WMAVMrayYo2c-1E_rIRwBXG_FbLBW |
| 13:04:14 | → | ikex1 joins (ash@user/ikex) |
| 13:04:27 | <zangi> | DigitalKiwi++ |
| 13:04:42 | × | hseg quits (~gesh@185.120.126.10) (Ping timeout: 240 seconds) |
| 13:05:09 | <zangi> | thanks, anyway does it mean IO in haskell is different to IO in other (imperative) languages? |
| 13:05:50 | × | ikex quits (~ash@user/ikex) (Ping timeout: 258 seconds) |
| 13:05:51 | ikex1 | is now known as ikex |
| 13:06:42 | × | fradet quits (~fradet@216.252.75.247) (Ping timeout: 240 seconds) |
| 13:07:53 | <[exa]> | zangi: haskell is pure; the ugly impure execution of the IO action recipes written in haskell is only done by computers |
| 13:07:54 | → | fradet joins (~fradet@216.252.75.247) |
| 13:08:27 | <kuribas> | [exa]: but then any language is pure? |
| 13:09:12 | <[exa]> | nah, some languages rely on that impurity |
| 13:10:27 | <[exa]> | (and some certain others are just dirty) |
| 13:11:44 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection) |
| 13:14:07 | → | anandprabhu joins (~anandprab@94.202.243.198) |
| 13:15:18 | <DigitalKiwi> | i like my coffee like i like my programming languages; strong, statically typed, purely functional with type inference and lazy evaluation. |
| 13:16:18 | → | shriekingnoise joins (~shrieking@186.137.144.80) |
| 13:17:41 | × | anandprabhu quits (~anandprab@94.202.243.198) (Client Quit) |
| 13:18:13 | <lechner> | Hi, how can I use MonadFail to handle exceptions from Codec.Compression.Lzma, please? |
| 13:27:37 | × | jackhill quits (~jackhill@kalessin.dragonsnail.net) (Ping timeout: 245 seconds) |
| 13:28:16 | × | jiribenes quits (~jiribenes@rosa.jiribenes.com) (Ping timeout: 246 seconds) |
| 13:29:45 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 13:30:45 | × | peterhil quits (~peterhil@mobile-access-b04801-219.dhcp.inet.fi) (Ping timeout: 258 seconds) |
| 13:33:02 | → | jackhill joins (~jackhill@kalessin.dragonsnail.net) |
| 13:34:21 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 13:34:58 | <Boarders> | is there a variant combinator in megaparsec that is like: do {t <- takeWhileP Nothing (/= '\n'); char '\n'; pure t} |
| 13:37:46 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 268 seconds) |
| 13:37:48 | × | cuz quits (~user@2601:182:cc02:8b0:5d77:6ee9:7f95:9dca) (Ping timeout: 255 seconds) |
| 13:38:53 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 13:40:37 | <tdammers> | https://hackage.haskell.org/package/parser-combinators-1.3.0/docs/Control-Applicative-Combinators.html#v:manyTill maybe? |
| 13:41:19 | <dmj`> | lechner: did you try using `catch` |
| 13:43:45 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 13:44:40 | <Boarders> | manyTill is very related but not quite the same |
| 13:45:32 | <lechner> | dmj`: i'm still reading, and working on my general Haskell learning curve |
| 13:48:54 | × | hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1) |
| 13:49:09 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 258 seconds) |
| 13:49:22 | → | hendursaga joins (~weechat@user/hendursaga) |
| 13:50:10 | → | lavaman joins (~lavaman@98.38.249.169) |
| 13:51:21 | <lechner> | dmj`: but i do have working program (which i wrote) where I could try your suggestion. how do i use catch, please? https://salsa.debian.org/lintian/kickoff/-/blob/master/Collect.hs#L82 |
| 13:51:52 | aforemny_ | is now known as aforemny |
| 13:54:40 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
| 13:54:47 | × | michalz quits (~michalz@185.246.204.55) (Remote host closed the connection) |
| 13:55:26 | × | Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection) |
| 13:55:46 | → | Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) |
| 14:01:50 | → | econo joins (uid147250@user/econo) |
| 14:02:12 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 14:02:33 | × | jackhill quits (~jackhill@kalessin.dragonsnail.net) (Ping timeout: 255 seconds) |
| 14:05:19 | sander | is now known as sndr |
| 14:05:40 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
| 14:05:55 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 14:06:39 | <tzh> | hey so i'm working on a haskell game; does anybody have any suggestions for an input library that would work well? previously i've used reactive-banana, which worked well enough even if its FRP nature made it a little clunky for use in a highly-interactive program. i saw some people mention using arrowized FRP libraries likes Yampa/dunai but that seems more like something to use for physics integration than for things like 'how to click on |
| 14:06:40 | <tzh> | a menu' |
| 14:09:15 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds) |
| 14:09:21 | → | cuz joins (~user@38.140.58.234) |
| 14:09:30 | × | chomwitt quits (~chomwitt@2a02:587:dc04:b400:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds) |
| 14:10:43 | → | jippiedoe joins (~david@2a02-a44c-e14e-1-1bc4-b398-e9ad-3132.fixed6.kpn.net) |
| 14:13:08 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds) |
| 14:14:12 | <kuribas> | tzh: reactive-banana isn't an input library, it's a FRP library. |
| 14:14:20 | <kuribas> | You can use it with any UI library. |
| 14:15:21 | <maerwald> | SDL2? |
| 14:15:37 | <[exa]> | tzh: immediate-mode GUIs (google imgui) are priceless for games, except I don't know if we have any for haskell yet |
| 14:15:51 | <tzh> | kuribas: okay yes it's not a raw input-catching library; i'm actually using glfw for that. what i'm looking for is an input _processing_ library, to impose some order onto my input flow so it's not a bunch of ad-hoc garbage |
| 14:16:18 | <kuribas> | tzh: reactive-banana should be fine. |
| 14:17:39 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 14:18:43 | → | OndejSkup[m] joins (~mimivxmat@2001:470:69fc:105::c300) |
| 14:19:12 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 14:19:13 | → | ph88_ joins (~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de) |
| 14:19:16 | × | jippiedoe quits (~david@2a02-a44c-e14e-1-1bc4-b398-e9ad-3132.fixed6.kpn.net) (Quit: Leaving) |
| 14:21:02 | <tzh> | the main issue with reactive-banana is that it gets pretty clunky since it only runs in IO and thus can never directly run actual buffer writes... (well, okay, there are ways but that becomes a mess of running all input-processing code inside a render monad, with an unknown timing to my render loop). which means i need to have its output actions queue render actions like buffer allocations/writes, and then outside of the event loop pull |
| 14:21:03 | <tzh> | them out so they can actually be run, which seems a little clunky and counter to the FRP experience, but i don't really see how that could be avoided given how opengl rendering works. so really i'd just like for that experience to be a bit smoother |
| 14:21:04 | → | jiribenes joins (~jiribenes@rosa.jiribenes.com) |
| 14:22:31 | × | ph88^ quits (~ph88@2a02:8109:9e00:7e5c:f938:d06a:9ad7:b39c) (Ping timeout: 246 seconds) |
| 14:23:24 | → | jackhill joins (~jackhill@kalessin.dragonsnail.net) |
| 14:23:35 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds) |
| 14:26:11 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 250 seconds) |
| 14:27:25 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 246 seconds) |
| 14:27:50 | → | favonia joins (~favonia@user/favonia) |
| 14:28:24 | × | norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 252 seconds) |
| 14:28:36 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 14:30:23 | → | mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) |
| 14:33:49 | → | acidjnk_new joins (~acidjnk@p200300d0c72b9588f8c9d06c34eef88c.dip0.t-ipconnect.de) |
| 14:36:18 | → | Null_A joins (~null_a@2601:645:8700:2290:34e6:e307:f490:7d07) |
| 14:36:56 | × | acidjnk quits (~acidjnk@p200300d0c72b9531f8c9d06c34eef88c.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 14:36:56 | → | peterhil joins (~peterhil@mobile-access-b04801-219.dhcp.inet.fi) |
| 14:38:00 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 14:41:22 | × | acidjnk_new quits (~acidjnk@p200300d0c72b9588f8c9d06c34eef88c.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 14:49:52 | allbery_b | is now known as geekosaur |
| 14:50:15 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 14:50:34 | → | favonia joins (~favonia@user/favonia) |
| 14:52:25 | → | amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
| 14:53:43 | → | chris_ joins (~chris@81.96.113.213) |
| 14:55:56 | → | fef joins (~thedawn@user/thedawn) |
| 15:01:52 | → | kar1[m] joins (~kar1matri@2001:470:69fc:105::c308) |
| 15:08:45 | → | cfricke joins (~cfricke@user/cfricke) |
| 15:13:30 | × | jackhill quits (~jackhill@kalessin.dragonsnail.net) (Ping timeout: 252 seconds) |
| 15:18:00 | <dmj`> | lechner: do { result <- try (evaluate (decompress bytes)) :: IO (Either SomeException ByteString); case result of { Left e -> print e; Right bytes -> print (length bytes) } } |
| 15:18:03 | → | nuncanada joins (~dude@179.235.162.215) |
| 15:20:41 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 15:22:18 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds) |
| 15:22:29 | <Las[m]> | Question about bound threads: Will unbound threads use an OS thread created by forkOS? |
| 15:22:51 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 15:23:36 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 15:26:24 | <monochrom> | Probably in an ideal world shouldn't matter but in practice the GHC implementers wouldn't troll themselves by doing that. |
| 15:26:28 | → | myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net) |
| 15:26:36 | × | amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 265 seconds) |
| 15:27:33 | → | zmt00 joins (~zmt00@user/zmt00) |
| 15:28:14 | <monochrom> | In practice there is pure Haskell code that can hold up an OS thread uninterruptible. Now what can you do when the rightful owner of the OS thread needs it? |
| 15:29:51 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 15:30:03 | <c_wraith> | honestly, that's not a very important edge case, given that the same pure code that will hold a thread uninterruptably will also block garbage collection, and therefore the entire program via stop-the-world GC |
| 15:30:35 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 15:31:12 | <c_wraith> | If you write a loop that does that, you get what you deserve whether bound threads are involved or not. |
| 15:31:51 | <c_wraith> | (this is why mueval starts new processes, not just threads) |
| 15:32:33 | → | abc joins (~abc@213.195.121.143) |
| 15:32:47 | × | abc quits (~abc@213.195.121.143) (Client Quit) |
| 15:35:59 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 15:37:44 | → | derelict joins (~derelict@user/derelict) |
| 15:38:48 | → | lbseale joins (~lbseale@user/ep1ctetus) |
| 15:39:03 | → | chomwitt joins (~chomwitt@athedsl-32487.home.otenet.gr) |
| 15:43:00 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Remote host closed the connection) |
| 15:43:13 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 15:43:28 | <jumper149> | The diagram here: https://wiki.haskell.org/Typeclassopedia |
| 15:43:49 | <jumper149> | It is missing the superclass `Alternative` of `MonadPlus` :( |
| 15:44:45 | → | andrews joins (~andrews@user/andrews) |
| 15:44:56 | ← | andrews parts (~andrews@user/andrews) () |
| 15:46:09 | × | jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:46:38 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 15:47:00 | × | kuribas quits (~user@ptr-25vy0i7jsa6kv1vvjg7.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 15:47:07 | × | lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
| 15:49:46 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 15:50:12 | × | bbhoss_ quits (sid18216@id-18216.tinside.irccloud.com) () |
| 15:51:32 | → | bbhoss joins (sid18216@id-18216.tinside.irccloud.com) |
| 15:51:48 | × | tlax quits (tlax@kapsi.fi) (Ping timeout: 276 seconds) |
| 15:51:55 | → | tlax joins (tlax@kapsi.fi) |
| 15:52:22 | × | Logio quits (em@kapsi.fi) (Ping timeout: 252 seconds) |
| 15:52:44 | × | ent quits (entgod@kapsi.fi) (Ping timeout: 256 seconds) |
| 15:54:34 | <Boarders> | in haddock if I want to include an example that is too long then is the thing to put definitions in a codeblock or make the example multi-line or something else? |
| 15:54:42 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds) |
| 15:55:56 | <sm> | Boarders: you can have |
| 15:55:56 | <sm> | @ |
| 15:55:56 | <sm> | multi line example... |
| 15:55:56 | <sm> | @ |
| 15:56:00 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 15:57:16 | → | favonia joins (~favonia@user/favonia) |
| 15:57:29 | → | Logio joins (em@kapsi.fi) |
| 15:57:43 | → | slycelote joins (~slycelote@user/slycelote) |
| 15:57:51 | → | ent joins (entgod@kapsi.fi) |
| 15:58:40 | <Boarders> | how do you indicate with that what it should evaluate to? |
| 15:58:50 | × | slycelote_ quits (~slycelote@user/slycelote) (Ping timeout: 255 seconds) |
| 15:59:45 | <sm> | (maybe that got truncated. @ delimiters.) |
| 16:00:15 | <sm> | Boarders: are you asking about doctests ? the doctest doc will tell |
| 16:02:34 | <sm> | https://github.com/sol/doctest#readme |
| 16:04:28 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 16:07:13 | × | chris_ quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 16:07:46 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection) |
| 16:09:41 | → | chris_ joins (~chris@81.96.113.213) |
| 16:13:53 | × | dudek quits (~dudek@185.150.236.155) (Read error: Connection reset by peer) |
| 16:15:29 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 16:16:17 | × | cuz quits (~user@38.140.58.234) (Remote host closed the connection) |
| 16:16:29 | → | cuz joins (~user@38.140.58.234) |
| 16:16:58 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 16:16:58 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 16:17:01 | allbery_b | is now known as geekosaur |
| 16:20:57 | → | dunkeln joins (~dunkeln@188.71.231.232) |
| 16:20:58 | × | dunkeln quits (~dunkeln@188.71.231.232) (Client Quit) |
| 16:20:59 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 16:21:01 | <gentauro> | does anybody has the link to a tweet staging: «category theory is the mathematics of mathematics»? |
| 16:21:19 | <gentauro> | I think it was from a female cs prof (I recall) |
| 16:21:20 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 255 seconds) |
| 16:22:29 | → | dunkeln joins (~dunkeln@188.71.231.232) |
| 16:22:56 | <Boarders> | https://twitter.com/emilyriehl/status/979375728373518336?s=20 |
| 16:24:55 | <lechner> | dmj`: it compiled, but did not stop the program from terminating. i got the same message as before: "Codec.Compression.Lzma.decompressWith: decoding error LzmaRetOK" https://dpaste.org/FGQs#L7,84,85,86,87 |
| 16:24:57 | <c_wraith> | In that tweet she credits Eugenia Cheng, which is a name I've heard before. |
| 16:26:09 | → | blackeuler joins (~blackeule@72.82.14.206) |
| 16:26:44 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 268 seconds) |
| 16:27:41 | × | blackeuler quits (~blackeule@72.82.14.206) (Client Quit) |
| 16:28:42 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds) |
| 16:30:58 | × | nuncanada quits (~dude@179.235.162.215) (Read error: Connection reset by peer) |
| 16:31:13 | <lechner> | just make sure you pronounce it right, please http://eugeniacheng.com/pronunciation/ |
| 16:31:20 | → | favonia joins (~favonia@user/favonia) |
| 16:31:34 | × | Axman6 quits (~Axman6@user/axman6) (Ping timeout: 256 seconds) |
| 16:34:40 | → | nuncanada joins (~dude@179.235.162.215) |
| 16:36:00 | × | favonia quits (~favonia@user/favonia) (Remote host closed the connection) |
| 16:36:56 | → | favonia joins (~favonia@user/favonia) |
| 16:37:10 | × | Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Remote host closed the connection) |
| 16:37:25 | → | Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se) |
| 16:41:23 | <dmj`> | lechner: I think the issue is that you're not forking a thread to handle new clients, so your server terminates immediately, since the main thread of execution exits.. You're just blocking on a socket receive until the client exits, then your process terminates. You need to fork threads for each client and ensure the main thread of execution is running indefinitely |
| 16:42:11 | × | fendor quits (~fendor@77.119.223.215.wireless.dyn.drei.com) (Remote host closed the connection) |
| 16:42:36 | × | Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 256 seconds) |
| 16:43:30 | <lechner> | dmj`: without a decoding error, this does run forever https://dpaste.org/FGQs#L105 |
| 16:43:47 | <lechner> | via iterateM_ |
| 16:45:07 | <lechner> | it is in fact my motivation to catch the error |
| 16:45:47 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 16:46:10 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:47:15 | × | ablutor quits (~quassel@wasscher.com) (Quit: going for vitamine d) |
| 16:48:10 | → | ablutor joins (~quassel@wasscher.com) |
| 16:50:07 | × | derelict quits (~derelict@user/derelict) (Ping timeout: 245 seconds) |
| 16:52:23 | <gentauro> | 18:22 < Boarders> https://twitter.com/emilyriehl/status/979375728373518336 |
| 16:52:29 | <gentauro> | Boarders: that's the one. Thx :) |
| 16:53:25 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 16:54:56 | → | cfricke joins (~cfricke@user/cfricke) |
| 17:00:22 | × | oso quits (~oso@2601:58c:c080:a950:e67d:b4e2:c5be:433f) (Ping timeout: 246 seconds) |
| 17:00:44 | → | amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
| 17:03:07 | × | norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 258 seconds) |
| 17:03:29 | × | jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2) |
| 17:03:35 | → | vemek1 joins (~vemek@2a03:b0c0:2:d0::d98:1) |
| 17:04:05 | × | azeem quits (~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it) (Ping timeout: 255 seconds) |
| 17:06:20 | → | azeem joins (~azeem@176.200.239.190) |
| 17:07:24 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 17:07:44 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 17:07:54 | → | gustik joins (~gustik@2a01:c844:2416:5920:437:26a4:3a9:3895) |
| 17:08:07 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 17:08:51 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 17:09:14 | × | gustik quits (~gustik@2a01:c844:2416:5920:437:26a4:3a9:3895) (Quit: Leaving) |
| 17:09:31 | → | gustik joins (~gustik@2a01:c844:2416:5920:437:26a4:3a9:3895) |
| 17:10:57 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 245 seconds) |
| 17:14:26 | × | chomwitt quits (~chomwitt@athedsl-32487.home.otenet.gr) (Ping timeout: 255 seconds) |
| 17:14:51 | → | jushur joins (~human@user/jushur) |
| 17:14:52 | × | norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Remote host closed the connection) |
| 17:15:14 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 17:15:23 | × | azeem quits (~azeem@176.200.239.190) (Ping timeout: 258 seconds) |
| 17:15:39 | → | jumper149 joins (~jumper149@80.240.31.34) |
| 17:16:03 | × | benin0369 quits (~benin@183.82.205.17) (Ping timeout: 255 seconds) |
| 17:16:10 | <jumper149> | I want to choose a Haskell formatter. Are there any nice comparisons? Maybe a blog post? |
| 17:16:12 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 17:17:00 | <[exa]> | jumper149: probably best to ask yourself why you want the formatting at first |
| 17:17:07 | <dsal> | Haskell In Depth went over them slightly, but didn't offer an opinion. |
| 17:17:32 | <dsal> | IMO, ormolu is weird and wrong, but it's the new kid and at least some people like it. |
| 17:17:34 | <dminuoso> | I chose emacs as my formatter. I can press enter, and it formats the code nicely. |
| 17:17:35 | → | azeem joins (~azeem@176.200.239.190) |
| 17:17:35 | → | benin0369 joins (~benin@183.82.176.182) |
| 17:17:49 | <dminuoso> | If it does it wrong, I can change the indentation with a single keypress. |
| 17:17:55 | <[exa]> | fourmolu is kinda less bad than ormolu |
| 17:18:17 | geekosaur | formats man8ually as no formatter matches his preference |
| 17:18:30 | <dsal> | I use stylish-haskell when I remember. It usually does OK. |
| 17:18:41 | <jumper149> | I want formatting to be consistent over a project. And I would like something that makes sense with git. |
| 17:18:48 | <maerwald> | brittany got close to my needs, but it tends to pull apart code so much that stuff becomes overly verbose |
| 17:18:55 | <dsal> | I mainly like my imports tidy. |
| 17:18:59 | <dminuoso> | jumper149: A consistent style is already a bizarre thing. |
| 17:19:02 | <dsal> | jumper149: git just stores blobs, so that's not a big deal. :) |
| 17:19:11 | → | lavaman joins (~lavaman@98.38.249.169) |
| 17:19:11 | <dminuoso> | jumper149: Code formatting communicates intent and structure, its highly contextual. |
| 17:19:22 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 17:19:39 | <maerwald> | dminuoso: yes, the consistency argument is mostly nonsense imo. The "I'm too lazy argument" I can get behind |
| 17:19:42 | <maerwald> | because I am |
| 17:19:43 | <dsal> | ormolu was inspired by elm's canonical format in a lot of way and they prioritized making it easy to read diffs generated by whatever tools they happened to use. This is a terrible mistake, IMO. |
| 17:19:45 | <monochrom> | Perhaps "makes sense with git" means "makes sense with diff". |
| 17:19:49 | <dminuoso> | It's sort of the equivalent of saying "a paragraph must always have 3 sentences". It's a stupid proposition to begin with. |
| 17:20:01 | <jumper149> | monochrom: exactly! |
| 17:20:21 | <dminuoso> | Yes, if each paragraph has 3 sentences, you have a consistent formatting of your natural language. But it really hampers readability |
| 17:20:25 | <dsal> | Most of the time when I'm reading code, I'm not reading diffs. I'd rather prioritize the code over the diffs. |
| 17:20:32 | <monochrom> | People keep XYing their diction all the time. Remember that one time when someone said "haddock" to mean doctest? |
| 17:20:33 | × | xff0x_ quits (~xff0x@2001:1a81:5299:ea00:490d:5ed2:61e8:145d) (Ping timeout: 255 seconds) |
| 17:20:38 | × | azeem quits (~azeem@176.200.239.190) (Read error: Connection reset by peer) |
| 17:21:24 | → | xff0x_ joins (~xff0x@2001:1a81:5299:ea00:2c16:bae7:eca6:fd06) |
| 17:21:48 | → | azeem joins (~azeem@dynamic-adsl-94-34-39-251.clienti.tiscali.it) |
| 17:21:49 | <maerwald> | dsal: in a lot of PRs I've seen at work there was no way to understand anything from the diff without a walkthrough by the author. Even looking at my own PRs I don't understand anything. In some companies the author writes a walkthrough in the diff comments, but even then: diffs lie |
| 17:22:16 | <maerwald> | you don't see the code you changed, only the lines you changed |
| 17:22:26 | <jumper149> | I particularly want a formatter for stuff like same style Haddocks (-- vs {- -}), sorted imports and extensions. |
| 17:22:36 | → | favonia joins (~favonia@user/favonia) |
| 17:22:43 | <dminuoso> | jumper149: For import/extensions sorting, I find stylish-haskell to be agreeable. |
| 17:22:49 | <dminuoso> | (It just breaks in the presence of QQs and TH) |
| 17:22:54 | <maerwald> | and CPP |
| 17:23:16 | <dminuoso> | jumper149: But note, you should chose your tool to fit *your* style. |
| 17:23:16 | <dsal> | maerwald: yeah. I have that problem reading diffs sometimes. Like, cool you changed x to y... but what was x and what's y? |
| 17:23:34 | <maerwald> | also: reverse dependencies of your code |
| 17:23:57 | <maerwald> | you might need to re-read the entire codebase from a different perspective |
| 17:24:21 | <maerwald> | while the scrum master is asking why the PR is still not merged |
| 17:24:34 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 17:24:56 | <maerwald> | but hey... not everyone works in security critical code: just push and hope for the best |
| 17:25:02 | <monochrom> | "the closer you look, the less you see" |
| 17:25:30 | <dminuoso> | monochrom: Yes, that was the mentality of openssl. Distance yourself from the code and embrace Heartbleed! |
| 17:25:32 | <dsal> | These modern "diff-friendly" things take something small, clear and readable and make me have to scroll to understand what's going on. https://www.irccloud.com/pastebin/dhodxIZ7/ok.elm |
| 17:25:42 | <monochrom> | haha |
| 17:26:11 | <geekosaur> | I somewhat regularly have to click on the extend buttons in github to understand a diff |
| 17:26:26 | <geekosaur> | which is the simple version of this |
| 17:26:54 | <monochrom> | Clearly, the logical conclusion is one token per line. >:) |
| 17:27:08 | <dsal> | There are lots of cases where formatters seem to do that. |
| 17:27:13 | <maerwald> | There is a very grumpy C coder on my LinkedIn feed, always riling about security and code correctness. Then one day he wrote why: his bug actually killed people, because it was some control system about pressure valves. |
| 17:27:16 | <dsal> | With lines between them. |
| 17:28:05 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 17:28:09 | <dsal> | monochrom: Like, imagine how hard this would be to read if that 'o' shared a line with any of the other code: https://www.irccloud.com/pastebin/lIpmTDCu/format.elm |
| 17:28:18 | <maerwald> | but I don't know what he thinks of code formatters |
| 17:28:40 | <maerwald> | then again: that's a solved issue in C anyway |
| 17:29:15 | <dsal> | I really like tools that do static analysis and stuff in my code to tell me when I could do things better. That's an unreasonably hard problem to solve well, though. |
| 17:29:49 | → | Deide joins (~Deide@user/deide) |
| 17:34:15 | → | o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) |
| 17:34:59 | <maerwald> | I think the main question is: do you align code or just do syntactical indenting |
| 17:36:35 | → | euouae joins (~euouae@user/euouae) |
| 17:36:50 | <euouae> | Hello |
| 17:37:15 | <euouae> | I want to create a lazy list whose nth element is a function of its predecessor |
| 17:37:21 | × | dajoer quits (~david@user/gvx) (Quit: leaving) |
| 17:37:27 | <monochrom> | iterate |
| 17:37:38 | <euouae> | What do you mean |
| 17:37:49 | <monochrom> | Look for that function name in the standard library. |
| 17:39:21 | <euouae> | Thank you ! |
| 17:39:53 | <maerwald> | @hoogle iterate |
| 17:39:53 | <lambdabot> | Prelude iterate :: (a -> a) -> a -> [a] |
| 17:39:53 | <lambdabot> | Data.List iterate :: (a -> a) -> a -> [a] |
| 17:39:53 | <lambdabot> | Data.List.NonEmpty iterate :: (a -> a) -> a -> NonEmpty a |
| 17:40:27 | <maerwald> | @where hoogle |
| 17:40:27 | <lambdabot> | http://haskell.org/hoogle http://hoogle.haskell.org http://fpcomplete.com/hoogle – See also Hayoo, which searches more packages: http://hayoo.fh-wedel.de/ |
| 17:40:40 | <maerwald> | hayoo is dead no? |
| 17:40:44 | × | benin0369 quits (~benin@183.82.176.182) (Ping timeout: 268 seconds) |
| 17:41:01 | <maerwald> | and the fpcomplete link too |
| 17:41:16 | <monochrom> | yikes |
| 17:41:44 | <geekosaur> | yeh, nobody's updated that |
| 17:42:03 | → | chomwitt joins (~chomwitt@athedsl-32487.home.otenet.gr) |
| 17:42:24 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 17:42:39 | <euouae> | Has anyone tried Haskell on a supercomputer? |
| 17:42:48 | <geekosaur> | @where+ hoogle https://hoogle.haskell.org see also https://haskell.org/hoogle which searches a different default set of libraries |
| 17:42:48 | <lambdabot> | I will remember. |
| 17:43:04 | <geekosaur> | define supercomputer |
| 17:43:15 | <maerwald> | for me, both links are the same |
| 17:43:33 | <geekosaur> | interesting, maybe they made the old one go away |
| 17:43:34 | <maerwald> | haskell.org/hoogle redirects to hoogle.haskell.org |
| 17:43:40 | <euouae> | Hmm I’m trying to run a lot of computations and get an answer |
| 17:43:46 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 240 seconds) |
| 17:43:53 | <euouae> | for now I have like 100 cores etc |
| 17:43:56 | <geekosaur> | @where+ hoogle https://hoogle.haskell.org |
| 17:43:56 | <lambdabot> | Nice! |
| 17:44:47 | → | maxie joins (~IceChat95@45.100.3.196) |
| 17:44:49 | <dmj`> | Someone should write a library for parsing XML with GHC.Generics |
| 17:45:46 | <geekosaur> | iirc ghc's performance gets worse the more cores you have :( (but maybe this has improved, that was around 7.x) |
| 17:46:06 | <geekosaur> | mostly because of stop-the-world gc, though |
| 17:46:39 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 17:46:51 | <euouae> | Okay interesting |
| 17:46:59 | <davean> | It gets harder to make it perform well with more cores, it doesn't inhernety not perform well. |
| 17:47:06 | <maerwald> | dmj`: why are you using xml :> |
| 17:47:08 | <davean> | But no super computing task is single process |
| 17:47:21 | <euouae> | Davean my knowledge is limited |
| 17:47:22 | <davean> | I mean if you could fit it on one system it wouldn't really be using a modern supercomputer |
| 17:47:50 | <euouae> | I am not great at Haskell and never programmed for supercomputers before |
| 17:48:57 | → | favonia joins (~favonia@user/favonia) |
| 17:49:49 | <euouae> | But Haskell is really attractive for math |
| 17:49:52 | <davean> | I think I've heard of some super computer Haskell use. I'd say everything to do with super computers is pretty definitionally specialized |
| 17:50:17 | <euouae> | Yeah basically you need to be very knowledgeable in the domain davean |
| 17:50:25 | <euouae> | And I’m just trying to get by |
| 17:50:30 | <maerwald> | is this about bitcoin mining? |
| 17:50:33 | <davean> | The domain, but also that specific computer |
| 17:50:38 | <davean> | maerwald: I sure hope not! |
| 17:50:46 | <euouae> | No lol it’s research |
| 17:50:50 | <dmj`> | maerwald: AWS S3 still uses XML, https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html |
| 17:51:17 | <euouae> | Bitcoin stuff is so scummy o want nothing with. It |
| 17:52:26 | <davean> | maerwald: Many code bugs kill a large number of fractional people |
| 17:52:28 | → | mnrmnaugh joins (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) |
| 17:53:01 | <euouae> | Davean I don’t understand how situational it could be though |
| 17:53:22 | <euouae> | what I have is some pure math computations applied to many different numbers (say) |
| 17:53:54 | <davean> | euouae: The structure of the super computers differ, and the primary issue with super computers is communication |
| 17:54:03 | <davean> | You optimize communication, not compute |
| 17:54:11 | <euouae> | For now I’m on a single node |
| 17:54:14 | <davean> | The network structures are all different for different optimalities |
| 17:54:26 | <davean> | Yes, and theres no modern single node super computers |
| 17:54:54 | <euouae> | It’s not necessarily a supercomputer since it’s single node but I’m starting from that |
| 17:54:55 | <davean> | even on a single processor, you have to deal with inter-core communication issues, they're just less |
| 17:55:07 | <euouae> | Inter core? |
| 17:55:22 | <euouae> | Are you talking about worker communication? |
| 17:55:27 | → | oso joins (~oso@2601:58c:c080:a950:f275:2530:b398:680b) |
| 17:55:28 | <euouae> | I’m not following |
| 17:56:41 | → | benin0369 joins (~benin@106.198.95.190) |
| 17:57:54 | <geekosaur> | things like shared memory access |
| 17:58:13 | <euouae> | Why is that important ? |
| 17:58:29 | <euouae> | I think in my problem no memory is shared |
| 17:58:48 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds) |
| 17:58:54 | <euouae> | It’s like map f xs but parallel |
| 17:59:09 | <geekosaur> | if you're handling out subproblems to different threads/cores to be worked on, then there is at least some shared memory |
| 17:59:12 | <euouae> | More or less, maybe with a stop condition |
| 17:59:36 | <euouae> | Okay but this is the most basic form of it right? |
| 17:59:40 | → | peterhil_ joins (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) |
| 18:00:20 | → | benin03694 joins (~benin@183.82.177.8) |
| 18:01:06 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:02:10 | × | benin0369 quits (~benin@106.198.95.190) (Ping timeout: 252 seconds) |
| 18:02:10 | benin03694 | is now known as benin0369 |
| 18:02:19 | × | peterhil quits (~peterhil@mobile-access-b04801-219.dhcp.inet.fi) (Ping timeout: 268 seconds) |
| 18:04:02 | <euouae> | Anyway those issues are part of the algorithm right? |
| 18:04:14 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 18:04:14 | <euouae> | Not some other aspect of the peoblrm |
| 18:04:20 | <euouae> | problem* |
| 18:04:39 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds) |
| 18:04:39 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 18:04:54 | <davean> | I mean your algorithm isn't determined |
| 18:05:02 | <davean> | you design one to optimize for the HW |
| 18:05:06 | <geekosaur> | you'd best hope they are, but that would mean it's been specialized to your supercomputer |
| 18:05:27 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 18:05:51 | <davean> | what alg. is best depends on what your counting, and what the various costs are |
| 18:06:02 | <davean> | along with your expected problem parameters |
| 18:06:45 | <euouae> | So it’s really hard or are you just talking about the optimal case? |
| 18:07:14 | <monochrom> | I would think "really hard" and "the optimal case" go well together. |
| 18:07:55 | <davean> | Depends on the problem |
| 18:08:14 | <davean> | if you're scaling it up past a very small case though I'm talking about what it usually takes to do a servicable job at it |
| 18:08:49 | <euouae> | Davean are you speaking from experience with industry or research |
| 18:08:59 | → | derelict joins (~derelict@user/derelict) |
| 18:09:12 | <euouae> | obviously any optimization means more profit in industry I imagine it’s really right |
| 18:09:15 | <davean> | yes, though my research wasn't particularly compute intensive even if it was "AI" |
| 18:09:43 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds) |
| 18:09:50 | <euouae> | But in research there can be diminishing returns because your problem isn’t computationally feasible anyway after n=10 etc |
| 18:10:22 | <euouae> | Okay… hmmm. Is it possible for me to get into this at all or am I hopeless? |
| 18:10:36 | <davean> | euouae: I mean theres a huge difference between Floyd-Warshall and A* |
| 18:10:43 | <davean> | euouae: but they both sorta solve the same problem space |
| 18:10:44 | <geekosaur> | nobody here can tell that as we don't know your problem |
| 18:10:59 | <euouae> | I don’t know those davean |
| 18:11:31 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 250 seconds) |
| 18:11:55 | <euouae> | Okay maybe I’ll ask again if I have something more to show |
| 18:11:56 | <davean> | ANd oh no, Floyd-Warshall is O(|V|^3), and A* is only O(|E|)! Clearly A* is always better? Except not at all |
| 18:12:22 | → | fendor joins (~fendor@77.119.223.215.wireless.dyn.drei.com) |
| 18:12:45 | <euouae> | Big constants davean? |
| 18:12:45 | <davean> | well |E| can be ~ |V|^2, and what if you want the best paths, not approximations, but you're metric isn't admissible? And you want it for all of them? Or even just one side of those? |
| 18:12:51 | <davean> | euouae: no, nothing to do with constants |
| 18:13:25 | × | dunkeln quits (~dunkeln@188.71.231.232) (Ping timeout: 268 seconds) |
| 18:13:40 | × | chris_ quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 18:13:41 | <davean> | Algrithmicly Floyd-Warshall is the same complexity for some use cases, because while they solve the same-ish problems, they do it for different uses |
| 18:13:57 | <davean> | if you do something |V|^2 |V times, thats |V|^3 |
| 18:14:17 | <davean> | But Floyd-Warshall requires more communication |
| 18:14:27 | <davean> | A* is the "embarasingly" paralleler case |
| 18:14:53 | <davean> | so if you're CPUs are very seperated, maybe you want to work more like that again, except not you can go back and plan the communication of F-W ... |
| 18:15:40 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 18:16:14 | <euouae> | Oh man I’m not following |
| 18:17:29 | × | mnrmnaugh quits (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Quit: Leaving) |
| 18:18:10 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 18:18:36 | → | chris_ joins (~chris@81.96.113.213) |
| 18:20:08 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 252 seconds) |
| 18:20:36 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 18:21:41 | × | euandreh quits (~euandreh@191.181.59.160) (Quit: WeeChat 3.2) |
| 18:22:54 | × | euouae quits (~euouae@user/euouae) (Quit: Client closed) |
| 18:23:34 | × | chris_ quits (~chris@81.96.113.213) (Ping timeout: 268 seconds) |
| 18:29:59 | → | zeenk joins (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) |
| 18:30:19 | × | Topsi quits (~Tobias@dyndsl-095-033-024-196.ewe-ip-backbone.de) (Quit: Leaving.) |
| 18:31:29 | → | pavonia joins (~user@user/siracusa) |
| 18:33:26 | × | zangi quits (~zangi@103.154.230.230) (Ping timeout: 252 seconds) |
| 18:33:29 | → | Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) |
| 18:34:55 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
| 18:35:30 | → | chris_ joins (~chris@81.96.113.213) |
| 18:35:31 | × | chris_ quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 18:36:29 | → | dunkeln joins (~dunkeln@188.71.231.232) |
| 18:37:58 | → | chris_ joins (~chris@81.96.113.213) |
| 18:38:46 | × | Null_A quits (~null_a@2601:645:8700:2290:34e6:e307:f490:7d07) (Remote host closed the connection) |
| 18:40:46 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 18:41:58 | × | chris_ quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 18:43:27 | × | matijja quits (~matijja@193.77.181.201) (Quit: ZNC 1.8.1 - https://znc.in) |
| 18:44:47 | × | fef quits (~thedawn@user/thedawn) (Quit: Leaving) |
| 18:44:49 | → | matijja joins (~matijja@193.77.181.201) |
| 18:45:17 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 18:46:51 | → | chris_ joins (~chris@81.96.113.213) |
| 18:51:27 | × | chris_ quits (~chris@81.96.113.213) (Ping timeout: 255 seconds) |
| 18:55:01 | × | dwt_ quits (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 268 seconds) |
| 18:59:40 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 268 seconds) |
| 19:01:27 | → | hseg joins (~gesh@185.120.126.10) |
| 19:01:36 | → | dwt_ joins (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) |
| 19:02:31 | → | euouae joins (~euouae@user/euouae) |
| 19:02:37 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Remote host closed the connection) |
| 19:02:41 | → | h98 joins (~h98@187.83.249.216.dyn.smithville.net) |
| 19:03:36 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 19:04:02 | <euouae> | Hello why am I getting a stack overflow for this? sum $ map f [T x y z | x<-xs, y<-xs, z<-xs ] where xs has 256 elements |
| 19:04:22 | <euouae> | and f calculates the area of the triangle with vertices x y and z |
| 19:04:25 | <Hecate> | euouae: stack or heap? |
| 19:04:34 | <euouae> | Says stack on Gucci |
| 19:04:36 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 19:04:37 | <euouae> | Ghci |
| 19:05:44 | <davean> | 256^3? |
| 19:05:47 | <h98> | 256^3 = 16,777,216 |
| 19:05:57 | <euouae> | I was hoping that it wouldn’t have to expand a 256^3 list before summing |
| 19:06:03 | <geekosaur> | is this sum being foldl again? |
| 19:06:23 | <euouae> | Are you asking me? |
| 19:06:30 | <geekosaur> | no |
| 19:07:00 | <hseg> | hi. have this generator http://ix.io/3tqe, and I would like to generalize it so its input generators can depend on each other's results (i.e. want to be able to pass [a -> Gen a]) |
| 19:07:11 | <Rembane> | euouae: What happens if you replace sum with foldr1 (+) ? |
| 19:07:20 | <hseg> | have tried just doing that, but it involves a lot of churn |
| 19:07:26 | <hseg> | is there a more mtl'y way of writing this that can help avoid this churn |
| 19:07:28 | <hseg> | ? |
| 19:07:46 | × | dwt_ quits (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 246 seconds) |
| 19:08:18 | <Hecate> | euouae: until you're on the version of GHC that has sum strict without optimisations, please enable them when you do stuff like that, otherwise space leaks will knock at your door |
| 19:09:10 | <geekosaur> | well, you also have to be on a version of ghc which allows optiimization in ghci |
| 19:09:11 | <euouae> | Okay so 8.6.5 is old |
| 19:09:31 | → | chris_ joins (~chris@81.96.113.213) |
| 19:09:45 | <euouae> | Rembane got same thing much later |
| 19:10:05 | <Rembane> | euouae: Got it! |
| 19:10:06 | × | chris_ quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 19:10:09 | <euouae> | Ok I guess I have to enable optimizations |
| 19:10:13 | <euouae> | Got what ? |
| 19:10:23 | <davean> | foldr' (+) 0 instead of sum sohuld fix it also |
| 19:11:22 | <davean> | (That doesn't require optimizations) |
| 19:11:36 | <maerwald> | anyone good with libarchive? Do you have a guarantee that when reading list of archive entries that the first entry is the root folder (if any)? |
| 19:12:31 | <davean> | maerwald: I certainly can make a tar that thats not true of. |
| 19:12:37 | × | dunkeln quits (~dunkeln@188.71.231.232) (Ping timeout: 268 seconds) |
| 19:12:48 | × | juhp quits (~juhp@128.106.188.66) (Quit: juhp) |
| 19:12:54 | <maerwald> | yeah... I want to strip the root folder, but libarchive API doesn't have that |
| 19:12:59 | <davean> | libarchive would have to pre-read the entire tar to avoid it, at best |
| 19:13:01 | → | juhp joins (~juhp@128.106.188.66) |
| 19:13:27 | <geekosaur> | and there are versions of tar that re-output a folder after its contents to allow the other end to more easily set mtime etc. |
| 19:13:38 | × | o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Remote host closed the connection) |
| 19:14:17 | <maerwald> | the alternative is to unpack as-is, make sure you're on the same device and then do an atomic move operation, stripping the root folder away |
| 19:14:24 | <euouae> | Davean also gives me stack overflow |
| 19:14:27 | <maerwald> | but on windows, any file operation is doomed to have locking issues |
| 19:14:28 | × | benin0369 quits (~benin@183.82.177.8) (Ping timeout: 268 seconds) |
| 19:14:46 | <euouae> | You might be able to hack libarchive |
| 19:14:51 | <maerwald> | no time |
| 19:15:17 | → | chris_ joins (~chris@81.96.113.213) |
| 19:16:30 | <davean> | maerwald: Conceptually you'd have to do 2 passes over a tar for that, at best |
| 19:16:51 | <maerwald> | I think the idea would be to lazily read all entries... fmap over them and strip the root dir, lazily create a new tar archive from the entries and then lazily unpack it |
| 19:17:05 | <davean> | why create a new tar archive? |
| 19:17:07 | <euouae> | Man pages are outdated |
| 19:17:11 | <davean> | why not just process them as you unpack? |
| 19:17:14 | <euouae> | Maybe read the source code |
| 19:17:16 | <maerwald> | davean: there's no function to unpack from entries |
| 19:17:44 | <h98> | euouae did you try foldr (\x y -> (f x) + y) 0 [T x y z ....]? |
| 19:18:46 | <euouae> | Maerwald: seems related https://github.com/libarchive/libarchive/wiki/WishList#seek-in-archives |
| 19:19:05 | <euouae> | H98 would thy be better? |
| 19:19:23 | <maerwald> | euouae: the haskell bindings might not be exhaustive |
| 19:19:48 | × | chris_ quits (~chris@81.96.113.213) (Ping timeout: 255 seconds) |
| 19:19:53 | <euouae> | Yeah you’d have to make that but even then I’m painting to the fact that it’s on a wishlist maereald |
| 19:20:11 | <maerwald> | I'd have to write my own version of `toDisk :: Entry FilePath ByteString -> IO ()` |
| 19:20:19 | <maerwald> | which sounds trivial, but isn't |
| 19:20:39 | <euouae> | Go for a solution that isn’t efficient but works? |
| 19:20:46 | <maerwald> | hardlinks, softlinks, preserving file properties |
| 19:21:34 | <euouae> | H98 also gives stack overflow |
| 19:21:55 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 19:23:00 | AWizzArd_ | is now known as AWizzArd |
| 19:23:33 | × | AWizzArd quits (~code@gehrels.uberspace.de) (Changing host) |
| 19:23:33 | → | AWizzArd joins (~code@user/awizzard) |
| 19:24:05 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 19:24:10 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 19:27:21 | <euouae> | So the issue is ghci being silly right |
| 19:27:28 | → | dwt_ joins (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) |
| 19:28:01 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 258 seconds) |
| 19:29:49 | <h98> | yeah I think so |
| 19:29:51 | × | Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection) |
| 19:29:52 | <h98> | I tried this: https://paste.tomsmeding.com/QVCoWxOz |
| 19:30:05 | × | qbt quits (~edun@user/edun) (Quit: WeeChat 3.2) |
| 19:30:14 | <h98> | if I compile and run it i get 6467616768 after a few seconds |
| 19:30:26 | <h98> | if I call test in ghci I get a stack overflow |
| 19:30:30 | <h98> | version 8.10.4 |
| 19:32:16 | <euouae> | Thank you ! |
| 19:32:27 | <euouae> | Did you have to enable optimizations ? |
| 19:33:13 | <h98> | I have no idea how, so I don't think so |
| 19:33:21 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 19:34:14 | <euouae> | Thanks |
| 19:34:22 | <geekosaur> | ghci can't do optimizations except in very recent versions |
| 19:36:39 | × | maerwald quits (~maerwald@mail.hasufell.de) (Changing host) |
| 19:36:39 | → | maerwald joins (~maerwald@user/maerwald) |
| 19:37:30 | × | alx741 quits (~alx741@186.178.109.120) (Ping timeout: 252 seconds) |
| 19:38:00 | <h98> | oh but foldl' works |
| 19:38:38 | <h98> | https://paste.tomsmeding.com/dLbV73r1 same thing, but no overflow in ghci |
| 19:39:35 | <h98> | RWH p. 97 talks about this |
| 19:42:33 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 19:42:52 | <dsal> | why is `sum` bad? Is this one of those things where fixing it breaks something probably nobody cares about? |
| 19:44:39 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 19:46:05 | → | _73 joins (~user@pool-96-252-123-136.bstnma.fios.verizon.net) |
| 19:46:08 | <monochrom> | I compiled with -O, no stack overflow, in fact immediate answer. |
| 19:46:47 | <monochrom> | main = print (let xs = [1..256] in sum [ x+y+z | x <- xs, y <- xs, z <- xs ]) |
| 19:46:59 | <geekosaur> | dsal, there was a whole discussion on -cafe about various things using foldl instead of foldl' |
| 19:47:15 | <geekosaur> | and thereby being prone to stack overflows |
| 19:47:28 | <geekosaur> | sum being the prime example |
| 19:47:35 | <_73> | what is the right abstraction to avoid explicit recursion on a function using a monadic action. I tried to write it as a foldr but wasn't able to succeed. Here is my code that does use explicit recursion: http://dpaste.com/2SKMBLTA8 |
| 19:48:15 | → | Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) |
| 19:48:32 | <dsal> | :t foldM |
| 19:48:33 | <lambdabot> | (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m b |
| 19:48:48 | <geekosaur> | I think it comes down to nobody thought about it and the original Prelude was written for comprehensibility by newcomers rather than performance |
| 19:49:05 | <dsal> | @src sum |
| 19:49:06 | <lambdabot> | sum = foldl (+) 0 |
| 19:49:22 | <monochrom> | Oh don't worry about @src, it's independently handwritten. |
| 19:49:28 | <monochrom> | Hell, s/worry/trust/ |
| 19:49:39 | <dsal> | Yeah. I just tend to assume it's a simplification for understanding. |
| 19:49:57 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 19:50:10 | <monochrom> | Yeah, great educational tool. |
| 19:50:44 | <geekosaur> | and @src is mostly lifted from the Report, and is similarly intended for reading rather than running |
| 19:50:52 | × | paolino quits (~paolo@84.33.141.5) (Remote host closed the connection) |
| 19:51:52 | × | oso quits (~oso@2601:58c:c080:a950:f275:2530:b398:680b) (Ping timeout: 246 seconds) |
| 19:52:04 | → | alx741 joins (~alx741@186.178.108.174) |
| 19:52:05 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 19:52:17 | → | o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) |
| 19:52:32 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 252 seconds) |
| 19:52:42 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds) |
| 19:52:55 | <_73> | I got it work with foldM thanks |
| 19:53:28 | → | favonia joins (~favonia@user/favonia) |
| 19:53:38 | × | Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Ping timeout: 252 seconds) |
| 19:56:51 | × | ziman quits (~ziman@user/ziman) (Ping timeout: 276 seconds) |
| 19:57:11 | → | Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) |
| 19:57:17 | → | ziman joins (~ziman@c25-5.condornet.sk) |
| 19:57:47 | × | o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 255 seconds) |
| 19:59:59 | × | ziman quits (~ziman@c25-5.condornet.sk) (Changing host) |
| 19:59:59 | → | ziman joins (~ziman@user/ziman) |
| 20:00:53 | <euouae> | Heh I got “killed” after I run ghc |
| 20:01:14 | <euouae> | What does that mean ? |
| 20:01:29 | <geekosaur> | the OOM killer got you |
| 20:01:50 | × | Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Ping timeout: 255 seconds) |
| 20:01:57 | <geekosaur> | i.e. the Linux kernel decided your process was eating too much memory and nuked it |
| 20:03:39 | <geekosaur> | (or similar for OS X, etc.; only Windows will differ but it has its own way of dealing with that) |
| 20:04:39 | <euouae> | Hmm alright the oom reaper |
| 20:05:15 | × | juhp quits (~juhp@128.106.188.66) (Ping timeout: 255 seconds) |
| 20:06:33 | × | Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 268 seconds) |
| 20:07:44 | → | juhp joins (~juhp@128.106.188.66) |
| 20:09:27 | × | norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Quit: Leaving) |
| 20:15:09 | × | euouae quits (~euouae@user/euouae) (Quit: Ping timeout (120 seconds)) |
| 20:15:31 | → | lavaman joins (~lavaman@98.38.249.169) |
| 20:15:51 | → | Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) |
| 20:16:07 | <ddb> | geekosaur: is that discussion about things using foldl instead of foldl' logged or archived anywhere? |
| 20:17:23 | <maerwald> | can you have extaustiveness check with NamedFieldPuns? |
| 20:18:25 | → | ubert joins (~Thunderbi@91.141.42.221.wireless.dyn.drei.com) |
| 20:18:25 | <maerwald> | let's say you have Foo = Foo { foo1 :: String, foo2 :: String, foo3 :: String } and you want to pattern match on it without relying on the order, but also make sure you don't miss something when a new record is added |
| 20:19:21 | → | me_ joins (~me@87-59-111-97-cable.dk.customer.tdc.net) |
| 20:19:27 | × | me_ quits (~me@87-59-111-97-cable.dk.customer.tdc.net) (Client Quit) |
| 20:19:49 | <maerwald> | Relying on order is shitty when all the records are of the same type |
| 20:19:52 | → | me_ joins (~me@87-59-111-97-cable.dk.customer.tdc.net) |
| 20:20:06 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds) |
| 20:20:12 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
| 20:20:33 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 20:20:58 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 20:21:18 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 20:22:19 | <geekosaur> | ddb, somewhere on the haskell-cafe mailing list archives |
| 20:23:10 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 20:23:55 | × | me_ quits (~me@87-59-111-97-cable.dk.customer.tdc.net) (Remote host closed the connection) |
| 20:24:06 | → | favonia joins (~favonia@user/favonia) |
| 20:25:36 | → | zebrag joins (~chris@user/zebrag) |
| 20:26:04 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
| 20:26:21 | → | Brumaire joins (~quassel@81-64-14-121.rev.numericable.fr) |
| 20:30:18 | × | Brumaire quits (~quassel@81-64-14-121.rev.numericable.fr) (Remote host closed the connection) |
| 20:30:19 | × | drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 268 seconds) |
| 20:31:43 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 20:32:09 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 20:35:04 | × | Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection) |
| 20:35:24 | → | Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) |
| 20:35:30 | × | BestSteve quits (~beststeve@220-135-3-239.HINET-IP.hinet.net) (Ping timeout: 245 seconds) |
| 20:35:54 | → | BestSteve joins (~beststeve@220-135-3-239.HINET-IP.hinet.net) |
| 20:36:34 | × | xff0x_ quits (~xff0x@2001:1a81:5299:ea00:2c16:bae7:eca6:fd06) (Ping timeout: 240 seconds) |
| 20:38:36 | → | xff0x_ joins (~xff0x@185.65.135.235) |
| 20:44:51 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds) |
| 20:45:08 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 20:45:10 | → | spruit11_ joins (~quassel@2a02:a467:ccd6:1:11d0:89ea:1c73:9299) |
| 20:47:10 | × | BestSteve quits (~beststeve@220-135-3-239.HINET-IP.hinet.net) (Ping timeout: 245 seconds) |
| 20:47:31 | × | spruit11 quits (~quassel@2a02:a467:ccd6:1:b030:6032:2190:671b) (Ping timeout: 246 seconds) |
| 20:48:54 | × | xff0x_ quits (~xff0x@185.65.135.235) (Ping timeout: 258 seconds) |
| 20:48:54 | → | BestSteve joins (~beststeve@2001-b011-0002-3b2a-06d9-f5ff-fe38-e249.dynamic-ip6.hinet.net) |
| 20:50:48 | → | xff0x_ joins (~xff0x@2001:1a81:5299:ea00:2c16:bae7:eca6:fd06) |
| 20:51:36 | × | mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 255 seconds) |
| 20:52:23 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 20:52:40 | → | argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar) |
| 20:56:12 | → | hexfive joins (~eric@50.35.83.177) |
| 20:56:48 | → | acidjnk_new joins (~acidjnk@p200300d0c72b9588f8c9d06c34eef88c.dip0.t-ipconnect.de) |
| 20:57:36 | × | argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving) |
| 20:57:55 | → | argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar) |
| 20:58:26 | × | argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit) |
| 20:58:45 | → | argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar) |
| 20:59:05 | → | oso joins (~oso@2601:58c:c080:a950:f275:2530:b398:680b) |
| 21:01:00 | × | argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit) |
| 21:01:02 | <hseg> | feels like this can be expressed in standard terms, any ideas? http://ix.io/3tsp |
| 21:01:20 | → | argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar) |
| 21:02:17 | <hseg> | idea is to sum a list, then if possible without changing the sign, replace the last element by its difference from the sum so it all sums to 0 |
| 21:02:46 | <hseg> | (need to maintain signs, and the list is sorted by absolute value) |
| 21:03:35 | × | dunj3 quits (~dunj3@2001:16b8:3046:8200:9324:28de:5bca:d5dc) (Remote host closed the connection) |
| 21:05:07 | × | argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit) |
| 21:05:27 | → | argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar) |
| 21:05:47 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 21:06:05 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
| 21:06:47 | × | argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit) |
| 21:07:07 | → | argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar) |
| 21:07:50 | <dsal> | > let xs = init [1, 2, 3] in xs <> [0 - sum xs] -- hseg like this? I'm a bit confused by your specification. |
| 21:07:51 | <lambdabot> | [1,2,-3] |
| 21:08:01 | → | Null_A joins (~null_a@2601:645:8700:2290:34e6:e307:f490:7d07) |
| 21:08:49 | <hseg> | spec is: (assuming output is Just): ((==) `on` compare 0) xs (fixSum xs), sum (fixSum xs) == 0 |
| 21:09:35 | <hseg> | and I'm choosing to limit the cases i'm fixing to those (==) `on` init |
| 21:10:37 | <hseg> | hrm. your code is probably clearer -- just need to compose with a guard to make sure it satisfies spec |
| 21:10:52 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 21:10:54 | <hseg> | though if there were some way of avoiding the append, that would be nice |
| 21:12:07 | × | argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving) |
| 21:12:27 | → | argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar) |
| 21:13:59 | <EvanR> | you want to change the last element of a list? |
| 21:14:03 | <hseg> | y |
| 21:14:07 | <EvanR> | oof |
| 21:14:53 | <hseg> | could fix it so it's correct-by-construction, but that makes my generator code very ugly |
| 21:14:57 | <EvanR> | can you designate the first element the element that needs to be changed |
| 21:15:28 | <hseg> | nope -- sorted ascending by absolute value |
| 21:15:44 | <EvanR> | how about descending |
| 21:15:58 | <hseg> | and there's enough stuff depending on this already that I'd rather not push that redesign |
| 21:16:46 | <hseg> | should just take the l and continue -- probably not going to be significant enough to matter |
| 21:16:51 | <hseg> | (lists will be short) |
| 21:17:09 | <hseg> | at least it's O(n) vs O(1), not O(n) vs O(n^k) |
| 21:17:10 | <EvanR> | i like to split things up into steps rather than code golfing |
| 21:17:30 | <hseg> | ? |
| 21:17:44 | <hseg> | where are you seeing golfing in my code? |
| 21:17:49 | <EvanR> | or in this case, perhaps write a combinator that traverses a list and uses a function argument to decide how to modify the last element |
| 21:18:02 | <EvanR> | i only saw 1 line of code, so it seems like golf xD |
| 21:18:10 | <hseg> | :) |
| 21:18:44 | <hseg> | posted code earlier, but that could work |
| 21:19:04 | → | spruit11 joins (~quassel@2a02:a467:ccd6:1:617d:c9ec:74dc:292b) |
| 21:19:05 | × | argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving) |
| 21:19:24 | → | argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar) |
| 21:19:42 | <hseg> | k, not bad enough to matter |
| 21:19:43 | <EvanR> | a combination fold and specialized list reconstructor. And scanl may already be that |
| 21:20:42 | <davean> | hseg: how does this handle the singleton list? |
| 21:20:48 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 21:21:04 | <hseg> | [0] -> Just [0], [x] -> Nothing |
| 21:21:14 | × | argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Client Quit) |
| 21:21:30 | × | spruit11_ quits (~quassel@2a02:a467:ccd6:1:11d0:89ea:1c73:9299) (Ping timeout: 240 seconds) |
| 21:21:31 | <EvanR> | oh failure, nvm |
| 21:21:41 | <davean> | Oh damn, thats ... ok |
| 21:21:53 | → | argento joins (~argent0@168-227-96-26.ptr.westnet.com.ar) |
| 21:22:26 | <EvanR> | if you're changing the last element wouldn't [x] |-> Just [0] |
| 21:22:36 | <davean> | EvanR: Thats why I asked! |
| 21:23:01 | × | zeenk quits (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Ping timeout: 268 seconds) |
| 21:23:11 | <davean> | I had suspicions about the spec |
| 21:23:13 | <hseg> | no, because i need elementwise (==) `on` compare 0 |
| 21:23:37 | <hseg> | which is more important to me than success fixing the sum |
| 21:24:30 | <EvanR> | less a spec and more a would be nice list xD |
| 21:24:44 | <davean> | Yah, I think you need to think about your actual problem space hseg |
| 21:24:52 | <davean> | I suspect you haven't come to understanding of your actual goals |
| 21:25:26 | <hseg> | am writing a quickcheck generator. all I need is that it generate enough correct values quickly |
| 21:25:42 | <davean> | No, thats not what you need for good quickchecks |
| 21:25:54 | <davean> | Thats what you need for invalid quickchecks |
| 21:26:09 | <hseg> | because I also need a good shrink? |
| 21:26:18 | <hseg> | (need one regardless (: ) |
| 21:26:19 | <davean> | No, shrink is secondary and never required |
| 21:26:41 | <davean> | Quickcheck generators have to cover the domain, or at least the preimage |
| 21:26:54 | <hseg> | basically all I'm using this for is for randomly sampling the domain |
| 21:27:11 | <davean> | But you've just described NOT sampling the domain |
| 21:27:28 | <davean> | you'd just described sampling a particular subdomain of the domain |
| 21:28:03 | <davean> | And even suggested it isn't the preimage |
| 21:28:07 | <davean> | (strongly) |
| 21:28:36 | <davean> | Making the quickcheck results close to meaingless |
| 21:28:54 | × | cuz quits (~user@38.140.58.234) (Ping timeout: 268 seconds) |
| 21:29:01 | <hseg> | perhaps. am not using the full power of quickcheck, regardless |
| 21:29:11 | <davean> | This isn't about power, this is about validity |
| 21:29:32 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 258 seconds) |
| 21:29:38 | <hseg> | yes? so I know I will get false positives/negatives |
| 21:30:03 | <davean> | So whats the point of running this code at all? You know as much before it runs as after |
| 21:30:08 | <hseg> | as long as I'm still having recognizable true negatives, I'm not worried about it |
| 21:31:02 | <hseg> | I'm testing a hypothesis that an invariant I have in mind is fine enough to predict the value of a function |
| 21:31:29 | <hseg> | so as long as my samplings show it isn't, I don't care that I haven't sampled the entire space |
| 21:31:34 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 21:31:35 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:31:42 | <EvanR> | maybe this is a probabalistic application |
| 21:31:53 | <hseg> | not probabilistic. hypothesis testing |
| 21:32:08 | <EvanR> | counterexample finding? |
| 21:32:16 | <hseg> | exactly |
| 21:32:20 | <EvanR> | cool |
| 21:32:28 | <EvanR> | it only takes 1 xD |
| 21:32:34 | <hseg> | exactly |
| 21:32:46 | <hseg> | and unfortunately, I have >>>1 |
| 21:33:37 | <hseg> | so I need to refine the invariant I'm using |
| 21:33:52 | <hseg> | not clear how, though |
| 21:34:29 | <hseg> | welp. that's what research is for, ig |
| 21:34:31 | <EvanR> | eventually you will not find any counterexamples |
| 21:34:54 | <hseg> | yeah. am hoping that by then, will have actual proof that my invariant works |
| 21:36:12 | <hseg> | especially considering this is trying to give a closed form for a recursive formula, have high hopes it is possible |
| 21:39:48 | × | Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection) |
| 21:39:53 | → | cuz joins (~user@38.140.58.234) |
| 21:40:06 | × | amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection) |
| 21:40:50 | → | o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) |
| 21:41:52 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 21:42:57 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds) |
| 21:43:11 | × | fendor quits (~fendor@77.119.223.215.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
| 21:44:16 | → | jmorris joins (uid433911@id-433911.stonehaven.irccloud.com) |
| 21:44:46 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 21:45:01 | → | Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) |
| 21:45:32 | × | o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 265 seconds) |
| 21:45:32 | × | cuz quits (~user@38.140.58.234) (Ping timeout: 265 seconds) |
| 21:45:57 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection) |
| 21:46:28 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 21:46:29 | × | ubert quits (~Thunderbi@91.141.42.221.wireless.dyn.drei.com) (Remote host closed the connection) |
| 21:50:33 | × | mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 255 seconds) |
| 21:51:06 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds) |
| 21:53:52 | → | pesada joins (~agua@2804:18:70:635e:1:0:3619:5a18) |
| 21:54:45 | × | Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection) |
| 21:55:58 | × | agua quits (~agua@2804:14c:8793:8e2f:642c:be4c:c775:de87) (Ping timeout: 256 seconds) |
| 21:57:09 | → | agua joins (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04) |
| 21:57:36 | → | bpv joins (~bryce@207.73.178.205) |
| 21:58:23 | → | burnsidesLlama joins (~burnsides@client-8-87.eduroam.oxuni.org.uk) |
| 21:59:00 | <bpv> | How is it going? |
| 22:00:05 | × | bpv quits (~bryce@207.73.178.205) (Quit: WeeChat 3.2) |
| 22:00:18 | × | hseg quits (~gesh@185.120.126.10) (Quit: WeeChat 3.2) |
| 22:00:27 | × | pesada quits (~agua@2804:18:70:635e:1:0:3619:5a18) (Ping timeout: 255 seconds) |
| 22:01:25 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 22:02:42 | × | burnsidesLlama quits (~burnsides@client-8-87.eduroam.oxuni.org.uk) (Ping timeout: 255 seconds) |
| 22:04:32 | → | aegon joins (~mike@174.127.249.180) |
| 22:05:04 | vemek1 | is now known as vemek |
| 22:07:21 | → | elf_fortrez joins (~elf_fortr@adsl-72-50-4-119.prtc.net) |
| 22:07:31 | → | Topsi joins (~Tobias@dyndsl-095-033-024-196.ewe-ip-backbone.de) |
| 22:07:41 | × | elf_fortrez quits (~elf_fortr@adsl-72-50-4-119.prtc.net) (Client Quit) |
| 22:08:29 | → | benin0369 joins (~benin@183.82.177.8) |
| 22:09:31 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:09:43 | → | cheater joins (~Username@user/cheater) |
| 22:11:38 | × | aegon quits (~mike@174.127.249.180) (Killed (NickServ (GHOST command used by aegon_))) |
| 22:12:04 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Ping timeout: 268 seconds) |
| 22:12:17 | → | Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) |
| 22:12:36 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 22:14:51 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 22:17:36 | → | favonia joins (~favonia@user/favonia) |
| 22:23:21 | → | dre joins (~dre@2001:8003:c932:c301:117d:15f9:de03:4d49) |
| 22:24:45 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 255 seconds) |
| 22:30:25 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 246 seconds) |
| 22:31:56 | → | favonia joins (~favonia@user/favonia) |
| 22:33:51 | → | hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com) |
| 22:34:16 | × | Ranhir quits (~Ranhir@157.97.53.139) (Ping timeout: 268 seconds) |
| 22:35:57 | × | argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving) |
| 22:43:02 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds) |
| 22:45:14 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds) |
| 22:47:08 | → | zebrag joins (~chris@user/zebrag) |
| 22:48:11 | → | lavaman joins (~lavaman@98.38.249.169) |
| 22:48:38 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 22:49:30 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 22:49:48 | → | favonia joins (~favonia@user/favonia) |
| 22:52:30 | → | Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) |
| 22:52:43 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds) |
| 22:57:29 | × | Topsi quits (~Tobias@dyndsl-095-033-024-196.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 22:58:26 | × | Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer) |
| 22:58:57 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 22:59:35 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 255 seconds) |
| 22:59:38 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 23:00:34 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 23:00:37 | × | jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2) |
| 23:02:20 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 23:05:06 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds) |
| 23:08:29 | → | mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
| 23:11:08 | → | Jeanne-Kamikaze joins (~Jeanne-Ka@69.4.234.87) |
| 23:11:51 | → | cjb joins (~cjb@user/cjb) |
| 23:12:43 | × | phma quits (phma@2001:5b0:211f:1178:dd66:934e:c06f:5919) (Read error: Connection reset by peer) |
| 23:13:38 | → | phma joins (~phma@host-67-44-208-230.hnremote.net) |
| 23:18:02 | × | myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 255 seconds) |
| 23:20:14 | × | vysn quits (~vysn@user/vysn) (Remote host closed the connection) |
| 23:21:29 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 23:23:27 | × | acidjnk_new quits (~acidjnk@p200300d0c72b9588f8c9d06c34eef88c.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 23:27:44 | → | Codaraxis_ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) |
| 23:28:04 | → | chris_ joins (~chris@81.96.113.213) |
| 23:28:57 | → | o1lo01ol1o joins (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) |
| 23:29:17 | × | chris_ quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 23:29:55 | → | chris_ joins (~chris@81.96.113.213) |
| 23:31:37 | × | Codaraxis quits (~Codaraxis@user/codaraxis) (Ping timeout: 268 seconds) |
| 23:31:58 | → | nova joins (novasenco@user/nova) |
| 23:32:36 | → | TranquilEcho joins (~grom@user/tranquilecho) |
| 23:33:28 | × | o1lo01ol1o quits (~o1lo01ol1@bl11-109-140.dsl.telepac.pt) (Ping timeout: 268 seconds) |
| 23:34:03 | <nova> | I am currently using arch with ghcup and cabal, but cabal takes SO long to install packages that it is simply not usable. I am about to try nixos or gentoo, and I was wondering if anyone here uses their respective package managers to manager haskell packages (pandoc, pandoc-citeproc [this takes forever to recompile pandoc], xmonad, xmobar, etc). If so, does one hold an edge over the other? |
| 23:35:34 | × | chomwitt quits (~chomwitt@athedsl-32487.home.otenet.gr) (Remote host closed the connection) |
| 23:36:18 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds) |
| 23:37:24 | <nova> | I was using pacman, but I had to remove all of my haskell packages because it was even worse than ghcup (but at least it was fast) |
| 23:38:59 | → | pesada joins (~agua@2804:18:70:635e:1:0:3619:5a18) |
| 23:39:30 | <sclv> | we’re developers here mainly. compile times are what they are |
| 23:41:16 | <dsal> | nova: I'm a pretty big fan of nixos. Nonetheless, first compilation can take a bit. |
| 23:41:29 | <davean> | You compile things once and you're done, meh? |
| 23:42:35 | <nova> | what about upgrades |
| 23:42:36 | × | agua quits (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04) (Ping timeout: 255 seconds) |
| 23:42:36 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds) |
| 23:42:53 | → | agua joins (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04) |
| 23:43:12 | <dsal> | Upgrades of what? |
| 23:43:34 | × | Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection) |
| 23:43:46 | <yin[m]> | any way we can avoid having to add `Show a =>` to a bunch of type signatures when "No instance for (Show a) arising from a use of ..." just for a quick Debug.trace? |
| 23:43:53 | <dsal> | I do nix updates all the time because I like giving my computer busy work. heh. They're reversible, though. If things go wrong, I can undo them. |
| 23:44:17 | <dsal> | yin[m]: You need some way to represent the values you're tracing. |
| 23:44:49 | <davean> | nova: uh, upgrades do the amount of work in the delta of the packages changed? |
| 23:45:19 | × | pesada quits (~agua@2804:18:70:635e:1:0:3619:5a18) (Ping timeout: 246 seconds) |
| 23:45:22 | <nova> | does nix have to rebuild after downloading deltas? |
| 23:45:44 | <dsal> | nix can use binaries if they're available. It'll build if they're not. |
| 23:45:45 | <davean> | If it doesn't have the builds cached |
| 23:46:50 | <yin[m]> | sure, and I know they are, but ghc complains that if what I'm trying to show is an a and the funcion I'm in doesn't have the Show constraint in it, i cant see it. are my only options to comment all the relevant type signatures or add the Show constraint everywhere? isn't there something like an unsafeShow? |
| 23:47:19 | <yin[m]> | i just want a quick print for debugging purposes |
| 23:47:48 | <yin[m]> | * sure, and I know they are, but ghc complains that if what I'm trying to show is an a and the funcion I'm in doesn't have the Show a => constraint in it, i cant see it. are my only options to comment all the relevant type signatures or add the Show constraint everywhere? isn't there something like an unsafeShow? |
| 23:48:46 | → | pesada joins (~agua@2804:18:70:635e:1:0:3619:5a18) |
| 23:49:32 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 23:51:36 | × | agua quits (~agua@2804:14c:8793:8e2f:3988:44e0:45e5:bd04) (Ping timeout: 255 seconds) |
| 23:51:41 | <geekosaur> | yin[m]: absent a Show constraint there may not even be code to do the Show |
| 23:54:02 | <geekosaur> | more correctly, without that constraint ghc doesn't know that the type involved has the code to do Show — and more to the point, doesn't have access to that code |
| 23:54:20 | <geekosaur> | (as ghc implements constraints) |
| 23:55:13 | → | favonia joins (~favonia@user/favonia) |
| 23:56:52 | <geekosaur> | a theoretical unsafeShow would still require some way to get access to the Show code for the type. in particular if it knows the type only at runtime, it would have to be passed in via a dictionary still |
| 23:59:31 | <davean> | geekosaur: how dirty should I be in answering how to do that? |
All times are in UTC on 2021-07-19.