Logs on 2021-08-20 (liberachat/#haskell)
| 00:01:47 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 268 seconds) |
| 00:02:15 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 00:03:30 | × | Gurkenglas_ quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 250 seconds) |
| 00:16:42 | × | jgeerds quits (~jgeerds@55d4b311.access.ecotel.net) (Ping timeout: 245 seconds) |
| 00:20:41 | × | Reyu[M] quits (~reyureyuz@matrix.reyuzenfold.com) (Read error: Connection reset by peer) |
| 00:21:09 | → | alx741 joins (~alx741@181.196.69.234) |
| 00:23:18 | → | polyphem joins (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) |
| 00:25:47 | <lechner> | Hi, I struggle with conditionals. Is it possible, in principle, to assign different values to the same variable, depending on a condition? I know only how to branch execution with Either. Thanks! |
| 00:27:25 | <geekosaur> | > let bar = 5; foo | bar < 5 = 2 | otherwise = 1 in foo |
| 00:27:27 | <lambdabot> | 1 |
| 00:27:39 | <geekosaur> | > let bar = 4; foo | bar < 5 = 2 | otherwise = 1 in foo |
| 00:27:40 | <lambdabot> | 2 |
| 00:27:43 | <Axman6> | foo = = case something of Left x -> ...; Right y -> ... |
| 00:27:59 | <Axman6> | foo = if cond then a else b |
| 00:28:22 | <alexfmpe[m]> | > bool 1 2 True |
| 00:28:24 | <lambdabot> | 2 |
| 00:30:12 | <dsal> | lechner: Also, your variables don't. :) Do you have an example of what you'd like to see? |
| 00:30:43 | <lechner> | dsal: that was exactly my issue! |
| 00:30:55 | <lechner> | geekosaur: okay, that looks very Haskell-y. thanks! |
| 00:32:15 | <lechner> | Axman6: i think ignored the "if then else" construct so far, for fear of falling into old harits |
| 00:32:22 | <lechner> | habits |
| 00:32:47 | → | lavaman joins (~lavaman@98.38.249.169) |
| 00:33:00 | <Axman6> | if is basically jjust syntax sugar for case cond of True -> a; False -> b (and will compile to exactly that) |
| 00:33:24 | <Axman6> | we don't have the less safe if-then, only if-then-else |
| 00:33:45 | <lechner> | Axman6: thanks for that explanation! |
| 00:33:46 | <Axman6> | but yes, if you can use something more meaningful like a case statement on constructors with more meaningful names, do that |
| 00:34:09 | <Axman6> | prefer case x of Nothing -> ... over if x == Nothing then ... |
| 00:34:59 | <lechner> | it looks like haskell actually has everything other languages have, and more |
| 00:35:15 | <dsal> | Haskell's missing a lot of things that makes it harder to replicate certain bugs. |
| 00:35:18 | <lechner> | as usual, my brain is the problem |
| 00:35:44 | <Axman6> | you can write PHP in any language though, C too, yes even in Haskell |
| 00:36:30 | <dsal> | You can spin up a bunch of IORefs and make sure everything in your program runs in IO and has them in scope. It's just harder than doing something sensible. :) |
| 00:37:18 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
| 00:38:09 | × | jacks2 quits (~bc8167eb@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout)) |
| 00:38:21 | <lechner> | dsal: i am slowly translating my Perl. according to emily p's recent podcast Perl is a common gateway drug at minute 4:00 https://www.buzzsprout.com/1817535/8984158-01-emily-pillmore |
| 00:39:23 | <lechner> | dsal: $commitish here was giving me hives https://salsa.debian.org/lintian/kickoff/-/blob/master/add-lintian-tags#L112-134 |
| 00:39:26 | <dsal> | Interesting. I've not intentionally touched perl in a probably 20 years. |
| 00:39:36 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 00:39:44 | <lechner> | i inherited it |
| 00:40:35 | <lechner> | but the lack of typing drove me over here |
| 00:42:13 | <lechner> | dsal: you programmed Haskell for twenty years? |
| 00:42:17 | <dsal> | `committish <- computeCommttish (intercalate "." [major, minor, "0"]) patch` |
| 00:42:49 | <dsal> | Woah. My oldest haskell code is almost that old. But no, most of the last 20 years, I've been doing other random junk. |
| 00:43:32 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 00:43:53 | <dsal> | I haven't done very serious haskell until a few years ago. |
| 00:51:40 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 240 seconds) |
| 00:54:47 | <lechner> | dsal: unbelievable, one line! which OS do you use? |
| 00:55:13 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 00:55:39 | → | Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
| 00:58:35 | <janus> | is there a commonly used name for 'flip foldMap' ? |
| 01:01:35 | <janus> | i really only need it for Maybe, and then the name "whenJust" makes sense. but that is already used in Neil Mitchell's extra package, where it returns 'm ()' (so it's not really the same at all) |
| 01:02:07 | <janus> | whenJustOrMempty? argh it sounds horrible |
| 01:03:03 | <Axman6> | :t fold foldMap |
| 01:03:04 | <lambdabot> | (Monoid m, Foldable t, Foldable ((->) (a -> m))) => t a -> m |
| 01:03:17 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 01:03:20 | <Axman6> | :t flip foldMap -- oops |
| 01:03:21 | <lambdabot> | (Foldable t, Monoid c) => t a -> (a -> c) -> c |
| 01:04:35 | <janus> | % :m +Data.Foldable +Data.Monoid |
| 01:04:35 | <yahb> | janus: syntax: :module [+/-] [*]M1 ... [*]Mn |
| 01:04:52 | <janus> | hmm, dunno why that is not working |
| 01:05:01 | <janus> | % foldMap Sum Nothing :: Sum Int |
| 01:05:01 | <yahb> | janus: Sum {getSum = 0} |
| 01:05:10 | <janus> | % foldMap Sum (Just 5) :: Sum Int |
| 01:05:10 | <yahb> | janus: Sum {getSum = 5} |
| 01:05:56 | <janus> | but i really wanted to use it in an HTML AST of an Elm AST, to render optionally available elements |
| 01:06:10 | <janus> | s/Elm AST/Elm clone/ |
| 01:06:33 | → | lavaman joins (~lavaman@98.38.249.169) |
| 01:06:47 | <janus> | so the rendering function is way larger than the maybe (which comes from the model). that's why the flip makes sense |
| 01:07:14 | <janus> | similar to how the State functions have flipped versions available |
| 01:08:59 | × | shailangsa quits (~shailangs@host86-145-14-24.range86-145.btcentralplus.com) (Ping timeout: 268 seconds) |
| 01:09:45 | <janus> | maybe i should just write a letter to Neil and ask him to rename his function and break everybody's code, pretty please :P |
| 01:10:22 | <dsal> | @hoogle whenJust |
| 01:10:23 | <lambdabot> | Control.Monad.Extra whenJust :: Applicative m => Maybe a -> (a -> m ()) -> m () |
| 01:10:23 | <lambdabot> | Extra whenJust :: Applicative m => Maybe a -> (a -> m ()) -> m () |
| 01:10:23 | <lambdabot> | Data.GI.Base.Utils whenJust :: Monad m => Maybe a -> (a -> m ()) -> m () |
| 01:10:40 | <dsal> | :t traverse |
| 01:10:41 | <lambdabot> | (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) |
| 01:10:55 | × | Guest372 quits (~xxx@47.245.54.240) (Remote host closed the connection) |
| 01:11:06 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
| 01:11:14 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:12:02 | → | Guest372 joins (~xxx@47.245.54.240) |
| 01:12:20 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:13:21 | <dsal> | Giving stuff a local name isn't a bad idea. |
| 01:13:42 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2) |
| 01:15:16 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 01:15:41 | <janus> | even if the name is clashing with another well known function ;) ? |
| 01:15:42 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 01:16:02 | <janus> | i could call it whenJustF because of the foldable. but the F usually means functor, right? so even more confusing |
| 01:16:35 | → | Danishman joins (~Allan@2-104-144-110-cable.dk.customer.tdc.net) |
| 01:17:06 | <janus> | oh well, if i put Just in the name, the F is wrong anyway, it is already constraint to a specific Foldable... |
| 01:19:17 | <janus> | onJust? hmmm... it has nothing to do with `on` from Data.Function o_O |
| 01:19:25 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 252 seconds) |
| 01:19:47 | <janus> | can't use "ifJust", functions with "if" are expected to run on Bools |
| 01:22:32 | → | keutoi joins (~keutoi@157.48.195.127) |
| 01:22:41 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 248 seconds) |
| 01:27:32 | → | mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
| 01:30:48 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 01:33:55 | <monochrom> | Life hack: If you use snake case, you will not clash with the standard library, or any library for that matter. |
| 01:37:32 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
| 01:38:24 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds) |
| 01:41:46 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds) |
| 01:42:50 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 01:44:37 | × | xff0x quits (~xff0x@2001:1a81:53ce:4000:6528:22c2:50dd:57c1) (Ping timeout: 245 seconds) |
| 01:46:28 | → | xff0x joins (~xff0x@2001:1a81:5207:3100:ba2d:6a43:7e07:c407) |
| 01:47:40 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds) |
| 01:48:10 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 01:48:45 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 01:53:28 | → | sleblanc joins (~sleblanc@user/sleblanc) |
| 01:55:56 | <Axman6> | you might clash with style guides and other developers however |
| 01:57:54 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2) |
| 02:00:54 | <dsal> | I have `justM :: Monad m => (a -> m ()) -> Maybe a -> m ()` |
| 02:01:13 | wrengr | is now known as wrengr_away |
| 02:01:35 | <Cajun> | snake case also gets hlint mad :P |
| 02:01:49 | <dsal> | It makes sense in my codebase. I don't know that I would worry about a thing a person somewhere did. |
| 02:02:19 | × | wrengr_away quits (~wrengr@56.4.82.34.bc.googleusercontent.com) (Quit: leaving) |
| 02:02:48 | <dsal> | (that function, btw, is `traverse_` but it's clearly more readable in my codebase as `justM`) |
| 02:02:59 | → | wrengr joins (~wrengr@56.4.82.34.bc.googleusercontent.com) |
| 02:03:55 | wrengr | is now known as wrengr_away |
| 02:05:40 | × | Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Ping timeout: 240 seconds) |
| 02:21:48 | × | alx741 quits (~alx741@181.196.69.234) (Quit: alx741) |
| 02:23:13 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 252 seconds) |
| 02:25:08 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:25:50 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 02:39:36 | × | mmalter quits (~mmalter@88.171.43.194) (Quit: Lost terminal) |
| 02:41:57 | → | nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
| 02:42:10 | × | td_ quits (~td@94.134.91.118) (Ping timeout: 240 seconds) |
| 02:46:52 | × | nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
| 02:49:03 | → | td_ joins (~td@94.134.91.77) |
| 02:56:08 | <dsal> | lechner: macos and nixos |
| 03:00:26 | × | mousey quits (~skymouse@gateway/tor-sasl/mousey) (Remote host closed the connection) |
| 03:00:47 | → | mousey joins (~skymouse@gateway/tor-sasl/mousey) |
| 03:06:35 | → | vysn joins (~vysn@user/vysn) |
| 03:06:57 | → | bakinonion[m] joins (~bakinonio@2001:470:69fc:105::ddb3) |
| 03:21:38 | → | slack1256 joins (~slack1256@191.125.37.143) |
| 03:25:33 | × | Guest9886 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 03:26:28 | × | otto_s quits (~user@p5de2f223.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 03:28:18 | × | aegon quits (~mike@174.127.249.180) (Quit: leaving) |
| 03:28:21 | → | otto_s joins (~user@p5de2f5f0.dip0.t-ipconnect.de) |
| 03:28:55 | → | dsrt^ joins (~dsrt@209.65.131.194) |
| 03:33:54 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:37:25 | → | vicfred joins (~vicfred@user/vicfred) |
| 03:45:00 | → | drstripedsocks joins (~aaashutos@113.199.180.28) |
| 03:45:29 | × | drstripedsocks quits (~aaashutos@113.199.180.28) (Client Quit) |
| 03:53:31 | × | tabemann quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection) |
| 03:55:27 | → | tabemann joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) |
| 03:56:03 | → | nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
| 03:57:31 | × | tabemann quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection) |
| 03:58:00 | → | tabemann joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) |
| 04:01:00 | → | PinealGlandOptic joins (~PinealGla@37.115.210.35) |
| 04:03:38 | <lechner> | dsal: bummer, i had hoped to win you as a debian contributor. so much talent! |
| 04:07:40 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 04:09:22 | × | nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
| 04:17:04 | × | sleblanc quits (~sleblanc@user/sleblanc) (Ping timeout: 252 seconds) |
| 04:41:10 | × | t0zy quits (~t0zy@49.207.220.61) (Ping timeout: 240 seconds) |
| 04:41:55 | → | t0zy joins (~t0zy@2402:3a80:d00:f3c6::3fd7:9319) |
| 04:51:51 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 04:56:10 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 240 seconds) |
| 04:56:15 | → | shailangsa joins (~shailangs@host86-186-136-25.range86-186.btcentralplus.com) |
| 04:57:46 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds) |
| 05:02:03 | × | slack1256 quits (~slack1256@191.125.37.143) (Remote host closed the connection) |
| 05:08:14 | → | fef joins (~thedawn@user/thedawn) |
| 05:09:42 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 05:14:37 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 05:19:13 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds) |
| 05:24:10 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 240 seconds) |
| 05:27:40 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 05:30:35 | → | kstuart joins (~user@185.92.25.246) |
| 05:30:40 | × | xff0x quits (~xff0x@2001:1a81:5207:3100:ba2d:6a43:7e07:c407) (Ping timeout: 240 seconds) |
| 05:31:11 | → | cheater joins (~Username@user/cheater) |
| 05:31:39 | → | xff0x joins (~xff0x@2001:1a81:5207:3100:686a:e8fd:47a9:633d) |
| 05:32:49 | × | danso quits (~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 248 seconds) |
| 05:35:52 | × | polyphem quits (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) (Ping timeout: 245 seconds) |
| 05:41:07 | → | Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
| 05:41:40 | × | Danishman quits (~Allan@2-104-144-110-cable.dk.customer.tdc.net) (Quit: Leaving) |
| 05:42:13 | × | Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Client Quit) |
| 05:51:04 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:52:12 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 05:57:35 | → | img joins (~img@user/img) |
| 05:58:40 | × | t0zy quits (~t0zy@2402:3a80:d00:f3c6::3fd7:9319) (Ping timeout: 240 seconds) |
| 06:04:13 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 06:06:55 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 06:08:26 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 06:11:32 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 06:11:45 | × | Cale quits (~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Ping timeout: 248 seconds) |
| 06:11:50 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds) |
| 06:12:08 | → | Cale joins (~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) |
| 06:15:04 | × | Megant quits (megant@user/megant) (Ping timeout: 268 seconds) |
| 06:16:23 | → | Megant joins (megant@user/megant) |
| 06:28:28 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 06:30:21 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 06:34:24 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 06:34:48 | × | keutoi quits (~keutoi@157.48.195.127) (Ping timeout: 250 seconds) |
| 06:36:51 | → | keutoi joins (~keutoi@157.48.195.127) |
| 06:38:25 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 06:40:04 | × | doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 252 seconds) |
| 06:40:12 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 06:40:16 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 06:44:20 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 250 seconds) |
| 06:56:54 | × | azeem quits (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 250 seconds) |
| 06:58:38 | → | azeem joins (~azeem@176.200.243.66) |
| 07:00:43 | × | azeem quits (~azeem@176.200.243.66) (Read error: Connection reset by peer) |
| 07:01:22 | → | d0ku joins (~d0ku@178.43.198.70.ipv4.supernova.orange.pl) |
| 07:02:10 | → | azeem joins (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) |
| 07:03:52 | → | lortabac joins (~lortabac@62.98.47.131) |
| 07:04:04 | → | amk joins (~amk@109.255.169.126) |
| 07:07:36 | → | fendor joins (~fendor@213162073025.public.t-mobile.at) |
| 07:09:42 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 07:14:14 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 250 seconds) |
| 07:22:59 | × | Guest372 quits (~xxx@47.245.54.240) (Remote host closed the connection) |
| 07:24:07 | → | Guest372 joins (~xxx@47.245.54.240) |
| 07:29:00 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 07:31:23 | → | acidjnk_new3 joins (~acidjnk@p200300d0c72b950070172e7c3c578523.dip0.t-ipconnect.de) |
| 07:33:18 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds) |
| 07:35:31 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:37:56 | → | kuribas joins (~user@ptr-25vy0i7hpbjw2llku95.18120a2.ip6.access.telenet.be) |
| 07:37:57 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
| 07:39:01 | → | MQ-17J joins (~MQ-17J@8.6.144.209) |
| 07:40:28 | → | ubert joins (~Thunderbi@178.115.64.138.wireless.dyn.drei.com) |
| 07:40:49 | → | Boomerang joins (~Boomerang@xd520f68c.cust.hiper.dk) |
| 07:42:39 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:48:32 | <kuribas> | Why does this work: (set #specific_fields () . set #annotations ()) dm |
| 07:48:42 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 07:48:56 | <kuribas> | But not this? set (#specific_fields `adjoin` #annotations) () |
| 07:49:14 | → | jgeerds joins (~jgeerds@55d4b311.access.ecotel.net) |
| 07:49:19 | <kuribas> | both #specific_fields and #annotations are (polymorphic) fields. |
| 07:49:37 | <kuribas> | So the label should be lenses, which can be joined as traversals, right? |
| 07:52:48 | × | mousey quits (~skymouse@gateway/tor-sasl/mousey) (Remote host closed the connection) |
| 07:52:59 | → | mousey joins (~skymouse@gateway/tor-sasl/mousey) |
| 07:54:19 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
| 07:56:18 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 08:00:39 | → | ubert1 joins (~Thunderbi@178.115.64.138.wireless.dyn.drei.com) |
| 08:01:19 | <c_wraith> | kuribas: the type of adjoin prevents polymorphic optics |
| 08:01:29 | <c_wraith> | @let import Control.Lens.Unsound |
| 08:01:30 | <lambdabot> | Defined. |
| 08:01:33 | <c_wraith> | :t adjoin |
| 08:01:34 | <lambdabot> | Applicative f => Traversal' s a -> Traversal' s a -> (a -> f a) -> s -> f s |
| 08:01:46 | <c_wraith> | those are monomorphic |
| 08:03:07 | → | bebenon joins (~bebenon@5.44.169.233) |
| 08:03:40 | × | ubert quits (~Thunderbi@178.115.64.138.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
| 08:03:40 | ubert1 | is now known as ubert |
| 08:04:02 | × | bebenon quits (~bebenon@5.44.169.233) (Client Quit) |
| 08:04:15 | <kuribas> | c_wraith: ah right, thanks! |
| 08:04:16 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 08:04:28 | → | jumper149 joins (~jumper149@80.240.31.34) |
| 08:04:37 | <kuribas> | c_wraith: btw, this is Optics... |
| 08:05:03 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 08:05:07 | <c_wraith> | can't tell by the code you provided, which is the same with either |
| 08:05:25 | <kuribas> | yeah, it's the same problem |
| 08:05:36 | → | hendursa1 joins (~weechat@user/hendursaga) |
| 08:05:49 | <kuribas> | Using two set is probably better anyway, but I wanted to know why it failed. |
| 08:06:53 | → | trcc joins (~trcc@users-5343.st.net.au.dk) |
| 08:08:03 | × | hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
| 08:08:04 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 252 seconds) |
| 08:08:04 | <kuribas> | It seems rather easy to go from lenses to optics. |
| 08:08:28 | → | polyphem joins (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) |
| 08:08:31 | <kuribas> | Optics seem cleaner, especially when using labels. |
| 08:08:32 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 08:08:42 | → | gentauro_ joins (~gentauro@185.107.12.141) |
| 08:09:04 | × | gentauro_ quits (~gentauro@185.107.12.141) (Client Quit) |
| 08:09:24 | → | gentauro_ joins (~gentauro@185.107.12.141) |
| 08:09:24 | × | gentauro_ quits (~gentauro@185.107.12.141) (Client Quit) |
| 08:12:09 | × | hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:14:07 | → | vpan joins (~vilius@212.117.1.172) |
| 08:17:39 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 08:17:39 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 08:17:42 | allbery_b | is now known as geekosaur |
| 08:22:45 | → | dunj3 joins (~dunj3@2001:16b8:30a8:2000:7c3b:4a4d:e83e:847a) |
| 08:26:57 | × | aman quits (~aman@user/aman) (Ping timeout: 258 seconds) |
| 08:26:57 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Read error: Connection reset by peer) |
| 08:27:24 | → | aman joins (aman@user/aman) |
| 08:27:50 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 08:27:58 | → | nschoe joins (~quassel@2a01:e0a:8e:a190:1cfd:5590:1382:edd9) |
| 08:33:45 | → | burnside_ joins (~burnsides@client-8-91.eduroam.oxuni.org.uk) |
| 08:34:22 | × | burnside_ quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 08:34:48 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
| 08:35:00 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 08:36:46 | × | tput quits (~tim@S0106a84e3fe54613.ed.shawcable.net) (Remote host closed the connection) |
| 08:37:11 | → | tput joins (~tim@S0106a84e3fe54613.ed.shawcable.net) |
| 08:38:42 | × | vicfred quits (~vicfred@user/vicfred) (Quit: Leaving) |
| 08:40:57 | → | Obo joins (~roberto@h-46-59-103-134.a498.priv.bahnhof.se) |
| 08:50:10 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 240 seconds) |
| 08:57:27 | × | zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection) |
| 08:59:12 | × | trcc quits (~trcc@users-5343.st.net.au.dk) (Ping timeout: 245 seconds) |
| 09:02:31 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 09:05:37 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds) |
| 09:06:07 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 09:06:57 | → | Guest610 joins (~Guest6@115.98.232.12) |
| 09:07:20 | <Guest610> | hi .. I am a newbie to haskell.. just started with LYAH |
| 09:07:33 | <[exa]> | hi, welcome! |
| 09:08:25 | <Guest610> | Is this the right forum for a beginner to ask questions on haskell ? |
| 09:08:35 | <[exa]> | yes |
| 09:09:30 | <[exa]> | if there's a lot of traffic here with categories thrown all around the place (currently not the case as you see), there is a dedicated beginner channel, but I guess it's always better to ask here |
| 09:09:44 | <Guest610> | thanks |
| 09:09:59 | × | betelgeuse quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer) |
| 09:10:22 | <Guest610> | I have a list of tuples to which i want to merge a list of integers and create a new list |
| 09:10:50 | <Guest610> | alist = [("a",1,2), ("b",5,6)] blist = [4,8] newList = zip alist blist.. which gives [(("a",1,2),4),(("b",5,6),8)] which does not get the element inside the tuple. |
| 09:10:51 | → | betelgeuse joins (~betelgeus@94-225-47-8.access.telenet.be) |
| 09:11:26 | <[exa]> | yeah, `zip` always constructs 2-tuples |
| 09:11:52 | <Guest610> | how do i get the output newlist = [("a",1,2,4), ("b",5,6,8)] |
| 09:11:57 | <[exa]> | there might be a function for "flattening" the tuples, but I think you might be better off just making it manually |
| 09:12:24 | <Guest610> | well i have reached only chap 5.. |
| 09:12:35 | <Guest610> | are there some concepts i need to look at |
| 09:12:39 | <[exa]> | > zipWith (\(a,b,c) d -> (a,b,c,d)) [(1,2,'a'), (2,3,'b')] [5,6] |
| 09:12:40 | <lambdabot> | [(1,2,'a',5),(2,3,'b',6)] |
| 09:12:43 | <Guest610> | or is there an in build function |
| 09:13:35 | <[exa]> | does that ^ look fine or should we improve? :] |
| 09:14:08 | <Guest610> | I am sorry to labour on this.. is zipWith and in built function or part of anylibrary or you have custom developed it.. |
| 09:14:17 | <Guest610> | i did not get this on hoogle.. |
| 09:14:39 | <[exa]> | zipWith is a built-in generalization of zip, yes |
| 09:15:33 | <Guest610> | great.. thanks.. |
| 09:15:52 | <[exa]> | if you didn't find it on hoogle...taht would be weird, mine is full of zipWiths |
| 09:17:16 | <Guest610> | sorry my mistake.. the drop down was set to package: |
| 09:17:27 | <[exa]> | np :] |
| 09:17:49 | → | mastarija joins (~mastarija@78-3-210-70.adsl.net.t-com.hr) |
| 09:20:02 | <[exa]> | Guest610: there might be a way to construct that "merging" function from stuff like uncurry3 and curry4 in Data.Tuple.Extra but that might be a bit mindbending exercise at this stage. :] |
| 09:21:17 | <Guest610> | will jot it down..should come in handy by the time i finish the book.. thanks for your help.. |
| 09:22:33 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 09:23:37 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
| 09:26:04 | → | zer0bitz joins (~zer0bitz@dsl-hkibng31-58c384-213.dhcp.inet.fi) |
| 09:26:38 | <[exa]> | Guest610: seems like it can be really constructed as such: |
| 09:26:44 | <[exa]> | uncurry3 (curry4 id) :: (a, b, c) -> d -> (a, b, c, d) |
| 09:27:08 | <[exa]> | which corresponds to |
| 09:27:36 | <[exa]> | :t \(a,b,c) d -> (a,b,c,d) |
| 09:27:38 | <lambdabot> | (a, b, c) -> d -> (a, b, c, d) |
| 09:27:56 | <[exa]> | </unneeded_exercise> |
| 09:28:05 | <Guest610> | no .. its useful.. |
| 09:28:15 | <Guest610> | i just have not reached uncurry .. |
| 09:30:48 | <[exa]> | ah okay, worry not then. curry/uncurry is a way to transform functions that work on tuples to functions that work on curry-style multiple parameters, which kindof helped here: I took a function that does nothing (id), assumed it works with tuples and curried it to work with normal parameters (curry4), and then converted the first 3 params of that to work on tuples again (uncurry3) |
| 09:31:12 | <[exa]> | simpler example: |
| 09:31:33 | <[exa]> | > map (uncurry (+)) [(1,2), (5,6)] |
| 09:31:35 | <lambdabot> | [3,11] |
| 09:32:13 | <Guest610> | ok.. |
| 09:32:24 | <Guest610> | so uncurry has the impact of unpacking elements in tuples ?? |
| 09:32:56 | <[exa]> | not erally impact, but you can use it to convert functions from tuple-ish to parameter-ish (and back) |
| 09:33:08 | <[exa]> | :t (+) |
| 09:33:08 | <Guest610> | ok |
| 09:33:09 | <lambdabot> | Num a => a -> a -> a |
| 09:33:16 | <[exa]> | :t uncurry (+) |
| 09:33:17 | <lambdabot> | Num c => (c, c) -> c |
| 09:33:44 | <Guest610> | great |
| 09:33:45 | <[exa]> | (+) takes 2 numeric arguments, `uncurry (+)` takes a 2-tuple argument of numeric stuff |
| 09:33:46 | <Guest610> | thanks |
| 09:34:38 | <Guest610> | map (uncurry (+)) [(1,2,3), (5,6,8)] |
| 09:34:58 | <Guest610> | >map (uncurry (+)) [(1,2,3), (5,6,8)] |
| 09:36:11 | <Guest610> | ok.. |
| 09:36:19 | <[exa]> | probably needs the space behind > |
| 09:36:44 | <[exa]> | anyways this will fail because (+) only takes 2 arguments, not 3 |
| 09:37:54 | <[exa]> | anyway, fun extra exercise: 1] construct `zip` from `zipWith` (that should be easy), and 2] construct `zipWith` from `map`,`zip`,and `uncurry` (that's a bit harder) |
| 09:39:35 | → | trcc joins (~trcc@users-5343.st.net.au.dk) |
| 09:41:28 | <[exa]> | Guest610: btw your sample needs uncurrying to 3-tuples, which lambdabot doesn't have loaded apparently, so: |
| 09:41:59 | <[exa]> | > let sum3 a b c = a+b+c; uncurry3 f (a,b,c) = f a b c in map (uncurry3 sum3) [(1,2,3), (2,3,4)] |
| 09:42:01 | <lambdabot> | [6,9] |
| 09:45:14 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 09:45:46 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 09:45:56 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 09:46:50 | <Guest610> | ..thanks |
| 09:48:45 | × | Guest610 quits (~Guest6@115.98.232.12) (Quit: Client closed) |
| 09:49:21 | × | kilolympus quits (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Ping timeout: 248 seconds) |
| 09:49:50 | → | oxide joins (~lambda@user/oxide) |
| 09:51:58 | × | kstuart quits (~user@185.92.25.246) (Ping timeout: 250 seconds) |
| 09:53:16 | × | shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit) |
| 09:54:40 | × | jespada quits (~jespada@90.254.247.46) (Ping timeout: 240 seconds) |
| 09:56:15 | → | kilolympus joins (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) |
| 09:56:17 | → | jespada joins (~jespada@90.254.247.46) |
| 09:56:50 | × | oxide quits (~lambda@user/oxide) (Quit: oxide) |
| 09:58:20 | → | oxide joins (~lambda@user/oxide) |
| 09:58:36 | → | tengu1 joins (~tengu1@cpe-70-121-244-14.neb.res.rr.com) |
| 10:01:02 | × | oxide quits (~lambda@user/oxide) (Client Quit) |
| 10:01:35 | → | oxide joins (~lambda@user/oxide) |
| 10:05:03 | × | oxide quits (~lambda@user/oxide) (Client Quit) |
| 10:06:00 | → | oxide joins (~lambda@user/oxide) |
| 10:10:25 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 10:10:28 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 246 seconds) |
| 10:10:51 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 10:21:38 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 10:22:04 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 10:26:10 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 10:28:55 | → | o1lo01ol1o joins (~o1lo01ol1@bl13-86-242.dsl.telepac.pt) |
| 10:29:32 | × | o1lo01ol1o quits (~o1lo01ol1@bl13-86-242.dsl.telepac.pt) (Remote host closed the connection) |
| 10:29:44 | → | o1lo01ol1o joins (~o1lo01ol1@bl13-86-242.dsl.telepac.pt) |
| 10:32:00 | × | oxide quits (~lambda@user/oxide) (Quit: oxide) |
| 10:32:31 | → | Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
| 10:35:42 | × | ablutor quits (~quassel@wasscher.com) (Quit: going for vitamine d) |
| 10:36:30 | → | ablutor joins (~quassel@wasscher.com) |
| 10:36:42 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 10:36:44 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 10:37:10 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 10:38:31 | × | fendor quits (~fendor@213162073025.public.t-mobile.at) (Remote host closed the connection) |
| 10:41:00 | → | oxide joins (~lambda@user/oxide) |
| 10:54:50 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 10:56:44 | <mastarija> | Can someone remind me what's it called when we can have a valid e.g. "Monad" instance if only we could put a constraint on the "inner" type? |
| 10:56:56 | <mastarija> | Constrained instances, bound instances...? |
| 10:57:34 | <Rembane_> | Is it a scoped instance? |
| 10:57:38 | <dminuoso> | mastarija: I dont understand the question entirely. |
| 10:57:41 | <dminuoso> | Can you give a concrete example? |
| 10:58:03 | <mastarija> | Hm... let's say I could make an Applicative instance |
| 10:58:34 | <mastarija> | But only if the target e.g. instance Monoid n => Applicative (MyType n) where |
| 10:59:02 | <mastarija> | And MyType : * -> * |
| 10:59:13 | <mastarija> | not * -> * -> * |
| 10:59:57 | <mastarija> | Basically, I could make an Applicative instance if only I can constrain the argument of MyType |
| 11:00:00 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:00:02 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 11:00:29 | <dminuoso> | mastarija: From a type checker point of view you have an `Applicative` instance for all n of `MyType n` |
| 11:00:45 | <dminuoso> | It just defers the `Monoid n` constraint to somewhere else |
| 11:01:02 | → | alx741 joins (~alx741@181.196.69.234) |
| 11:01:11 | <mastarija> | I mean, it's not possible to do what I want with standard type classes |
| 11:01:44 | <mastarija> | There's a library with constrained type classes for that purpose, but my brain can't recall what it is called |
| 11:03:14 | <dminuoso> | mastarija: You can observe this fact since it would match that instance for `Applicative (MyType Int)`, even if there's no `Monoid Int` |
| 11:03:40 | <dminuoso> | So the constraint does not constrain the instance itself |
| 11:04:08 | <mastarija> | I want to use e.g. "mempty" within my implementation of "Applicative" instance |
| 11:04:41 | <dminuoso> | Maybe my wording slightly off. |
| 11:04:42 | <mastarija> | And I want to have "Applicative" instance for all "MyType n" |
| 11:05:01 | → | drsocks joins (~aaashutos@113.199.180.28) |
| 11:05:17 | <mastarija> | dminuoso, Maybe it's me, didn't get enough sleep today :D |
| 11:05:38 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 11:05:46 | × | drsocks quits (~aaashutos@113.199.180.28) (Client Quit) |
| 11:06:11 | <alp> | mastarija, constrained is the right term I think. see e.g https://hackage.haskell.org/package/constrained-monads |
| 11:06:57 | <mastarija> | alp, ah yes.. |
| 11:07:01 | <mastarija> | that's it |
| 11:07:22 | <alp> | i.e your MyType is a monad or applicative or something only if the type parameters it will get satisfy some constraint |
| 11:07:32 | <mastarija> | Yes |
| 11:07:47 | <dminuoso> | alp: Mmm, so this would allow us to have Monad for Set? |
| 11:07:50 | <alp> | eg what one would want for Set to be a functor/applicative/monad, because of the Ord |
| 11:07:56 | <dminuoso> | Neat! |
| 11:08:13 | <dminuoso> | I thought we needed quantified constraints for that |
| 11:08:18 | <dminuoso> | Maybe I misremembered |
| 11:08:21 | <alp> | dminuoso, indeed: https://hackage.haskell.org/package/constrained-monads-0.5.0.0/docs/src/Control-Monad-Constrained.html#line-892 |
| 11:10:30 | × | vpan quits (~vilius@212.117.1.172) (Quit: Leaving.) |
| 11:10:37 | <alp> | dminuoso, I don't think that'd be enough. because the fmap you'd have to implement (with the standard Functor class) would still be required to have type forall a b. (a -> b) -> Set a -> Set b, no Ord in sight |
| 11:11:46 | → | acidjnk_new joins (~acidjnk@p200300d0c72b9557dc14868c6ad3e278.dip0.t-ipconnect.de) |
| 11:11:56 | <alp> | whereas this whole constrained line of thinking lets you specify a suitable constraint that's "made available to you" when you implement the method |
| 11:12:32 | <mastarija> | Hm... is it possible to implement the Unconstrained version of e.g. Functor using the constrained version? |
| 11:12:37 | <dminuoso> | Presumably it just reifies the dict with `constraints` and gives it to you |
| 11:14:51 | <mastarija> | It seems like it would be possible to do it as long as we do e.g. "instance Constrained.Functor f => UnConstrainde.Functor f where {use constrained methods to implement uncinstrained methods}" |
| 11:14:51 | × | acidjnk_new3 quits (~acidjnk@p200300d0c72b950070172e7c3c578523.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 11:14:51 | <arahael> | Hmph, it seems I can't use hip in haskell 8.10. |
| 11:16:32 | <alp> | mastarija, calling the constrained methods will bring up e.g the Ord constraints for Set, that you'll never have available when implementing the unconstrained variant. fmap :: forall a b. (a -> b) -> Set a -> Set b is the type your unconstrained implementation needs to have, which (kinda purposefully) prevents you from assuming anything about 'a' and 'b'. |
| 11:16:32 | × | xsarnik quits (xsarnik@lounge.fi.muni.cz) (Remote host closed the connection) |
| 11:17:39 | <mastarija> | Ah.. yes. Now that I think about it |
| 11:18:31 | <alp> | you can play some tricks by "decorating" the Set type instead of changing the classes to allow for constraints though, e.g https://hackage.haskell.org/package/set-monad |
| 11:19:09 | × | smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Quit: Reconnecting) |
| 11:19:13 | <alp> | you essentially make constructors to represent the operations of the classes you want to implement: https://hackage.haskell.org/package/set-monad-0.3.0.0/docs/src/Data.Set.Monad.html#Set |
| 11:19:23 | → | smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32) |
| 11:20:05 | <alp> | and when you actually need to grab the results, you "collapse" those operations, which is the role of that 'run' function there |
| 11:20:16 | × | smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Client Quit) |
| 11:20:31 | → | smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32) |
| 11:20:39 | × | Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt) |
| 11:21:54 | <alp> | this particular Set monad example is well covered in http://okmij.org/ftp/Haskell/set-monad.html - gives you a decent overview of the various techniques one can use in such situations |
| 11:28:53 | → | dschrempf joins (~dominik@92-249-159-252.pool.digikabel.hu) |
| 11:30:38 | × | oxide quits (~lambda@user/oxide) (Quit: oxide) |
| 11:33:10 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 11:33:54 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 11:34:33 | → | hexfive joins (~eric@50.35.83.177) |
| 11:37:57 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 11:39:26 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 250 seconds) |
| 11:49:09 | <arahael> | https://gist.github.com/arafangion/ce4dca31b13675902d8535903fcb695b Is there anything I can do to resolve this dependency issue? |
| 11:49:37 | <arahael> | I'm not sure why diagrams-core requires base less than 4.14 |
| 11:50:15 | → | t0zy joins (~t0zy@49.207.220.61) |
| 11:50:16 | × | dschrempf quits (~dominik@92-249-159-252.pool.digikabel.hu) (Ping timeout: 250 seconds) |
| 11:50:42 | × | jgeerds quits (~jgeerds@55d4b311.access.ecotel.net) (Ping timeout: 250 seconds) |
| 11:50:49 | <arahael> | (Nor why Chart-diagrams requires the slightly older version of diagrams-core) |
| 11:53:40 | × | dunj3 quits (~dunj3@2001:16b8:30a8:2000:7c3b:4a4d:e83e:847a) (Remote host closed the connection) |
| 11:55:52 | × | retroid_ quits (~retro@5ec19a54.skybroadband.com) (Ping timeout: 258 seconds) |
| 11:56:51 | → | xsarnik joins (xsarnik@lounge.fi.muni.cz) |
| 11:59:55 | <arahael> | Looks like the simplest route for me to resize images in haskell is to just shell out to a utililty. |
| 12:01:16 | × | t0zy quits (~t0zy@49.207.220.61) (Ping timeout: 252 seconds) |
| 12:01:56 | → | t0zy joins (~t0zy@2402:3a80:d01:2c2f::3fff:9e88) |
| 12:08:39 | × | polyphem quits (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) (Remote host closed the connection) |
| 12:08:48 | → | polyphem joins (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) |
| 12:09:38 | × | lortabac quits (~lortabac@62.98.47.131) (Read error: Connection reset by peer) |
| 12:10:16 | × | yaroot quits (~yaroot@6.3.30.125.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat) |
| 12:11:18 | → | yaroot joins (~yaroot@6.3.30.125.dy.iij4u.or.jp) |
| 12:13:45 | → | sleblanc joins (~sleblanc@user/sleblanc) |
| 12:14:05 | → | lortabac joins (~lortabac@151.53.218.126) |
| 12:14:26 | × | hexfive quits (~eric@50.35.83.177) (Quit: WeeChat 3.0) |
| 12:16:45 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 12:21:33 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 258 seconds) |
| 12:23:12 | <dminuoso> | arahael: Your ghc/base is too new. |
| 12:23:36 | → | waleee joins (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
| 12:24:35 | <dminuoso> | arahael: And Chart-diagrams requires the slightly oder version of diagrams-core either because they havent bumped the dependency to 1.5.0 yet, or there's some incompatibility. Note that this is a major version bump. |
| 12:24:45 | <dminuoso> | https://hackage.haskell.org/package/diagrams-core-1.5.0/changelog |
| 12:24:47 | <dminuoso> | `Remove deprecated Option type in favor of Maybe. This is a breaking API change. ` |
| 12:27:20 | → | hannessteffenhag joins (~hannesste@ip4d14fff3.dynamic.kabel-deutschland.de) |
| 12:28:34 | × | aman quits (aman@user/aman) (Ping timeout: 268 seconds) |
| 12:30:13 | → | aman joins (~aman@user/aman) |
| 12:34:47 | <hannessteffenhag> | hello! I'm playing around with yesod right now and I'm slightly stumped by the forms chapter, or rather specifically how you're supposed to handle hidden fields |
| 12:35:22 | <hannessteffenhag> | there's the hiddenField function in the Forms library, but it seems all the functions that take fields (like areq, aopt etc) also want to create a label for the field |
| 12:35:38 | <hannessteffenhag> | and of course I don't want to print a label for a hidden field |
| 12:39:47 | → | favonia joins (~favonia@user/favonia) |
| 12:40:02 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 12:41:55 | <Orbstheorem> | Is there any difference (i.e. performance, semantics, inlining) between stock and newtype deriving for Functor, Applicative or Monad? |
| 12:46:17 | <dminuoso> | Yes. |
| 12:46:32 | <dminuoso> | newtype deriving just uses coerce to pierce the newtype wrapper to use an existing inner instance |
| 12:47:40 | <Orbstheorem> | So, no vtable? or rather the vtable of the underlying type? |
| 12:47:52 | <dminuoso> | For Functor I guess you end up with the same thing, but Applicative/Monad you cant stock derive anymore, since there's no method to generate a correct, law abiding, canonical and clear instance for Applicative or Monad |
| 12:47:56 | <dminuoso> | vtable? |
| 12:48:20 | <Orbstheorem> | (The dictionnary containing the instance methods at runtime) |
| 12:49:27 | <Orbstheorem> | Also, I just upgraded $work codebase from lts-13.30 to lts-18.1 and feel my compile times faster x) |
| 12:49:32 | <dminuoso> | Either will generate a dictionary, Im not sure whether GND could have an indirection - but GHC probably (?) would optimzie that away? |
| 12:49:55 | <Orbstheorem> | I'm not sure whether it's placebo or the compiler is faster xD |
| 12:50:16 | <dminuoso> | With performance/inlining, as usual... is this in a hotspot? |
| 12:50:36 | <dminuoso> | If not, asking in general about inlining/performance is not as useful. |
| 12:51:10 | × | t0zy quits (~t0zy@2402:3a80:d01:2c2f::3fff:9e88) (Ping timeout: 240 seconds) |
| 12:51:20 | → | Maya9 joins (~Maya@p4ffdb725.dip0.t-ipconnect.de) |
| 12:51:28 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 246 seconds) |
| 12:51:35 | <Orbstheorem> | I'm asking because when I upgraded to lts-18.1 the compiler told me both were enabled and that it was defaulting to stock. |
| 12:51:58 | → | t0zy joins (~t0zy@49.207.220.61) |
| 12:54:19 | × | venue quits (~venue@user/venue) (Quit: adios) |
| 12:55:12 | → | enoq joins (~enoq@2a05:1141:1f5:5600:eb83:919c:c248:eabe) |
| 13:04:38 | <arahael> | dminuoso: heh, too new :) i guess thats the trouble with figuring out the version bounds, i needed a newer ghc for some other dependency! i think i'll just shell out for this for the moment. |
| 13:07:46 | × | Maya9 quits (~Maya@p4ffdb725.dip0.t-ipconnect.de) (Quit: Client closed) |
| 13:08:05 | → | Maya29 joins (~Maya@p4ffdb725.dip0.t-ipconnect.de) |
| 13:09:15 | × | dtman34 quits (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 268 seconds) |
| 13:12:15 | <arahael> | i supoose if i really badly needed hip in, what do i do? fork the neccessary dependencies and install them manually? (and submit pull requests, but this is all hypothetical) |
| 13:17:01 | → | danso joins (~danso@23-233-111-52.cpe.pppoe.ca) |
| 13:17:42 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 13:17:43 | × | sleblanc quits (~sleblanc@user/sleblanc) (Ping timeout: 252 seconds) |
| 13:20:56 | → | __monty__ joins (~toonn@user/toonn) |
| 13:21:21 | × | acidjnk_new quits (~acidjnk@p200300d0c72b9557dc14868c6ad3e278.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 13:27:22 | → | burnsidesLlama joins (~burnsides@client-8-89.eduroam.oxuni.org.uk) |
| 13:29:10 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
| 13:29:30 | × | enoq quits (~enoq@2a05:1141:1f5:5600:eb83:919c:c248:eabe) (Ping timeout: 250 seconds) |
| 13:29:51 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 13:38:32 | → | amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
| 13:40:11 | → | dschrempf joins (~dominik@92-249-159-252.pool.digikabel.hu) |
| 13:47:29 | → | trcc_ joins (~trcc@eduroam09.au.dk) |
| 13:47:47 | × | trcc_ quits (~trcc@eduroam09.au.dk) (Client Quit) |
| 13:50:14 | <lechner> | Hi, I tried to 'import SemVer' in ghci. Why would I get "import-im6.q16: attempt to perform an operation not allowed by the security policy `PS' @ error/constitute.c/IsCoderAuthorized/421." please? |
| 13:50:52 | × | trcc quits (~trcc@users-5343.st.net.au.dk) (Ping timeout: 245 seconds) |
| 13:51:38 | × | burnsidesLlama quits (~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 13:55:04 | × | mastarija quits (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Ping timeout: 250 seconds) |
| 13:56:13 | × | blankhart quits (~blankhart@pool-72-88-174-206.nwrknj.fios.verizon.net) (Ping timeout: 252 seconds) |
| 13:57:24 | → | burnsidesLlama joins (~burnsides@client-8-89.eduroam.oxuni.org.uk) |
| 13:58:09 | → | blankhart joins (~blankhart@pool-72-88-174-206.nwrknj.fios.verizon.net) |
| 14:02:16 | × | amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 252 seconds) |
| 14:04:00 | → | Matthias1 joins (~Matthias1@casewireless11.CWRU.Edu) |
| 14:04:10 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
| 14:04:42 | → | lavaman joins (~lavaman@98.38.249.169) |
| 14:09:10 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 14:09:35 | → | reumeth joins (~reumeth@user/reumeth) |
| 14:10:40 | × | jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2) |
| 14:17:36 | × | dschrempf quits (~dominik@92-249-159-252.pool.digikabel.hu) (Ping timeout: 250 seconds) |
| 14:19:00 | → | vpan joins (~vilius@212.117.1.172) |
| 14:19:08 | × | lortabac quits (~lortabac@151.53.218.126) (Quit: WeeChat 2.8) |
| 14:20:21 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 14:23:15 | × | vpan quits (~vilius@212.117.1.172) (Client Quit) |
| 14:25:56 | × | xaltsc quits (~xaltsc@user/xaltsc) (Read error: Connection reset by peer) |
| 14:31:53 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 258 seconds) |
| 14:32:13 | × | burnsidesLlama quits (~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 14:32:46 | × | hannessteffenhag quits (~hannesste@ip4d14fff3.dynamic.kabel-deutschland.de) (Ping timeout: 250 seconds) |
| 14:32:53 | <polyphem> | Plans for the weekend yet ? => https://github.com/langjam/langjam |
| 14:37:17 | × | PinealGlandOptic quits (~PinealGla@37.115.210.35) (Quit: leaving) |
| 14:38:31 | × | martin02 quits (silas@hund.fs.lmu.de) (Quit: WeeChat 2.3) |
| 14:41:12 | × | Matthias1 quits (~Matthias1@casewireless11.CWRU.Edu) (Remote host closed the connection) |
| 14:41:41 | → | shriekingnoise joins (~shrieking@186.137.144.80) |
| 14:42:24 | × | d0ku quits (~d0ku@178.43.198.70.ipv4.supernova.orange.pl) (Remote host closed the connection) |
| 14:43:16 | → | hannessteffenhag joins (~hannesste@ip4d14fff3.dynamic.kabel-deutschland.de) |
| 14:45:03 | → | favonia joins (~favonia@user/favonia) |
| 14:46:04 | → | hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com) |
| 14:46:23 | → | burnsidesLlama joins (~burnsides@client-8-89.eduroam.oxuni.org.uk) |
| 14:47:30 | × | hannessteffenhag quits (~hannesste@ip4d14fff3.dynamic.kabel-deutschland.de) (Ping timeout: 250 seconds) |
| 14:48:12 | × | burnsidesLlama quits (~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 14:51:25 | → | Matthias1 joins (~Matthias1@casewireless11.CWRU.Edu) |
| 14:53:12 | → | burnsidesLlama joins (~burnsides@client-8-89.eduroam.oxuni.org.uk) |
| 14:55:30 | × | polyphem quits (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) (Read error: Connection reset by peer) |
| 14:55:48 | × | burnsidesLlama quits (~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 14:56:06 | → | polyphem joins (~polyphem@2a00:20:c049:6b62:beab:3bdc:3d18:f786) |
| 14:56:17 | × | Ranhir quits (~Ranhir@157.97.53.139) (Ping timeout: 245 seconds) |
| 14:56:47 | × | polyphem quits (~polyphem@2a00:20:c049:6b62:beab:3bdc:3d18:f786) (Read error: Connection reset by peer) |
| 14:57:18 | → | polyphem joins (~polyphem@ip5f5ac3ae.dynamic.kabel-deutschland.de) |
| 14:58:06 | → | p0lyph3m joins (~polyphem@2a00:20:c049:6b62:beab:3bdc:3d18:f786) |
| 14:59:25 | p0lyph3m | is now known as Core2947 |
| 15:01:42 | → | martin02 joins (~silas@141.84.69.76) |
| 15:01:48 | × | polyphem quits (~polyphem@ip5f5ac3ae.dynamic.kabel-deutschland.de) (Ping timeout: 250 seconds) |
| 15:02:15 | → | Ranhir joins (~Ranhir@157.97.53.139) |
| 15:03:10 | → | burnsidesLlama joins (~burnsides@client-8-89.eduroam.oxuni.org.uk) |
| 15:05:21 | Core2947 | is now known as polyphem |
| 15:06:37 | × | burnsidesLlama quits (~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 15:07:08 | → | burnsidesLlama joins (~burnsides@client-8-89.eduroam.oxuni.org.uk) |
| 15:08:19 | → | zebrag joins (~chris@user/zebrag) |
| 15:09:07 | × | burnsidesLlama quits (~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 15:09:21 | × | lbseale_ quits (~lbseale@user/ep1ctetus) (Ping timeout: 248 seconds) |
| 15:10:05 | → | burnsidesLlama joins (~burnsides@client-8-89.eduroam.oxuni.org.uk) |
| 15:11:47 | × | burnsidesLlama quits (~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 15:12:10 | × | Maya29 quits (~Maya@p4ffdb725.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 15:12:15 | × | sweater quits (~sweater@206.81.18.26) (Quit: WeeChat 2.8) |
| 15:13:47 | → | burnsidesLlama joins (~burnsides@client-8-89.eduroam.oxuni.org.uk) |
| 15:19:16 | × | burnsidesLlama quits (~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 15:21:06 | × | aman quits (~aman@user/aman) (Quit: aman) |
| 15:24:28 | → | burnsidesLlama joins (~burnsides@client-8-89.eduroam.oxuni.org.uk) |
| 15:25:24 | × | bin_ quits (~bin@user/bin/x-1583188) (Quit: ZNC - https://znc.in) |
| 15:25:54 | → | _bin joins (~bin@user/bin/x-1583188) |
| 15:26:22 | × | stevenxl quits (uid133530@highgate.irccloud.com) (Ping timeout: 245 seconds) |
| 15:26:24 | × | etrepum quits (sid763@id-763.highgate.irccloud.com) (Read error: Connection reset by peer) |
| 15:26:28 | × | burnsidesLlama quits (~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 15:26:29 | × | totbwf__ quits (sid402332@id-402332.highgate.irccloud.com) (Read error: Connection reset by peer) |
| 15:26:43 | × | davetapley quits (sid666@highgate.irccloud.com) (Read error: Connection reset by peer) |
| 15:26:47 | × | vito quits (sid1962@user/vito) (Ping timeout: 245 seconds) |
| 15:26:52 | × | alanz quits (sid110616@id-110616.highgate.irccloud.com) (Ping timeout: 256 seconds) |
| 15:26:52 | × | obviyus quits (sid415299@user/obviyus) (Ping timeout: 256 seconds) |
| 15:26:57 | × | bradparker quits (sid262931@id-262931.highgate.irccloud.com) (Read error: Connection reset by peer) |
| 15:27:03 | × | b20n quits (sid115913@id-115913.highgate.irccloud.com) (Read error: Connection reset by peer) |
| 15:27:03 | × | T_S_ quits (sid501726@id-501726.highgate.irccloud.com) (Read error: Connection reset by peer) |
| 15:27:10 | × | aarchi quits (sid486183@highgate.irccloud.com) (Read error: Connection reset by peer) |
| 15:27:29 | × | SrPx quits (sid108780@highgate.irccloud.com) (Ping timeout: 248 seconds) |
| 15:28:47 | → | burnsidesLlama joins (~burnsides@client-8-89.eduroam.oxuni.org.uk) |
| 15:29:10 | × | burnsidesLlama quits (~burnsides@client-8-89.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 15:29:14 | × | systemfault quits (sid267009@highgate.irccloud.com) (Ping timeout: 268 seconds) |
| 15:31:06 | → | bradparker joins (sid262931@id-262931.highgate.irccloud.com) |
| 15:31:14 | → | etrepum joins (sid763@highgate.irccloud.com) |
| 15:31:45 | → | totbwf__ joins (sid402332@id-402332.highgate.irccloud.com) |
| 15:31:57 | → | T_S_ joins (sid501726@highgate.irccloud.com) |
| 15:32:05 | → | davetapley joins (sid666@id-666.highgate.irccloud.com) |
| 15:32:09 | → | stevenxl joins (uid133530@highgate.irccloud.com) |
| 15:32:10 | → | SrPx joins (sid108780@highgate.irccloud.com) |
| 15:32:15 | → | b20n joins (sid115913@id-115913.highgate.irccloud.com) |
| 15:32:28 | → | aarchi joins (sid486183@id-486183.highgate.irccloud.com) |
| 15:32:34 | → | systemfault joins (sid267009@id-267009.highgate.irccloud.com) |
| 15:32:34 | → | vito joins (sid1962@user/vito) |
| 15:33:03 | → | obviyus joins (sid415299@user/obviyus) |
| 15:33:07 | → | alanz joins (sid110616@highgate.irccloud.com) |
| 15:34:29 | → | chris joins (~chris@81.96.113.213) |
| 15:34:32 | chris | is now known as Guest8144 |
| 15:34:35 | → | mei joins (~mei@user/mei) |
| 15:37:17 | → | ananthakumaran joins (~ananthaku@49.207.194.59) |
| 15:38:11 | × | _bin quits (~bin@user/bin/x-1583188) (Quit: ZNC - https://znc.in) |
| 15:38:40 | → | _bin joins (~bin@user/bin/x-1583188) |
| 15:39:13 | → | notzmv joins (~zmv@user/notzmv) |
| 15:39:20 | → | doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net) |
| 15:39:25 | → | p0lyph3m joins (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) |
| 15:41:43 | × | polyphem quits (~polyphem@2a00:20:c049:6b62:beab:3bdc:3d18:f786) (Remote host closed the connection) |
| 15:43:02 | <_bin> | Opinions on Megaparsec vs Earley vs uu-parsinglib |
| 15:44:37 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 15:44:47 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds) |
| 15:45:06 | → | sweater joins (~sweater@206.81.18.26) |
| 15:45:09 | → | fef joins (~thedawn@user/thedawn) |
| 15:46:26 | <c_wraith> | megaparsec will be the fastest of those three, if you're handling huge documents. Earley is the easiest (for me) to use, but it is also the most limited - it only supports context-free grammars, where the other two support context-sensitive. uu-parsinglib does really neat stuff with error correction, but performance can get really bad if your grammar allows ambiguity |
| 15:47:09 | <dsal> | Does anyone have any references to opinions on `let` vs. `where` when they're otherwise equivalent? `where` seems to produce cleaner looking code that's easier for me to understand, but I've seen an argument from someone who likes seeing definitions ahead. Searches point me to technical differences, which don't seem to be helpful. |
| 15:47:36 | <c_wraith> | in cases where they're equivalent I almost always go with where. |
| 15:48:17 | → | jess joins (~jess@libera/staff/jess) |
| 15:48:21 | <c_wraith> | I don't really think definitions ahead of use is important in a language where you can use things ahead of their definition anyway. |
| 15:48:23 | <dsal> | Yeah, that's where I am. I'm having a hard time describing why that's the case, other than, you know, we're using a declarative language. |
| 15:49:07 | <c_wraith> | there are exceptions. I'm more likely to use let inside of a case than attaching a where to a branch |
| 15:49:56 | <c_wraith> | and I'm more likely to use let if I can write the whole definition as a one-liner |
| 15:49:56 | <dsal> | Yeah. use `where` unless it makes the code worse. |
| 15:50:14 | <c_wraith> | like fix f = let x = f x in x |
| 15:50:14 | <dsal> | I especially don't like `let` for functions. |
| 15:50:33 | <Rembane_> | I mix them, I have had very particular tastes in both directions and now I just go with what my intuition wants me to. |
| 15:54:34 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 15:55:00 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 15:59:45 | → | oxide joins (~lambda@user/oxide) |
| 16:00:31 | × | MQ-17J quits (~MQ-17J@8.6.144.209) (Ping timeout: 252 seconds) |
| 16:00:46 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:02:58 | → | lbseale joins (~lbseale@user/ep1ctetus) |
| 16:03:15 | → | econo joins (uid147250@user/econo) |
| 16:04:16 | <_bin> | c_wraith: Thanks. If I'm looking at, say, scraping some web page, which of these might suit best? Would Earley suit for this? |
| 16:05:22 | <c_wraith> | if you're scraping web pages, I'd recommend not trying to write a parser that deals with the tire fire that is real-world HTML |
| 16:05:33 | → | lavaman joins (~lavaman@98.38.249.169) |
| 16:05:53 | <c_wraith> | I'd go with something like https://hackage.haskell.org/package/tagsoup |
| 16:09:50 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
| 16:09:58 | → | zaquest joins (~notzaques@5.128.210.178) |
| 16:10:56 | <c_wraith> | I do understand the appeal of writing your own parser, but that's better suited to environments where you can reject malformed inputs. HTML isn't such an environment |
| 16:11:45 | × | haskl quits (~haskl@98.37.78.63) (Changing host) |
| 16:11:45 | → | haskl joins (~haskl@user/haskl) |
| 16:12:20 | × | o1lo01ol1o quits (~o1lo01ol1@bl13-86-242.dsl.telepac.pt) (Remote host closed the connection) |
| 16:13:01 | → | o1lo01ol1o joins (~o1lo01ol1@bl13-86-242.dsl.telepac.pt) |
| 16:13:03 | × | o1lo01ol1o quits (~o1lo01ol1@bl13-86-242.dsl.telepac.pt) (Remote host closed the connection) |
| 16:13:19 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 16:13:38 | → | o1lo01ol1o joins (~o1lo01ol1@bl13-86-242.dsl.telepac.pt) |
| 16:14:37 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 16:14:53 | × | o1lo01ol1o quits (~o1lo01ol1@bl13-86-242.dsl.telepac.pt) (Remote host closed the connection) |
| 16:15:07 | → | o1lo01ol1o joins (~o1lo01ol1@bl13-86-242.dsl.telepac.pt) |
| 16:15:52 | × | o1lo01ol1o quits (~o1lo01ol1@bl13-86-242.dsl.telepac.pt) (Remote host closed the connection) |
| 16:17:38 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 250 seconds) |
| 16:18:30 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 250 seconds) |
| 16:19:15 | → | quantum joins (~quantum@user/quantum/x-8556232) |
| 16:20:07 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:21:42 | <adamCS> | arahael: Not sure if it will work but sometimes you can just do a bunch of "allow-newer" in cabal.project and then things work. |
| 16:23:45 | × | kuribas quits (~user@ptr-25vy0i7hpbjw2llku95.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
| 16:24:32 | → | notzmv joins (~zmv@user/notzmv) |
| 16:34:26 | → | shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 16:35:10 | × | hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1) |
| 16:35:36 | → | hendursaga joins (~weechat@user/hendursaga) |
| 16:36:23 | <lechner> | Hi, what does this error from ghci mean, please? "<command line>: cannot satisfy -package-id" https://paste.debian.net/1208358/ |
| 16:40:22 | <lechner> | I cleaned up my builds with 'rm -rf' but have since built (although with debug symbols disabled in cabal) |
| 16:42:39 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:43:43 | × | qbt quits (~edun@user/edun) (Quit: Leaving) |
| 16:44:29 | <sm> | lechner: IIRC it might mean you should force reinstall tagtree |
| 16:44:31 | <dsal> | lechner: it just means you are requiring a package that can't be found. |
| 16:44:53 | × | derelict quits (~derelict@user/derelict) (Quit: WeeChat 3.2) |
| 16:46:10 | × | Boomerang quits (~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 252 seconds) |
| 16:47:20 | → | oxide_ joins (~lambda@user/oxide) |
| 16:47:49 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 16:48:04 | <monochrom> | When "let" and "where" are both legal, I am inclined to "where" because more people do this and it is easier to lay out. But there is an exception: when for educational purpose, in a few cases, the presentation goes better if the ingredients are presented before the composition punch line. |
| 16:50:04 | <dsal> | I argued from the other direction. I want to know the most important parts and then decide whether I need to look up something later. |
| 16:50:52 | → | pavonia joins (~user@user/siracusa) |
| 16:50:55 | <dsal> | The example introduced two magic numbers and a function with a really obvious name with `let` as if knowing the details of these things helped me understand what was happening. |
| 16:51:30 | × | zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving) |
| 16:52:45 | → | zaquest joins (~notzaques@5.128.210.178) |
| 16:52:53 | → | ubert1 joins (~Thunderbi@178.115.47.86.wireless.dyn.drei.com) |
| 16:53:06 | <sm> | wheres are easier to extract to a function since they can't depend on things above |
| 16:53:35 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 16:53:37 | × | oxide_ quits (~lambda@user/oxide) (Quit: oxide_) |
| 16:53:55 | <sm> | or even if not extracted, they make the chunks and dependencies within a large function clearer |
| 16:54:23 | <lechner> | sm dsal: thanks! tagtree was a local package. why would ghci require it? should i zap store/ghc-8.8.4/package.db/package.cache ? |
| 16:54:25 | × | ubert quits (~Thunderbi@178.115.64.138.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
| 16:54:25 | ubert1 | is now known as ubert |
| 16:56:26 | <sm> | and yes, sometimes it's useful to introduce things bottom, with let. I think this is more often so with complicated/not-well-understood operations, where you need to learn some new terms to even understand what the higher level thing is about |
| 16:56:38 | <sm> | bottom up |
| 16:57:34 | <sm> | lechner: I'd just try force reinstalling tagtree with your chosen haskell package manager |
| 16:58:05 | <lechner> | sm: i don't want it anymore. (it came from emanote) |
| 16:58:30 | <dsal> | I wrote so many qc properties as `counterexample s $ a == b` |
| 16:58:41 | → | drd joins (~drd@93-39-151-19.ip76.fastwebnet.it) |
| 16:59:08 | <dsal> | lechner: I'm not very familiar with those problems. I use nix and stack and have a different set of problems. I just read the error. :) |
| 16:59:40 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 17:01:27 | <sm> | lechner: i see it's being included in the list of "core" libs in debug output when you just run ghci. I'm not sure why, maybe it really is needed ? In any case, I would try what I said, it's quick and would tell you something |
| 17:02:49 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 17:02:57 | <dsal> | Maybe I should use my counterexample example. `s` needs `a` and `b` which are derived from arguments and are also needed for the comparison. It'd be silly to make the user read some of my gross printing code before seeing how values are constructed for comparison, but otherwise the values need to be passed down. In any case, the bulk of text might end up being only interesting if you need details on how an error condition is |
| 17:02:57 | <dsal> | explained. |
| 17:03:17 | <sm> | maybe you busted ghc's version of it with your hamfisted emanote install efforts ? :) |
| 17:06:32 | <lechner> | sm: maybe i should have used nix, after all. i just zapped, before reading your previous message, most of my (user) cabal directory. only ./bin and ./config are left. unfortunately, now i get https://paste.debian.net/1208362/ |
| 17:07:01 | <lechner> | where does it learn that the user db should exist? |
| 17:07:26 | <sm> | original problem solved! :) |
| 17:07:39 | <sm> | maybe nuke .ghc also ? |
| 17:07:55 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 268 seconds) |
| 17:11:46 | <lechner> | sm: yay! that worked. to keep my little red λ, i removed only some (other) build artifacts with rm -rf ~/.ghc/x86_64-linux-8.8.4/ thanks! |
| 17:12:21 | <sm> | great |
| 17:17:12 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:17:23 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 17:17:32 | → | oxide_ joins (~lambda@user/oxide) |
| 17:18:15 | → | derelict joins (~derelict@user/derelict) |
| 17:18:37 | × | drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 252 seconds) |
| 17:19:48 | × | smitop quits (~smitop@user/smitop) (Quit: Ping timeout (120 seconds)) |
| 17:20:35 | → | smitop joins (~smitop@user/smitop) |
| 17:20:44 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 17:21:51 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 17:25:53 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 248 seconds) |
| 17:28:16 | × | azeem quits (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 250 seconds) |
| 17:28:22 | × | dajoer quits (~david@user/gvx) (Quit: leaving) |
| 17:28:49 | → | azeem joins (~azeem@176.200.243.66) |
| 17:29:39 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection) |
| 17:30:39 | → | Maya50 joins (~Maya@p4ffdb725.dip0.t-ipconnect.de) |
| 17:34:05 | × | ananthakumaran quits (~ananthaku@49.207.194.59) (Quit: leaving) |
| 17:35:22 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 17:36:19 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 17:37:24 | × | azeem quits (~azeem@176.200.243.66) (Read error: Connection reset by peer) |
| 17:37:39 | → | azeem joins (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) |
| 17:41:22 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection) |
| 17:43:46 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 17:45:21 | → | retroid_ joins (~retro@5ec19a54.skybroadband.com) |
| 17:48:28 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection) |
| 17:51:10 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 17:55:06 | × | Matthias1 quits (~Matthias1@casewireless11.CWRU.Edu) (Read error: Connection reset by peer) |
| 17:56:21 | → | wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com) |
| 18:02:28 | × | fef quits (~thedawn@user/thedawn) (Remote host closed the connection) |
| 18:02:55 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 18:06:01 | → | lavaman joins (~lavaman@98.38.249.169) |
| 18:07:34 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 252 seconds) |
| 18:09:13 | × | keutoi quits (~keutoi@157.48.195.127) (Ping timeout: 252 seconds) |
| 18:09:46 | → | notzmv joins (~zmv@user/notzmv) |
| 18:10:19 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
| 18:11:14 | → | keutoi joins (~keutoi@106.208.52.196) |
| 18:13:45 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 18:18:59 | → | lavaman joins (~lavaman@98.38.249.169) |
| 18:23:19 | × | Xnuk quits (~xnuk@45.76.202.58) (Quit: ZNC - https://znc.in) |
| 18:24:02 | → | Xnuk joins (~xnuk@45.76.202.58) |
| 18:29:26 | → | fresheyeball joins (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) |
| 18:31:44 | <_bin> | What is the idiomatic way to run a loop until SIGTERM, forking a new thread with the same function every n minutes? |
| 18:34:46 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 18:35:07 | <dsal> | forever + threadDelay + async, I suppose. |
| 18:36:10 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 18:36:39 | → | Guest38 joins (~Guest38@75-54-107-59.lightspeed.hstntx.sbcglobal.net) |
| 18:36:49 | <Rembane_> | _bin: What's a thread in this case? |
| 18:38:33 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 18:38:49 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 18:40:46 | → | dschrempf joins (~dominik@92-249-159-252.pool.digikabel.hu) |
| 18:42:13 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 252 seconds) |
| 18:42:25 | × | keutoi quits (~keutoi@106.208.52.196) (Quit: leaving) |
| 18:42:27 | × | Guest38 quits (~Guest38@75-54-107-59.lightspeed.hstntx.sbcglobal.net) (Quit: Client closed) |
| 18:43:21 | <_bin> | Rembane_: forkIO, I guess |
| 18:45:13 | <Rembane_> | _bin: Cool, dsal's idea should work for that too. :) |
| 18:48:20 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 258 seconds) |
| 18:48:59 | → | Guest60 joins (~Guest60@modemcable169.17-58-74.mc.videotron.ca) |
| 18:51:19 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection) |
| 18:52:31 | <Guest60> | I'm writting wrappers for a bunch of different things (a database and a bunch of HTTP APIs), I'm not sure how to handle errors |
| 18:52:36 | <Guest60> | should I just define custom Error sum types in each module, make them instances of Exception and throw in IO ? I mostly want everything to compose nicely |
| 18:53:13 | × | dschrempf quits (~dominik@92-249-159-252.pool.digikabel.hu) (Ping timeout: 252 seconds) |
| 18:54:25 | <_bin> | dsal, Remobane_: Thanks. |
| 19:00:22 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds) |
| 19:00:22 | × | benin036932 quits (~benin@183.82.178.142) (Ping timeout: 252 seconds) |
| 19:01:08 | × | Maya50 quits (~Maya@p4ffdb725.dip0.t-ipconnect.de) (Quit: Client closed) |
| 19:07:44 | → | benin036932 joins (~benin@183.82.178.142) |
| 19:11:06 | <_bin> | Any recommendation on logging frameworks? co-log and katip appear to be two common ones, but I'm not sure as to why one or the other is better. |
| 19:17:28 | × | xff0x quits (~xff0x@2001:1a81:5207:3100:686a:e8fd:47a9:633d) (Ping timeout: 250 seconds) |
| 19:22:42 | → | venue joins (~venue@user/venue) |
| 19:23:35 | × | Obo quits (~roberto@h-46-59-103-134.a498.priv.bahnhof.se) (Quit: WeeChat 2.8) |
| 19:26:15 | <lechner> | Hi, many friendly souls here told me to prefer 'putStrLn' over 'print', and especially 'printf', but 'hlint' recommends the former! https://paste.debian.net/1208376/ |
| 19:27:35 | <monochrom> | Are you ignoring the context that ". show" is also present? |
| 19:28:24 | <monochrom> | But I would delete hlint altogether. |
| 19:28:47 | <monochrom> | If you prefer "putStrLn . show", if this is your coding style, then this is your coding style. |
| 19:28:59 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 19:29:25 | <Rembane_> | I just do what hlint tells me, it makes my life more interesting and increases the chance that monochrom becomes my arch enemy. |
| 19:29:26 | <monochrom> | Along the way, I would also delete any memory of hearing an unconditional, one-size-fits-all "prefer putStrLn over print". |
| 19:29:44 | <monochrom> | Do people really say things like "prefer apple to orange" in their style guides? |
| 19:29:57 | <monochrom> | haha |
| 19:30:24 | <lechner> | does 'print' need a <> "\n" ? |
| 19:30:29 | <nitrix> | print is literally putStrLn . show, so I don't see how it could be a problem semantically, nor syntactically (way simpler than the composition). |
| 19:30:30 | <monochrom> | No. |
| 19:31:41 | <lechner> | How about "newtype instead of data"? https://paste.debian.net/1208378/ |
| 19:32:17 | <monochrom> | Did you see the line "Note: decreases laziness"? |
| 19:32:55 | <monochrom> | BTW I think you should also wear pink instead of blue tomorrow. |
| 19:33:10 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 240 seconds) |
| 19:33:17 | <monochrom> | And for tonight's dinner you should prefer fish over veggies. |
| 19:33:33 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 19:33:38 | <nitrix> | I smell more a symptom of someone that developed the bad habit of memorizing strict rules and applying them systematically, without really understanding what they're doing or why they're doing it in the first place. Props for being suspicious and asking though. |
| 19:33:40 | <lechner> | yeah, i use that type to parse JSON, and do not understand it. does it imply "!" on the constituents ? |
| 19:34:09 | <monochrom> | OK, I have two points. |
| 19:34:09 | <lechner> | nitrix: i am a noobie |
| 19:34:32 | <monochrom> | 1. Learn newtype. Then you can decide whether it fits your purpose. |
| 19:34:46 | <monochrom> | 2. It probably doesn't matter for now and for the next few months either. |
| 19:35:12 | × | oxide_ quits (~lambda@user/oxide) (Quit: oxide_) |
| 19:35:40 | <nitrix> | That's generous. Make that a year. |
| 19:36:36 | <monochrom> | In fact I stick to "data" in my course, even where Haskellers would use newtype. Yes I totally have "data State s a = MkState (s -> (s, a))". |
| 19:36:54 | <monochrom> | Screw hlint. It is an anti-educational tool. |
| 19:37:11 | <monochrom> | When pros use it, I can understand. |
| 19:37:12 | <lechner> | or it competes with you? |
| 19:37:28 | <lechner> | in a way you dislike |
| 19:37:30 | <nitrix> | hlint and hoogle don't seem to deliver too well on their promises. |
| 19:37:45 | → | kenran joins (~kenran@200116b82b157f00af733520c5a4c898.dip.versatel-1u1.de) |
| 19:38:15 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 19:38:16 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds) |
| 19:38:19 | <Rembane_> | nitrix: I think that depends on what you think they promise. |
| 19:38:30 | <monochrom> | Well I can't call something or someone a competitor if they derail the job rather than do a better job. |
| 19:38:41 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds) |
| 19:39:37 | <lechner> | there are good and bad restaurants |
| 19:39:52 | <monochrom> | Tangential digressions are the enemy of teaching and learning. When I and my students are still at the stage of learning lambdas, for example (\x -> x + 3), suggesting "why not (+ 3)" is derailing. Only smartasses and #haskell regulars do this. |
| 19:40:15 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 19:40:52 | <lechner> | but do you agree with the recommendation? |
| 19:41:05 | <lechner> | outside your class |
| 19:41:08 | <monochrom> | Depends on the context? Isn't that my point? |
| 19:41:34 | → | mastarija joins (~mastarija@78-3-210-70.adsl.net.t-com.hr) |
| 19:41:48 | <monochrom> | Outside my class there are still a lot of beginners in #haskell whom I would not bring up sections too early either. |
| 19:42:00 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds) |
| 19:42:01 | Lord_of_Life_ | is now known as Lord_of_Life |
| 19:42:10 | <lechner> | hlint is a poor teacher |
| 19:42:47 | <monochrom> | If the reader is ready for (+ 3) I write (+ 3). If the reader is not ready for that, I write (\x -> x + 3). If the reader is not even ready for that, I write "let f x = x + 3 in ..." |
| 19:44:00 | <lechner> | isn't the lambda harder than a partially applied function? |
| 19:44:17 | <lechner> | maybe i use RPN too mkch |
| 19:44:22 | <lechner> | much |
| 19:47:24 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:47:40 | × | alx741 quits (~alx741@181.196.69.234) (Ping timeout: 252 seconds) |
| 19:50:50 | × | nschoe quits (~quassel@2a01:e0a:8e:a190:1cfd:5590:1382:edd9) (Ping timeout: 250 seconds) |
| 19:50:50 | × | Megant quits (megant@user/megant) (Ping timeout: 250 seconds) |
| 19:51:41 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 19:53:43 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 19:53:49 | × | fresheyeball quits (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9) |
| 19:54:11 | → | dschrempf joins (~dominik@92-249-159-252.pool.digikabel.hu) |
| 19:54:49 | × | mei quits (~mei@user/mei) (Ping timeout: 252 seconds) |
| 19:55:53 | × | dschrempf quits (~dominik@92-249-159-252.pool.digikabel.hu) (Client Quit) |
| 19:56:45 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 19:57:53 | <sm> | someone should do the remember quote thingy with Rembane's "I just do what hlint tells me, it makes my life more interesting and increases the chance that monochrom becomes my arch enemy." |
| 19:58:17 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 19:58:56 | <monochrom> | @remember Rembane I just do what hlint tells me, it makes my life more interesting and increases the chance that monochrom becomes my arch enemy. |
| 19:58:56 | <lambdabot> | Okay. |
| 19:59:04 | → | Megant joins (megant@user/megant) |
| 19:59:30 | <lechner> | that actually works? |
| 19:59:39 | <Rembane_> | :D |
| 19:59:40 | → | xff0x joins (~xff0x@2001:1a81:5207:3100:686a:e8fd:47a9:633d) |
| 19:59:43 | <sm> | nice :) |
| 20:00:03 | → | alx741 joins (~alx741@181.196.68.120) |
| 20:01:57 | → | lavaman joins (~lavaman@98.38.249.169) |
| 20:05:16 | × | juhp quits (~juhp@128.106.188.220) (Ping timeout: 252 seconds) |
| 20:07:19 | → | juhp joins (~juhp@128.106.188.220) |
| 20:09:21 | → | gustik joins (~gustik@2a01:c844:2410:9020:63ab:4bb6:83d2:e11b) |
| 20:12:33 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 20:13:17 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 20:13:36 | × | s-h-i-n-o-b-i quits (~quassel@104.244.75.124) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 20:14:33 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection) |
| 20:16:00 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 20:18:30 | <tomsmeding> | https://ircbrowse.tomsmeding.com/quotes.rss |
| 20:18:43 | <tomsmeding> | I honestly don't know offhand how far back that goes |
| 20:19:15 | <tomsmeding> | at least only libera, not freenode |
| 20:20:27 | <tomsmeding> | that was the first (and yet only) @remember quote on liberachat! 🎉 |
| 20:22:09 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 20:22:49 | × | Guest8144 quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 20:25:58 | × | glguy quits (x@libera/staff/glguy) (Quit: Quit) |
| 20:26:08 | → | glguy joins (x@libera/staff/glguy) |
| 20:26:45 | → | acidjnk_new joins (~acidjnk@p200300d0c72b9557dc14868c6ad3e278.dip0.t-ipconnect.de) |
| 20:27:51 | → | chris joins (~chris@81.96.113.213) |
| 20:27:54 | chris | is now known as Guest1143 |
| 20:29:11 | × | mastarija quits (~mastarija@78-3-210-70.adsl.net.t-com.hr) (Quit: Leaving) |
| 20:31:07 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Quit: Off to see the wizard.) |
| 20:32:39 | × | Guest1143 quits (~chris@81.96.113.213) (Ping timeout: 268 seconds) |
| 20:33:54 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 20:34:04 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 20:36:49 | <siers> | tomsmeding, did you write the ListFamily yourself? |
| 20:37:01 | <siers> | tomsmeding, and the rest of that paste |
| 20:37:43 | × | Megant quits (megant@user/megant) (Ping timeout: 252 seconds) |
| 20:38:16 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
| 20:38:38 | → | dtman34 joins (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) |
| 20:41:50 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 20:43:36 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 20:44:43 | → | ub joins (~Thunderbi@178.115.47.86.wireless.dyn.drei.com) |
| 20:45:36 | <tomsmeding> | siers: yeah |
| 20:45:49 | <tomsmeding> | followed the example in the documentation of Family |
| 20:46:12 | <siers> | tomsmeding, had you seen tricks with Refl before? |
| 20:46:53 | × | pfurla_ quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 20:47:17 | → | pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 20:47:36 | <tomsmeding> | siers: this is code I've been writing recently :p https://github.com/tomsmeding/accelerate/blob/no-explode/src/Data/Array/Accelerate/Trafo/AD/Translate.hs |
| 20:47:57 | <tomsmeding> | so yeah |
| 20:48:10 | × | ubert quits (~Thunderbi@178.115.47.86.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
| 20:48:10 | ub | is now known as ubert |
| 20:49:57 | <tomsmeding> | siers: the ExprTermFamily in the gdiff documentation is analogous to 'ListFamily a' in my code |
| 20:50:35 | <tomsmeding> | so 'ExprTermFamily ty fields' corresponds to 'ListFamily a ty fields': I added an additional type parameter |
| 20:50:47 | <tomsmeding> | hence instance Family (ListFamily a) |
| 20:51:03 | <tomsmeding> | and not just instance Family ExprTermFamily |
| 20:54:46 | × | ubert quits (~Thunderbi@178.115.47.86.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
| 20:56:56 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 20:57:48 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 20:58:08 | × | gustik quits (~gustik@2a01:c844:2410:9020:63ab:4bb6:83d2:e11b) (Quit: Leaving) |
| 21:00:11 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 21:00:40 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 21:03:56 | → | MQ-17J joins (~MQ-17J@2607:fb90:8824:bf5d:8f75:f298:534b:ce5e) |
| 21:05:13 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 252 seconds) |
| 21:06:14 | × | oxide quits (~lambda@user/oxide) (Ping timeout: 250 seconds) |
| 21:06:20 | × | wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 21:08:14 | → | oxide joins (~lambda@user/oxide) |
| 21:10:10 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 21:10:30 | × | Guest60 quits (~Guest60@modemcable169.17-58-74.mc.videotron.ca) (Quit: Client closed) |
| 21:13:19 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:13:28 | × | mjrosenb quits (~mrosenbe@nyc.schrodinger.com) (Ping timeout: 252 seconds) |
| 21:20:45 | × | cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds) |
| 21:20:51 | → | cheater1__ joins (~Username@user/cheater) |
| 21:20:54 | cheater1__ | is now known as cheater |
| 21:26:19 | → | HarveyPwca joins (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) |
| 21:26:43 | <ixlun> | Is it possible to define a typeclass that has a requires only a value to be implemented? |
| 21:27:03 | <ixlun> | as opposed to a function |
| 21:28:00 | <monochrom> | Bounded defines two values. Perhaps you can draw inspirations from it. |
| 21:28:45 | × | tommd quits (~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 268 seconds) |
| 21:29:29 | <[exa]> | (also, "function are values") |
| 21:30:38 | → | Megant joins (~kaitsu@user/megant) |
| 21:30:42 | <[exa]> | technically, Monoid is also "value"-only now (the "function" is in Semigroup) |
| 21:31:48 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds) |
| 21:31:48 | <ixlun> | They are very close to what I'm after. I'm trying to do something like https://pastebin.com/mQ4JEScb |
| 21:32:01 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 21:32:35 | <ixlun> | so each type that implements ParsableSection has to define it's own ID. Then in the 'parse' function, I can deduce the id from the type that's passed in. |
| 21:33:42 | <hpc> | sectionId needs to have k somewhere in its type |
| 21:33:45 | <[exa]> | you'd need to run the sectionId with a type application though, because otherwise there's no way how it can see which instance it belongs to |
| 21:33:55 | <[exa]> | consider Proxy |
| 21:34:13 | <[exa]> | (or something related) |
| 21:35:10 | × | Megant quits (~kaitsu@user/megant) (Ping timeout: 240 seconds) |
| 21:35:28 | <[exa]> | and yeah, as hpc says -- I'd really vote for `sectionId :: k -> Word16` |
| 21:35:46 | <[exa]> | it will allow you to parametrize the stuff by additional data |
| 21:38:10 | <ixlun> | But then wouldn't I run into a chicken and egg scenario? In that the parse funciton yields a 'k' but I need to construct one to call sectionId? |
| 21:38:48 | <ixlun> | and parse needs to call sectionId before it can do the parse |
| 21:39:28 | → | oxide_ joins (~lambda@user/oxide) |
| 21:39:52 | <hpc> | in that case go with Proxy |
| 21:40:10 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 21:41:32 | <ixlun> | Cool, then I guess the type signature would be: sectionId :: Proxy k? |
| 21:41:38 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection) |
| 21:41:51 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 21:42:08 | <ixlun> | sorry: sectionId :: Proxy k -> Word16 |
| 21:42:19 | <hpc> | yep |
| 21:42:31 | <c_wraith> | that works, though you might do better with sectionId :: proxy k -> Word16 |
| 21:42:43 | <c_wraith> | making that p lowercase does some nice things |
| 21:43:06 | <hpc> | sectionId Proxy @Foo |
| 21:43:24 | <c_wraith> | In particular, it lets you pass values of other types that you might already have lying around in |
| 21:43:49 | <c_wraith> | And parametricity guarantees you can't try to *use* the value |
| 21:44:29 | <hpc> | not that you can do much with a Proxy value in the first place ;) |
| 21:44:53 | <c_wraith> | can't do much, but you can at least pattern match on it |
| 21:45:02 | <c_wraith> | Which can cause things to happen |
| 21:45:14 | <[exa]> | o wow lowercase proxy |
| 21:45:17 | <[exa]> | gooooooooood |
| 21:45:26 | <[exa]> | (thanks!) |
| 21:45:51 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:46:14 | <monochrom> | This is why I would write "p k -> Word16" instead. |
| 21:47:50 | × | oxide quits (~lambda@user/oxide) (Ping timeout: 250 seconds) |
| 21:48:07 | × | norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 252 seconds) |
| 21:49:15 | <hpc> | just be careful, this is the gateway drug to f s t a b :D |
| 21:52:38 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 21:53:09 | <ixlun> | Hmm okay. I gave it ago, and I'm getting an error. Here is the full code: https://termbin.com/r6qo |
| 21:54:45 | <hpc> | might need scoped type variables? |
| 21:54:52 | <monochrom> | Yeah, that. |
| 21:55:06 | × | doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection) |
| 21:56:35 | <ixlun> | Here is the error https://termbin.com/7klc |
| 21:56:44 | <monochrom> | local "foo :: Bar a" means "foo :: forall a. Bar a" i.e. "foo :: Bar nothing_to_do_with_other_types" |
| 21:57:46 | <ixlun> | Issue still persists with scoped type variables |
| 21:58:17 | <monochrom> | You do have to write more than turning on the extension. |
| 21:58:48 | <monochrom> | you have to now say "parseSection :: forall a m. (ParsableSection a, MonadError String m) => CodePlug -> ..." |
| 21:59:18 | <ixlun> | Ahh, so when I say 'p = Proxy :: Proxy a'. the 'a' is a different type variable and doesn 't refer to the ParsableSection 'a'? |
| 22:00:16 | → | oldsk00l_ joins (~znc@ec2-3-124-242-227.eu-central-1.compute.amazonaws.com) |
| 22:00:23 | <ixlun> | Ahhhh, so that's what forall means? it means that if 'a' or 'm' is used in the below code, it refers to the 'a' or 'm' in the type signature of the function? |
| 22:00:46 | × | oldsk00l quits (~znc@ec2-18-170-87-228.eu-west-2.compute.amazonaws.com) (Ping timeout: 252 seconds) |
| 22:00:57 | <monochrom> | "forall" is a reserved word that also has meanings under other extensions. |
| 22:01:29 | <monochrom> | So the inventor of this extension decides to hitchhike this reserved word. |
| 22:01:46 | <monochrom> | and it works beatifully, there is no conflict. |
| 22:02:01 | × | kenran quits (~kenran@200116b82b157f00af733520c5a4c898.dip.versatel-1u1.de) (Quit: WeeChat info:version) |
| 22:02:03 | <ixlun> | So it's using forall in the context of scopedtypevariables? |
| 22:02:07 | <monochrom> | The need to add some syntax is because backward compatibility. |
| 22:02:13 | <hpc> | one could even say forall has only one meaning, and multiple applications of that meaning |
| 22:02:22 | <hpc> | since it's really just bringing a new type variable into scope |
| 22:04:14 | <ixlun> | Nice. Always wondered why I saw forall peppered on bits of haskell code. |
| 22:04:39 | <hpc> | if you want to go down a fun mathematical rabbit hole, https://en.wikipedia.org/wiki/Universal_quantification |
| 22:08:09 | <ixlun> | Thanks for the link. That's defiantly one to look at! Anyway code is working great now. Thanks for the help all! |
| 22:12:40 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 22:16:40 | × | oxide_ quits (~lambda@user/oxide) (Quit: oxide_) |
| 22:17:59 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:21:03 | × | jess quits (~jess@libera/staff/jess) () |
| 22:22:52 | → | Megant joins (megant@user/megant) |
| 22:27:36 | × | son0p quits (~ff@181.136.122.143) (Remote host closed the connection) |
| 22:28:33 | → | tommd joins (~tommd@75-164-130-101.ptld.qwest.net) |
| 22:29:22 | × | Megant quits (megant@user/megant) (Ping timeout: 252 seconds) |
| 22:37:40 | → | Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
| 22:37:45 | <Cajun> | and for RankNTypes, doesnt it allow you to restrict a type variable from "escaping" like ST does? whats the other use(s) (if there are any) of it in RankNTypes? |
| 22:38:19 | → | alphabeta joins (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) |
| 22:38:32 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 250 seconds) |
| 22:39:06 | × | kilolympus quits (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) (Ping timeout: 258 seconds) |
| 22:39:56 | <monochrom> | To actually write rank-n types at all. |
| 22:40:45 | <monochrom> | How else can "(∀r. r -> (r -> r) -> r) -> Natural" be expressed. |
| 22:41:03 | × | MQ-17J quits (~MQ-17J@2607:fb90:8824:bf5d:8f75:f298:534b:ce5e) (Read error: Connection reset by peer) |
| 22:41:25 | → | MQ-17J joins (~MQ-17J@8.6.144.209) |
| 22:41:48 | <Cajun> | well what does that express about `r` that isnt already? |
| 22:41:54 | <monochrom> | interpreter :: (∀a. MyFunctor a -> IO a) -> Free MyFunctor a -> IO a |
| 22:42:33 | <monochrom> | (∀r. r -> (r -> r) -> r) -> Natural ≠ ∀r. (r -> (r -> r) -> r) -> Natural |
| 22:43:34 | <Cajun> | in that interpreter line, the qualified `a` /~ the outside `a`, correct? |
| 22:43:43 | <monochrom> | right |
| 22:46:20 | × | acidjnk_new quits (~acidjnk@p200300d0c72b9557dc14868c6ad3e278.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 22:47:41 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 22:47:51 | × | norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Client Quit) |
| 22:51:11 | <Cajun> | so whats the purpose of `ExplicitForAll`? does it behave like `ScopedTypeVariables`? i dont see why it would be useful to have `forall`s where it is implicit, or when it would be useful to abuse the `forall-or-nothing` rule |
| 22:52:07 | <geekosaur> | just to be complete, I think, so both RankNTypes and ScopedTypeVariables can "depend on" it |
| 22:52:10 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 22:52:36 | <Cajun> | oh well that makes sense |
| 22:52:39 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 22:53:20 | <monochrom> | I was not the author of ExplicitForAll, I don't know their purpose. |
| 22:53:54 | <monochrom> | But my philosophy is that implicit quantification has always been a source of confusion, not a source of simplification. |
| 22:54:32 | <monochrom> | Implicit forall is why people mistake induction for circular logic. |
| 22:55:51 | <Cajun> | i believe anything that almost entirely leaves the realm of computer science-y stuff (like quantification imo) is when it trips up people the most, but thats coming from little experience |
| 22:56:23 | <geekosaur> | and ExplicitForalls doesn't mean you always have to write them, it just makes forall a keyword, so it's kinda confusingly named |
| 22:57:29 | → | Megant joins (~kaitsu@user/megant) |
| 22:57:37 | → | chisui joins (~chisui@200116b86875540094408e56d6769020.dip.versatel-1u1.de) |
| 22:57:51 | <monochrom> | Who draws the line between "inside CS" and "outside CS"? CS emphatically has never existed in isolation, unlike pure math. |
| 22:57:57 | <sclv> | explicitforall _enables_ explicit foralls. it used to be that you needed an extension such as scopedtypevariables or gadts to enable that syntax |
| 22:58:32 | <sclv> | it was weird that multiple extensions enabled a piece of syntax as a side effect, but no single extension _just_ enabled that syntax. so they made an extension to _just_ enable that syntax. |
| 22:58:49 | <monochrom> | Any concept that clarifies programming and/or helps programming is fair game. (And who draws the line between "is programming" and "is not programming"?) |
| 22:59:07 | <sclv> | quantification is very computer sciency |
| 22:59:20 | <sclv> | its a key part of any rich type system |
| 22:59:49 | <Cajun> | i guess you can really view it either way, but coming from Java it never felt like an intrinsically programming-related thing, so thats where im coming from with that |
| 23:00:45 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Remote host closed the connection) |
| 23:01:22 | <monochrom> | "I see you have a list-reverse function. Does it work no matter what my element type is?" is a fair question. The "no matter what" is quantification right there. This is a rank-1-type question. It is a fair question whether you have static or dynamic typing. A user of the reverse function in Scheme gets to ask that same question. |
| 23:02:57 | <monochrom> | "I see you have a foo function that wants me to give you another function as a parameter. Does it want my function to be polymorphic? Or is it OK if I give a monomorphic function?" Now you have a rank-2-type question. |
| 23:04:20 | <monochrom> | Polymorphism brings up quantification. |
| 23:04:34 | × | benin036932 quits (~benin@183.82.178.142) (Ping timeout: 252 seconds) |
| 23:05:22 | <monochrom> | You can play name games and take the stance of "'functor' is an alien math word, change it to 'mappable'; 'quantification' is an alien math word, change it to 'morphable'". |
| 23:05:37 | <monochrom> | That doesn't mean you can avoid the substance. |
| 23:06:43 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 23:06:47 | <monochrom> | In fact I'm pretty convinced that such name games are just manifesting people's not-invented-here sour-grape attitude. |
| 23:06:48 | × | Megant quits (~kaitsu@user/megant) (Ping timeout: 268 seconds) |
| 23:07:24 | <Cajun> | makes sense, im not trying to make the argument it isnt computer-sciency, it was just how i thought of it. always seemed like something from another field being applied in a useful manner elsewhere while retaining the same name (for consistency) |
| 23:08:09 | <monochrom> | If another community has already invented the same idea, if they got there first, why not adopt their names too so we can open up more opportunities for cross-discipline conversations? Sounds like the more hip thing to do. |
| 23:08:59 | <monochrom> | For this reason when I read "any time you leave the CS realm" I think "so you're talking about echo chambers". |
| 23:09:01 | <Cajun> | yeah changing the names wouldnt be a good idea, doesnt change monad from being a term with a vacuous meaning to anyone without a math background :P |
| 23:09:11 | <Cajun> | that wikipedia page is scary |
| 23:12:50 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 23:14:14 | → | Guest59 joins (~Guest59@2a02:6b64:708f:0:44ea:d3ef:31bb:9f74) |
| 23:19:29 | × | tommd quits (~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 248 seconds) |
| 23:24:01 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 23:24:43 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 258 seconds) |
| 23:26:33 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 23:30:28 | × | spruit11 quits (~quassel@2a02:a467:ccd6:1:1d3f:e608:d1ad:6d58) (Ping timeout: 258 seconds) |
| 23:31:43 | × | Guest59 quits (~Guest59@2a02:6b64:708f:0:44ea:d3ef:31bb:9f74) (Quit: Client closed) |
| 23:34:40 | × | waleee quits (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 240 seconds) |
| 23:39:33 | → | Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
| 23:40:43 | × | chisui quits (~chisui@200116b86875540094408e56d6769020.dip.versatel-1u1.de) (Ping timeout: 246 seconds) |
| 23:42:43 | → | spruit11 joins (~quassel@2a02:a467:ccd6:1:6057:8486:da6d:d017) |
| 23:44:23 | × | lavaman quits (~lavaman@98.38.249.169) (Read error: Connection reset by peer) |
| 23:44:23 | → | awschnap joins (~lavaman@98.38.249.169) |
| 23:44:24 | → | favonia joins (~favonia@user/favonia) |
| 23:47:26 | × | spruit11 quits (~quassel@2a02:a467:ccd6:1:6057:8486:da6d:d017) (Ping timeout: 250 seconds) |
| 23:48:56 | × | dolio quits (~dolio@130.44.130.54) (Quit: ZNC 1.8.2 - https://znc.in) |
| 23:54:39 | → | spruit11 joins (~quassel@2a02:a467:ccd6:1:6057:8486:da6d:d017) |
| 23:54:46 | → | o1lo01ol1o joins (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) |
| 23:54:52 | → | dolio joins (~dolio@130.44.130.54) |
| 23:55:17 | × | Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:56:07 | → | Axma67744 joins (~Axman6@user/axman6) |
| 23:58:17 | × | Axman6 quits (~Axman6@user/axman6) (Ping timeout: 256 seconds) |
| 23:59:10 | × | o1lo01ol1o quits (~o1lo01ol1@5.181.115.89.rev.vodafone.pt) (Ping timeout: 240 seconds) |
All times are in UTC on 2021-08-20.