Logs on 2021-07-17 (liberachat/#haskell)
| 00:00:47 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds) |
| 00:04:56 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 00:11:31 | × | maerwald quits (~maerwald@user/maerwald) (Ping timeout: 258 seconds) |
| 00:12:13 | × | Guest8638 quits (~Guest86@50.47.115.102) (Ping timeout: 246 seconds) |
| 00:15:51 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:16:34 | × | mrus quits (~mrus@2001:19f0:5:3fd4:5400:3ff:fe48:1820) (Ping timeout: 240 seconds) |
| 00:16:54 | → | Maxdaman1us joins (~Maxdamant@user/maxdamantus) |
| 00:16:55 | → | lavaman joins (~lavaman@98.38.249.169) |
| 00:16:56 | → | derelict joins (~derelict@user/derelict) |
| 00:18:20 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds) |
| 00:18:42 | × | sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 240 seconds) |
| 00:21:29 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 255 seconds) |
| 00:24:09 | → | Null_A joins (~null_a@2601:645:8700:2290:f84f:8a6f:2960:e8a4) |
| 00:24:45 | × | DNH quits (~DNH@2a02:8108:1100:16d8:c4df:67d7:d0ec:2764) (Quit: Textual IRC Client: www.textualapp.com) |
| 00:27:01 | → | Cajun joins (~Cajun@ip98-163-211-112.no.no.cox.net) |
| 00:27:59 | × | turlando quits (~turlando@user/turlando) (Ping timeout: 268 seconds) |
| 00:39:27 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
| 00:39:53 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 258 seconds) |
| 00:40:27 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 00:41:39 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 00:44:07 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 00:46:22 | × | Null_A quits (~null_a@2601:645:8700:2290:f84f:8a6f:2960:e8a4) (Remote host closed the connection) |
| 00:50:08 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 00:52:21 | → | Null_A joins (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) |
| 00:54:24 | orzo_ | is now known as orzo |
| 00:57:17 | × | lbseale_ quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
| 01:10:04 | <lechner> | Hi, would someone please be so kind and show me how to use iterateM_ here. I am having a hard time with it. https://salsa.debian.org/lintian/kickoff/-/blob/master/Collect.hs#L100 |
| 01:11:26 | → | maerwald joins (~maerwald@mail.hasufell.de) |
| 01:14:15 | × | zeenk quits (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!) |
| 01:14:20 | <davean> | lechner: you haven't said what you're trying to do because theres not even an attempt to use iterateM_ there |
| 01:15:28 | → | pesada joins (~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100) |
| 01:18:24 | <lechner> | well, i'd like to implement a counter for the files received. someone here kindly recommended iterateM_ but i am a noobie. i watched this video but can't even separate out the function after 'forever' https://www.youtube.com/watch?v=CFnx1_UjwXs |
| 01:18:38 | × | agua quits (~agua@2804:18:7e:a02e:1:0:239f:a7bb) (Ping timeout: 255 seconds) |
| 01:18:58 | <lechner> | the forever is in my code |
| 01:19:48 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 255 seconds) |
| 01:21:11 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
| 01:22:15 | × | maerwald quits (~maerwald@mail.hasufell.de) (Ping timeout: 268 seconds) |
| 01:22:36 | × | Atum_ quits (IRC@user/atum/x-2392232) (Quit: Atum_) |
| 01:24:45 | × | ukari quits (~ukari@user/ukari) (Remote host closed the connection) |
| 01:25:39 | → | agua joins (~agua@2804:18:7e:a02e:1:0:239f:a7bb) |
| 01:25:54 | → | ukari joins (~ukari@user/ukari) |
| 01:26:04 | × | xff0x quits (~xff0x@2001:1a81:53d5:b900:59f3:4e1e:9577:2243) (Ping timeout: 246 seconds) |
| 01:28:06 | → | xff0x joins (~xff0x@2001:1a81:5219:9d00:b696:f328:1841:5724) |
| 01:28:10 | × | pesada quits (~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100) (Ping timeout: 246 seconds) |
| 01:29:56 | <dsal> | lechner: It's flipped for your needs, so something like: flip iterateM_ 1 $ \n -> do ... |
| 01:30:57 | <dsal> | Then like `pure n'` at the end once you've decided whether there's a message or not. |
| 01:32:42 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Remote host closed the connection) |
| 01:33:22 | <lechner> | dsal: why is it flipped, please? |
| 01:33:43 | <dsal> | Or you make `county n = iterateM_ (\x -> a x >> pure (x +1)) 0` and just call `county $ \x -> do ...` |
| 01:34:11 | <dsal> | Well, the initial argument goes at the end and that's pretty awkward to supply with a do block. |
| 01:34:48 | <geekosaur> | did you switch n and a there? |
| 01:35:00 | <lechner> | ah, yes! that was one of my many issues |
| 01:35:49 | × | shapr quits (~user@pool-108-28-144-11.washdc.fios.verizon.net) (Ping timeout: 268 seconds) |
| 01:38:05 | → | neurocyte1 joins (~neurocyte@94.16.90.109) |
| 01:38:05 | × | neurocyte1 quits (~neurocyte@94.16.90.109) (Changing host) |
| 01:38:05 | → | neurocyte1 joins (~neurocyte@user/neurocyte) |
| 01:40:07 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 01:40:45 | × | neurocyte quits (~neurocyte@user/neurocyte) (Ping timeout: 268 seconds) |
| 01:40:45 | neurocyte1 | is now known as neurocyte |
| 01:41:11 | <dsal> | Heh. Yeah, I'm barely conscious right now. heh |
| 01:42:05 | <dsal> | `county a` for passing an iteration count to the action `a`. If every iteration will process a message, it's probably a useful abstraction that will make it easier to read your stuff. |
| 01:42:15 | <dsal> | Also maybe name it something not stupid. |
| 01:44:19 | <dsal> | lechner: Consider that abstraction, though. Whatever bugs I typed into irc are there to help you learn. |
| 01:48:03 | × | smichel17 quits (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) (Quit: smichel17) |
| 01:49:50 | → | pesada joins (~agua@2804:18:48:588b:1:0:277e:35b0) |
| 01:50:08 | × | agua quits (~agua@2804:18:7e:a02e:1:0:239f:a7bb) (Ping timeout: 255 seconds) |
| 01:50:46 | → | matsurago joins (~matsurago@p0111162-vcngn.tkyo.nt.ngn.ppp.ocn.ne.jp) |
| 01:51:29 | × | derelict quits (~derelict@user/derelict) (Ping timeout: 255 seconds) |
| 01:54:28 | <lechner> | dsal: yay, it compiled. thanks so much! i am on a production system and will test it on Sunday. i'll also look into abstractions like you suggested. (and read up on 'pure', as i tried to use 'return') |
| 01:58:07 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 01:59:52 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds) |
| 02:00:17 | → | maerwald joins (~maerwald@mail.hasufell.de) |
| 02:02:35 | → | andrews joins (~andrews@user/andrews) |
| 02:02:56 | → | dajoer joins (~david@user/gvx) |
| 02:05:15 | × | andrews quits (~andrews@user/andrews) (Client Quit) |
| 02:06:31 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 258 seconds) |
| 02:11:57 | × | alx741 quits (~alx741@181.196.68.89) (Quit: alx741) |
| 02:12:08 | <sm> | hey all. Any doctest users aware of a change in default scope/binding rules with GHC 9.0 ? https://github.com/sol/doctest/issues/301 |
| 02:15:02 | → | alx741 joins (~alx741@181.196.68.89) |
| 02:15:20 | × | td_ quits (~td@94.134.91.148) (Ping timeout: 255 seconds) |
| 02:15:55 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 02:16:57 | → | td_ joins (~td@muedsl-82-207-238-255.citykom.de) |
| 02:16:59 | × | zebrag quits (~chris@user/zebrag) (Read error: Connection reset by peer) |
| 02:18:34 | <lechner> | sm: hi, i just connected a few dots. thanks for hledger! |
| 02:19:36 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds) |
| 02:20:23 | → | sim590 joins (~simon@23.233.248.248) |
| 02:20:56 | → | keutoi joins (~keutoi@157.48.206.170) |
| 02:21:28 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:25:50 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 02:27:23 | <janus> | sm: do you think it might be related to "GADT constructor types now properly adhere to The forall-or-nothing rule" ? |
| 02:28:05 | <sm> | lechner: youre welcome! |
| 02:28:31 | <sm> | janus: hmm let me read up on that |
| 02:30:49 | <sm> | another possible thing I've noticed, derived JSON instances preserving the order of fields with GHC 9.0 (despite same versions of aeson) ? |
| 02:31:07 | <sm> | with GHC 8.10 they seemed randomised |
| 02:34:11 | __xor | is now known as _xor |
| 02:37:29 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds) |
| 02:39:57 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds) |
| 02:40:49 | → | lavaman joins (~lavaman@98.38.249.169) |
| 02:42:09 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 02:45:30 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds) |
| 02:46:28 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:47:07 | Maxdaman1us | is now known as Maxdamantus |
| 02:47:09 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
| 02:47:41 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 03:02:36 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 03:05:59 | → | img joins (~img@user/img) |
| 03:18:16 | <dsal> | lechner: `return` is almost always just a longer, more confusing way of spelling `pure` |
| 03:19:24 | <sm> | janus: I don't think so |
| 03:20:18 | <janus> | i wonder if it is really a doctest issue? because surely, doctest shouldn't worry too much about 'low-level' things such as binding names? |
| 03:20:30 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 03:20:55 | <janus> | if it is related to simplified subsumption or the for-all issue, it should be reproducable outside a doctest... |
| 03:21:26 | <janus> | oh well, i don't know what i am saying, just thinking out loud ;) |
| 03:21:48 | <sm> | yes.. I must dig deeper |
| 03:39:41 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
| 03:41:37 | × | Null_A quits (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) (Remote host closed the connection) |
| 03:54:52 | → | derelict joins (~derelict@user/derelict) |
| 03:58:16 | × | myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 268 seconds) |
| 03:59:01 | → | myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net) |
| 04:01:43 | → | lavaman joins (~lavaman@98.38.249.169) |
| 04:06:48 | <sm> | well it's simply that the bindings in current module (in which the doctests are embedded are not in scope by default |
| 04:07:06 | <sm> | which is.. inconvenient |
| 04:09:26 | <janus> | oh, now i see why you think it is a doctest issue |
| 04:09:58 | <janus> | i think one argument for the doctest-like in cabal-extras is that it is more robust... i havn't tried it though |
| 04:16:06 | → | mrus joins (~mrus@2001:19f0:5:3fd4:5400:3ff:fe48:1820) |
| 04:17:44 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 255 seconds) |
| 04:32:36 | → | alekhine joins (~alekhine@c-73-38-152-33.hsd1.ma.comcast.net) |
| 04:34:54 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 04:35:46 | → | Null_A joins (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) |
| 04:45:48 | × | Null_A quits (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) (Remote host closed the connection) |
| 04:48:35 | → | Null_A joins (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) |
| 04:50:46 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 04:51:20 | → | vysn joins (~vysn@user/vysn) |
| 04:53:06 | × | Null_A quits (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) (Ping timeout: 255 seconds) |
| 05:00:08 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 05:03:12 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 05:03:40 | → | xkuru joins (~xkuru@user/xkuru) |
| 05:04:06 | × | xkuru quits (~xkuru@user/xkuru) (Client Quit) |
| 05:05:12 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:07:39 | → | xkuru joins (~xkuru@user/xkuru) |
| 05:09:22 | × | xkuru quits (~xkuru@user/xkuru) (Client Quit) |
| 05:09:47 | × | hexeme quits (~hexeme@user/hexeme) (Quit: co'o ro do) |
| 05:11:18 | → | hexeme joins (~hexeme@user/hexeme) |
| 05:17:06 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:21:42 | → | Guest9 joins (~Guest9@43.242.116.127) |
| 05:26:35 | × | keutoi quits (~keutoi@157.48.206.170) (Ping timeout: 255 seconds) |
| 05:34:49 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds) |
| 05:34:53 | → | Null_A joins (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) |
| 05:45:29 | × | hexeme quits (~hexeme@user/hexeme) (Quit: co'o ro do) |
| 05:45:35 | → | lavaman joins (~lavaman@98.38.249.169) |
| 05:47:51 | → | hexeme joins (~hexeme@user/hexeme) |
| 05:48:37 | × | alekhine quits (~alekhine@c-73-38-152-33.hsd1.ma.comcast.net) (Quit: Konversation terminated!) |
| 05:48:49 | → | qbt joins (~edun@user/edun) |
| 05:49:46 | × | dtman34 quits (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 252 seconds) |
| 05:50:15 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 255 seconds) |
| 05:50:46 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
| 05:51:20 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds) |
| 05:53:52 | × | Null_A quits (~null_a@2601:645:8700:2290:ece9:3dfb:dec3:de97) (Remote host closed the connection) |
| 05:58:31 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 05:58:49 | → | img joins (~img@user/img) |
| 06:02:07 | → | dtman34 joins (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) |
| 06:02:09 | → | turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it) |
| 06:02:09 | × | turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host) |
| 06:02:09 | → | turlando joins (~turlando@user/turlando) |
| 06:03:48 | × | sim590 quits (~simon@23.233.248.248) (Ping timeout: 258 seconds) |
| 06:06:20 | → | lavaman joins (~lavaman@98.38.249.169) |
| 06:06:28 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 06:07:01 | → | lavaman joins (~lavaman@98.38.249.169) |
| 06:07:20 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 06:11:19 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 246 seconds) |
| 06:12:01 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
| 06:14:10 | × | zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Quit: Reconnecting) |
| 06:14:25 | → | zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32) |
| 06:15:18 | × | zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Client Quit) |
| 06:15:33 | → | zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32) |
| 06:15:50 | × | zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Changing host) |
| 06:15:50 | → | zfnmxt joins (~zfnmxtzfn@user/zfnmxt) |
| 06:21:51 | × | zmt00 quits (~zmt00@user/zmt00) (Quit: Gone.) |
| 06:24:46 | → | zmt00 joins (~zmt00@user/zmt00) |
| 06:26:36 | × | mnrmnaugh quits (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Quit: Leaving) |
| 06:31:12 | → | dunkeln joins (~dunkeln@94.128.224.230) |
| 06:34:46 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 06:36:48 | × | earthy quits (~arthurvl@deban2.xs4all.space) (Quit: WeeChat 2.3) |
| 06:42:34 | → | earthy joins (~arthurvl@2001:984:275b:1:ba27:ebff:fea0:40b0) |
| 06:45:55 | → | keutoi joins (~keutoi@157.48.202.216) |
| 06:56:14 | → | lavaman joins (~lavaman@98.38.249.169) |
| 07:00:55 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 258 seconds) |
| 07:01:26 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 07:01:29 | → | neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) |
| 07:02:14 | → | lavaman joins (~lavaman@98.38.249.169) |
| 07:04:14 | × | Guest9 quits (~Guest9@43.242.116.127) (Ping timeout: 255 seconds) |
| 07:11:42 | × | matsurago quits (~matsurago@p0111162-vcngn.tkyo.nt.ngn.ppp.ocn.ne.jp) (Quit: Leaving) |
| 07:18:49 | → | fef joins (~thedawn@user/thedawn) |
| 07:24:14 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 07:24:49 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 07:26:53 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 07:30:58 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection) |
| 07:31:04 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 07:33:03 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 07:33:10 | → | agua joins (~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100) |
| 07:33:39 | → | hololeap joins (~hololeap@user/hololeap) |
| 07:35:33 | × | pesada quits (~agua@2804:18:48:588b:1:0:277e:35b0) (Ping timeout: 255 seconds) |
| 07:35:39 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 07:39:41 | <arahael> | I'm trying to learn how to use "Arrows" (aka HXT), in order to have an 'elegant' way to convert my data types to XML. To do this, I've tried to define a type class that defines `class ToXml a where xml :: IOStateArrow s a XmlTree`, but I don't think I'm doing it right and I would need a phantom-type anyway to use a type class like that. How should I be doing this? |
| 07:41:09 | <arahael> | I want to allow my "toXml" routines to potentially use state as they may need to obtain more informatio than what is captured in my values. (Eg, to look up and resolve stuff from a database) |
| 07:42:31 | × | bitmapper quits (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
| 07:43:15 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 07:46:05 | → | acidjnk joins (~acidjnk@p200300d0c72b9530b41c89c6d6c03a30.dip0.t-ipconnect.de) |
| 07:47:42 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:49:18 | → | dragestil joins (~znc@user/dragestil) |
| 07:50:17 | <arahael> | I'm thinking of avoiding arrows entirely, and just define xml like so: `xml :: a -> State s XmlTree` |
| 07:50:31 | <arahael> | (Well, XmlTrees, really) |
| 07:50:38 | × | dunkeln quits (~dunkeln@94.128.224.230) (Ping timeout: 265 seconds) |
| 07:51:05 | <c_wraith> | "avoid them entirely" has been my experience with arrows |
| 07:52:35 | <arahael> | Heh. Thing is, arrows _sound_ like they'd be nice for what is largely xml transformations. |
| 07:54:35 | × | benin0369 quits (~benin@183.82.204.139) (Ping timeout: 258 seconds) |
| 07:56:39 | → | fendor joins (~fendor@77.119.192.173.wireless.dyn.drei.com) |
| 07:57:47 | × | _xor quits (~xor@74.215.232.67) (Quit: WeeChat 3.2) |
| 07:58:55 | → | _xor joins (~xor@74.215.232.67) |
| 07:59:31 | → | mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) |
| 07:59:50 | → | benin0369 joins (~benin@183.82.206.198) |
| 08:00:21 | × | HarveyPwca quits (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Remote host closed the connection) |
| 08:00:53 | → | Pickchea joins (~private@user/pickchea) |
| 08:01:47 | × | GIANTWORLDKEEPR_ quits (~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT) |
| 08:02:37 | → | HarveyPwca joins (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) |
| 08:02:53 | × | HarveyPwca quits (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Remote host closed the connection) |
| 08:04:20 | <arahael> | Yeah, I can't even find an example for this, I'm going to give up on using arrows for transforming to xml. |
| 08:05:27 | → | chomwitt joins (~Pitsikoko@athedsl-32487.home.otenet.gr) |
| 08:07:11 | → | hendursa1 joins (~weechat@user/hendursaga) |
| 08:09:45 | × | hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
| 08:10:59 | → | dunkeln_ joins (~dunkeln@94.128.224.230) |
| 08:13:56 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 08:15:45 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 250 seconds) |
| 08:17:13 | <arahael> | Yep, I think I should definitely just use the `xml :: a -> State MyState XmlTrees` design. Less flexible, but more sane. |
| 08:17:35 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 08:17:38 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 08:18:30 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
| 08:21:31 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 08:23:11 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 08:26:16 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 08:26:24 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 08:28:09 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
| 08:28:15 | → | eggplant_ joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 08:29:33 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds) |
| 08:29:36 | Lord_of_Life_ | is now known as Lord_of_Life |
| 08:30:06 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 08:30:13 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:32:42 | × | eggplant_ quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds) |
| 08:35:42 | → | Deide joins (~Deide@217.155.19.23) |
| 08:35:42 | × | Deide quits (~Deide@217.155.19.23) (Changing host) |
| 08:35:42 | → | Deide joins (~Deide@user/deide) |
| 08:38:04 | → | Ouroborosie joins (~pjetcetal@128-71-13-182.broadband.corbina.ru) |
| 08:39:21 | → | zeenk joins (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) |
| 08:42:23 | → | Voxelman joins (~Voxelman@185.254.75.32) |
| 08:46:01 | <arahael> | Actually I'm weirdly stumped, I've fallen into a deep hole: How do I print XML? I've been parsing with HXT for most of my programs, so ideally I'd like to use the same data types, but how do I print it? |
| 08:46:28 | <arahael> | This page has some examples: https://hackage.haskell.org/package/hxt-9.3.1.22/docs/Text-XML-HXT-Arrow-WriteDocument.html |
| 08:46:51 | → | sagax joins (~sagax@213.138.71.146) |
| 08:47:13 | <arahael> | But... They don't work, at all, when using the sample XmlTree: foo = Ntree (XTag (mkName "foo") []) [] |
| 08:47:21 | <arahael> | The writeDocument just does nothing at all. |
| 08:47:36 | <arahael> | *NTree |
| 08:49:33 | <arahael> | So I'm completely stumped as to why this doesn't work: runX (arr (const foo) >>> writeDocument [] "") |
| 08:49:45 | <arahael> | (It compiles and runs, though(!)) |
| 08:51:04 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 08:52:55 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 08:54:18 | × | azeem quits (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) (Ping timeout: 240 seconds) |
| 08:54:42 | × | hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:54:42 | <arahael> | I think I need to give up on this HXT, it seems seriously badly documented. :( Maybe I should try something like xml-hamlet. |
| 08:55:01 | → | azeem joins (~azeem@176.200.202.21) |
| 08:56:41 | × | superbil quits (~superbil@1-34-176-171.HINET-IP.hinet.net) (Quit: WeeChat 3.1) |
| 08:58:20 | × | mcfrdy quits (uid507892@user/mcfrdy) () |
| 08:59:26 | × | Erutuon quits (~Erutuon@user/erutuon) (Quit: WeeChat 2.8) |
| 08:59:29 | <arahael> | Oh, wow, just got output. |
| 09:01:48 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 09:03:45 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 255 seconds) |
| 09:04:24 | <arahael> | Yep, seems the only thing I was missing was the root node. HXT just silently ignores that. |
| 09:06:15 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 09:07:33 | × | dunkeln_ quits (~dunkeln@94.128.224.230) (Quit: leaving) |
| 09:10:26 | × | azeem quits (~azeem@176.200.202.21) (Read error: Connection reset by peer) |
| 09:10:42 | → | azeem joins (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) |
| 09:13:23 | × | xff0x quits (~xff0x@2001:1a81:5219:9d00:b696:f328:1841:5724) (Ping timeout: 255 seconds) |
| 09:14:17 | → | xff0x joins (~xff0x@2001:1a81:5219:9d00:3d14:ef54:1c92:a192) |
| 09:18:14 | → | superbil joins (~superbil@1-34-176-171.hinet-ip.hinet.net) |
| 09:18:20 | × | acidjnk quits (~acidjnk@p200300d0c72b9530b41c89c6d6c03a30.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 09:18:27 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection) |
| 09:18:57 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 09:21:34 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds) |
| 09:23:06 | → | mcfrdy joins (~mcfrdy@user/mcfrdy) |
| 09:23:17 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds) |
| 09:28:10 | → | fef joins (~thedawn@user/thedawn) |
| 09:29:40 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 09:31:21 | → | amanr joins (~therojjha@20.204.87.0) |
| 09:32:14 | × | _xor quits (~xor@74.215.232.67) (Quit: brb) |
| 09:32:28 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 09:33:09 | × | Codaraxis quits (~Codaraxis@user/codaraxis) (Remote host closed the connection) |
| 09:33:34 | → | Codaraxis joins (~Codaraxis@user/codaraxis) |
| 09:42:26 | → | _xor joins (~xor@74.215.232.67) |
| 09:47:18 | → | oxide joins (~lambda@user/oxide) |
| 09:50:23 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 09:53:10 | × | _xor quits (~xor@74.215.232.67) (Quit: WeeChat 3.2) |
| 09:53:24 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 09:54:15 | → | lavaman joins (~lavaman@98.38.249.169) |
| 09:54:51 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 265 seconds) |
| 09:57:44 | → | acidjnk joins (~acidjnk@p200300d0c72b9530b41c89c6d6c03a30.dip0.t-ipconnect.de) |
| 09:58:47 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 258 seconds) |
| 09:59:17 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds) |
| 10:04:06 | × | slycelote quits (~slycelote@user/slycelote) (Read error: Connection reset by peer) |
| 10:04:18 | → | slycelote joins (~slycelote@user/slycelote) |
| 10:05:07 | → | _xor joins (~xor@74.215.232.67) |
| 10:08:35 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds) |
| 10:13:30 | → | fef joins (~thedawn@user/thedawn) |
| 10:14:55 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 10:19:06 | × | chomwitt quits (~Pitsikoko@athedsl-32487.home.otenet.gr) (Ping timeout: 258 seconds) |
| 10:20:09 | × | zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection) |
| 10:23:17 | <arkanoid> | the Error monad link is broken https://wiki.haskell.org/Errormonad.html |
| 10:23:17 | → | zaquest joins (~notzaques@5.128.210.178) |
| 10:23:34 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 10:28:54 | → | DNH joins (~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89) |
| 10:29:15 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds) |
| 10:29:41 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 10:30:59 | × | qbt quits (~edun@user/edun) (Ping timeout: 258 seconds) |
| 10:34:12 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds) |
| 10:34:54 | × | mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Read error: No route to host) |
| 10:38:52 | → | mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) |
| 10:42:55 | × | Voxelman quits (~Voxelman@185.254.75.32) (Read error: Connection reset by peer) |
| 10:43:37 | × | mrus quits (~mrus@2001:19f0:5:3fd4:5400:3ff:fe48:1820) (Ping timeout: 246 seconds) |
| 10:44:16 | → | kuribas joins (~user@ptr-25vy0i9ash1yu2tubi9.18120a2.ip6.access.telenet.be) |
| 10:45:22 | <kuribas> | How does haskell compare to other functional languages? Looking a bit at SML and OCaml, it seems that haskell has far more libraries, and is more practical for real world projects (other than compilers etc). |
| 10:46:31 | <kuribas> | Of course scala and clojure are also popular, but I don't consider clojure a real functional language, it's more a lisp derivative. And Scala is mostly multiparadigm, and also complex and overengineerd. |
| 10:47:48 | <arahael> | kuribas: I use haskell for most of my private hobby/side projects. It's awesule, but I've used F# and Swift, which are somewhat OCaml-inspired. |
| 10:48:25 | <arahael> | kuribas: The biggest most profound difference with Haskell is that it's *lazy*, and has a really really good type system, but in practice that it's lazy makes a big difference to how you use haskell. |
| 10:48:52 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Ping timeout: 246 seconds) |
| 10:48:54 | <kuribas> | arahael: how much libraries are there for F#? Or does it just use the C# ecosystem? |
| 10:49:05 | <arahael> | F# is just another .NET language, really, yeah. |
| 10:49:17 | <arahael> | As is C#. :) |
| 10:49:20 | <kuribas> | doesn't that mean that most libraries aren't really made for FP? |
| 10:49:27 | → | Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) |
| 10:50:00 | <arahael> | Kinda. The way F# copes with nulls is interesting. (It assumes there aren't any). |
| 10:50:41 | <kuribas> | then how do you test if a function returns null? |
| 10:51:33 | <arahael> | kuribas: That's a trap, yeah. In earlier versions, you'd check for it explicitly, and the compiler lets you. But then, the compiler *elides* that check because it thinks better. |
| 10:51:44 | <arahael> | Hopefully they've changed that now. |
| 10:53:33 | <arahael> | Looks like they've changed it - suggesting instead to use pattern matching. Far better: https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/values/null-values |
| 10:53:59 | <arahael> | But anyway, one difference is that Haskell is lazy, so your functions must not have side effects. |
| 10:54:30 | <arahael> | And since that practice is so strictly encouraged (otherwise you risk loosing your sanity), that has a flow-on effect to all of haskell's libraries, too. |
| 10:55:34 | <DigitalKiwi> | haskell is non-strict |
| 10:55:52 | <DigitalKiwi> | https://wiki.haskell.org/Lazy_vs._non-strict |
| 10:56:01 | <arahael> | Yeah - more accurate - thanks for that. |
| 10:56:34 | <DigitalKiwi> | speaking only for myself haskell programmers are lazy ;) |
| 10:58:05 | <arahael> | Hmm. :) |
| 11:01:36 | <DigitalKiwi> | and obsesssed with bottoms |
| 11:02:01 | DigitalKiwi | drops mic |
| 11:03:21 | <Rembane> | I like lazy bottoms and I cannot lie. |
| 11:03:45 | → | anandprabhu joins (~anandprab@94.202.243.198) |
| 11:04:04 | → | wei2912 joins (~wei2912@112.199.250.21) |
| 11:05:00 | × | mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 268 seconds) |
| 11:05:07 | arahael | suddenly realises why bottom is drawn like _|_ |
| 11:05:20 | × | enemeth79 quits (sid309041@id-309041.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
| 11:05:45 | → | mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) |
| 11:06:04 | <DigitalKiwi> | dibblego twitter avatar lolol |
| 11:08:21 | <kuribas> | arahael: so haskell is the only language that doesn't let you get away coding imperative OO in it? |
| 11:09:07 | <kuribas> | Although imperative style is still quite possible in haskell. OO on the other hand is pretty hard. |
| 11:09:35 | <dibblego> | DigitalKiwi: that's BUMFISH |
| 11:09:42 | × | Brianmancer quits (~Neuromanc@user/briandamag) (Ping timeout: 258 seconds) |
| 11:10:01 | <DigitalKiwi> | is that a new operator |
| 11:10:17 | × | mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Read error: No route to host) |
| 11:11:41 | <dibblego> | no, it's a pre-landing checklist |
| 11:13:08 | <arahael> | Heh. |
| 11:13:36 | <arahael> | kuribas: If it's subtyping you're referring to, no, I don't think haskell has that. |
| 11:13:58 | <arahael> | kuribas: It does have classes and instances, though, but they behave quite differently. |
| 11:14:06 | <kuribas> | And that's a good thing... |
| 11:14:25 | arahael | thinks so. |
| 11:14:37 | <DigitalKiwi> | https://www.parsonsmatt.org/2017/02/17/object_oriented_programming_in_haskell.html |
| 11:14:57 | → | mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) |
| 11:16:39 | → | ubert joins (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) |
| 11:16:43 | <DigitalKiwi> | https://hackage.haskell.org/package/hoop |
| 11:16:56 | <DigitalKiwi> | cue bot "haskell can do that!" |
| 11:22:23 | <dibblego> | DigitalKiwi: https://flightscope.gitlab.io/aircraft/checklist/eurofox.pdf page 1, top-right |
| 11:23:55 | → | Pickchea joins (~private@user/pickchea) |
| 11:25:30 | × | peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 255 seconds) |
| 11:26:22 | → | peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) |
| 11:26:44 | → | enemeth79 joins (uid309041@id-309041.tooting.irccloud.com) |
| 11:27:32 | → | hegstal joins (~hegstal@2a02:c7f:7604:8a00:3e00:8986:ae6e:2aac) |
| 11:38:49 | × | Ouroborosie quits (~pjetcetal@128-71-13-182.broadband.corbina.ru) (Remote host closed the connection) |
| 11:41:00 | × | Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer) |
| 11:41:55 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 11:43:35 | × | anandprabhu quits (~anandprab@94.202.243.198) (Quit: Leaving) |
| 11:43:39 | × | MidAutumnMoon9 quits (~MidAutumn@user/midautumnmoon) (Quit: Leaving for a break - theLounge) |
| 11:43:54 | → | MidAutumnMoon9 joins (~MidAutumn@user/midautumnmoon) |
| 11:46:19 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Ping timeout: 268 seconds) |
| 11:46:53 | → | Vajb joins (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) |
| 11:49:08 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:51:36 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 255 seconds) |
| 11:51:43 | × | hexfive quits (~eric@50.35.83.177) (Quit: WeeChat 3.0) |
| 11:55:21 | → | jippiedoe joins (~david@2a02-a44c-e14e-1-d983-46dc-7f08-a171.fixed6.kpn.net) |
| 11:58:55 | <kuribas> | I've been accused of being a haskell lanuage zealot. But actually I am interested in other languages (logic, FP, dependently typed, etc...). It just doesn't seem to be useful to push for other languages that I know less... |
| 11:59:13 | → | Ouroborosie joins (~pjetcetal@128-71-13-182.broadband.corbina.ru) |
| 11:59:21 | <kuribas> | I could recommend F# instead of haskell, but I don't know it that well, so there is less benefit IMO... |
| 12:00:07 | → | favonia joins (~favonia@user/favonia) |
| 12:01:40 | × | Vajb quits (~Vajb@2001:999:62:1d53:26b1:6c9b:c1ed:9c01) (Read error: Connection reset by peer) |
| 12:02:29 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 12:03:15 | × | gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
| 12:03:49 | → | gentauro joins (~gentauro@user/gentauro) |
| 12:04:48 | <kuribas> | Every time I come with rational arguments, I get a reply like "But I don't like types, they get in the way". Or "programming languages don't matter, business logic does". Or "I don't care it's more robust, we want to move fast and solve bugs as we go". |
| 12:11:30 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds) |
| 12:11:41 | → | Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-54-173-93.dhcp-dynamic.fibreop.nb.bellaliant.net) |
| 12:11:50 | × | _xor quits (~xor@74.215.232.67) (Quit: WeeChat 3.2) |
| 12:14:02 | → | favonia joins (~favonia@user/favonia) |
| 12:15:10 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds) |
| 12:15:54 | → | _xor joins (~xor@74.215.232.67) |
| 12:16:02 | → | mnrmnaugh joins (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) |
| 12:18:06 | <dibblego> | get used to it |
| 12:18:47 | <tom__> | kuribas: I feel your pain |
| 12:18:53 | → | Guest77 joins (~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08) |
| 12:19:43 | <tom__> | "Types get in the way" then spends three hours NULL chasing |
| 12:20:50 | <kuribas> | tom__: exactly! I spend far more time thinking about types in clojure than in haskell. |
| 12:21:11 | <maerwald> | types can get in the way, especially since haskell lacks structural typing |
| 12:21:34 | <tom__> | haha sometimes you want types to get in the way |
| 12:21:51 | <maerwald> | I know of at least one Haskell dev who now works full-time with typescript and doesn't regret it |
| 12:22:09 | <maerwald> | I probably wouldn't, but it's a valid position |
| 12:22:50 | → | peterhil_ joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) |
| 12:22:55 | <tom__> | Clojure to me is just javascript with some immutability |
| 12:22:58 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 12:23:06 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 255 seconds) |
| 12:23:22 | <kuribas> | maerwald: I find that often, it just amounts to having a bit more boilerplate. Or having duplicate type definitions. |
| 12:23:40 | <maerwald> | it can be a *lot* of boilerplate |
| 12:24:00 | <maerwald> | and prohibits you of expressing certain relationships between data |
| 12:24:19 | <tom__> | Haskell, Rust and Julia - desert island stack |
| 12:24:37 | <tom__> | Havent tried the latter two :D |
| 12:24:58 | <maerwald> | class based solutions don't work well when you need an *actual* data type for serialisation |
| 12:25:38 | → | brian_da_mage joins (~Neuromanc@user/briandamag) |
| 12:25:45 | <maerwald> | typescript is surprisingly simple and powerful on these matters... certainly less elegant and unsound in a few places, but that's the tradeoff the make |
| 12:25:47 | × | peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 268 seconds) |
| 12:26:10 | <kuribas> | tom__: rust is only my "to learn list" :) |
| 12:26:42 | <kuribas> | maerwald: you can be less elegant and unsound in haskell too... |
| 12:27:02 | <maerwald> | kuribas: yeah, but that usually involves MORE complexity, not less |
| 12:27:10 | <maerwald> | so the opposite of typescript |
| 12:27:16 | × | thelounge9230681 quits (~thelounge@cpe-75-85-161-60.san.res.rr.com) (Remote host closed the connection) |
| 12:27:22 | <tom__> | You can be and then people who don't understand what a theoretical model is say that it must mean Haskell is pointless |
| 12:28:12 | <kuribas> | maerwald: I don't agree |
| 12:28:47 | <maerwald> | well, you *can* do some forms of structural typing/subtyping, but it all ends in esoteric libraries |
| 12:29:00 | <kuribas> | maerwald: so don't do it. |
| 12:29:03 | <maerwald> | while you get all that in TS for free without complexity |
| 12:29:45 | <maerwald> | well, I'm not commenting on which language is better, I'm just commenting on "types can get in the way", because they can |
| 12:29:55 | <kuribas> | maerwald: plenty of ways to get around that: 1) partially applied functions (the Endo trick), create a new type with some of the fields. 3) just make the fields all Maybe. |
| 12:30:56 | <kuribas> | maerwald: there is a difference between "the types sometimes get in the way", and "the types always get in the way", the latter is what they seem to be implying. |
| 12:31:02 | <maerwald> | 1) difficult for serialisation, Show instances, debugging, ... 2) boilerplate, 3) unexpressive, because now you have two cases of `Maybe` |
| 12:31:40 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 12:32:02 | <kuribas> | You don't need two cases of Maybe |
| 12:32:44 | <kuribas> | and 4) just put default values. |
| 12:33:32 | <maerwald> | 1. there's no such value, because the computation doesn't return one for the given input, 2. there's no such value, because the computation can *never* return one |
| 12:33:45 | <maerwald> | now you also have to wonder: 3. there's a value, but there shouldn't be one |
| 12:33:47 | <maerwald> | oops |
| 12:33:47 | <kuribas> | IMO, the more you want correctness, the more you are restricted in what you write. It has nothing to do with types (directly). |
| 12:34:28 | <kuribas> | maerwald: if you grab to clojure, you don't care anyway... |
| 12:34:48 | <maerwald> | default values.. what's my default account balance? :p |
| 12:34:54 | <dibblego> | like I said, get used to it |
| 12:35:03 | × | awth13 quits (~user@user/awth13) (Remote host closed the connection) |
| 12:35:20 | <tom__> | ^ yes and get used to makeNegative = (*) -1 |
| 12:35:49 | <kuribas> | Which is my point, haskell can be a nice unsafe language to. Just make a big sum type, and partial functions over it (don't forget to add error messages though...). |
| 12:36:17 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
| 12:36:21 | <maerwald> | well, with structural typing you don't need to be partial |
| 12:36:24 | <int-e> | Or unsafeCoerce everything and program untyped lambda calculus? :) |
| 12:36:36 | × | acidjnk quits (~acidjnk@p200300d0c72b9530b41c89c6d6c03a30.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 12:36:48 | <arahael> | kuribas: Mind you, Clojure seems to offer alternative methods to allow you to type ocrrect code. In particular, Clojure seems to have a fantastic runtime repl. |
| 12:37:15 | <arahael> | kuribas: Such that you're running the live program and debugging it and replacing functions on the fly. |
| 12:37:26 | <int-e> | I like types, they prevent some of the more embarrassing programming errors from being run as code. |
| 12:37:44 | <tom__> | Revenge is forcing them to write a web app in the Lean proof assistant fully verified. |
| 12:37:49 | <tom__> | It has IO. |
| 12:38:13 | × | krz3si quits (~quassel@185.217.117.220) (Ping timeout: 265 seconds) |
| 12:38:25 | <maerwald> | right... clojure: forget a closing bracket, code still compiles, but doesn't compute prime numbers... instead it compiles to a chess engine |
| 12:38:42 | <tom__> | haha |
| 12:38:45 | <maerwald> | type safe? Yeah maybe. But. |
| 12:38:48 | <kuribas> | arahael: I think you never actually used clojure? |
| 12:38:57 | × | zeenk quits (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!) |
| 12:39:03 | <int-e> | tom__: That's deep in "overdoing it" territory. At least if the specification is anything more elaborate than "something in, something out", and even that may be tricky if you interpret it as a promise to fulfil request in finite time. |
| 12:39:18 | → | yoctocell joins (~user@h87-96-130-155.cust.a3fiber.se) |
| 12:39:26 | <kuribas> | arahael: it's a very mediocre runtime IMO, compared to java. Error messages are nearly incomprehensible. Tracing is nice though... |
| 12:39:39 | <tom__> | int-e: Yeah pointless torture :) |
| 12:39:50 | <maerwald> | the only upside of clojure is interactive development |
| 12:39:55 | → | aman joins (~aman@user/aman) |
| 12:40:08 | <tom__> | The haskell compiler feels pretty interactive |
| 12:40:29 | <maerwald> | if HLS works, maybe |
| 12:40:37 | <arahael> | kuribas: Seemed to be effective enough. |
| 12:40:53 | <arahael> | But no, I haven't personally used it. |
| 12:41:00 | <maerwald> | but on the other hand: usually not. Compile times are too slow |
| 12:41:12 | <kuribas> | arahael: clojurists just have a different idea of "correct code". |
| 12:41:15 | <arahael> | I personally quite like ghcid. |
| 12:41:27 | <arahael> | kuribas: Indeed, but I think it's the process of discovery that they like. |
| 12:41:57 | <arahael> | kuribas: In haskell, we seem to prefer to test functions in isolation. Clojure people seem to prefer to test functions in the live system. |
| 12:42:00 | <maerwald> | if you're working on 300+ modules and your Type module has a whitespace change, you're gonna need to restart cabal a few times, because your machine OOMed due to TH |
| 12:42:18 | <tom__> | Which library is recommended for sampling probability distributions? |
| 12:42:42 | <arahael> | maerwald: The amount of memory Haskell uses is crazy high. Sadly, I find it way faster than Swift. :/ |
| 12:44:32 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 12:45:45 | <kuribas> | arahael: lispers will boast about how easy it is to hot patch live systems. They don't tell you that it becomes very hard to see who changed what and when. |
| 12:46:03 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 12:46:05 | <kuribas> | arahael: so you'll end up with CI/CD anyway. |
| 12:46:32 | → | favonia joins (~favonia@user/favonia) |
| 12:46:34 | <kuribas> | However a theoretically, a "live" programming environment with integrated version control could be nice. |
| 12:46:44 | <kuribas> | I don't know if that ever has been done. |
| 12:47:32 | <maerwald> | https://hackage.haskell.org/package/optics-th-0.4/docs/Optics-TH.html#v:makeClassy |
| 12:47:34 | <maerwald> | https://hackage.haskell.org/package/optics-th-0.4/docs/Optics-TH.html#v:makeFieldsNoPrefix |
| 12:47:36 | <maerwald> | https://hackage.haskell.org/package/generic-optics-2.2.0.0/docs/Data-Generics-Product-Fields.html#t:HasField |
| 12:47:38 | <maerwald> | which one of those to pick? |
| 12:48:20 | → | lavaman joins (~lavaman@98.38.249.169) |
| 12:49:00 | <maerwald> | HasField is kinda cool with those neat type errors |
| 12:49:55 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 12:51:41 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 268 seconds) |
| 12:52:55 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds) |
| 12:53:54 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 240 seconds) |
| 12:55:06 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds) |
| 12:55:32 | → | fef joins (~thedawn@user/thedawn) |
| 12:57:13 | → | pesada joins (~agua@2804:18:48:588b:1:0:277e:35b0) |
| 12:57:27 | → | favonia joins (~favonia@user/favonia) |
| 12:59:33 | × | jippiedoe quits (~david@2a02-a44c-e14e-1-d983-46dc-7f08-a171.fixed6.kpn.net) (Ping timeout: 255 seconds) |
| 12:59:34 | × | azeem quits (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) (Read error: Connection reset by peer) |
| 13:01:06 | × | agua quits (~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100) (Ping timeout: 240 seconds) |
| 13:04:25 | → | azeem joins (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) |
| 13:06:50 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 13:08:00 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 13:08:26 | → | drd joins (~drd@93-39-151-19.ip76.fastwebnet.it) |
| 13:11:29 | → | chomwitt joins (~Pitsikoko@athedsl-32487.home.otenet.gr) |
| 13:16:58 | × | hegstal quits (~hegstal@2a02:c7f:7604:8a00:3e00:8986:ae6e:2aac) (Remote host closed the connection) |
| 13:21:34 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 258 seconds) |
| 13:22:43 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection) |
| 13:24:15 | → | justLearning96 joins (~justLearn@bb42-60-215-35.singnet.com.sg) |
| 13:27:14 | ← | justLearning96 parts (~justLearn@bb42-60-215-35.singnet.com.sg) () |
| 13:29:20 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 13:31:06 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds) |
| 13:32:07 | → | agua joins (~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100) |
| 13:33:28 | → | favonia joins (~favonia@user/favonia) |
| 13:34:12 | × | pesada quits (~agua@2804:18:48:588b:1:0:277e:35b0) (Ping timeout: 255 seconds) |
| 13:39:28 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection) |
| 13:40:39 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 13:41:43 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 13:43:28 | → | Guest15 joins (~Guest15@2402:e280:2117:297:e041:4ae1:dd3c:1f08) |
| 13:43:50 | × | xff0x quits (~xff0x@2001:1a81:5219:9d00:3d14:ef54:1c92:a192) (Ping timeout: 255 seconds) |
| 13:44:20 | × | wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal) |
| 13:44:30 | → | xff0x joins (~xff0x@port-92-193-131-10.dynamic.as20676.net) |
| 13:45:18 | × | Guest15 quits (~Guest15@2402:e280:2117:297:e041:4ae1:dd3c:1f08) (Client Quit) |
| 13:54:00 | × | mnrmnaugh quits (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Ping timeout: 255 seconds) |
| 14:02:29 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 14:02:49 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 14:04:05 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 14:06:40 | → | favonia joins (~favonia@user/favonia) |
| 14:06:43 | → | mnrmnaugh joins (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) |
| 14:08:18 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 14:09:10 | × | jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 14:19:06 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds) |
| 14:21:25 | → | favonia joins (~favonia@user/favonia) |
| 14:35:11 | → | nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
| 14:40:32 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 14:40:56 | → | favonia joins (~favonia@user/favonia) |
| 14:44:11 | → | Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se) |
| 14:44:32 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 14:44:38 | × | Guest77 quits (~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08) (Quit: Ping timeout (120 seconds)) |
| 14:45:50 | → | Guest77 joins (~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08) |
| 14:51:13 | → | zebrag joins (~chris@user/zebrag) |
| 14:55:15 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 14:56:14 | × | Guest77 quits (~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08) (Quit: Client closed) |
| 14:56:32 | → | Guest77 joins (~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08) |
| 14:57:27 | fef | is now known as admin |
| 14:57:36 | admin | is now known as adminll |
| 14:57:48 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 15:02:55 | × | meinside_ quits (uid24933@id-24933.brockwell.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:04:20 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 15:08:14 | → | smichel17 joins (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) |
| 15:08:50 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 15:09:01 | → | texasmynsted joins (~texasmyns@99.96.221.112) |
| 15:10:23 | × | gehmehgeh quits (~user@user/gehmehgeh) (Client Quit) |
| 15:12:29 | × | nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds) |
| 15:12:54 | → | fradet joins (~fradet@216.252.75.247) |
| 15:13:31 | × | andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Ping timeout: 268 seconds) |
| 15:14:01 | → | Zemyla_ joins (~ec2-user@ec2-54-196-11-2.compute-1.amazonaws.com) |
| 15:14:08 | × | Aleksejs_Home quits (~Aleksejs@haskell.lv) (Ping timeout: 268 seconds) |
| 15:14:08 | × | ajb quits (~ajb@cupid.whatbox.ca) (Ping timeout: 268 seconds) |
| 15:14:45 | × | Zemyla quits (~ec2-user@ec2-54-196-11-2.compute-1.amazonaws.com) (Ping timeout: 268 seconds) |
| 15:14:57 | → | oso joins (~oso@2601:58c:c080:a950:e67d:b4e2:c5be:433f) |
| 15:15:01 | → | andreas303 joins (andreas303@ip227.orange.bnc4free.com) |
| 15:15:22 | × | superbil quits (~superbil@1-34-176-171.hinet-ip.hinet.net) (Ping timeout: 268 seconds) |
| 15:15:35 | → | sim590 joins (~simon@modemcable090.207-203-24.mc.videotron.ca) |
| 15:15:35 | <boxscape> | maerwald: the TH versions say "This method of optics generation should only be used when migrating an existing codebase from the lens library to optics" |
| 15:15:40 | → | ajb joins (~ajb@cupid.whatbox.ca) |
| 15:15:51 | <boxscape> | maerwald: this, my final answer is C |
| 15:15:56 | <boxscape> | s/this/thus |
| 15:16:00 | × | nonzen quits (~nonzen@user/nonzen) (Ping timeout: 268 seconds) |
| 15:16:00 | × | aweinstock quits (~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com) (Ping timeout: 268 seconds) |
| 15:16:00 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 244 seconds) |
| 15:16:08 | <maerwald> | HasField? |
| 15:16:20 | → | Aleksejs joins (~Aleksejs@haskell.lv) |
| 15:16:21 | × | Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 255 seconds) |
| 15:16:34 | → | nonzen joins (~nonzen@user/nonzen) |
| 15:16:46 | <boxscape> | yeah.. though I thought there was a version of that which uses OverloadedLabels |
| 15:17:20 | <maerwald> | HasField though doesn't allow arbitrary subtyping... it's a simple getter |
| 15:17:23 | → | aweinstock joins (~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com) |
| 15:17:32 | × | adminll quits (~thedawn@user/thedawn) (Remote host closed the connection) |
| 15:17:36 | → | hololeap joins (~hololeap@user/hololeap) |
| 15:17:54 | <maerwald> | with makeClassy style classes you could descend deeper into the structure with the same getter |
| 15:18:03 | → | Guest9 joins (~Guest9@43.242.116.127) |
| 15:18:12 | → | superbil joins (~superbil@1-34-176-171.HINET-IP.hinet.net) |
| 15:18:12 | → | adminll joins (~thedawn@user/thedawn) |
| 15:18:30 | <boxscape> | maerwald: oh actually the TH version links to https://hackage.haskell.org/package/optics-core-0.4/docs/Optics-Label.html as preferred solution |
| 15:19:03 | <boxscape> | that's the OverloadedLabels version I was remembering |
| 15:19:04 | × | ByronJohnson quits (~bairyn@mail.digitalkingdom.org) (Ping timeout: 268 seconds) |
| 15:19:12 | → | ByronJohnson joins (~bairyn@mail.digitalkingdom.org) |
| 15:19:41 | → | Ariakenom joins (~Ariakenom@c83-255-154-140.bredband.tele2.se) |
| 15:21:31 | → | Null_A joins (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) |
| 15:22:44 | <maerwald> | so there you could also define custom LabelOptic instances that descend into a structure? |
| 15:23:27 | <boxscape> | that seems plausible but I haven't tried doing it |
| 15:23:47 | <maerwald> | I'm leaning towards makeClassy, but I'm not sure |
| 15:24:25 | <boxscape> | I like makeClassy, the main reason I would avoid it personally is that the documentation advises against it |
| 15:25:40 | <maerwald> | so what does LabelOptic give over HasField? |
| 15:25:43 | → | Ariakenom_ joins (~Ariakenom@c83-255-154-140.bredband.tele2.se) |
| 15:26:17 | <texasmynsted> | What is the modern answer to haskell records? Lens? |
| 15:26:49 | <maerwald> | only difference I see is labelOptic is `Optic` and HasField is a `Lens` |
| 15:28:24 | <boxscape> | hm I'm not sure what the concrete differences are |
| 15:29:14 | → | elf_fortrez joins (~elf_fortr@adsl-72-50-6-20.prtc.net) |
| 15:29:33 | × | Ariakenom quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 268 seconds) |
| 15:29:35 | → | Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
| 15:30:52 | <boxscape> | texasmynsted: there are a few answers to this: In the next version, OverloadedRecordDot is being introduces, which allows one to write something like `personA.company.name`. (Updates are a bit iffy but will improve over time.) In the meantime, lens is definitely still widely used, though optics is a replacement which aims to have better error messages. There is also some research going into row types, but that's further out. |
| 15:30:55 | <boxscape> | s/next version/next version of GHC |
| 15:31:36 | → | nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
| 15:32:08 | <boxscape> | (though regarding row types, the vinyl records package allows something similar today) |
| 15:33:11 | → | hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com) |
| 15:35:02 | → | Ariakenom__ joins (~Ariakenom@c83-255-154-140.bredband.tele2.se) |
| 15:35:20 | × | enemeth79 quits (uid309041@id-309041.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:35:21 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 15:35:30 | × | elf_fortrez quits (~elf_fortr@adsl-72-50-6-20.prtc.net) (Quit: Client closed) |
| 15:36:09 | × | nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds) |
| 15:38:40 | × | oso quits (~oso@2601:58c:c080:a950:e67d:b4e2:c5be:433f) (Ping timeout: 246 seconds) |
| 15:38:48 | × | Ariakenom_ quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 268 seconds) |
| 15:39:45 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 15:40:03 | → | favonia joins (~favonia@user/favonia) |
| 15:43:24 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds) |
| 15:43:44 | × | kuribas quits (~user@ptr-25vy0i9ash1yu2tubi9.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 15:44:31 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 15:45:43 | × | keutoi quits (~keutoi@157.48.202.216) (Quit: Reconnecting) |
| 15:45:53 | → | keutoi joins (~keutoi@157.48.202.216) |
| 15:46:54 | → | chris_ joins (~chris@81.96.113.213) |
| 15:47:16 | × | Guest77 quits (~Guest77@2402:e280:2117:297:e041:4ae1:dd3c:1f08) (Quit: Client closed) |
| 15:53:52 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 15:55:47 | × | hendursa1 quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
| 15:56:16 | → | hendursa1 joins (~weechat@user/hendursaga) |
| 15:56:22 | → | arjun joins (~user@user/arjun) |
| 15:59:48 | → | Guest14 joins (~Guest14@76-236-222-208.lightspeed.tukrga.sbcglobal.net) |
| 16:03:05 | <Guest14> | Hello :) |
| 16:03:40 | <Guest14> | I am new to Haskell and am working through the Real World Haskell Book |
| 16:03:57 | → | econo joins (uid147250@user/econo) |
| 16:04:27 | <Guest14> | I have a basic question if anyone would care to listen |
| 16:06:02 | <allbery_b> | best to just ask it rather than asking to ask |
| 16:06:11 | allbery_b | is now known as geekosaur |
| 16:06:23 | <davean> | asking to ask is why I wasn't helping |
| 16:07:44 | <Guest14> | splitWith _ [] = [] |
| 16:07:45 | <Guest14> | splitWith a xs = [pre ++ [x]] ++ next |
| 16:07:45 | <Guest14> | where |
| 16:07:46 | <Guest14> | (pre, x:suf) = span a xs |
| 16:07:46 | <Guest14> | next = splitWith a suf |
| 16:08:10 | <Guest14> | I have this program and I run into a problem with x:suf when span a xs is [] becuase there is no head |
| 16:09:30 | × | chomwitt quits (~Pitsikoko@athedsl-32487.home.otenet.gr) (Ping timeout: 240 seconds) |
| 16:09:34 | <int-e> | > let f = splitAt 1 in (f "abc", f "") |
| 16:09:36 | <lambdabot> | (("a","bc"),("","")) |
| 16:11:31 | <int-e> | (So maybe use splitAt instead of the x:suf pattern.) |
| 16:11:39 | <maerwald> | was there a question yet? |
| 16:11:45 | <davean> | No |
| 16:12:09 | <Guest14> | Ok I will give that a try thanks |
| 16:12:10 | <int-e> | They described a problem, close enough. |
| 16:12:35 | <maerwald> | They also described the answer |
| 16:12:38 | <maerwald> | "there is no head" |
| 16:12:47 | <int-e> | @where paste |
| 16:12:47 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
| 16:13:04 | <int-e> | maerwald: That's the reason, but not a solution for the problem? |
| 16:13:06 | int-e | shrugs |
| 16:13:10 | <maerwald> | So my answer is: yes |
| 16:13:28 | <int-e> | Well, so sorry for trying to be helpful. |
| 16:13:33 | × | dajoer quits (~david@user/gvx) (Quit: leaving) |
| 16:14:08 | × | Ariakenom__ quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 255 seconds) |
| 16:14:09 | <davean> | int-e: oh do be helpful |
| 16:15:04 | ← | mnrmnaugh parts (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Leaving) |
| 16:15:14 | <Guest14> | int-e that worked thank you |
| 16:16:19 | → | darius-os_ joins (uid508861@id-508861.stonehaven.irccloud.com) |
| 16:20:42 | <texasmynsted> | thank you boxscape |
| 16:21:29 | <texasmynsted> | Sounds like optics or vinyl for now |
| 16:21:44 | × | Guest14 quits (~Guest14@76-236-222-208.lightspeed.tukrga.sbcglobal.net) (Quit: Client closed) |
| 16:22:07 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 16:23:04 | → | Ariakenom__ joins (~Ariakenom@c83-255-154-140.bredband.tele2.se) |
| 16:24:27 | → | Guest14 joins (~Guest14@76-236-222-208.lightspeed.tukrga.sbcglobal.net) |
| 16:27:27 | × | brian_da_mage quits (~Neuromanc@user/briandamag) (Ping timeout: 255 seconds) |
| 16:27:58 | → | oso joins (~oso@2601:58c:c080:a950:e67d:b4e2:c5be:433f) |
| 16:30:57 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:31:11 | <sm> | g'day all. Speaking of optics.. you experienced [lens] coders, do you find it good or bad for (a) fields and (b) lenses to be visually disctinct from other kinds of bindings (functions, "variables") ? As in eg _field/lens_, field_/lens__, _field/lensL, .... ? |
| 16:31:57 | × | Ariakenom__ quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Ping timeout: 255 seconds) |
| 16:32:24 | <sm> | I feel it would be good overall, for avoiding collisions and for human comprehension . But I don't have a lot of lens experience |
| 16:33:02 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 16:33:18 | × | norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 255 seconds) |
| 16:33:20 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:34:12 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
| 16:36:33 | → | Ariakenom__ joins (~Ariakenom@c83-255-154-140.bredband.tele2.se) |
| 16:36:59 | → | retroid_ joins (~retro@97e2ba5d.skybroadband.com) |
| 16:38:11 | × | smichel17 quits (~smichel17@c-73-68-217-18.hsd1.ma.comcast.net) (Quit: smichel17) |
| 16:40:10 | <maerwald> | can you derive LabelOptic with deriving via for an inner type? |
| 16:41:05 | × | retro_ quits (~retro@97e2ba5d.skybroadband.com) (Ping timeout: 268 seconds) |
| 16:41:42 | × | retroid_ quits (~retro@97e2ba5d.skybroadband.com) (Ping timeout: 268 seconds) |
| 16:42:24 | → | retroid_ joins (~retro@97e2ba5d.skybroadband.com) |
| 16:42:50 | <oso> | xpost from #haskell-beginners: |
| 16:42:52 | <oso> | I'm passing around a type synonym for Int, but in reality the only constraint it needs to follow is that it's hashable. what constructor do i use for this? my brain says go from `type UID = Int` to `data UID a = Hashable a` but that's very not correct, and google isn't helping much |
| 16:43:21 | <oso> | nvm sorry got an answer there |
| 16:48:56 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:49:57 | → | lavaman joins (~lavaman@98.38.249.169) |
| 16:50:11 | × | Guest14 quits (~Guest14@76-236-222-208.lightspeed.tukrga.sbcglobal.net) (Quit: Client closed) |
| 16:51:02 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 16:51:26 | → | favonia joins (~favonia@user/favonia) |
| 16:52:47 | × | cheater quits (~Username@user/cheater) (Remote host closed the connection) |
| 16:53:50 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 16:54:37 | <glguy> | oso, if you just need to know that something is hashable you'd use it like: stuff :: Hashable a => a -> b -> c |
| 16:54:39 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds) |
| 16:54:39 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 16:55:19 | <glguy> | If a parameter is the uid parameter you can document that like: stuff :: Hashable uid => uid {- ^ the UID -} -> etc |
| 16:55:35 | <oso> | I was trying to do that while also using types to keep my signatures from becoming unwieldy, but first i'll just worry about getting the code working |
| 16:55:43 | × | keutoi quits (~keutoi@157.48.202.216) (Quit: leaving) |
| 16:55:53 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds) |
| 16:55:58 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 16:56:05 | → | cheater joins (~Username@user/cheater) |
| 16:56:22 | <glguy> | the documentation for parameters goes in the haddock comments rather than type synonyms |
| 16:56:43 | <oso> | mmk |
| 16:57:00 | × | chris_ quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 16:57:52 | → | burnside_ joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 16:57:55 | → | smichel17 joins (~smichel17@2601:193:8300:4b9::600) |
| 16:58:06 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
| 17:00:31 | × | arjun quits (~user@user/arjun) (Ping timeout: 250 seconds) |
| 17:01:33 | × | mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Read error: Connection reset by peer) |
| 17:02:18 | → | mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) |
| 17:05:40 | <dsal> | oso: It's tempting to put constraints in the type definitions, but if you take a look at, for example, `Data.Map.Strict` you'll see the type definition is just `data Map k a`. You'd think k would always have to be ordered, but that's not the case. You can create and work on maps that have unorderable keys when you don't do things that require ordering. e.g.: |
| 17:05:42 | <dsal> | > M.elems $ (* 2) <$> M.singleton id 3 |
| 17:05:43 | <lambdabot> | [6] |
| 17:07:10 | <dsal> | The idea is that you only have to constrain things where they actually need to be constrained. The Functor instance, e.g., doesn't care about the keys at all, so why should it require they're ordered? |
| 17:08:00 | → | falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 17:09:25 | × | Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt) |
| 17:11:52 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 17:12:32 | → | dyeplexer joins (~dyeplexer@user/dyeplexer) |
| 17:13:45 | <oso> | got it working \o/ |
| 17:13:47 | <oso> | thank you |
| 17:15:07 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 17:16:22 | → | nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
| 17:21:49 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:22:00 | → | mnrmnaugh joins (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) |
| 17:26:35 | × | Null_A quits (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Remote host closed the connection) |
| 17:27:45 | × | falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 255 seconds) |
| 17:28:36 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 17:41:25 | → | Pickchea joins (~private@user/pickchea) |
| 17:42:19 | → | shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 17:43:14 | × | mcfrdy quits (~mcfrdy@user/mcfrdy) (Ping timeout: 255 seconds) |
| 17:44:09 | × | mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 258 seconds) |
| 17:44:25 | → | mcfrdy joins (~mcfrdy@45.67.96.126) |
| 17:44:26 | × | mcfrdy quits (~mcfrdy@45.67.96.126) (Changing host) |
| 17:44:26 | → | mcfrdy joins (~mcfrdy@user/mcfrdy) |
| 17:46:09 | <hololeap> | so, I figured out a way to make a function with an arbitrary number of arguments using type families and type-level lists. but, I have to wonder ... has someone already made this and put it on hackage? |
| 17:47:04 | → | lavaman joins (~lavaman@98.38.249.169) |
| 17:47:46 | <texasmynsted> | wait, why do you want a function with an arbitrary number of arguments? |
| 17:48:31 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 17:49:03 | <c_wraith> | usually to cover for a lack of other expressiveness |
| 17:49:09 | <c_wraith> | printf is a common example |
| 17:49:12 | <texasmynsted> | Seems to me ideally a function should have exactly one argument |
| 17:49:19 | <c_wraith> | We can't write the type it actually has in Haskell |
| 17:49:25 | <c_wraith> | Because it's a dependent type |
| 17:49:51 | <c_wraith> | So varargs lets us do it anyway and fail at runtime if the programmer got it wrong |
| 17:50:07 | <texasmynsted> | printf solves a problem in a particular way that I think could be solved better, differently |
| 17:50:18 | <c_wraith> | differently? sure. Better? Not really. |
| 17:50:21 | <hololeap> | the motivation was because I had a typeclass with a function, and I encountered some outliers that needed extra arguments passed to that function |
| 17:50:47 | <texasmynsted> | c_wraith: I am not convinced |
| 17:50:48 | <hololeap> | I'd have to write up a blog post or something to get into all the details |
| 17:50:57 | <Rembane> | hololeap: Do it! :D |
| 17:51:08 | <texasmynsted> | yes, that would be a good read |
| 17:51:15 | <c_wraith> | printf is *really* good at doing exactly what it's intended for. Compactly specifying output formatted for monospace devices. |
| 17:51:33 | <texasmynsted> | like regular expressions? |
| 17:51:42 | <c_wraith> | honestly, it's more useful |
| 17:52:01 | <c_wraith> | regular expressions have to involve things like capturing group to really be useful, and those complicate APIs tremendously |
| 17:52:05 | <c_wraith> | printf has no such problems |
| 17:52:20 | <texasmynsted> | Right. I think regular expressions work great but are terrible and the problem is better solved differently |
| 17:52:46 | <EvanR> | compare and contrast serious uses of printf with the expanded version, replicate that across a code base like 50 times and compare xD |
| 17:53:12 | <EvanR> | also, printf for debugging |
| 17:53:25 | <EvanR> | debugging would be harsher without it |
| 17:53:56 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 17:54:27 | <EvanR> | I'm more interested with this case of some function sometimes needing more arguments |
| 17:56:04 | <texasmynsted> | I am still going with functions should have exactly one argument |
| 17:56:30 | <hololeap> | I mean... they do, technically. |
| 17:57:24 | → | Null_A joins (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) |
| 17:57:38 | <texasmynsted> | yes |
| 17:58:02 | <EvanR> | if the difference is between argument type (A,B) and (A,B,C) it's about argument type and not number |
| 17:58:23 | <texasmynsted> | Okay now we are getting somewhere |
| 18:00:32 | → | MorrowM joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 18:00:36 | × | azeem quits (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) (Ping timeout: 265 seconds) |
| 18:00:57 | × | johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Ping timeout: 245 seconds) |
| 18:01:47 | × | Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds) |
| 18:03:07 | → | azeem joins (~azeem@176.201.25.252) |
| 18:05:26 | × | flukiluke_ quits (~flukiluke@168.138.23.5) (Ping timeout: 265 seconds) |
| 18:05:49 | → | flukiluke joins (~flukiluke@2603:c023:c000:6c7e:8945:ad24:9113:a962) |
| 18:06:15 | × | elcaro quits (~anonymous@45.32.191.75) (Ping timeout: 252 seconds) |
| 18:07:09 | → | elcaro joins (~anonymous@45.32.191.75) |
| 18:09:18 | × | drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 265 seconds) |
| 18:09:54 | → | pesada joins (~agua@2804:18:48:588b:1:0:277e:35b0) |
| 18:10:09 | → | Core5124 joins (~agua@2804:14c:8793:8e2f:642c:be4c:c775:de87) |
| 18:13:10 | → | __monty__ joins (~toonn@user/toonn) |
| 18:13:23 | × | agua quits (~agua@2804:14c:8793:8e2f:a4d4:3a0b:9f6:6100) (Ping timeout: 255 seconds) |
| 18:14:11 | × | pesada quits (~agua@2804:18:48:588b:1:0:277e:35b0) (Ping timeout: 250 seconds) |
| 18:15:26 | × | azeem quits (~azeem@176.201.25.252) (Ping timeout: 268 seconds) |
| 18:17:33 | → | azeem joins (~azeem@176.201.25.252) |
| 18:19:56 | × | Null_A quits (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Remote host closed the connection) |
| 18:19:57 | × | ubert quits (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 18:21:23 | × | Ouroborosie quits (~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT) |
| 18:24:10 | → | Ananta-shesha joins (~pjetcetal@128-71-13-182.broadband.corbina.ru) |
| 18:24:31 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:24:49 | × | azeem quits (~azeem@176.201.25.252) (Read error: Connection reset by peer) |
| 18:26:00 | → | azeem joins (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) |
| 18:26:27 | → | brian_da_mage joins (~Neuromanc@user/briandamag) |
| 18:30:14 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 18:30:56 | Ananta-shesha | is now known as Anantashesha |
| 18:31:05 | Anantashesha | is now known as Ananta-shesha |
| 18:36:54 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 18:37:06 | → | lavaman joins (~lavaman@98.38.249.169) |
| 18:37:39 | × | dyeplexer quits (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
| 18:42:10 | → | lbseale joins (~lbseale@user/ep1ctetus) |
| 18:42:16 | × | DNH quits (~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 18:45:49 | × | Ananta-shesha quits (~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT) |
| 18:46:05 | → | DNH joins (~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89) |
| 18:46:05 | × | burnside_ quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
| 18:46:10 | → | Ananta-shesha joins (~pjetcetal@128-71-13-182.broadband.corbina.ru) |
| 18:46:23 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 18:49:30 | × | neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 240 seconds) |
| 18:50:08 | × | hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1) |
| 18:50:11 | × | DNH quits (~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89) (Client Quit) |
| 18:51:17 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 18:53:36 | → | hendursaga joins (~weechat@user/hendursaga) |
| 18:54:09 | × | nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds) |
| 18:56:50 | × | hendursaga quits (~weechat@user/hendursaga) (Remote host closed the connection) |
| 18:58:27 | × | lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
| 18:59:24 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:00:54 | × | benin0369 quits (~benin@183.82.206.198) (Ping timeout: 255 seconds) |
| 19:03:41 | → | aallen joins (~aallen@072-182-074-253.res.spectrum.com) |
| 19:05:55 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 19:06:50 | <texasmynsted> | sigh. |
| 19:07:01 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 19:07:39 | <oso> | seconded |
| 19:08:52 | <texasmynsted> | +1 oso |
| 19:09:01 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
| 19:12:41 | brian_da_mage | is now known as Brianmancer |
| 19:14:22 | → | hendursaga joins (~weechat@user/hendursaga) |
| 19:14:36 | → | johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
| 19:17:38 | → | Null_A joins (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) |
| 19:17:38 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection) |
| 19:18:12 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 19:20:01 | × | adminll quits (~thedawn@user/thedawn) (Remote host closed the connection) |
| 19:20:24 | × | machinedgod quits (~machinedg@24.105.81.50) (Remote host closed the connection) |
| 19:21:19 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 19:22:40 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
| 19:25:52 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 19:30:09 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 19:30:34 | → | favonia joins (~favonia@user/favonia) |
| 19:31:03 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds) |
| 19:32:57 | <monochrom> | Why so grim? |
| 19:33:18 | <boxscape> | hololeap: one of rae's latest videos is also about varargs https://youtu.be/iGSKqcebhfs |
| 19:33:22 | <monochrom> | You know "grim" and "grin" are just one curvy stroke apart. :) |
| 19:33:53 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 19:33:55 | <boxscape> | you can't spell slaughter without laughter, you can't spell grim without grin |
| 19:34:33 | <monochrom> | hee hee |
| 19:35:42 | → | neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) |
| 19:35:57 | <oso> | idk why texas is feeling grim but i'm extremely anxious about a work trip and trying to stuff the feelings down by adding documentation to my heretofore undocumented code |
| 19:36:32 | <monochrom> | My gripe about printf is I will be writing "%d %d %d %d %d %d %d" and then it's the same issue with (Int,Int,Int,Int,Int,Int). And I'm deliberately demonstrating an miscounting error for starters. But this issue is not about vararg, it's about losing structure. |
| 19:37:45 | × | alx741 quits (~alx741@181.196.68.89) (Ping timeout: 265 seconds) |
| 19:38:53 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 19:39:32 | × | finsternis quits (~X@23.226.237.192) (Remote host closed the connection) |
| 19:40:57 | × | mcfrdy quits (~mcfrdy@user/mcfrdy) (Ping timeout: 255 seconds) |
| 19:41:40 | × | Ananta-shesha quits (~pjetcetal@128-71-13-182.broadband.corbina.ru) (Quit: EXIT) |
| 19:43:37 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds) |
| 19:43:45 | × | dmwit quits (~dmwit@pool-96-255-233-247.washdc.fios.verizon.net) (Ping timeout: 258 seconds) |
| 19:44:57 | → | mcfrdy joins (~mcfrdy@45.67.96.77) |
| 19:44:57 | × | mcfrdy quits (~mcfrdy@45.67.96.77) (Changing host) |
| 19:44:57 | → | mcfrdy joins (~mcfrdy@user/mcfrdy) |
| 19:46:21 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 19:47:45 | → | favonia joins (~favonia@user/favonia) |
| 19:48:09 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 19:50:23 | → | alx741 joins (~alx741@186.178.109.120) |
| 19:51:08 | <maerwald> | can you implement varargs in haskell without ambiguitiy due to partial application? |
| 19:51:18 | <maerwald> | (and I'm not talking about the typeclass trick) |
| 19:51:27 | → | dmwit joins (~dmwit@pool-108-18-198-142.washdc.fios.verizon.net) |
| 19:51:55 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 19:52:19 | <geekosaur> | I think there's a typesafe varargs via TH somewhere on hackage |
| 19:52:48 | <geekosaur> | probably relies on the format string being literal, but you have other problems if it's not anyway |
| 19:53:46 | <c_wraith> | In the general case, there's true ambiguity. There's no general way to distinguish between providing all the arguments that will be provided and partially applying the function. |
| 19:54:25 | <geekosaur> | ^ |
| 19:55:06 | → | finsternis joins (~X@23.226.237.192) |
| 19:55:20 | <c_wraith> | this is why I described varargs as a workaround, not something worth having for itself :) |
| 19:56:14 | → | Franciman joins (~francesco@openglass.it) |
| 19:56:21 | <Franciman> | Hi, does cabal support literate haskell? |
| 19:56:26 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds) |
| 19:56:38 | <c_wraith> | if you put an .lhs extension on the files, it should find and compile them |
| 19:56:56 | <Franciman> | I have a project using .lhs files, but I get errors |
| 19:56:58 | <Franciman> | wait |
| 19:57:19 | <Franciman> | `unlit' failed in phase `Literate pre-processor'. (Exit code: 1) |
| 19:57:31 | <c_wraith> | so it's trying! |
| 19:57:36 | <Franciman> | it is a module I specified in the other-modules |
| 19:57:45 | <Franciman> | so I wrote ListCursor |
| 19:57:49 | <Franciman> | instead of ListCursor.lhs |
| 19:58:08 | <Franciman> | I am really temped to ignore cabal and automatically go with ghc |
| 19:58:11 | <Franciman> | let me see what I can do |
| 19:58:29 | → | DNH joins (~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89) |
| 19:58:35 | <geekosaur> | so it ran unlit, so it correctly found it was literate haskell. yoou could try running unlit manually and see what it choked on |
| 19:58:40 | <c_wraith> | that error doesn't look like you left out an extension |
| 19:58:50 | <c_wraith> | that error looks like it was incorrect literate haskell |
| 19:59:28 | <Franciman> | uhm |
| 20:00:10 | <Franciman> | geekosaur: how do I call unlit? |
| 20:00:16 | <Franciman> | I don't have an unlit program |
| 20:00:32 | <geekosaur> | it's in the library directory |
| 20:01:09 | <Franciman> | c_wraith: here is my code: https://bpa.st/A7JA |
| 20:01:11 | <geekosaur> | ghc --print-libdir |
| 20:01:29 | <geekosaur> | then unlit < yoursourcefile |
| 20:01:48 | <geekosaur> | with the fukll path to the unlit binary in the libdir |
| 20:02:36 | <Franciman> | geekosaur: sorry to bother again |
| 20:02:38 | <Franciman> | but I get |
| 20:02:43 | <Franciman> | usage: unlit [-q] [-n] [-c] [-#] [-P] [-h label] file1 file2 |
| 20:02:47 | <Franciman> | and there is no help :D |
| 20:02:59 | <Franciman> | oh I am stupid |
| 20:03:01 | <Franciman> | sorry |
| 20:03:03 | <c_wraith> | I don't know if you can mix bird tracks and tex-style literate haskell in one file |
| 20:03:10 | <Franciman> | no ok, same problem |
| 20:03:31 | <Franciman> | c_wraith: uhm let me see |
| 20:04:24 | <geekosaur> | I don't think you can |
| 20:04:31 | <Franciman> | and in fact! |
| 20:04:35 | <Franciman> | thank you all |
| 20:04:48 | × | neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 255 seconds) |
| 20:05:10 | <Franciman> | only sad thing is that I can't use the # for markdown titles |
| 20:05:25 | × | peterhil_ quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 20:05:27 | <geekosaur> | unlit could use more documentation but I think it's largely fallen out of use |
| 20:05:36 | × | juhp quits (~juhp@128.106.188.66) (Ping timeout: 258 seconds) |
| 20:05:38 | <Franciman> | nobody likes literate haskell? |
| 20:05:53 | <oso> | you could use the === underline in place of the # for header |
| 20:05:56 | <Franciman> | I mean, I understand, it does not even sync with haddock |
| 20:06:01 | <c_wraith> | in very broad terms, nobody likes literate programming |
| 20:06:08 | <Franciman> | yup, thanks oso |
| 20:06:43 | → | juhp joins (~juhp@128.106.188.66) |
| 20:06:59 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 20:07:52 | × | phma quits (phma@2001:5b0:211b:8138:4237:c684:b0bd:87ec) (Read error: Connection reset by peer) |
| 20:08:19 | <maerwald> | Franciman: no, it's not even bidirectional |
| 20:08:37 | <maerwald> | there's a project that fixes that |
| 20:08:43 | <maerwald> | but even then, not sure |
| 20:09:09 | <maerwald> | https://blog.esciencecenter.nl/entangled-1744448f4b9f |
| 20:09:25 | <maerwald> | https://github.com/entangled/entangled |
| 20:09:30 | <Franciman> | entangled is cool, I use it at my job |
| 20:09:36 | <Franciman> | it has some sore points |
| 20:09:39 | <Franciman> | and a lit of bugs |
| 20:09:50 | <Franciman> | lot* lol |
| 20:09:52 | <maerwald> | that's why it's LITerate |
| 20:09:54 | <maerwald> | lol |
| 20:09:57 | <Franciman> | LOL |
| 20:10:07 | <Franciman> | but it does not integrate well with ghc etc |
| 20:10:09 | → | phma joins (phma@2001:5b0:211f:63f8:7d7f:3315:17e4:ee3e) |
| 20:11:48 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 20:13:34 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 20:16:13 | <dsal> | Franciman: the last time I wrote literate Haskell, it was in markdown. It's not bad. |
| 20:18:02 | <Franciman> | it is cool yeah |
| 20:18:02 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 255 seconds) |
| 20:18:25 | <Franciman> | only thing is, as it seems, it does not mix well with haddock |
| 20:18:32 | <Franciman> | you still have to add haddock special comments |
| 20:20:33 | × | Guest9 quits (~Guest9@43.242.116.127) (Quit: Connection closed) |
| 20:21:13 | <dsal> | Yeah, haddock is lacking in a few ways. I also want TH to work with it. |
| 20:22:54 | <dmj`> | an alternative haddock could be nice, could call it koi pond |
| 20:24:15 | <geekosaur> | there was at some point a discussion on cafe about incompatibilities between haddock markup and markdown that would make supporting both difficult |
| 20:29:00 | × | azeem quits (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) (Read error: Connection reset by peer) |
| 20:29:09 | → | azeem joins (~azeem@dynamic-adsl-94-34-31-95.clienti.tiscali.it) |
| 20:32:46 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
| 20:34:34 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 20:35:56 | <monochrom> | It is sad that we now have to add "bi-directional" to refer to actual literate programming. |
| 20:36:31 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 20:36:33 | <monochrom> | Candidly, lhs is merely a nicer syntax for vanilla comments. |
| 20:38:15 | <monochrom> | Literate programming needed to be invented as a thing distinct from mere comments because the biggest part is to present your code in an order the computer doesn't expect. If a system can't do this, it is not literate programming. |
| 20:39:48 | → | burnsidesLlama joins (~burnsides@dhcp168-011.wadham.ox.ac.uk) |
| 20:40:48 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 20:40:59 | → | vicfred joins (~vicfred@user/vicfred) |
| 20:41:12 | → | favonia joins (~favonia@user/favonia) |
| 20:44:40 | × | burnsidesLlama quits (~burnsides@dhcp168-011.wadham.ox.ac.uk) (Ping timeout: 268 seconds) |
| 20:45:40 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 20:49:13 | → | niemand joins (~niemand@p5796acb3.dip0.t-ipconnect.de) |
| 20:50:39 | × | niemand quits (~niemand@p5796acb3.dip0.t-ipconnect.de) (Client Quit) |
| 20:51:00 | → | acidjnk joins (~acidjnk@p200300d0c72b9505d437a5269bf657ec.dip0.t-ipconnect.de) |
| 20:51:41 | × | Null_A quits (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Remote host closed the connection) |
| 20:52:14 | <dmj`> | It would be really nice if Haskell abided by industry standards instead of custom stuff, like use toml, markdown, LLVM instead of cabal files, haddock syntax, Cmm |
| 20:53:39 | × | Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Remote host closed the connection) |
| 20:53:57 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
| 20:54:04 | → | ubert joins (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) |
| 20:55:29 | <geekosaur> | llvm's not gonna happen unless you want to try to upstream a bunch of stuff so ghc can inform llvm of cps-ed stuff |
| 20:56:01 | <geekosaur> | and then arrange for ghc to be able to do so, but nobody's going to do that until there's somewhere for it to go |
| 20:57:04 | <Rembane> | Sounds like a moment 22 |
| 20:57:45 | <geekosaur> | no, they know what needs to change and how, but it would require a bunch of llvm changes that are more or less ghc-specific |
| 20:57:54 | <geekosaur> | so they're unlikely to ever happen |
| 20:58:33 | <Rembane> | Got it! Then I misread, thank you for the clarification. |
| 20:58:48 | <noctux> | dmj`: industry standards? do you mean XML, more XML and visual-C? :P |
| 20:59:16 | <dmj`> | noctux: yes, XML over SOAP. |
| 20:59:30 | <maerwald> | dmj`: afair someone was actually working on providing a toml interface to cabal? |
| 20:59:39 | → | Null_A joins (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) |
| 20:59:41 | <maerwald> | or maybe I just imagined that |
| 21:00:33 | <dmj`> | geekosaur: what are your thoughts on GRIN as a backend for GHC |
| 21:00:36 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds) |
| 21:01:29 | → | burnsidesLlama joins (~burnsides@client-8-82.eduroam.oxuni.org.uk) |
| 21:02:35 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 21:04:12 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 21:04:36 | → | favonia joins (~favonia@user/favonia) |
| 21:05:18 | <geekosaur> | looks to me like it really wants to be a whole-program compiler? which ghc kinda doesn't |
| 21:05:33 | × | burnsidesLlama quits (~burnsides@client-8-82.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 21:05:42 | <geekosaur> | (and yet kinda does since it "fakes it" via exporting cidode in .hi files) |
| 21:05:55 | <geekosaur> | *code |
| 21:07:27 | <geekosaur> | still, makes me wonder how well grin would work if used thye way ghc would use it instead of whole-program |
| 21:07:40 | → | mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
| 21:09:43 | <geekosaur> | would really need to write out IR files instead of object files and let the backend take it from there, but I'm not sure how well ghc would work with that setup given it doesn't e.g. do that with llvm IR |
| 21:11:06 | <geekosaur> | and you couldn't mix grin backend objects with non-grin backend, like you currently can with llvm vs. asm |
| 21:11:25 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 250 seconds) |
| 21:13:22 | <geekosaur> | I think ghc would have to treat grin not as a backend but as a "way" (e.g. static vs. dynamic, or profiled vs. non-profiled) |
| 21:13:37 | <monochrom> | cabal was invented long before "industry standard" existed. |
| 21:14:02 | <monochrom> | Apart from XML. |
| 21:14:22 | <Rembane> | I wonder why industry didn't go with cabal's format. |
| 21:15:23 | <monochrom> | And JVM bytecode. |
| 21:15:50 | <geekosaur> | because it's only friendly to haskell, since haskell is friendly to parsers? |
| 21:16:18 | <dmj`> | ghc-grin forks ghc it seems, exports *all* of the STG somewhere, does the analysis, brings it back and continues on in the pipeline, to great effect. Suppose we went the nuclear option and replaced STG with GRIN. GRIN would inline the eval function (which is currently hardcoded in the RTS), then perform the WPO, then emit LLVM. |
| 21:16:19 | <geekosaur> | and the syntax is at least reminiscent of haskell |
| 21:16:34 | <dmj`> | We could even compile the RTS to GRIN and include it in the optimization phases, which would have the effect of dead code eliminating parts of the RTS that were unused, like GC for example. |
| 21:16:50 | × | hendursaga quits (~weechat@user/hendursaga) (Remote host closed the connection) |
| 21:16:52 | <geekosaur> | interesting |
| 21:17:15 | → | hendursaga joins (~weechat@user/hendursaga) |
| 21:19:03 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 21:19:03 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 255 seconds) |
| 21:19:33 | → | favonia joins (~favonia@user/favonia) |
| 21:20:33 | <dmj`> | benefits from WPO are so large even naive pointer analysis (steensgaard) is an enormous win, would still need a fast interpreter though |
| 21:21:12 | <dmj`> | thomas johnson created STG, then his final work was GRIN, but it never saw prominence in GHC, I wonder why that is |
| 21:23:53 | <geekosaur> | probably because ghc's architecture makes intervening at the stg layer more difficult than it should be |
| 21:24:36 | → | chomwitt joins (~Pitsikoko@athedsl-32487.home.otenet.gr) |
| 21:27:20 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 21:30:54 | <dmj`> | exactly, too much code at that point |
| 21:31:20 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 265 seconds) |
| 21:33:00 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 21:33:38 | → | favonia joins (~favonia@user/favonia) |
| 21:34:54 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 21:35:03 | <dmj`> | realizing that GRIN's eval inlining is the first step in undoing the overhead of lazy evaluation (while preserving semantics) was pretty mind-blowing |
| 21:36:32 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 21:37:03 | × | mcfrdy quits (~mcfrdy@user/mcfrdy) (Ping timeout: 255 seconds) |
| 21:37:24 | → | mcfrdy joins (~mcfrdy@45.67.96.175) |
| 21:37:24 | × | mcfrdy quits (~mcfrdy@45.67.96.175) (Changing host) |
| 21:37:24 | → | mcfrdy joins (~mcfrdy@user/mcfrdy) |
| 21:38:52 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 21:39:26 | × | chexum quits (~chexum@gateway/tor-sasl/chexum) (Quit: -) |
| 21:39:52 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
| 21:40:32 | × | mnrmnaugh quits (~mnrmnaugh@pool-96-252-87-182.bstnma.fios.verizon.net) (Quit: Leaving) |
| 21:40:34 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 246 seconds) |
| 21:41:19 | → | chexum joins (~chexum@gateway/tor-sasl/chexum) |
| 21:42:11 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 21:43:11 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 21:44:22 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:46:07 | × | vysn quits (~vysn@user/vysn) (Remote host closed the connection) |
| 21:46:42 | → | favonia joins (~favonia@user/favonia) |
| 21:48:43 | × | silverwhitefish quits (~hidden@47.202.102.10) (Ping timeout: 258 seconds) |
| 21:52:16 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 252 seconds) |
| 21:54:04 | × | Null_A quits (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Remote host closed the connection) |
| 21:54:40 | → | Null_A joins (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) |
| 21:55:30 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds) |
| 21:59:07 | × | Null_A quits (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) (Ping timeout: 246 seconds) |
| 21:59:57 | → | euandreh joins (~euandreh@2804:14c:33:9fe5:9d95:c71:11e4:3e0f) |
| 22:06:06 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection) |
| 22:06:20 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) |
| 22:07:47 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:09:09 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds) |
| 22:10:32 | × | yoctocell quits (~user@h87-96-130-155.cust.a3fiber.se) (Ping timeout: 255 seconds) |
| 22:13:11 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 22:14:07 | → | Atum_ joins (~IRC@user/atum/x-2392232) |
| 22:17:10 | × | ubert quits (~Thunderbi@p2e5a50e5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 22:19:46 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 258 seconds) |
| 22:19:49 | → | hexfive joins (~eric@50.35.83.177) |
| 22:20:53 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 22:32:28 | → | jmorris joins (uid433911@id-433911.stonehaven.irccloud.com) |
| 22:35:06 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 22:35:24 | → | favonia joins (~favonia@user/favonia) |
| 22:35:43 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 22:36:37 | → | lavaman joins (~lavaman@98.38.249.169) |
| 22:41:46 | × | isekaijin quits (~pyon@user/pyon) (Ping timeout: 252 seconds) |
| 22:41:54 | × | mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 265 seconds) |
| 22:42:00 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 22:47:13 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 265 seconds) |
| 22:51:15 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 22:52:40 | × | oxide quits (~lambda@user/oxide) (Ping timeout: 246 seconds) |
| 22:56:53 | × | jespada quits (~jespada@90.254.247.46) (Ping timeout: 265 seconds) |
| 22:57:12 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 22:59:23 | → | jespada joins (~jespada@90.254.247.46) |
| 23:01:38 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 23:01:47 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 23:02:17 | × | spruit11 quits (~quassel@2a02:a467:ccd6:1:4852:6669:da0c:37fe) (Ping timeout: 255 seconds) |
| 23:02:36 | <danso> | is there a typeclass that generalizes fromMaybe and fromRight? |
| 23:02:53 | <danso> | it seems closely related to Alternative, like <|> |
| 23:03:29 | <danso> | but (<|>) :: f a -> f a -> f a |
| 23:03:31 | <hpc> | :t traverse |
| 23:03:32 | <lambdabot> | (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) |
| 23:03:36 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 23:03:41 | <danso> | i'm looking for f a -> f a -> a |
| 23:03:45 | × | fendor quits (~fendor@77.119.192.173.wireless.dyn.drei.com) (Remote host closed the connection) |
| 23:04:44 | <geekosaur> | danso, what should such a typeclass do if it would fail? |
| 23:04:44 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 23:04:55 | <hpc> | maybe you want Foldable? https://hackage.haskell.org/package/base-4.15.0.0/docs/Prelude.html#t:Foldable |
| 23:05:10 | <danso> | oh you're right geekosaur |
| 23:05:18 | <danso> | i made a mistake; i want f a -> a -> a |
| 23:05:36 | <hpc> | % sum (Just 5) |
| 23:05:36 | <yahb> | hpc: 5 |
| 23:05:40 | <hpc> | % sum Nothing |
| 23:05:41 | <yahb> | hpc: 0 |
| 23:05:52 | <hpc> | % :t sum |
| 23:05:52 | <yahb> | hpc: (Foldable t, Num a) => t a -> a |
| 23:06:27 | <danso> | something like foldr (const id) is close maybe |
| 23:06:34 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 23:07:03 | <hpc> | :t foldMap |
| 23:07:04 | <lambdabot> | (Foldable t, Monoid m) => (a -> m) -> t a -> m |
| 23:07:11 | × | jushur quits (~human@user/jushur) (Quit: ¯\_(ツ)_/¯) |
| 23:07:54 | <danso> | wow, TIL Maybe is Foldable |
| 23:09:37 | <hpc> | speaking of, TIL Complex is Foldable |
| 23:09:59 | <hpc> | % sum (5 :+ 10) |
| 23:09:59 | <yahb> | hpc: 15 |
| 23:10:15 | <hpc> | and it... just combines the numbers |
| 23:10:19 | <hpc> | i don't know what i was expecting |
| 23:14:30 | <geekosaur> | o.O |
| 23:16:59 | × | _xor quits (~xor@74.215.232.67) (Quit: brb) |
| 23:18:50 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 23:21:57 | <xsperry> | that's.. interesting |
| 23:22:18 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 23:22:32 | × | acidjnk quits (~acidjnk@p200300d0c72b9505d437a5269bf657ec.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 23:22:59 | → | silverwhitefish joins (~hidden@47.202.102.10) |
| 23:23:49 | × | aallen quits (~aallen@072-182-074-253.res.spectrum.com) (Ping timeout: 246 seconds) |
| 23:27:26 | → | alphabeta joins (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) |
| 23:29:41 | → | Guest18 joins (~Guest18@2603-8080-6d0d-35bb-0000-0000-0000-0004.res6.spectrum.com) |
| 23:30:33 | × | kilolympus quits (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Ping timeout: 276 seconds) |
| 23:32:24 | × | mcfrdy quits (~mcfrdy@user/mcfrdy) (Ping timeout: 268 seconds) |
| 23:34:25 | → | spruit11 joins (~quassel@2a02:a467:ccd6:1:b030:6032:2190:671b) |
| 23:35:07 | <monochrom> | That's the natural answer to someone who expects length (x,y) = 2. Use length (x :+ y) instead. >:) |
| 23:36:48 | <geekosaur> | > length (1,2) -- "natural" |
| 23:36:49 | <lambdabot> | 1 |
| 23:37:05 | → | mcfrdy joins (~mcfrdy@45.67.96.175) |
| 23:37:05 | × | mcfrdy quits (~mcfrdy@45.67.96.175) (Changing host) |
| 23:37:05 | → | mcfrdy joins (~mcfrdy@user/mcfrdy) |
| 23:37:13 | geekosaur | originally typoed "notural" |
| 23:37:28 | × | Ariakenom__ quits (~Ariakenom@c83-255-154-140.bredband.tele2.se) (Read error: Connection reset by peer) |
| 23:39:11 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 255 seconds) |
| 23:39:13 | × | euandreh quits (~euandreh@2804:14c:33:9fe5:9d95:c71:11e4:3e0f) (Quit: WeeChat 3.2) |
| 23:39:15 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 23:39:17 | <monochrom> | And haha someone was ahead of me, Complex is a Monad too. |
| 23:39:19 | × | ph88 quits (~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
| 23:39:27 | × | spruit11 quits (~quassel@2a02:a467:ccd6:1:b030:6032:2190:671b) (Ping timeout: 255 seconds) |
| 23:39:42 | → | ph88 joins (~ph88@2a02:8109:9e00:7e5c:f938:d06a:9ad7:b39c) |
| 23:39:43 | → | dajoer joins (~david@user/gvx) |
| 23:40:38 | → | favonia joins (~favonia@user/favonia) |
| 23:44:07 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 23:44:42 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:46:58 | × | DNH quits (~DNH@2a02:8108:1100:16d8:6178:3a47:8c71:dd89) (Quit: Textual IRC Client: www.textualapp.com) |
| 23:51:39 | → | spruit11 joins (~quassel@2a02:a467:ccd6:1:b030:6032:2190:671b) |
| 23:54:45 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 255 seconds) |
| 23:56:13 | <boxscape> | % :i Complex |
| 23:56:13 | <yahb> | boxscape: type Complex :: * -> *; data Complex a = !a :+ !a; -- Defined in `Data.Complex'; instance Applicative Complex -- Defined in `Data.Complex'; instance Eq a => Eq (Complex a) -- Defined in `Data.Complex'; instance Functor Complex -- Defined in `Data.Complex'; instance Monad Complex -- Defined in `Data.Complex'; instance RealFloat a => Floating (Complex a) -- Defined in `Data.Complex'; instance RealFloat a |
| 23:56:22 | × | spruit11 quits (~quassel@2a02:a467:ccd6:1:b030:6032:2190:671b) (Ping timeout: 246 seconds) |
| 23:56:51 | <boxscape> | so Complex is really just `Pair`, with all the behavior you would expect (and then some, for the number stuff) |
| 23:56:55 | → | Null_A joins (~null_a@2601:645:8700:2290:b55a:33c2:1e1d:f229) |
| 23:57:31 | <geekosaur> | so if you ever need that value with a type that's both Num and Monad… |
| 23:58:19 | <boxscape> | % (1 :+ 2) >>= (\x -> x :+ x) |
| 23:58:19 | <yahb> | boxscape: 1 :+ 2 |
| 23:59:22 | <monochrom> | :) |
All times are in UTC on 2021-07-17.