Logs on 2022-08-10 (liberachat/#haskell)
| 00:00:27 | Kaipei | is now known as Kaiepi |
| 00:00:49 | <dsal> | I don't hate hedgehog, but it does feel like it was written by someone who didn't use Haskell all that much. Or at least, did weird things. |
| 00:00:55 | <dsal> | I just used `tripping` which is `tripping :: (MonadTest m, Applicative f, Show b, Show (f a), Eq (f a), HasCallStack) => a -> (a -> b) -> (b -> f a) -> m ()` |
| 00:01:11 | <dsal> | Putting the thing you're testing as the first argument is kind of hostile. |
| 00:02:00 | <DigitalKiwi> | aren't all arguments the first |
| 00:02:15 | <dsal> | heh |
| 00:02:34 | <DigitalKiwi> | unless it's the color of the shed |
| 00:02:55 | <DigitalKiwi> | ...or maybe that argument just never ended |
| 00:03:31 | <dsal> | This is the difference between `forAll genThing >>= \aThing -> tripping aThing printThing parseThing` and `forAll genThing >>= tripping printThing parseThing` |
| 00:03:49 | <EvanR> | no you're right, you put the variable with "highest frequency" last |
| 00:04:41 | <EvanR> | to take advantage of partialing |
| 00:05:01 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 00:05:15 | <EvanR> | sometimes it's a toss up and you're screwed, but it's not as bad as OOP binary operators |
| 00:05:21 | × | merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
| 00:05:35 | <hpc> | oh man, don't even get me started on python's ','.join(list) |
| 00:05:51 | <dsal> | Yeah. This case is pretty clear. The thing you want to test is the output of the generator and the input of the tester thing. |
| 00:06:14 | <EvanR> | didn't even think of that |
| 00:06:23 | <EvanR> | I mean DUH |
| 00:06:37 | → | jero98772 joins (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) |
| 00:07:10 | <dsal> | It usually does its job well, but it's just weird to use sometimes. |
| 00:08:03 | <EvanR> | hpc, put anything that accepts a bool somewhere in the signature under the Bool class xD |
| 00:08:10 | <DigitalKiwi> | goodbye hedgehog hello porcupine |
| 00:08:54 | <DigitalKiwi> | oooh moonrat |
| 00:09:34 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 00:10:57 | × | cyanide3dinner quits (~cyanide4d@2402:e280:2149:513:931b:41cb:2a7e:791d) (Remote host closed the connection) |
| 00:11:24 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 00:12:38 | <DigitalKiwi> | til hedgehog and porcupine aren't even in the same order |
| 00:12:43 | <DigitalKiwi> | but i learned of moonrats |
| 00:12:57 | <EvanR> | sounds like something out of D&D |
| 00:13:08 | <dsal> | See, sometimes complaining yields good results. |
| 00:14:22 | <hpc> | EvanR: like they're the preferred food of owlbears? :D |
| 00:14:28 | → | nilradical joins (~nilradica@user/naso) |
| 00:16:39 | <DigitalKiwi> | https://en.wikipedia.org/wiki/Gymnure |
| 00:18:01 | <DigitalKiwi> | rats and porcupines are more closely related than porcupines and hedgehogs lol |
| 00:19:11 | <DigitalKiwi> | moonrats look like rodents of unusual size |
| 00:20:09 | <DigitalKiwi> | but are not rodents |
| 00:20:19 | <DigitalKiwi> | this has been a taxonomy lesson i'm on topic you see |
| 00:20:45 | <hpc> | everyone knows haskell talk belongs in -offtopic anyway :D |
| 00:20:59 | <geekosaur> | monochrom's not gate in action 🙂 |
| 00:22:39 | × | aliosablack quits (~chomwitt@2a02:587:dc15:5e00:ea1e:e5c0:de8:53e2) (Ping timeout: 268 seconds) |
| 00:23:28 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 00:24:49 | <DigitalKiwi> | https://github.com/jacobstanley?tab=repositories&q=&type=source&language=&sort= i would say a few of these classify as weird things aye lol |
| 00:27:05 | <DigitalKiwi> | https://github.com/jacobstanley/cthulhu |
| 00:28:46 | <DigitalKiwi> | what's a smart http |
| 00:28:47 | <DigitalKiwi> | https://github.com/jacobstanley/mothership |
| 00:32:35 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 00:33:35 | × | ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec) |
| 00:44:42 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 244 seconds) |
| 00:49:00 | → | king_gs joins (~Thunderbi@187.201.102.80) |
| 00:51:41 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 00:53:58 | × | mmhat quits (~mmh@p200300f1c72ee96aee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.6) |
| 01:00:52 | × | BanUtama quits (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
| 01:02:21 | × | xff0x_ quits (~xff0x@2405:6580:b080:900:9f22:be61:9bf8:3a54) (Ping timeout: 255 seconds) |
| 01:07:02 | × | Colere quits (~colere@about/linux/staff/sauvin) (Ping timeout: 268 seconds) |
| 01:07:17 | → | lsrts^ joins (~lsrts@206.85.120.17) |
| 01:07:39 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 01:09:18 | → | Colere joins (~colere@about/linux/staff/sauvin) |
| 01:10:07 | → | jargon joins (~jargon@184.101.168.117) |
| 01:10:21 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 252 seconds) |
| 01:11:06 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:11:21 | × | king_gs quits (~Thunderbi@187.201.102.80) (Ping timeout: 268 seconds) |
| 01:14:01 | → | BanUtama joins (~blake.rai@user/BanUtama) |
| 01:16:44 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 01:17:14 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:17:43 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 01:18:45 | × | BanUtama quits (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
| 01:21:10 | <qrpnxz> | name of the game: get rid of unboxed integers. Enemy numbers one: lifted polymorphism. Solution: chunking? |
| 01:21:26 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 01:21:50 | × | lsrts^ quits (~lsrts@206.85.120.17) (Ping timeout: 268 seconds) |
| 01:22:00 | <qrpnxz> | rid of boxed integers rather |
| 01:22:06 | <qrpnxz> | ugh |
| 01:22:09 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 01:22:30 | <qrpnxz> | hard to get the performance i want |
| 01:27:58 | → | BanUtama joins (~blake.rai@user/BanUtama) |
| 01:31:07 | → | king_gs joins (~Thunderbi@187.201.102.80) |
| 01:31:26 | → | merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
| 01:32:42 | <EvanR> | enemy numbers |
| 01:33:35 | <DigitalKiwi> | cope |
| 01:34:45 | <geekosaur> | if integers is `Integer`s then you have bigger problems than boxing |
| 01:34:49 | × | lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 268 seconds) |
| 01:34:57 | → | lsrts^ joins (~lsrts@206.85.120.17) |
| 01:35:09 | <zzz> | word |
| 01:35:23 | <DigitalKiwi> | "who're your enemies?" "numbers" "that's a lot" "how many you suppose?" "well, all of them" |
| 01:35:36 | → | lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) |
| 01:36:01 | <DigitalKiwi> | imaginary enemies |
| 01:36:15 | <geekosaur> | complex enemies |
| 01:36:25 | <DigitalKiwi> | irrational enemies |
| 01:36:27 | <zzz> | surreal enemies |
| 01:36:32 | × | lsrts^ quits (~lsrts@206.85.120.17) (Remote host closed the connection) |
| 01:37:34 | <DigitalKiwi> | sea enemies |
| 01:37:45 | <DigitalKiwi> | https://en.wikipedia.org/wiki/Sea_anemone :) |
| 01:39:05 | × | EvanR quits (~EvanR@user/evanr) (Quit: Leaving) |
| 01:40:05 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 01:43:13 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 01:43:54 | → | xff0x_ joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 01:44:41 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 01:44:42 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 01:44:42 | → | wroathe joins (~wroathe@user/wroathe) |
| 01:48:21 | × | lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 268 seconds) |
| 01:51:38 | → | dcoutts_ joins (~duncan@host86-167-206-78.range86-167.btcentralplus.com) |
| 01:51:44 | × | king_gs quits (~Thunderbi@187.201.102.80) (Read error: Connection reset by peer) |
| 01:52:16 | → | instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net) |
| 01:53:52 | → | king_gs joins (~Thunderbi@187.201.102.80) |
| 01:53:59 | × | dcoutts quits (~duncan@host86-184-129-193.range86-184.btcentralplus.com) (Ping timeout: 252 seconds) |
| 01:56:57 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 01:57:38 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 01:59:18 | → | zaquest joins (~notzaques@5.130.79.72) |
| 02:06:16 | × | merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
| 02:06:27 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
| 02:06:49 | × | JimL quits (~quassel@89-162-2-132.fiber.signal.no) (Ping timeout: 252 seconds) |
| 02:07:17 | → | vysn joins (~vysn@user/vysn) |
| 02:09:23 | <qrpnxz> | OH YEAH BABY. it's all about that chunking. From dozens of gigabytes of memory and several minutes, to 1.3 seconds and exactly the amount of memory i expect |
| 02:10:20 | <Axman6> | what're you working on? |
| 02:12:42 | × | king_gs quits (~Thunderbi@187.201.102.80) (Read error: Connection reset by peer) |
| 02:12:53 | → | king_gs1 joins (~Thunderbi@2806:103e:29:da31:dbd5:c070:5d09:91ef) |
| 02:13:20 | <qrpnxz> | a project i'm working on needs a library for some protocol, so i'm implementing that, but I wanted a streaming parser, so i went on a side-quest for like weeks investigating streaming in haskell. Honestly still not sure exactly what i'm gonna go for, but at least i'm getting an idea of the general principles needed to not have it be dog crap slow. |
| 02:15:11 | king_gs1 | is now known as king_gs |
| 02:16:09 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 02:16:09 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:16:09 | finn_elija | is now known as FinnElija |
| 02:17:37 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 02:19:45 | → | GoldsteinQ joins (~goldstein@goldstein.rs) |
| 02:23:33 | × | cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds) |
| 02:27:03 | → | cheater joins (~Username@user/cheater) |
| 02:28:24 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 02:28:53 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:33:23 | × | td_ quits (~td@94.134.91.254) (Ping timeout: 268 seconds) |
| 02:34:19 | × | BanUtama quits (~blake.rai@user/BanUtama) (Ping timeout: 252 seconds) |
| 02:34:40 | → | td_ joins (~td@muedsl-82-207-238-185.citykom.de) |
| 02:37:16 | → | nate4 joins (~nate@98.45.169.16) |
| 02:46:46 | → | BanUtama joins (~blake.rai@user/BanUtama) |
| 02:48:43 | → | Guest92 joins (~Guest92@2607:fea8:fca0:7efd:6604:7838:c1ec:5a0a) |
| 02:49:07 | <Guest92> | @unmtl MaybeT (State String) a |
| 02:49:07 | <lambdabot> | String -> (Maybe a, String) |
| 02:49:20 | <Guest92> | @unmtl StateT String Maybe a |
| 02:49:20 | <lambdabot> | String -> Maybe (a, String) |
| 02:52:17 | × | nilradical quits (~nilradica@user/naso) (Remote host closed the connection) |
| 02:52:30 | × | cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds) |
| 02:53:11 | → | nilradical joins (~nilradica@user/naso) |
| 02:54:15 | × | nilradical quits (~nilradica@user/naso) (Remote host closed the connection) |
| 02:54:38 | → | nilradical joins (~nilradica@user/naso) |
| 02:56:11 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 02:56:46 | <qrpnxz> | yeah, the fact some transformers actually transform backwards, is eyebrow raising |
| 03:01:22 | × | Guest92 quits (~Guest92@2607:fea8:fca0:7efd:6604:7838:c1ec:5a0a) (Quit: Client closed) |
| 03:01:34 | × | jero98772 quits (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection) |
| 03:20:31 | × | pgib quits (~textual@173.38.117.69) (Ping timeout: 252 seconds) |
| 03:21:14 | × | EsoAlgo quits (~EsoAlgo@129.146.136.145) (Ping timeout: 244 seconds) |
| 03:23:05 | × | foul_owl quits (~kerry@23.82.194.108) (Ping timeout: 252 seconds) |
| 03:28:25 | → | foul_owl joins (~kerry@174-21-65-36.tukw.qwest.net) |
| 03:29:30 | × | instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 268 seconds) |
| 03:29:58 | → | lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) |
| 03:32:02 | × | vysn quits (~vysn@user/vysn) (Quit: WeeChat 3.5) |
| 03:32:24 | → | vysn joins (~vysn@user/vysn) |
| 03:32:35 | × | hsw quits (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Ping timeout: 255 seconds) |
| 03:32:41 | → | merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
| 03:33:13 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 03:33:13 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 03:33:13 | → | wroathe joins (~wroathe@user/wroathe) |
| 03:33:15 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 268 seconds) |
| 03:34:49 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds) |
| 03:35:19 | → | mbuf joins (~Shakthi@122.165.55.71) |
| 03:36:02 | → | hsw joins (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) |
| 03:36:12 | × | hsw quits (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Remote host closed the connection) |
| 03:36:17 | × | vglfr quits (~vglfr@37.73.110.255) (Ping timeout: 252 seconds) |
| 03:36:25 | → | hsw joins (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) |
| 03:38:11 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds) |
| 03:39:25 | → | vglfr joins (~vglfr@37.73.110.255) |
| 03:40:31 | → | nate4 joins (~nate@98.45.169.16) |
| 03:40:40 | → | instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net) |
| 03:43:02 | × | foul_owl quits (~kerry@174-21-65-36.tukw.qwest.net) (Ping timeout: 268 seconds) |
| 03:43:23 | × | Vajb quits (~Vajb@2001:999:70c:2b99:3e15:6929:5bc6:c014) (Read error: Connection reset by peer) |
| 03:44:09 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) |
| 03:44:43 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
| 03:45:05 | × | instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 252 seconds) |
| 03:46:19 | → | Lumia joins (~Lumia@c-24-34-172-110.hsd1.ma.comcast.net) |
| 03:49:14 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 03:49:35 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 03:54:08 | × | BanUtama quits (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
| 03:55:33 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 03:55:33 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 03:55:34 | → | wroathe joins (~wroathe@user/wroathe) |
| 03:56:38 | → | foul_owl joins (~kerry@23.82.194.107) |
| 03:58:26 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 04:00:06 | × | vysn quits (~vysn@user/vysn) (Quit: WeeChat 3.5) |
| 04:00:22 | → | vysn joins (~vysn@user/vysn) |
| 04:00:43 | → | BanUtama joins (~blake.rai@user/BanUtama) |
| 04:01:26 | <Axman6> | I don't think it's accurate to say they transform backwards, there's only really one way most transformers can be defined, and the composition of them gives different monads depending on the order - like above, the former will tell you what the state was when things fail, but the latter won't (IMO the latter is probably more useful, but the former is probably more common) |
| 04:02:10 | <Axman6> | actually, ignore that last bit |
| 04:03:40 | × | king_gs quits (~Thunderbi@2806:103e:29:da31:dbd5:c070:5d09:91ef) (Quit: king_gs) |
| 04:04:21 | <texasmynsted> | Anybody have this book? https://mmhaskell.com/ebooks |
| 04:06:09 | <texasmynsted> | "Haskell Data Structures: In Depth" I am curious about what 9 data structures this would have. I am kind of a sucker for good pedagogy... I guess I could just shell out the $10 and find out. |
| 04:06:32 | <Axman6> | Never heard of it. It's a shame it doesn't tell you more about the content |
| 04:06:47 | <texasmynsted> | yeah |
| 04:07:16 | <texasmynsted> | from this source https://mmhaskell.com/ |
| 04:07:44 | × | merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
| 04:10:24 | <texasmynsted> | I can't even think of 9 haskell data structures. |
| 04:10:43 | <texasmynsted> | Type classes, but not data structures |
| 04:11:50 | <Axman6> | List, Map, HashMap, Seq, DList, Vector, (MVector)... I would expect at least these to be covered |
| 04:12:13 | <Axman6> | I'm assuming Maybe and Either are too trivial to really consider data structures |
| 04:12:17 | <Axman6> | maybe IntMap? |
| 04:12:42 | → | instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net) |
| 04:13:04 | <Axman6> | but the differences between (Hash|Int|)Map are relatively small, mostly relating to asymtotics, and a few unique features of their APIs |
| 04:14:12 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 04:14:22 | <texasmynsted> | List, Map, Seq, Set, Vector, |
| 04:14:29 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 04:14:39 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 04:15:11 | → | Vajb joins (~Vajb@2001:999:70c:2b99:3e15:6929:5bc6:c014) |
| 04:15:22 | <texasmynsted> | Right HashMap and Map feels like two variations of the same data structure |
| 04:15:33 | <Axman6> | yeah I forgot Set, that's important too |
| 04:15:52 | <Axman6> | eh, not really, they're quite different in implementation and performance |
| 04:16:38 | <texasmynsted> | Trie |
| 04:17:36 | × | instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 268 seconds) |
| 04:17:46 | <Axman6> | I wrote a ternary trie package years ago, stuck it on hackage, then forgot about it - then one day I saw it referenced in a paper comparing tree like data strucutres, and mine ended up being the fastest for many operations. One of the closest things to having a proper academic reference |
| 04:18:55 | <Axman6> | I came up with a neat encoding scheme for the Binary instance which represented whether a sub tree was a leaf or not in the tag byte. It did a good job compressing dictionaries of words |
| 04:18:56 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 04:20:02 | <texasmynsted> | Nice! |
| 04:20:28 | <texasmynsted> | Okay, I gave in and got the book. |
| 04:20:49 | <Axman6> | what're the structures? If the book's any good I'd considering giving them come money too |
| 04:21:17 | <dsal> | https://mmhaskell.com/blog/2022/8/1/data-structures-heap |
| 04:21:22 | <dsal> | I've been following the blog. |
| 04:21:23 | <texasmynsted> | List, Set, Map, Hash Set, Hash Map, Array, Vector, Sequence, Heap |
| 04:22:10 | <texasmynsted> | well, I should have read through the site/blog. Heh |
| 04:22:42 | <Axman6> | heh - oh well, it's nice to have it contained |
| 04:22:50 | <dsal> | In a container of some sort. |
| 04:23:01 | <Axman6> | and it's good to support people in the community |
| 04:23:55 | <dsal> | Yeah. I've just used all of these things. The Hash ones are a bit weird and I've not used them on purpose. |
| 04:24:01 | <dsal> | Actually, I don't think I've used Heap for anything. |
| 04:24:11 | <dsal> | But "how to write a functional queue" is a fun exercise. |
| 04:24:19 | <Axman6> | HashMap is probably the one I've used most, after list |
| 04:24:28 | <dsal> | Really? Why HashMap? |
| 04:24:39 | <dsal> | That's significantly more characters than Map. |
| 04:24:56 | <Axman6> | faster and more space efficient than Map |
| 04:25:28 | <dsal> | Hmm... I guess that's not mattered to me. It might be helpful in my mqtt broker. |
| 04:25:48 | <texasmynsted> | I would say this is worth the $10. |
| 04:28:38 | <Axman6> | Generally if I'm just inserting and looking things up by key, I'll opt for HashMap, but sometimes you want to get things out in a consistent/predictable order, and then Data.Map is more useful |
| 04:28:43 | × | luffy quits (~chenqisu1@183.217.201.23) (Ping timeout: 252 seconds) |
| 04:29:16 | <dsal> | Map seems more "out of the box" |
| 04:32:49 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 04:36:01 | <jackdk> | I pretty much always use Map, because you can do elegant constructions my mconcatting singleton maps and HashMap does not like that one bit |
| 04:38:09 | → | nate4 joins (~nate@98.45.169.16) |
| 04:42:53 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 04:45:32 | × | Lumia quits (~Lumia@c-24-34-172-110.hsd1.ma.comcast.net) (Quit: ,-) |
| 04:46:19 | <texasmynsted> | I would have liked to see structural recursion, structural induction, etc described in the book but it is very short. |
| 04:48:16 | → | instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net) |
| 04:51:26 | → | king_gs joins (~Thunderbi@2806:103e:29:da31:e286:1b8a:479f:b023) |
| 04:52:30 | → | titibandit joins (~titibandi@xdsl-212-8-147-38.nc.de) |
| 04:53:22 | × | instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 268 seconds) |
| 04:53:58 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 04:55:43 | → | kazaf joins (~kazaf@94.180.63.53) |
| 05:00:40 | × | kazaf quits (~kazaf@94.180.63.53) (Ping timeout: 252 seconds) |
| 05:03:49 | × | son0p quits (~ff@181.136.122.143) (Ping timeout: 268 seconds) |
| 05:04:46 | → | instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net) |
| 05:05:05 | × | BanUtama quits (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
| 05:05:27 | × | vglfr quits (~vglfr@37.73.110.255) (Read error: Connection reset by peer) |
| 05:05:39 | → | vglfr joins (~vglfr@37.73.110.255) |
| 05:05:43 | → | tvandinther joins (~tvandinth@2406:e002:6ca2:2b01:e95b:28f0:b5e8:ed97) |
| 05:07:51 | <tvandinther> | Hey everyone, quick question. A common pattern I get in code is checking that several conditions are met. I know about using `all` or `any` but I'm struggling to apply things in the right way to simplify an expression such as: |
| 05:07:52 | <tvandinther> | `a `cond1` b && a `cond2` b` |
| 05:07:52 | <tvandinther> | How would you simplify this so that the conditions can be sequenced? |
| 05:08:54 | <Axman6> | all (\p -> p a b) [cond1, cond2]? |
| 05:09:13 | × | instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 244 seconds) |
| 05:09:23 | <Axman6> | @pl all (\p -> p a b) -- don't do this, I'm just curious |
| 05:09:23 | <lambdabot> | all (flip ($ a) b) |
| 05:10:19 | <Axman6> | though generally I find that using boolean functions is almost always a code smell - generally you're gating access to something, and for that, Maybe or Either are substantially better options |
| 05:10:40 | <tvandinther> | oh right, the use of the lambda makes that obvious. I was trying to use `$` |
| 05:10:50 | <Axman6> | This feels lrelated to the "parse, don't validate" mantra: https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/ |
| 05:10:50 | <tvandinther> | the lambda is certainly the clearer option |
| 05:11:26 | × | nilradical quits (~nilradica@user/naso) (Remote host closed the connection) |
| 05:11:28 | <tvandinther> | The use case is checking that a tuple has both values >= |
| 05:11:33 | <Axman6> | I'd highly recommend you read that article if you haven't seen it |
| 05:11:38 | <tvandinther> | come to think of it, theres probably a cleaner way to write that |
| 05:12:12 | → | nilradical joins (~nilradica@user/naso) |
| 05:12:44 | <tvandinther> | Thanks, I'll give that article a read too |
| 05:15:34 | × | vglfr quits (~vglfr@37.73.110.255) (Ping timeout: 268 seconds) |
| 05:16:32 | → | Lumia joins (~Lumia@c-24-34-172-110.hsd1.ma.comcast.net) |
| 05:17:16 | × | nilradical quits (~nilradica@user/naso) (Remote host closed the connection) |
| 05:17:30 | → | nilradical joins (~nilradica@user/naso) |
| 05:17:53 | → | BanUtama joins (~blake.rai@user/BanUtama) |
| 05:19:39 | <tvandinther> | Is there a built-in which maps values of 2 zipped pairs? |
| 05:19:51 | <tvandinther> | Or even to zip 2 pairs? |
| 05:22:24 | <Axman6> | possibly in some of the arrow combinators |
| 05:22:31 | <Axman6> | :t (&&&) |
| 05:22:32 | <lambdabot> | Arrow a => a b c -> a b c' -> a b (c, c') |
| 05:22:34 | <Axman6> | :t (***) |
| 05:22:36 | <lambdabot> | Arrow a => a b c -> a b' c' -> a (b, b') (c, c') |
| 05:22:46 | <Axman6> | not quite |
| 05:23:29 | <Axman6> | writing the function of type (a -> b -> c) -> (a,a) -> (b,b) -> (c,c) is pretty trivial though |
| 05:23:36 | <Axman6> | @djinn (a -> b -> c) -> (a,a) -> (b,b) -> (c,c) |
| 05:23:36 | <lambdabot> | f a (b, _) (c, _) = (a b c, a b c) |
| 05:23:57 | Axman6 | glares at djinn |
| 05:25:10 | <Axman6> | there's only like 8 implementation of functions with that type, not sure why djinn decided on that one, I thought it preferred to opt for using all inputs if possible |
| 05:29:20 | <tvandinther> | Where does it search? I tried that signature in hoogle and found nothing |
| 05:31:11 | → | merijn joins (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
| 05:31:31 | <Axman6> | it doesn't search, djinn writes functions for you |
| 05:31:38 | <Axman6> | @hoogle (a -> b -> c) -> (a,a) -> (b,b) -> (c,c) |
| 05:31:39 | <lambdabot> | No results found |
| 05:31:44 | <tvandinther> | ah I see |
| 05:36:04 | × | Lumia quits (~Lumia@c-24-34-172-110.hsd1.ma.comcast.net) (Quit: ,-) |
| 05:36:05 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 05:39:11 | × | king_gs quits (~Thunderbi@2806:103e:29:da31:e286:1b8a:479f:b023) (Ping timeout: 244 seconds) |
| 05:39:42 | <tvandinther> | I keep going around in circles due to my lack of understanding. Main question is, would you simplify this expression, and if so how would you do it? |
| 05:39:43 | <tvandinther> | `snd p1 >= snd p2 && fst p1 <= fst p2` |
| 05:41:05 | <Axman6> | (\(x1,y1) (x2,y2) -> y1 >= y2 && x1 <= x2) p1 p2? |
| 05:41:09 | × | nilradical quits (~nilradica@user/naso) (Remote host closed the connection) |
| 05:41:15 | <Axman6> | on can be useful here too |
| 05:41:30 | <Axman6> | :t (<=) `on` snd |
| 05:41:32 | <lambdabot> | Ord a1 => (a2, a1) -> (a2, a1) -> Bool |
| 05:41:45 | <chreekat> | tvandinther: I probably wouldn't, it's pretty damn simple 😃 |
| 05:41:49 | → | nilradical joins (~nilradica@user/naso) |
| 05:42:21 | <Axman6> | if you know you're going to use both fst and snd, then just use a pattern match and name the elements |
| 05:44:18 | <Clinton[m]> | This is a bit of a mix of a Haskell/Nix/VScode question, but does anyone know how to get VSCode to automagically run `nix-develop` on `flake.nix` whenever I load a project and have that as my environment. I know I can manually run `nix-develop` and then `code` inside that shell but I was hoping for a way to VSCode to just detect that. |
| 05:44:54 | → | coot joins (~coot@213.134.176.158) |
| 05:46:10 | <tvandinther> | True, pattern matching or just not simplifying seem to be the answers here. Thank you. |
| 05:46:20 | × | coot quits (~coot@213.134.176.158) (Client Quit) |
| 05:46:47 | → | abraham joins (~abraham@159.89.183.132) |
| 05:47:01 | × | nilradical quits (~nilradica@user/naso) (Ping timeout: 268 seconds) |
| 05:47:59 | → | coot joins (~coot@213.134.176.158) |
| 05:48:09 | <Axman6> | Clinton[m]: I don't know much about nix develop, but I assume it sets up the nix environment, including things like env vars? if so, it would be pretty hard from nix develop run from within VSCode to affect the environment of vs code; I think the cd foo; nix develop; code . options is probably the simplest |
| 05:50:32 | <Lears> | You could also use an alias or a wrapper script which looks for a flake.nix and does this for you. |
| 05:51:30 | → | bilegeek joins (~bilegeek@2600:1008:b029:dafd:1c14:3295:e11b:5339) |
| 05:52:16 | → | ubert joins (~Thunderbi@77.119.164.0.wireless.dyn.drei.com) |
| 05:52:22 | <Axman6> | alias code!="cd $1; nix develop; code ." |
| 05:56:52 | → | king_gs joins (~Thunderbi@187.201.102.80) |
| 06:04:10 | × | abraham quits (~abraham@159.89.183.132) (Quit: Textual IRC Client: www.textualapp.com) |
| 06:04:26 | <jackdk> | I think there's a plugin that does that but I don't use vscode |
| 06:04:47 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 06:04:58 | → | instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net) |
| 06:05:14 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 06:05:23 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 06:05:30 | <Axman6> | Nix Environment Selector: Allows switch environment for Visual Studio Code and extensions based on Nix config file." does that sound right? |
| 06:06:08 | × | merijn quits (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
| 06:06:23 | <Axman6> | actually, the Haskell example in the docs for that look pretty neat. |
| 06:07:10 | <Axman6> | I was just reading Tweag's post on how they'd like to improve Nix, and the linked thread about marketing the system (which was a surprising dumpster fire of a discussion intially) |
| 06:09:09 | × | instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 244 seconds) |
| 06:10:05 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 06:12:39 | × | poscat0x04 quits (~poscat@114.245.109.158) (Quit: Bye) |
| 06:13:44 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 06:14:58 | → | poscat joins (~poscat@2408:8206:4822:7201:ea07:2224:d420:ae5c) |
| 06:20:41 | → | instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net) |
| 06:22:07 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 06:25:13 | × | instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 268 seconds) |
| 06:28:36 | → | MajorBiscuit joins (~MajorBisc@c-001-013-051.client.tudelft.eduvpn.nl) |
| 06:28:59 | <chreekat> | Axman6: link? |
| 06:29:47 | <Axman6> | https://www.tweag.io/blog/2022-08-04-tweag-and-nix-future/ |
| 06:30:43 | → | jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 06:31:06 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 06:31:23 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 268 seconds) |
| 06:32:47 | → | `2jt joins (~jtomas@56.red-88-17-82.dynamicip.rima-tde.net) |
| 06:34:04 | × | gdown quits (~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection) |
| 06:34:13 | → | michalz joins (~michalz@185.246.204.90) |
| 06:35:37 | × | king_gs quits (~Thunderbi@187.201.102.80) (Read error: Connection reset by peer) |
| 06:37:14 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 06:38:31 | → | king_gs joins (~Thunderbi@187.201.102.80) |
| 06:46:52 | × | gff quits (~gff@user/gff) (Ping timeout: 268 seconds) |
| 06:48:37 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 06:48:46 | → | gff joins (~gff@user/gff) |
| 06:49:06 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 06:50:33 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 06:52:43 | → | nate4 joins (~nate@98.45.169.16) |
| 06:57:56 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 06:57:56 | × | king_gs quits (~Thunderbi@187.201.102.80) (Read error: Connection reset by peer) |
| 06:57:57 | → | king_gs1 joins (~Thunderbi@2806:103e:29:da31:a193:85fc:208c:eefb) |
| 06:58:14 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:9857:ce5d:2e2a:a7ef) |
| 06:59:41 | → | gmg joins (~user@user/gehmehgeh) |
| 07:00:16 | king_gs1 | is now known as king_gs |
| 07:04:39 | → | pmarg joins (~pmarg@2a01:799:159f:9b00:b695:8801:9ef8:8462) |
| 07:06:17 | → | zeenk joins (~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) |
| 07:06:58 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Quit: zxx7529) |
| 07:09:00 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 07:10:28 | → | mmhat joins (~mmh@p200300f1c706f70aee086bfffe095315.dip0.t-ipconnect.de) |
| 07:13:52 | → | son0p joins (~ff@181.136.122.143) |
| 07:16:48 | → | cfricke joins (~cfricke@user/cfricke) |
| 07:18:00 | → | chele joins (~chele@user/chele) |
| 07:19:21 | → | chimp_ joins (~Psybur@c-76-123-45-25.hsd1.va.comcast.net) |
| 07:20:41 | × | Psybur quits (~Psybur@c-76-123-45-25.hsd1.va.comcast.net) (Ping timeout: 252 seconds) |
| 07:23:26 | → | jgeerds joins (~jgeerds@55d46bad.access.ecotel.net) |
| 07:25:05 | → | frost joins (~frost@user/frost) |
| 07:26:08 | × | BanUtama quits (~blake.rai@user/BanUtama) (Ping timeout: 244 seconds) |
| 07:26:30 | × | tristanC quits (~tristanC@user/tristanc) (Ping timeout: 264 seconds) |
| 07:27:02 | × | totte quits (~totte@h-82-196-112-155.A166.priv.bahnhof.se) (Ping timeout: 268 seconds) |
| 07:31:39 | → | aliosablack joins (~chomwitt@2a02:587:dc15:5e00:d0f9:9fe4:8717:f94d) |
| 07:34:53 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 07:35:21 | × | xff0x_ quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds) |
| 07:37:27 | → | xff0x_ joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 07:39:34 | × | king_gs quits (~Thunderbi@2806:103e:29:da31:a193:85fc:208c:eefb) (Ping timeout: 244 seconds) |
| 07:40:46 | → | BanUtama joins (~blake.rai@user/BanUtama) |
| 07:43:09 | → | acidjnk_new joins (~acidjnk@p200300d6e70586140960cfbfc54cf807.dip0.t-ipconnect.de) |
| 07:43:45 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 07:47:57 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 07:48:40 | → | yvan-sraka joins (~yvan-srak@105.67.135.250) |
| 07:53:30 | → | instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net) |
| 07:54:57 | → | cheater joins (~Username@user/cheater) |
| 07:56:31 | × | titibandit quits (~titibandi@xdsl-212-8-147-38.nc.de) (Remote host closed the connection) |
| 07:58:22 | × | instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 268 seconds) |
| 07:59:31 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 08:05:18 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
| 08:07:00 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
| 08:07:17 | × | yahb2 quits (~yahb2@2a01:4f8:c0c:5c7b::2) (Remote host closed the connection) |
| 08:07:56 | → | yahb2 joins (~yahb2@static.56.27.47.78.clients.your-server.de) |
| 08:09:40 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 08:12:51 | × | shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit) |
| 08:13:20 | → | tristanC joins (~tristanC@user/tristanc) |
| 08:14:13 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
| 08:15:31 | × | kraftwerk28_ quits (~kraftwerk@178.62.210.83) (Quit: ZNC 1.8.2 - https://znc.in) |
| 08:16:34 | → | kraftwerk28 joins (~kraftwerk@178.62.210.83) |
| 08:18:55 | → | ccntrq joins (~Thunderbi@172.209.94.92.rev.sfr.net) |
| 08:29:49 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:9857:ce5d:2e2a:a7ef) (Ping timeout: 268 seconds) |
| 08:30:26 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:298e:42c7:d203:46f0) |
| 08:33:35 | → | AlexNoo_ joins (~AlexNoo@178.34.151.166) |
| 08:33:46 | × | AlexNoo quits (~AlexNoo@178.34.151.166) (Read error: Connection reset by peer) |
| 08:36:20 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 08:37:03 | → | ubert1 joins (~Thunderbi@178.165.202.57.wireless.dyn.drei.com) |
| 08:38:03 | × | ubert quits (~Thunderbi@77.119.164.0.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
| 08:38:03 | ubert1 | is now known as ubert |
| 08:42:18 | → | pmarg_ joins (~pmarg@138.199.6.238) |
| 08:44:47 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 08:45:14 | × | pmarg quits (~pmarg@2a01:799:159f:9b00:b695:8801:9ef8:8462) (Ping timeout: 268 seconds) |
| 08:45:17 | pmarg_ | is now known as pmarg |
| 08:48:47 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 08:52:27 | → | ardell joins (~ardell@user/ardell) |
| 08:56:30 | → | irfan joins (~irfan@user/irfan) |
| 08:58:31 | → | kuribas joins (~user@silversquare.silversquare.eu) |
| 08:58:50 | × | mmhat quits (~mmh@p200300f1c706f70aee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 09:00:09 | × | disco-dave[m] quits (~disco-dav@2001:470:69fc:105::2:1892) (Quit: You have been kicked for being idle) |
| 09:00:54 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 09:06:12 | × | xff0x_ quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds) |
| 09:07:16 | × | tvandinther quits (~tvandinth@2406:e002:6ca2:2b01:e95b:28f0:b5e8:ed97) (Quit: Client closed) |
| 09:10:29 | → | mmhat joins (~mmh@p200300f1c706f7beee086bfffe095315.dip0.t-ipconnect.de) |
| 09:11:20 | → | luffy joins (~chenqisu1@183.217.201.23) |
| 09:13:56 | × | luffy quits (~chenqisu1@183.217.201.23) (Max SendQ exceeded) |
| 09:14:25 | → | luffy joins (~chenqisu1@183.217.201.23) |
| 09:16:16 | → | xff0x_ joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 09:16:23 | × | coot quits (~coot@213.134.176.158) (Quit: coot) |
| 09:18:18 | × | luffy quits (~chenqisu1@183.217.201.23) (Client Quit) |
| 09:18:38 | × | acidjnk_new quits (~acidjnk@p200300d6e70586140960cfbfc54cf807.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 09:18:38 | → | luffy joins (~chenqisu1@183.217.201.23) |
| 09:19:26 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 09:23:28 | → | alternateved joins (~user@staticline-31-183-149-36.toya.net.pl) |
| 09:29:33 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 09:44:39 | → | alp_ joins (~alp@user/alp) |
| 09:45:18 | × | vysn quits (~vysn@user/vysn) (Quit: WeeChat 3.5) |
| 09:45:35 | → | vysn joins (~vysn@user/vysn) |
| 09:50:17 | × | zeenk quits (~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) (Quit: Konversation terminated!) |
| 09:50:36 | × | BanUtama quits (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
| 09:50:40 | → | vglfr joins (~vglfr@88.155.13.114) |
| 09:53:54 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 09:55:09 | → | monadplus[m]1 joins (~arnauabel@2001:470:69fc:105::2:6085) |
| 09:57:09 | → | BanUtama joins (~blake.rai@user/BanUtama) |
| 10:01:39 | × | BanUtama quits (~blake.rai@user/BanUtama) (Ping timeout: 244 seconds) |
| 10:03:29 | × | cosimone quits (~user@93-44-186-171.ip98.fastwebnet.it) (Remote host closed the connection) |
| 10:05:11 | → | BanUtama joins (~blake.rai@user/BanUtama) |
| 10:05:41 | × | marquis_1ndras quits (~marquis_a@124-150-76-210.tpgi.com.au) (Ping timeout: 252 seconds) |
| 10:06:27 | → | acidjnk_new joins (~acidjnk@p200300d6e705861481a7f77b2ce6d239.dip0.t-ipconnect.de) |
| 10:07:37 | → | coot joins (~coot@213.134.176.158) |
| 10:07:58 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 10:11:30 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 10:11:50 | × | bilegeek quits (~bilegeek@2600:1008:b029:dafd:1c14:3295:e11b:5339) (Quit: Leaving) |
| 10:12:25 | → | marquis_andras joins (~marquis_a@27-32-245-27.tpgi.com.au) |
| 10:12:58 | × | luffy quits (~chenqisu1@183.217.201.23) (Quit: Leaving) |
| 10:15:24 | × | yvan-sraka quits (~yvan-srak@105.67.135.250) (Remote host closed the connection) |
| 10:15:57 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
| 10:16:36 | → | notzmv joins (~zmv@user/notzmv) |
| 10:18:31 | → | cosimone joins (~user@93-44-186-171.ip98.fastwebnet.it) |
| 10:19:14 | → | nilradical joins (~nilradica@user/naso) |
| 10:19:16 | → | luffy joins (~chenqisu1@183.217.201.23) |
| 10:20:12 | × | kuribas quits (~user@silversquare.silversquare.eu) (Ping timeout: 268 seconds) |
| 10:20:47 | × | xff0x_ quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 255 seconds) |
| 10:25:59 | → | kuribas joins (~user@silversquare.silversquare.eu) |
| 10:27:38 | → | ph88 joins (~ph88@tmo-116-33.customers.d1-online.com) |
| 10:29:16 | <kuribas> | How rare is it to see rigor in companies? I hear the claim over and over that real world data is not rigorous, but most of the time it looks to me that it's just sloppy coding or modelling. |
| 10:30:15 | <kuribas> | Even when dealing with unexpected data, you need to apply rigor to get predidtable results. |
| 10:35:31 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 10:35:33 | × | coot quits (~coot@213.134.176.158) (Quit: coot) |
| 10:38:22 | <chreekat> | kuribas : Depends wildly on industry. I don't know what it means for data to be rigorous. I suppose you mean rigorous about ensuring data quality? In the context of transforming data coming from external sources? |
| 10:38:35 | → | img joins (~img@user/img) |
| 10:38:42 | <kritzefitz> | kuribas: I think one relevant aspect, is that a lot of practice-oriented code has to adapt to requirements that change over time. Making changes to a code base in a sloppy way is often cheaper in the short term than rigorously redefining your models to fit the new requirements. |
| 10:41:48 | <chreekat> | Or put another way, the model of any real world problem is time dependent, and also depends and past and future versions of itself, and modeling all that rigorously is a development I would watch with much interest |
| 10:45:02 | × | cosimone quits (~user@93-44-186-171.ip98.fastwebnet.it) (Remote host closed the connection) |
| 10:47:38 | × | darchitect1 quits (~darchitec@2a00:23c6:3584:df01:7ab:2377:4825:f9a) (Ping timeout: 244 seconds) |
| 10:49:07 | × | vysn quits (~vysn@user/vysn) (Quit: WeeChat 3.5) |
| 10:49:22 | → | vysn joins (~vysn@user/vysn) |
| 10:51:27 | → | yvan-sraka joins (~yvan-srak@105.67.135.250) |
| 10:52:13 | × | vysn quits (~vysn@user/vysn) (Client Quit) |
| 10:52:39 | → | vysn joins (~vysn@user/vysn) |
| 10:52:48 | → | geranim0 joins (~geranim0@modemcable062.79-202-24.mc.videotron.ca) |
| 10:53:00 | → | bob joins (~geranim0@modemcable062.79-202-24.mc.videotron.ca) |
| 10:54:13 | → | nate4 joins (~nate@98.45.169.16) |
| 10:54:29 | × | BanUtama quits (~blake.rai@user/BanUtama) (Quit: leaving) |
| 10:55:19 | × | alp_ quits (~alp@user/alp) (Ping timeout: 268 seconds) |
| 10:58:24 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 268 seconds) |
| 10:59:40 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 11:00:50 | → | CiaoSen joins (~Jura@p200300c95738a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 11:00:51 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 255 seconds) |
| 11:00:51 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 11:01:02 | × | CiaoSen quits (~Jura@p200300c95738a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Client Quit) |
| 11:01:28 | → | kenran joins (~kenran@ip-037-024-119-190.um08.pools.vodafone-ip.de) |
| 11:01:31 | × | glguy quits (x@libera/staff/glguy) (Read error: Connection reset by peer) |
| 11:02:35 | → | glguy joins (x@libera/staff/glguy) |
| 11:03:43 | <maerwald[m]> | Rigor? Who's that |
| 11:04:55 | <maerwald[m]> | Think he died in a car accident. Hit by a Bus. |
| 11:06:11 | <tdammers> | I'm pretty sure all this is coming from clojure apologists |
| 11:06:36 | <tdammers> | real-world code is never 100% rigorous, but that doesn't mean rigor should go out the window entirely |
| 11:07:59 | <absentia> | who needs rigor |
| 11:08:14 | <absentia> | ship the code, get a raise, promotion, change of title |
| 11:08:15 | <tdammers> | there's a difference between making conscious and informed choices about where to be rigorous and where not, and just winging it and writing code in a reactive, ad-hoc fashion |
| 11:08:27 | <absentia> | leave the firm for another pay bump and title inflation |
| 11:08:40 | <absentia> | and let the next guy figure out the edge cases |
| 11:08:53 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 268 seconds) |
| 11:09:03 | <tdammers> | ^ that's also extremely common, and an almost inevitable consequence of the "paid labor" situation |
| 11:09:46 | <tdammers> | as with anything, once you start paying people for doing it, the quality goes from "giving it your very best" to "enough, and not a bit more" |
| 11:09:53 | <maerwald[m]> | I think most of industry issues come from those "star programmers". They get the company up and running and then leave. And nevnr receive any feedback about their decisions. So they stay in their bubble |
| 11:10:09 | <tdammers> | nah |
| 11:10:14 | <absentia> | yeah |
| 11:10:32 | <maerwald[m]> | It's not poor coders |
| 11:10:43 | <tdammers> | I mean, that happens, but most of the industry is not companies that have just outgrown their early startup phase |
| 11:10:45 | × | alternateved quits (~user@staticline-31-183-149-36.toya.net.pl) (Remote host closed the connection) |
| 11:11:04 | <tdammers> | you are right that it's not usually the coders though |
| 11:11:08 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 11:11:09 | <tdammers> | or at least, not all of them |
| 11:11:55 | <tdammers> | but it's really really easy to mess up a team of perfectly fine developers without any rockstars, and it happens all the time |
| 11:13:28 | <tdammers> | give them overly specific tasks, but withhold key information about the operation; set unrealistic deadlines; change course and redefine the domain terminology every week; fill the backlog with vaguely-defined "issues" that are really more like a layman's fever dream; bury them in meetings and memos and "urgent" tickets |
| 11:13:31 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 11:13:40 | <tdammers> | and, if in doubt, raise the pressure |
| 11:14:13 | <tdammers> | sooner or later, they will start taking shortcuts, check in code that they know isn't right, and once the technical debt starts piling up, it tends to get worse and worse |
| 11:15:21 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 11:15:23 | <maerwald[m]> | Never worked anywhere, where sloppy code was the problem. It was always design decisions early in the startup phase, that were impossible to revert |
| 11:15:38 | <maerwald[m]> | And those are always the rockstars |
| 11:16:19 | <tdammers> | IME, it's more often unreasonable managers than rockstar devs who come up with those decisions |
| 11:16:20 | → | gmg joins (~user@user/gehmehgeh) |
| 11:17:01 | <maerwald[m]> | Yeah sure, whoever makes the decisions |
| 11:17:17 | → | alternateved joins (~user@staticline-31-183-149-36.toya.net.pl) |
| 11:17:20 | <maerwald[m]> | The problem is how to get feedback for those |
| 11:17:30 | <maerwald[m]> | Many of them manifest after years, when the original decision makers are long gone |
| 11:17:56 | <tdammers> | and those decisions wouldn't be so bad if the code were kept in a state where they can be undone / changed |
| 11:18:00 | <tdammers> | but that never happens |
| 11:18:24 | <tdammers> | it's not outright *sloppy* code, it's just that nobody goes the extra mile to make the code truly orthogonal and refactorable |
| 11:19:29 | <tdammers> | another problem is that about 80% of the developer population, and 99.99% of the management population, are stuck in a "make it work" mindset, where code is considered "done" when it has been shown to produce the desired results at least once, in very specific circumstances. |
| 11:19:40 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 11:19:56 | <maerwald[m]> | Hehe |
| 11:21:04 | <maerwald[m]> | It's only done when it was used during s moon landing :p |
| 11:21:05 | <maerwald[m]> | Liko curl |
| 11:21:34 | <tdammers> | didn't one of the Apollo computer systems fail during the first Moon landing? |
| 11:23:34 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 11:23:49 | <maerwald[m]> | That's why it's better to quit programming and just... dunno, open a pub |
| 11:23:54 | → | xff0x_ joins (~xff0x@2405:6580:b080:900:7393:ed71:26f2:b383) |
| 11:24:33 | → | darchitect1 joins (~darchitec@2a00:23c6:3584:df01:9f23:d492:30c1:6303) |
| 11:25:33 | <arahael> | tdammers: Absolutely correct. |
| 11:26:29 | <maerwald[m]> | "It's only done when it was used during a successful moon landing" ;) |
| 11:28:15 | <arahael> | maerwald[m]: I was thinking this morning that maybe I should run a cafe. :) |
| 11:28:27 | <arahael> | Cafe dude looked happy./ |
| 11:28:58 | <tdammers> | the landing was still a success, despite the failure |
| 11:29:19 | <tdammers> | and of course the failure wasn't a programming error, but an oversight in the overall system design |
| 11:29:42 | <maerwald[m]> | arahael: if you provide decaffeinated matcha, then sure |
| 11:30:25 | <arahael> | maerwald[m]: No, I'd provide espresso. And only espresso. :) |
| 11:30:38 | <maerwald[m]> | tdammers: who knows, maybe the landing was a success because of the crash :p |
| 11:32:03 | × | poscat quits (~poscat@2408:8206:4822:7201:ea07:2224:d420:ae5c) (Quit: Bye) |
| 11:33:33 | × | raym quits (~raym@user/raym) (Remote host closed the connection) |
| 11:34:12 | <jackdk> | The star programmers I'm most in awe of are the ones who pull theory out of a hat to achieve seemingly-impossible things |
| 11:37:06 | <maerwald[m]> | They provide a lot of value by being explorers, but I'd never want them to build the system for my startup that decides whether my tech stack is gonna be well thought through for the future |
| 11:37:31 | → | raym joins (~raym@user/raym) |
| 11:38:07 | → | CiaoSen joins (~Jura@p200300c95738a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 11:38:59 | <maerwald[m]> | Would rather hire a 60 years old java programmer who has looked into the abyss many times |
| 11:39:48 | × | Batzy quits (~quassel@user/batzy) (Quit: No Ping reply in 180 seconds.) |
| 11:41:13 | → | Batzy joins (~quassel@user/batzy) |
| 11:42:11 | × | pmarg quits (~pmarg@138.199.6.238) (Ping timeout: 268 seconds) |
| 11:44:46 | × | aliosablack quits (~chomwitt@2a02:587:dc15:5e00:d0f9:9fe4:8717:f94d) (Quit: Leaving) |
| 11:51:02 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 11:52:04 | → | chomwitt joins (~chomwitt@2a02:587:dc15:5e00:d0f9:9fe4:8717:f94d) |
| 11:55:01 | × | yvan-sraka quits (~yvan-srak@105.67.135.250) (Remote host closed the connection) |
| 11:55:20 | → | yvan-sraka joins (~yvan-srak@105.67.135.250) |
| 11:57:53 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 11:57:58 | × | ubert quits (~Thunderbi@178.165.202.57.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
| 11:58:02 | → | coot joins (~coot@213.134.176.158) |
| 11:58:08 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 11:58:18 | → | ubert joins (~Thunderbi@178.165.202.57.wireless.dyn.drei.com) |
| 11:58:46 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 12:02:43 | → | zeenk joins (~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) |
| 12:04:44 | <kuribas> | tdammers: "it's not outright *sloppy* code, it's just that nobody goes the extra mile to make the code truly orthogonal and refactorable" => this |
| 12:06:34 | <kuribas> | tdammers: and write documentation about tricky bits, important domain specific issues. |
| 12:07:40 | → | elkcl_ joins (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
| 12:09:21 | × | elkcl quits (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 268 seconds) |
| 12:09:22 | elkcl_ | is now known as elkcl |
| 12:11:00 | <kuribas> | tdammers: algorithms, architecture |
| 12:12:32 | <maerwald> | documentation is harder than coding |
| 12:12:44 | <kuribas> | but more important |
| 12:12:46 | <maerwald> | it requires you to actually understand something |
| 12:13:47 | <lortabac> | in my experience most problems arise because people underestimate complexity |
| 12:14:11 | <maerwald> | lortabac: of the domain or of their decisions? ;) |
| 12:14:17 | <lortabac> | the human brain is bad at understanding measures that grow exponentially |
| 12:14:18 | <maerwald> | IME, usually the latter |
| 12:14:44 | <lortabac> | we tend to sum the complexity of the various features, instead of multiplying |
| 12:15:37 | <merijn> | maerwald: Yes |
| 12:15:42 | <maerwald> | you're making a good argument against composition ;p |
| 12:16:29 | <maerwald> | everything comes back to unix principles... even functional programming (which didn't exist back then) |
| 12:17:01 | <maerwald> | composition is unmanagable if you don't follow those principles |
| 12:17:53 | <lortabac> | composition is bad, composability is good :) |
| 12:19:38 | <carbolymer> | lortabac: what's bad about composition? |
| 12:20:27 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 12:21:26 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:22:28 | <lortabac> | in the context of what we were discussing... the composition of multiple features increases the overall complexity |
| 12:23:12 | <lortabac> | but the composability of the individual components allows you to reason on a single component at a time |
| 12:23:39 | × | koz_ quits (~koz@121.99.240.58) (Ping timeout: 268 seconds) |
| 12:26:09 | <carbolymer> | lortabac: you should abstract complexity away while composing, so you can make composition good again |
| 12:27:13 | × | jgeerds quits (~jgeerds@55d46bad.access.ecotel.net) (Ping timeout: 252 seconds) |
| 12:27:43 | → | koz joins (~koz@121.99.240.58) |
| 12:29:19 | → | ph88^ joins (~ph88@tmo-116-33.customers.d1-online.com) |
| 12:30:17 | × | nilradical quits (~nilradica@user/naso) (Remote host closed the connection) |
| 12:30:56 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
| 12:31:28 | → | nilradical joins (~nilradica@user/naso) |
| 12:33:05 | × | ph88 quits (~ph88@tmo-116-33.customers.d1-online.com) (Ping timeout: 252 seconds) |
| 12:35:37 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 12:35:39 | × | vglfr quits (~vglfr@88.155.13.114) (Ping timeout: 252 seconds) |
| 12:37:05 | → | poscat joins (~poscat@2408:8206:4820:6423:32a0:bd91:4668:caff) |
| 12:37:43 | × | nilradical quits (~nilradica@user/naso) (Ping timeout: 268 seconds) |
| 12:42:26 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 12:43:23 | → | nilradical joins (~nilradica@user/naso) |
| 12:45:05 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds) |
| 12:45:48 | → | shriekingnoise joins (~shrieking@186.137.167.202) |
| 12:50:57 | → | stef204 joins (~stef204@user/stef204) |
| 12:52:01 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 268 seconds) |
| 12:56:57 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 12:57:01 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 12:57:29 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 12:58:25 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection) |
| 12:58:59 | → | vglfr joins (~vglfr@88.155.13.114) |
| 12:59:21 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 13:07:26 | × | bliminse quits (~bliminse@user/bliminse) (Ping timeout: 268 seconds) |
| 13:08:33 | × | luffy quits (~chenqisu1@183.217.201.23) (Ping timeout: 268 seconds) |
| 13:08:58 | <tdammers> | what's even harder than writing documentation is writing code that doesn't need documentation |
| 13:09:01 | → | bliminse joins (~bliminse@user/bliminse) |
| 13:09:14 | <tdammers> | in part because a lot of code that we think is self-explanatory is, in fact, not |
| 13:13:16 | → | nate4 joins (~nate@98.45.169.16) |
| 13:14:34 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 13:15:43 | × | poscat quits (~poscat@2408:8206:4820:6423:32a0:bd91:4668:caff) (Quit: Bye) |
| 13:17:22 | → | biberu\ joins (~biberu@user/biberu) |
| 13:18:23 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 13:19:01 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 244 seconds) |
| 13:20:51 | × | biberu quits (~biberu@user/biberu) (Ping timeout: 268 seconds) |
| 13:20:52 | biberu\ | is now known as biberu |
| 13:21:43 | × | nilradical quits (~nilradica@user/naso) (Remote host closed the connection) |
| 13:22:10 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds) |
| 13:22:16 | × | yvan-sraka quits (~yvan-srak@105.67.135.250) (Remote host closed the connection) |
| 13:23:52 | → | nilradical joins (~nilradica@user/naso) |
| 13:25:07 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 13:27:33 | × | ccntrq quits (~Thunderbi@172.209.94.92.rev.sfr.net) (Remote host closed the connection) |
| 13:28:17 | × | nilradical quits (~nilradica@user/naso) (Ping timeout: 268 seconds) |
| 13:28:53 | → | poscat joins (~poscat@2408:8206:4820:6705:6404:b732:d928:1540) |
| 13:29:42 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 13:30:52 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
| 13:31:15 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 13:35:06 | × | alternateved quits (~user@staticline-31-183-149-36.toya.net.pl) (Remote host closed the connection) |
| 13:36:59 | × | acidjnk_new quits (~acidjnk@p200300d6e705861481a7f77b2ce6d239.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 13:38:03 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 13:40:17 | → | jespada joins (~jespada@186.158.236.52) |
| 13:44:57 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 13:45:07 | → | mikoto-chan joins (~mikoto-ch@85-76-34-254-nat.elisa-mobile.fi) |
| 13:46:07 | → | nilradical joins (~nilradica@user/naso) |
| 13:47:46 | × | stef204 quits (~stef204@user/stef204) (Quit: WeeChat 3.6) |
| 13:49:59 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds) |
| 13:50:07 | → | ystael joins (~ystael@user/ystael) |
| 13:53:16 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 13:53:16 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 13:53:17 | → | wroathe joins (~wroathe@user/wroathe) |
| 13:53:28 | → | instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net) |
| 13:54:45 | → | nattiestnate joins (~nate@180.243.14.16) |
| 13:56:58 | × | nilradical quits (~nilradica@user/naso) (Remote host closed the connection) |
| 13:57:44 | → | stef204 joins (~stef204@user/stef204) |
| 13:58:05 | × | instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 255 seconds) |
| 13:59:05 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 13:59:53 | × | ardell quits (~ardell@user/ardell) (Quit: Leaving) |
| 14:01:36 | <carbolymer> | tdammers: It happened to me quite often, when I'm on the interview ( as a interviewee) and I ask the team, "are you writing documentation?" the answer is "we're writing self-documenting code HEHE" |
| 14:02:44 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 14:04:03 | × | nattiestnate quits (~nate@180.243.14.16) (Quit: WeeChat 3.6) |
| 14:07:45 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
| 14:09:16 | → | instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net) |
| 14:10:26 | × | `2jt quits (~jtomas@56.red-88-17-82.dynamicip.rima-tde.net) (Quit: Leaving) |
| 14:11:02 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 14:11:26 | → | jero98772 joins (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) |
| 14:13:53 | × | instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 268 seconds) |
| 14:15:16 | × | vglfr quits (~vglfr@88.155.13.114) (Ping timeout: 268 seconds) |
| 14:15:36 | → | vglfr joins (~vglfr@88.155.13.114) |
| 14:18:35 | × | coot quits (~coot@213.134.176.158) (Quit: coot) |
| 14:20:07 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 14:26:07 | → | nilradical joins (~nilradica@user/naso) |
| 14:26:21 | × | nilradical quits (~nilradica@user/naso) (Client Quit) |
| 14:27:19 | × | kenran quits (~kenran@ip-037-024-119-190.um08.pools.vodafone-ip.de) (Quit: WeeChat info:version) |
| 14:28:47 | × | frost quits (~frost@user/frost) (Quit: Client closed) |
| 14:30:08 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 14:32:37 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 14:32:43 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 14:36:07 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
| 14:37:58 | × | CiaoSen quits (~Jura@p200300c95738a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 14:37:59 | × | Vajb quits (~Vajb@2001:999:70c:2b99:3e15:6929:5bc6:c014) (Read error: Connection reset by peer) |
| 14:38:17 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) |
| 14:39:29 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::a1ec) (Ping timeout: 255 seconds) |
| 14:41:27 | → | slack1256 joins (~slack1256@wsip-184-177-0-226.no.no.cox.net) |
| 14:46:00 | <maerwald[m]> | Even if code is self explanatory, that doesn't make documentation unnecessary |
| 14:46:39 | <maerwald[m]> | Because now you're telling me to read the whole function body instead of reading rendered haddock comments? |
| 14:46:47 | <maerwald[m]> | Nah, I'll use another library, thanks |
| 14:47:17 | × | ph88^ quits (~ph88@tmo-116-33.customers.d1-online.com) (Ping timeout: 252 seconds) |
| 14:47:50 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 14:48:16 | → | Vajb joins (~Vajb@2001:999:70c:2b99:3e15:6929:5bc6:c014) |
| 14:48:58 | <kuribas> | carbolymer: that response annoys me so much |
| 14:49:24 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 14:49:28 | <maerwald[m]> | The problem is really you can't write good documentation without a reviewer |
| 14:50:20 | <kuribas> | carbolymer: that comment implies two things, the code is so good you don't need documentation (it likely isn't), if you cannot understand the code from looking at it, you probably are not smart enough, or don't put enough effort (also false). |
| 14:50:39 | → | ph88^ joins (~ph88@2a01:598:b005:8de0:a1cd:2b13:e4bf:7905) |
| 14:50:52 | <carbolymer> | kuribas: yeah, red flag right there |
| 14:50:59 | <maerwald[m]> | Red flag, find another company, unless they pay really well |
| 14:51:23 | <carbolymer> | maerwald[m]: life is about compromises ;) |
| 14:51:38 | <kuribas> | good luck finding a company which documents everything. |
| 14:51:43 | <maerwald[m]> | I'll ignore 2 red flags when the bucks are right |
| 14:52:08 | <carbolymer> | kuribas: ^ |
| 14:52:13 | <maerwald[m]> | Except toxic culture |
| 14:52:30 | <carbolymer> | maerwald[m]: too bad that the toxic culture shows only after you're few months in |
| 14:52:32 | <maerwald[m]> | But that's hard to figure out in an interview |
| 14:52:39 | <maerwald[m]> | Yeah |
| 14:53:04 | <maerwald[m]> | And sometimes the coding itself is really nice |
| 14:54:21 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection) |
| 14:54:49 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 14:56:12 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection) |
| 14:56:35 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 14:56:35 | × | ph88^ quits (~ph88@2a01:598:b005:8de0:a1cd:2b13:e4bf:7905) (Ping timeout: 268 seconds) |
| 14:56:56 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 14:56:59 | → | nate4 joins (~nate@98.45.169.16) |
| 14:59:47 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 15:00:21 | × | tomku quits (~tomku@user/tomku) (Read error: Connection reset by peer) |
| 15:00:23 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:298e:42c7:d203:46f0) (Quit: WeeChat 2.8) |
| 15:01:58 | <tdammers> | "Documentation" is kind of an umbrella term, too. |
| 15:01:59 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 15:01:59 | × | kuribas quits (~user@silversquare.silversquare.eu) (Ping timeout: 268 seconds) |
| 15:03:16 | <tdammers> | what you do and do not need depends on the use case - you want your elevator pitch / executive summary, a 'getting started' guide, an explanation of key concepts, a set of 'how do I...' guides, a reference guide, and inline explanations that tell the reader why things are the way they are, and what else they need to read in order to make sense of the source code. |
| 15:03:21 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 15:03:25 | → | tomku joins (~tomku@user/tomku) |
| 15:03:53 | <tdammers> | we call all these "documentation", and that often leads to people mixing them up, and writing "getting started" guides in the source code, or moving the "why" explanations to external media like a wiki |
| 15:04:39 | → | lsrts^ joins (~lsrts@206.85.120.17) |
| 15:11:35 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection) |
| 15:13:23 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 15:13:41 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection) |
| 15:13:48 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 15:15:19 | × | jespada quits (~jespada@186.158.236.52) (Read error: Connection reset by peer) |
| 15:16:01 | → | jespada joins (~jespada@2803:9800:9842:8ca9:c034:74:da3:46b7) |
| 15:17:21 | × | AlexZenon quits (~alzenon@178.34.151.166) (Ping timeout: 252 seconds) |
| 15:17:21 | × | Alex_test quits (~al_test@178.34.151.166) (Ping timeout: 252 seconds) |
| 15:17:50 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 15:18:11 | → | califax joins (~califax@user/califx) |
| 15:18:33 | → | Alex_test joins (~al_test@178.34.151.166) |
| 15:19:15 | → | AlexZenon joins (~alzenon@178.34.151.166) |
| 15:19:24 | → | notzmv joins (~zmv@user/notzmv) |
| 15:20:36 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 15:22:09 | <[exa]> | tdammers: tldr: transferring ideas is hard |
| 15:25:40 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Remote host closed the connection) |
| 15:29:03 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 255 seconds) |
| 15:33:00 | × | krjt quits (~krjst@2604:a880:800:c1::16b:8001) (Quit: bye) |
| 15:34:07 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 15:34:25 | → | krjst joins (~krjst@2604:a880:800:c1::16b:8001) |
| 15:35:08 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 15:36:27 | × | mmhat quits (~mmh@p200300f1c706f7beee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.6) |
| 15:41:15 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 15:42:02 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 15:42:10 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 15:46:16 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 15:46:19 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds) |
| 15:47:13 | <merijn> | Transferring ideas is easy |
| 15:47:23 | <merijn> | as long as my medium gets to be "ad hoc rants" |
| 15:47:48 | <merijn> | It's the writing down of ideas that's tricky :p |
| 15:48:17 | <carbolymer> | yeah, those random turds in the middle of meeting are very effective |
| 15:51:51 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 15:52:16 | × | causal quits (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0e) (Quit: WeeChat 3.6) |
| 15:53:49 | × | vglfr quits (~vglfr@88.155.13.114) (Ping timeout: 268 seconds) |
| 15:57:17 | → | nilradical joins (~nilradica@user/naso) |
| 15:58:12 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 15:59:19 | <nilradical> | in my code i have a common pattern: `Set.fromList [ f x y | x <- Set.toList s, y <- Set.toList s]` . i think with set-monad (https://hackage.haskell.org/package/set-monad) i can simplify this to `[ f x y | x <- y, s <- s]` , but does this have package incur a significant performance impact? |
| 15:59:44 | <nilradical> | `[ f x y | x <- s, y <- s]` |
| 15:59:56 | → | ph88 joins (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) |
| 16:00:13 | × | darchitect1 quits (~darchitec@2a00:23c6:3584:df01:9f23:d492:30c1:6303) (Ping timeout: 244 seconds) |
| 16:03:51 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:04:16 | <merijn> | nilradical: I mean, the monad's gonna have exactly the same performance, so it shouldn't |
| 16:04:20 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 16:04:40 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Quit: zxx7529) |
| 16:06:22 | <nilradical> | i remember reading somewhere that it had bad performance but didn't udnerstand the reason and when it applies |
| 16:06:58 | <merijn> | nilradical: The bad performance is basically "you have to deserialise to lists, do the operation, then rebuild a set |
| 16:07:01 | <merijn> | " |
| 16:07:04 | <merijn> | So it's not super efficient |
| 16:07:35 | × | mikoto-chan quits (~mikoto-ch@85-76-34-254-nat.elisa-mobile.fi) (Ping timeout: 252 seconds) |
| 16:07:38 | <nilradical> | ok, but since i'm doing that anyway it should make no difference for me. cool thanks |
| 16:07:41 | <merijn> | nilradical: otoh, you could wrap the original "ugly" list comprehension into a function and just use that and avoid the dependency? |
| 16:08:13 | <nilradical> | in general the arity of `f` is unknown |
| 16:08:19 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
| 16:09:32 | <nilradical> | and the values will not be drawn from the same set. e.g. it could be [ f x y z | x <- a, y <- b, z <- c ] . would it still be possible ? |
| 16:09:52 | → | kazaf joins (~kazaf@94.180.63.53) |
| 16:10:24 | <nilradical> | in other words, just general set comprehensions |
| 16:10:37 | <nilradical> | i think set-monad is good for me as long as it is compatible with relude |
| 16:12:48 | × | noteness quits (~noteness@user/noteness) (Remote host closed the connection) |
| 16:13:32 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 16:13:43 | → | noteness joins (~noteness@user/noteness) |
| 16:14:40 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 16:14:40 | × | noteness quits (~noteness@user/noteness) (Remote host closed the connection) |
| 16:15:09 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 16:15:31 | → | noteness joins (~noteness@user/noteness) |
| 16:15:43 | × | mbuf quits (~Shakthi@122.165.55.71) (Quit: Leaving) |
| 16:20:04 | × | mcglk_ quits (~mcglk@131.191.49.120) (Quit: (zzz)) |
| 16:22:04 | × | kazaf quits (~kazaf@94.180.63.53) (Remote host closed the connection) |
| 16:22:12 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:22:24 | → | kazaf joins (~kazaf@94.180.63.53) |
| 16:25:00 | → | econo joins (uid147250@user/econo) |
| 16:25:25 | × | ph88 quits (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) (Read error: Connection reset by peer) |
| 16:26:21 | → | ph88 joins (~ph88@sonicwall.snp-ag.com) |
| 16:26:48 | → | mcglk joins (~mcglk@131.191.49.120) |
| 16:26:58 | → | ph88^ joins (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) |
| 16:27:46 | × | ph88^ quits (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) (Read error: Connection reset by peer) |
| 16:27:48 | × | kazaf quits (~kazaf@94.180.63.53) (Ping timeout: 252 seconds) |
| 16:28:33 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 16:28:36 | → | ph88^ joins (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) |
| 16:28:40 | × | ph88^ quits (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) (Read error: Connection reset by peer) |
| 16:29:20 | → | ph88^ joins (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) |
| 16:29:50 | <Guillaum[m]> | I'm having a difficult time deriving "Data" instance for a GADT, see here: https://gist.github.com/guibou/84333621ff0e6f9374b8c46eb5f14345. Is that something fundamentaly impossible or is there a solution? |
| 16:29:59 | × | ph88^ quits (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) (Read error: Connection reset by peer) |
| 16:30:26 | × | mcglk quits (~mcglk@131.191.49.120) (Client Quit) |
| 16:30:40 | → | ph88^ joins (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) |
| 16:31:12 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 16:31:18 | × | ph88 quits (~ph88@sonicwall.snp-ag.com) (Ping timeout: 264 seconds) |
| 16:32:15 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 16:33:12 | × | ph88^ quits (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) (Read error: Connection reset by peer) |
| 16:33:41 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 16:33:42 | → | ph88^ joins (~ph88@sonicwall.snp-ag.com) |
| 16:36:10 | → | ph88_ joins (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) |
| 16:38:13 | × | ph88_ quits (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) (Read error: Connection reset by peer) |
| 16:40:04 | → | ph88 joins (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) |
| 16:40:39 | × | ph88^ quits (~ph88@sonicwall.snp-ag.com) (Ping timeout: 268 seconds) |
| 16:41:08 | × | ph88 quits (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) (Read error: Connection reset by peer) |
| 16:41:55 | → | ph88 joins (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) |
| 16:41:59 | × | nilradical quits (~nilradica@user/naso) () |
| 16:42:01 | × | bliminse quits (~bliminse@user/bliminse) (Quit: leaving) |
| 16:42:03 | × | ph88 quits (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) (Read error: Connection reset by peer) |
| 16:43:25 | → | ph88 joins (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) |
| 16:43:41 | × | ph88 quits (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) (Read error: Connection reset by peer) |
| 16:45:28 | → | ph88 joins (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) |
| 16:46:05 | → | dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net) |
| 16:46:48 | × | ph88 quits (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) (Read error: Connection reset by peer) |
| 16:47:19 | <lyxia> | You might be able to write an instance by hand but that depends on what you are trying to do. That doesn't look like something GHC can derive for you. |
| 16:47:35 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
| 16:48:05 | → | ph88 joins (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) |
| 16:48:59 | → | acidjnk_new joins (~acidjnk@p200300d6e705861494ef1a886018f36c.dip0.t-ipconnect.de) |
| 16:49:31 | × | ph88 quits (~ph88@2a01:598:8987:f87d:9d56:f9d0:e0c4:26f3) (Read error: Connection reset by peer) |
| 16:49:56 | → | bender joins (~bender@105.235.135.236) |
| 16:50:05 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:50:37 | → | ph88 joins (~ph88@sonicwall.snp-ag.com) |
| 16:52:01 | → | ph88^ joins (~ph88@sonicwall.snp-ag.com) |
| 16:54:09 | × | bender quits (~bender@105.235.135.236) (Ping timeout: 252 seconds) |
| 16:54:27 | <Guillaum[m]> | lyxia: Thank you. I'm trying to write the instance by hand, but I'm stuck in the middle of the gunfold implementation and I'm having a similar issue. I'm a bit lost with the type signature of the function of the Data class ;) If by chance you know a good resource which may explain that, I'll be more than happy. Otherwise, I'm continuing my experimentation. |
| 16:54:53 | × | ph88 quits (~ph88@sonicwall.snp-ag.com) (Ping timeout: 252 seconds) |
| 16:56:15 | → | bender joins (~bender@105.235.135.236) |
| 16:57:20 | × | ph88^ quits (~ph88@sonicwall.snp-ag.com) (Ping timeout: 268 seconds) |
| 17:00:50 | × | bender quits (~bender@105.235.135.236) (Ping timeout: 255 seconds) |
| 17:01:32 | → | bender joins (~bender@105.235.135.236) |
| 17:02:50 | → | vglfr joins (~vglfr@88.155.13.114) |
| 17:03:19 | × | bender quits (~bender@105.235.135.236) (Read error: Connection reset by peer) |
| 17:05:51 | × | vglfr quits (~vglfr@88.155.13.114) (Read error: Connection reset by peer) |
| 17:06:02 | → | bender joins (~bender@105.235.135.236) |
| 17:10:04 | <lyxia> | Guillaum[m]: one idea is to first use the Typeable constraint to pattern-match on the index, and then each branch behaves as if the type is a single-constructor type, and you can get the code for that by copy-pasting the output of -ddump-deriv when deriving Data for a normal single-constructor type |
| 17:10:32 | → | vglfr joins (~vglfr@88.155.13.114) |
| 17:10:54 | × | bender quits (~bender@105.235.135.236) (Ping timeout: 268 seconds) |
| 17:11:09 | <Guillaum[m]> | lyxia: THANK you ;) I actually incrementally comes to similar conclusion and I was able to write an working instance, except for the implementation of gunfold, but I won't need it. So my instance is not "complete", but it's enough for my needs. |
| 17:12:04 | <Guillaum[m]> | If someone is interested, for reference: https://gist.github.com/guibou/84333621ff0e6f9374b8c46eb5f14345#file-gadtsdatamanual-hs-L17-L25 Thank you. |
| 17:12:05 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 17:13:13 | <lyxia> | hah |
| 17:13:54 | <lyxia> | yeah it's easier if you're only consuming the GADT |
| 17:15:13 | × | vglfr quits (~vglfr@88.155.13.114) (Ping timeout: 268 seconds) |
| 17:15:20 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.5) |
| 17:17:13 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 17:18:19 | → | Jade1 joins (~Jade1@ip-178-201-128-039.um46.pools.vodafone-ip.de) |
| 17:19:14 | → | vglfr joins (~vglfr@88.155.13.114) |
| 17:23:53 | × | vglfr quits (~vglfr@88.155.13.114) (Read error: Connection reset by peer) |
| 17:24:06 | → | seriously joins (~seriously@2001:1c06:1b1d:6f00:efd2:b7b6:20af:5f73) |
| 17:26:34 | → | vglfr joins (~vglfr@88.155.13.82) |
| 17:26:38 | × | Katarushisu quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat) |
| 17:27:13 | → | Katarushisu joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) |
| 17:31:24 | <seriously> | its me from last night/morning... still on the same problem. https://paste.tomsmeding.com/UrdyEmSb. |
| 17:32:23 | <seriously> | going to retry reframing my question... how does one add 2 functions that take a map and return an integer |
| 17:32:48 | <seriously> | if there is no map given |
| 17:33:26 | × | Katarushisu quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat) |
| 17:33:38 | × | Alex_test quits (~al_test@178.34.151.166) (Ping timeout: 255 seconds) |
| 17:34:10 | → | jgeerds joins (~jgeerds@55d46bad.access.ecotel.net) |
| 17:34:31 | → | Katarushisu joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) |
| 17:34:42 | <seriously> | my instincts are telling me to pattern match on the functions ... so something like: add (\x -> y) (\z -> t) = .... |
| 17:34:45 | <tomsmeding> | seriously: but there is a map given, right? |
| 17:34:49 | <tomsmeding> | you cannot pattern match on functions |
| 17:34:57 | × | AlexZenon quits (~alzenon@178.34.151.166) (Ping timeout: 268 seconds) |
| 17:35:01 | → | f-a joins (f2a@f2a.jujube.ircnow.org) |
| 17:35:35 | <f-a> | simple question: I got a very deeply nested error and want to know the callstack. I solved by sprinkling `trace` but I guess that is the dumb way |
| 17:37:10 | <tomsmeding> | f-a: if all the functions on the way have a HasCallStack constraint, then you get a stack trace on `error` |
| 17:37:17 | <tomsmeding> | downside is that _all_ functions on the way need to have that constreaint |
| 17:37:44 | → | Alex_test joins (~al_test@178.34.151.166) |
| 17:37:57 | <seriously> | add :: (M.Map String Integer -> Maybe Integer) -> (M.Map String Integer -> Maybe Integer) -> (M.Map String Integer -> Maybe Integer) |
| 17:38:16 | <tomsmeding> | seriously: that function takes three arguments; what are their types? |
| 17:38:30 | <f-a> | tomsmeding: iirc there was a +RTS option to auto add those (with --enble-profiling)? |
| 17:38:55 | → | AlexZenon joins (~alzenon@178.34.151.166) |
| 17:38:56 | <tomsmeding> | f-a: ah yes, if you `cabal run --enable-profiling -- +RTS -p` |
| 17:39:04 | <seriously> | there types are a function that takes a map and returns a Maybe Integer |
| 17:39:07 | <tomsmeding> | maybe +RTS -xc, I don't remember |
| 17:39:23 | <geekosaur> | it's not quite the same thing as HasCallstack |
| 17:39:29 | <tomsmeding> | seriously: that's the first two arguments, what about the third one? |
| 17:39:43 | <geekosaur> | but it does use profiling information to provide a call stack on exception |
| 17:40:03 | <f-a> | -p or -xc? Well I’ll try both |
| 17:40:11 | <seriously> | The same thing no? a function that takes a map and returns maybe integer? |
| 17:40:50 | <seriously> | its straight forward if the type is Bool or Integer or String |
| 17:40:58 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 17:41:05 | × | son0p quits (~ff@181.136.122.143) (Ping timeout: 268 seconds) |
| 17:41:13 | <tomsmeding> | seriously: a -> (b -> (c -> (d -> e))) means exactly the same as a -> b -> c -> d -> e |
| 17:41:29 | <tomsmeding> | returning a function is the same as taking another argument |
| 17:41:31 | <geekosaur> | +RTS -xc prints a backtrace on exception if the program is compiled with profiling |
| 17:42:01 | <geekosaur> | (it does not require you to enable profiling at runtime, just that the profiling information be there to build a backtrace from) |
| 17:43:18 | × | Jade1 quits (~Jade1@ip-178-201-128-039.um46.pools.vodafone-ip.de) (Quit: Client closed) |
| 17:44:26 | <f-a> | geekosaur: may I upload a .tar.gz, because *not* all calls are afaics present |
| 17:44:29 | → | son0p joins (~ff@181.136.122.143) |
| 17:45:24 | <geekosaur> | hm. the profiling-based stack trace does differ from the one you get with HasCallStack |
| 17:45:53 | <f-a> | http://www.ariis.it/link/t/prova-0.1.0.0.tar.gz in this simple two file project, I do not see functions being called in main if I cabal run prova --enable-profiling -- +RTS -xc |
| 17:45:57 | <f-a> | so maybe I am doing something wrong |
| 17:46:04 | <geekosaur> | in particular I think the profiling one goes by what forces evaluation while HasCallStack records the actual evaluation trace |
| 17:46:21 | × | seriously quits (~seriously@2001:1c06:1b1d:6f00:efd2:b7b6:20af:5f73) (Quit: Client closed) |
| 17:46:31 | <geekosaur> | but requires that alll functions in the trace be annotated to work since it's actually an implicit variable |
| 17:46:31 | → | seriously joins (~seriously@2001:1c06:1b1d:6f00:efd2:b7b6:20af:5f73) |
| 17:46:41 | × | vglfr quits (~vglfr@88.155.13.82) (Ping timeout: 255 seconds) |
| 17:46:55 | → | vglfr joins (~vglfr@88.155.13.82) |
| 17:47:09 | <f-a> | argh, so say I were working on ghc, I would have to annotate a large portion of the codebase just to diagnose how I reached some specific error? |
| 17:47:15 | <f-a> | depressing :P |
| 17:47:16 | <geekosaur> | yep |
| 17:47:29 | <geekosaur> | we're still kinda in the stone age wrt debugging |
| 17:47:58 | <geekosaur> | it's commonly requested that there be a way to have ghc annotate all functions itself |
| 17:48:04 | <f-a> | well, so +RTS -xc is our best bet for now? |
| 17:48:06 | <geekosaur> | no idea if it's been formally proposed yet |
| 17:48:10 | <geekosaur> | yes |
| 17:48:17 | <f-a> | (also, -xc or -xc -p?) |
| 17:48:31 | <geekosaur> | hm, there's also a third way to get a backtrace that has its own shortcomings and abilities |
| 17:48:46 | <geekosaur> | -p is unnecessary unless you also want to profile |
| 17:49:27 | × | Katarushisu quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat) |
| 17:50:31 | → | Katarushisu joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) |
| 17:50:54 | <geekosaur> | ah, right, dwarf support provides another backtrace mechanism but it can't be used with exceptions unless you set a breakpoint in whatever mangled name `error` becomes |
| 17:51:15 | <seriously> | so add :: M.Map String Integer -> (Maybe Integer -> (M.Map ..... tomsmeding |
| 17:51:20 | <geekosaur> | and has to be enabled within the ghc build, which iirc it is not in currently released versions |
| 17:52:01 | → | neceve joins (~quassel@2.26.93.14) |
| 17:52:02 | <f-a> | thanks geekosaur , still marginally better than what I did today (putting putStrLn and pray) |
| 17:52:05 | → | Midjak joins (~Midjak@82.66.147.146) |
| 17:52:39 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:53:06 | × | vglfr quits (~vglfr@88.155.13.82) (Read error: Connection reset by peer) |
| 17:53:11 | → | vysn joins (~vysn@user/vysn) |
| 17:53:12 | <seriously> | so using, "add f" would give me access to the first map tomsmeding |
| 17:53:14 | → | vglfr joins (~vglfr@88.155.13.82) |
| 17:54:02 | × | jgeerds quits (~jgeerds@55d46bad.access.ecotel.net) (Ping timeout: 268 seconds) |
| 17:54:34 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 17:56:11 | <monochrom> | I use Debug.Trace. More importantly, I think in terms of a "work backwards" model, unlike most people. Working backwards work great for imperative eager languages too, I once solved a mystery in someone else's C program that way. |
| 17:56:20 | <tomsmeding> | seriously: note, (a -> b) -> c is _not_ the same as a -> b -> c |
| 17:56:24 | <tomsmeding> | (->) is right-associative |
| 17:57:18 | → | zebrag joins (~chris@user/zebrag) |
| 17:59:08 | <monochrom> | (Lest you cite that there are great debuggers for C: No, I merely used printf.) |
| 17:59:15 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 18:00:26 | <seriously> | let me know if my head is in the right place... your suggesting that due to currying and partial function application, theres a way to extract the Map from add :: (M.Map String Integer -> Maybe Integer) -> (M.Map String Integer -> Maybe Integer) -> (M.Map String Integer -> Maybe Integer) |
| 18:00:38 | <seriously> | tomsmeding |
| 18:01:04 | <seriously> | you said earlier that this function takes 3 arguments |
| 18:01:43 | <seriously> | im not following that |
| 18:02:05 | × | MajorBiscuit quits (~MajorBisc@c-001-013-051.client.tudelft.eduvpn.nl) (Ping timeout: 268 seconds) |
| 18:02:17 | → | mmhat joins (~mmh@p200300f1c706f7beee086bfffe095315.dip0.t-ipconnect.de) |
| 18:02:34 | <tomsmeding> | seriously: let's look at a simpler example first |
| 18:02:35 | <tomsmeding> | :t const |
| 18:02:36 | <lambdabot> | a -> b -> a |
| 18:02:47 | <tomsmeding> | :t const 3 |
| 18:02:49 | <lambdabot> | Num a => b -> a |
| 18:02:53 | AlexNoo_ | is now known as AlexNoo |
| 18:03:12 | <tomsmeding> | so when applied to one argument of type 'a', 'const' gets type 'b -> a' |
| 18:03:19 | <tomsmeding> | so clearly, const :: a -> (b -> a), right? |
| 18:03:20 | × | vglfr quits (~vglfr@88.155.13.82) (Read error: Connection reset by peer) |
| 18:03:26 | <tomsmeding> | :t const :: a -> (b -> a) |
| 18:03:27 | <lambdabot> | a -> b -> a |
| 18:03:28 | <seriously> | right |
| 18:03:39 | <tomsmeding> | a -> (b -> a) and a -> b -> a are the same thing |
| 18:03:45 | <seriously> | right |
| 18:03:56 | <tomsmeding> | just like (a - b) - c and a - b - c are the same thing |
| 18:04:02 | → | vglfr joins (~vglfr@88.155.13.82) |
| 18:04:04 | <tomsmeding> | but a - (b - c) is something completely different |
| 18:04:12 | <tomsmeding> | (-) is left-associative |
| 18:04:25 | <tomsmeding> | (->) is right-associative: you have the same parenthesisation behaviour, but the other way around |
| 18:04:26 | × | vglfr quits (~vglfr@88.155.13.82) (Read error: Connection reset by peer) |
| 18:04:35 | → | titibandit joins (~titibandi@xdsl-212-8-147-38.nc.de) |
| 18:04:37 | <tomsmeding> | a -> b -> c is the same as a -> (b -> c); this is currying |
| 18:04:38 | → | vglfr joins (~vglfr@88.155.13.82) |
| 18:04:52 | <tomsmeding> | but (a -> b) -> c is something different: this is a function that takes an argument of type (a -> b) |
| 18:05:05 | <tomsmeding> | does that makes sense? |
| 18:05:06 | × | vglfr quits (~vglfr@88.155.13.82) (Read error: Connection reset by peer) |
| 18:05:15 | → | vglfr joins (~vglfr@88.155.13.82) |
| 18:06:10 | <seriously> | yeah makes sense ... I dont have the intuition for it but it makes sense in the sense of (-) (*) (`div`) |
| 18:06:25 | <tomsmeding> | for (-) it makes sense? good |
| 18:06:36 | × | vglfr quits (~vglfr@88.155.13.82) (Read error: Connection reset by peer) |
| 18:06:38 | <tomsmeding> | the intuition for (->) should come from the fact that partial application is a thing |
| 18:07:02 | <tomsmeding> | in haskell, a function that takes three arguments is precisely the same as a function that takes one argument (the first one), and returns a _function_ that takes the remaining two arguments |
| 18:07:23 | <tomsmeding> | add :: (map -> mint) -> (map -> mint) -> (map -> mint) -- I shortened the types a bit |
| 18:07:25 | → | vglfr joins (~vglfr@88.155.13.82) |
| 18:07:36 | <tomsmeding> | this type has one set of redundant parentheses -- which one? |
| 18:08:35 | <seriously> | the last one... so (map -> mint) -> (map -> mint) -> map -> mint |
| 18:08:47 | <tomsmeding> | indeed! |
| 18:08:54 | <tomsmeding> | so how many arguments does add take? |
| 18:08:55 | × | titibandit quits (~titibandi@xdsl-212-8-147-38.nc.de) (Client Quit) |
| 18:09:17 | <seriously> | 3 so... add f g map |
| 18:09:21 | <tomsmeding> | yep! |
| 18:09:28 | <tomsmeding> | now it's your turn again :) |
| 18:09:31 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 18:09:43 | <seriously> | =D =D (y) |
| 18:09:47 | <seriously> | thanks!!! |
| 18:10:18 | × | dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.6) |
| 18:10:25 | <tomsmeding> | seriously: by the way, there is a "normal" arithmetic operator that is also right-associative, just like (->): exponentiation (^) |
| 18:10:42 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
| 18:10:47 | Lord_of_Life_ | is now known as Lord_of_Life |
| 18:10:51 | <tomsmeding> | a ^ b ^ c is the same as a ^ (b ^ c), and is different from (a ^ b) ^ c, which is a ^ (b * c) |
| 18:11:04 | <tomsmeding> | but +-*/ are left-associative |
| 18:11:35 | <seriously> | even + ? |
| 18:11:52 | <tomsmeding> | well for (+) and (*) it doesn't matter really :p |
| 18:11:56 | <seriously> | isnt 3 + (1 + 2) the same as (3 +1) + 2 |
| 18:11:58 | <tomsmeding> | yeah |
| 18:12:00 | <seriously> | ok ok sorry |
| 18:12:14 | <tomsmeding> | well, I mean, it _is_ left-associative |
| 18:12:20 | <tomsmeding> | it's just _also_ right-associative :D |
| 18:12:24 | <seriously> | i think doing some pemdas training might help me |
| 18:12:27 | <tomsmeding> | (we say: (+) is _associative_) |
| 18:12:34 | <seriously> | havent done it inover 15 years |
| 18:12:38 | <tomsmeding> | (it's also _commutative_: a + b == b + a) |
| 18:12:51 | <seriously> | ok i see |
| 18:13:01 | <tomsmeding> | (->) is definitely _not_ commutative though :p |
| 18:13:14 | <tomsmeding> | if it were, we'd have an interesting situation on our hands |
| 18:15:15 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 18:15:29 | × | slack1256 quits (~slack1256@wsip-184-177-0-226.no.no.cox.net) (Ping timeout: 255 seconds) |
| 18:15:37 | × | mmhat quits (~mmh@p200300f1c706f7beee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.6) |
| 18:16:12 | → | califax joins (~califax@user/califx) |
| 18:18:26 | <monochrom> | Nooooo! If (->) were commutative, everything would be trivialized! |
| 18:19:03 | <monochrom> | Right? https://xkcd.com/816/ applies. :) |
| 18:20:05 | <dolio> | That's why you need ⅋. |
| 18:20:28 | <darkling> | Ah, but does that proof use the axiom of choice? :) |
| 18:22:26 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds) |
| 18:28:09 | → | notzmv joins (~zmv@user/notzmv) |
| 18:32:53 | × | vglfr quits (~vglfr@88.155.13.82) (Ping timeout: 268 seconds) |
| 18:33:08 | → | mmhat joins (~mmh@p200300f1c706f7beee086bfffe095315.dip0.t-ipconnect.de) |
| 18:35:30 | → | Inst joins (~Inst@2601:6c4:4080:3f80:9130:6712:37bc:57ff) |
| 18:36:52 | × | seriously quits (~seriously@2001:1c06:1b1d:6f00:efd2:b7b6:20af:5f73) (Ping timeout: 252 seconds) |
| 18:38:36 | × | irfan quits (~irfan@user/irfan) (Quit: leaving) |
| 18:44:48 | → | pavonia joins (~user@user/siracusa) |
| 18:48:57 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 18:52:59 | → | phma_ joins (~phma@host-67-44-208-154.hnremote.net) |
| 18:54:24 | → | king_gs joins (~Thunderbi@2806:103e:29:da31:7fc4:b440:75b4:b884) |
| 18:54:26 | × | doelie quits (~tom@c-73-17-195-134.hsd1.me.comcast.net) (Remote host closed the connection) |
| 18:54:29 | × | phma quits (~phma@host-67-44-208-1.hnremote.net) (Read error: Connection reset by peer) |
| 18:54:37 | → | alternateved joins (~user@staticline-31-183-149-36.toya.net.pl) |
| 18:56:10 | → | jgeerds joins (~jgeerds@55d46bad.access.ecotel.net) |
| 18:56:53 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 18:57:15 | → | king_gs1 joins (~Thunderbi@2806:103e:29:da31:6295:18ed:9b2f:858f) |
| 18:57:30 | phma_ | is now known as phma |
| 18:58:39 | → | nate4 joins (~nate@98.45.169.16) |
| 18:58:47 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 18:59:33 | × | king_gs quits (~Thunderbi@2806:103e:29:da31:7fc4:b440:75b4:b884) (Ping timeout: 268 seconds) |
| 18:59:33 | king_gs1 | is now known as king_gs |
| 18:59:48 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 19:00:07 | → | cyanide3dinner joins (~cyanide4d@2402:e280:2149:513:931b:41cb:2a7e:791d) |
| 19:00:38 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 19:00:39 | × | Vajb quits (~Vajb@2001:999:70c:2b99:3e15:6929:5bc6:c014) (Read error: Connection reset by peer) |
| 19:00:54 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 19:01:00 | → | coot joins (~coot@213.134.176.158) |
| 19:01:18 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) |
| 19:02:18 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 19:02:56 | → | Vajb joins (~Vajb@2001:999:70c:2b99:3e15:6929:5bc6:c014) |
| 19:03:11 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 19:03:43 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 19:04:02 | → | vglfr joins (~vglfr@88.155.13.82) |
| 19:05:38 | → | the_ironic_curta joins (~Thunderbi@94.140.9.171) |
| 19:06:37 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 19:07:06 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 19:08:37 | × | joo-_ quits (~joo-_@fsf/member/joo--) (Remote host closed the connection) |
| 19:15:06 | × | alternateved quits (~user@staticline-31-183-149-36.toya.net.pl) (Remote host closed the connection) |
| 19:19:02 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 19:19:15 | <seydar> | I'm trying to get ruby and haskell to talk to each other using unix sockets: https://paste.tomsmeding.com/62Qx9jev |
| 19:19:56 | <seydar> | unfortunately, they both just... hang. and then when I ^C the haskell client, the ruby server then prints everything and complains of a broken pipe when it tries to write back. |
| 19:20:02 | <seydar> | are unix sockets secretly only one-way? |
| 19:20:19 | <Bulby[m]> | lazyness? |
| 19:20:20 | <seydar> | also, unix sockets are *in-memory*, right? |
| 19:20:31 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 19:21:17 | <geekosaur> | yes |
| 19:21:25 | → | yvan-sraka joins (~yvan-srak@105.67.135.250) |
| 19:21:40 | <Bulby[m]> | if something doesn't work until you ^C the haskell client perhaps it's lazyness |
| 19:21:42 | × | jgeerds quits (~jgeerds@55d46bad.access.ecotel.net) (Remote host closed the connection) |
| 19:21:53 | <geekosaur> | or buffering? |
| 19:21:59 | <Bulby[m]> | yes |
| 19:22:00 | <Bulby[m]> | more likely |
| 19:22:09 | <darkling> | If it were pipes, my money would defintely be on buffering. |
| 19:22:29 | <darkling> | Sockets, I'm not so sure about. I haven't played with them so much. |
| 19:22:54 | <geekosaur> | (note that buffering is language agnostic, so you may also have to check buffering on the Ruby side) |
| 19:23:01 | <Bulby[m]> | sorry i haven't written haskell in a while |
| 19:24:03 | <geekosaur> | the haskell side is using raw socket operations so buffering shouldn't matter. but neither will lines, or "packet" boundaries since it's a stream socket |
| 19:24:31 | <seydar> | okay, so this is definitely the right medium i'm looking to explore |
| 19:24:36 | <seydar> | but why does it hate me |
| 19:24:43 | <darkling> | I'd be much more inclined to believe there are buffering issues if it's a stream socket than a datagram socket. |
| 19:25:04 | × | biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer) |
| 19:25:10 | <geekosaur> | actually both sides appear to be using raw send and recv operations |
| 19:25:23 | <geekosaur> | so no buffering unless it's the printing the result part |
| 19:26:26 | <seydar> | i'm willing to bet monopoly money that it's waiting until the write side is closed before reading |
| 19:26:39 | <seydar> | because if i close the ruby server first, then the haskell program does its read |
| 19:27:40 | <seydar> | although that's pipe logic, not socket logic |
| 19:27:52 | <geekosaur> | `recv sock 1024` will actually wait for 1024 bytes, because it's a stream |
| 19:27:55 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 268 seconds) |
| 19:28:17 | <geekosaur> | you probably want to make it a Handle and use hGetSome or similar |
| 19:28:55 | <seydar> | ooooh, so if i just do recv 4 bytes, i might see my program complete |
| 19:29:18 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 19:29:42 | <geekosaur> | yes |
| 19:29:56 | <seydar> | welp. that didn't quite do it either. |
| 19:30:07 | × | kmein quits (~weechat@user/kmein) (Quit: ciao kakao) |
| 19:31:43 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Quit: leaving) |
| 19:32:11 | → | kmein joins (~weechat@user/kmein) |
| 19:33:01 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:33:07 | × | yvan-sraka quits (~yvan-srak@105.67.135.250) (Remote host closed the connection) |
| 19:33:26 | → | yvan-sraka joins (~yvan-srak@105.67.135.250) |
| 19:35:46 | <geekosaur[m]> | What did it do? |
| 19:41:14 | → | bliminse joins (~bliminse@user/bliminse) |
| 19:42:50 | → | dd1 joins (~ddellacos@86.106.121.209) |
| 19:46:54 | <dd1> | anyone know what this is about? Am I missing something? https://paste.tomsmeding.com/YuI3ZqA5 |
| 19:48:00 | ← | f-a parts (f2a@f2a.jujube.ircnow.org) () |
| 19:48:07 | <geekosaur> | :set NoStarIsType |
| 19:48:10 | <geekosaur> | I think |
| 19:48:11 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 19:49:23 | × | neceve quits (~quassel@2.26.93.14) (Ping timeout: 268 seconds) |
| 19:50:26 | <dd1> | geekosaur: yes that was it! So I guess a name collision in some sense? I'm just learning about TypeLits so this is all new to me... |
| 19:50:33 | <geekosaur> | yes |
| 19:50:45 | <geekosaur> | * meaning Type (that is, a concrete type) is historical |
| 19:50:52 | <geekosaur> | :k <aybe |
| 19:50:53 | <lambdabot> | error: Operator applied to too few arguments: < |
| 19:50:54 | <geekosaur> | er |
| 19:50:55 | dd1 | is now known as ddellacosta |
| 19:50:58 | <geekosaur> | :k Maybe |
| 19:50:59 | <lambdabot> | * -> * |
| 19:51:10 | <geekosaur> | that's the use of * it's expecting |
| 19:51:25 | <geekosaur> | if you set NoStarIsType then * is freed to be a type operator |
| 19:51:54 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds) |
| 19:52:15 | <ddellacosta> | geekosaur: gotcha, makes sense--thanks |
| 19:53:33 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 19:54:21 | × | cyanide3dinner quits (~cyanide4d@2402:e280:2149:513:931b:41cb:2a7e:791d) (Remote host closed the connection) |
| 19:57:13 | × | noteness quits (~noteness@user/noteness) (Excess Flood) |
| 19:57:25 | × | the_ironic_curta quits (~Thunderbi@94.140.9.171) (Remote host closed the connection) |
| 19:58:15 | → | noteness joins (~noteness@user/noteness) |
| 20:00:25 | × | ubert quits (~Thunderbi@178.165.202.57.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
| 20:02:00 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 20:06:28 | → | slack1256 joins (~slack1256@wsip-184-177-0-226.no.no.cox.net) |
| 20:16:01 | × | hpc quits (~juzz@ip98-169-32-242.dc.dc.cox.net) (Ping timeout: 268 seconds) |
| 20:17:45 | → | hpc joins (~juzz@ip98-169-32-242.dc.dc.cox.net) |
| 20:18:09 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 20:19:04 | × | dos__^^ quits (~user@user/dos/x-1723657) (Ping timeout: 244 seconds) |
| 20:22:39 | × | hpc quits (~juzz@ip98-169-32-242.dc.dc.cox.net) (Ping timeout: 268 seconds) |
| 20:24:55 | → | jese joins (~nikola@109-93-165-248.dynamic.isp.telekom.rs) |
| 20:25:14 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 20:25:48 | × | ddellacosta quits (~ddellacos@86.106.121.209) (Ping timeout: 268 seconds) |
| 20:25:50 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 20:26:41 | → | biberu joins (~biberu@user/biberu) |
| 20:27:15 | × | yvan-sraka quits (~yvan-srak@105.67.135.250) (Remote host closed the connection) |
| 20:28:40 | <Bulby[m]> | binary isn't giving me a good call stack |
| 20:28:42 | <Bulby[m]> | it just says out of bytes |
| 20:28:43 | → | hpc joins (~juzz@ip98-169-32-242.dc.dc.cox.net) |
| 20:28:54 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:29:57 | → | d34df00d joins (~d34df00d@2600:1700:8c60:3a10::46) |
| 20:30:37 | <d34df00d> | Hi! |
| 20:30:49 | <d34df00d> | I want to make something in Haskell that'd run in a browser and, moreover, render some graphs. I never did either of that, so what are some good libraries/toolchains/etc? |
| 20:35:36 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 20:37:08 | <dmj`> | d34df00d: https://github.com/dmjio/miso |
| 20:37:19 | × | jese quits (~nikola@109-93-165-248.dynamic.isp.telekom.rs) (Quit: leaving) |
| 20:37:32 | <d34df00d> | Yay thanks! |
| 20:37:55 | <d34df00d> | dmj: is dmjio the same as dmj the you? |
| 20:38:24 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 20:38:45 | <dmj`> | d34df00d: yea, sorry, shameless plug |
| 20:39:14 | <d34df00d> | Nah, on the contrary, that's good! More sense in asking questions here :] |
| 20:39:33 | <dmj`> | in that case, check this out: https://2048.haskell-miso.org/ |
| 20:39:49 | → | alp_ joins (~alp@user/alp) |
| 20:41:27 | <tomsmeding> | having never before seen ghcjs output code, https://2048.haskell-miso.org/all.js is a wild ride for the curious |
| 20:42:49 | <d34df00d> | dmj: looks pretty neat! |
| 20:43:24 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 20:43:39 | <d34df00d> | tomsmeding: I've seen a benchmark of some languages compiling to js, and ghcjs was, well… this explains that. Idris was on top tho. |
| 20:43:48 | <d34df00d> | although Idris has way less libraries :( |
| 20:44:35 | <tomsmeding> | I'm not surprised; V8 is unlikely to optimise for the code patterns that result when you try to compile a _lazy_ language to JS |
| 20:45:27 | <dmj`> | yea, well the STG machine (along with all the primops and RTS functionality) implemented in JS, is gonna be pretty hefty. But at least the JS output is optimized for the google closure compiler |
| 20:45:52 | × | mmhat quits (~mmh@p200300f1c706f7beee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.6) |
| 20:48:14 | <merijn> | tomsmeding: LLVM all over again xD |
| 20:48:40 | <merijn> | d34df00d: Keep in mind that ghcjs is *A LOT* more than "compiling haskell to JS" |
| 20:48:54 | <merijn> | d34df00d: ghcjs was a full port of GHC *plus it's RTS* to JS |
| 20:49:00 | <dmj`> | If we inlined the eval function, defunctionalized the STG, and did some whole program analysis passes we could ameliorate almost all overhead from laziness and have very small js payloads. |
| 20:49:12 | <merijn> | d34df00d: Which means it implements lightweight threading, complex timers, etc. |
| 20:49:20 | <d34df00d> | Oh. |
| 20:49:29 | <d34df00d> | green threads is something I haven't thought about as a consequence of compiling to js. |
| 20:49:33 | <d34df00d> | for one |
| 20:49:44 | <merijn> | d34df00d: Literally anything, except C FFI (and even some of that...) *everything* of GHC worked |
| 20:49:48 | <Rembane_> | d34df00d: Have you checked out Purescript? |
| 20:50:03 | <merijn> | d34df00d: If you are willing to drop a bunch of stuff like that, then you can get MUCH faster code |
| 20:50:04 | <darkling> | Still waiting for someone to produce a BEAM runtime in a browser. :) |
| 20:50:09 | <d34df00d> | Rembane_: tbh I don't want to learn a new language rn. I wanted to switch away from agda and get something |
| 20:50:14 | <d34df00d> | actually done that'd actually run. |
| 20:50:46 | <d34df00d> | Although from what I've see purescript looks pretty cool! |
| 20:50:52 | <d34df00d> | Native row polymorphism and all that. |
| 20:51:26 | <darkling> | I kind of sidled in here from Elm... |
| 20:51:36 | <Rembane_> | d34df00d: Fair enough. |
| 20:54:03 | × | king_gs quits (~Thunderbi@2806:103e:29:da31:6295:18ed:9b2f:858f) (Quit: king_gs) |
| 21:02:05 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::a1ec) |
| 21:04:08 | <dmj`> | d34df00d: ghcjs gives you all of hackage too :) |
| 21:04:11 | <dmj`> | "all" |
| 21:09:47 | <walt> | purescript is a way more reasonable choice if the goal is to run stuff in the browser, imo |
| 21:10:14 | walt | is now known as ggVGc |
| 21:10:17 | <geekosaur> | unless you actually need the power of ghc |
| 21:10:32 | <geekosaur> | (but how often do you actually need that?) |
| 21:14:29 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:15:17 | → | mikoto-chan joins (~mikoto-ch@85-76-19-206-nat.elisa-mobile.fi) |
| 21:15:55 | → | mmhat joins (~mmh@p200300f1c706f7beee086bfffe095315.dip0.t-ipconnect.de) |
| 21:16:29 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 21:19:33 | <dmj`> | rescript looks cool, could use that |
| 21:20:55 | × | absentia quits (~absentia@user/absentia) (K-Lined) |
| 21:22:57 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 21:23:22 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 21:23:28 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 21:23:39 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 21:29:05 | → | ph88 joins (~ph88@ltea-178-013-121-150.pools.arcor-ip.net) |
| 21:30:30 | → | pgib joins (~textual@173.38.117.83) |
| 21:31:26 | → | cosimone joins (~user@93-44-186-171.ip98.fastwebnet.it) |
| 21:31:45 | × | acidjnk_new quits (~acidjnk@p200300d6e705861494ef1a886018f36c.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 21:36:18 | × | Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
| 21:40:27 | × | michalz quits (~michalz@185.246.204.90) (Remote host closed the connection) |
| 21:42:11 | → | moonsheep joins (~user@user/moonsheep) |
| 21:42:42 | → | acidjnk_new joins (~acidjnk@p200300d6e7058614083d03ca0d10755f.dip0.t-ipconnect.de) |
| 21:46:21 | <zzz> | what's the reasoning behind doing stuff like this?: https://hackage.haskell.org/package/gloss-1.7.5.2/docs/src/Graphics-Gloss-Data-Picture.html#pictures |
| 21:46:59 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 21:47:42 | <zzz> | functiom = Constructor |
| 21:48:46 | <dmj`> | zzz: smart constructor |
| 21:48:57 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds) |
| 21:50:13 | × | mikoto-chan quits (~mikoto-ch@85-76-19-206-nat.elisa-mobile.fi) (Ping timeout: 268 seconds) |
| 21:50:42 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 21:51:01 | <[exa]> | zzz: if you only export the function, you 1] make sure the user isn't tempted to patternmatch 2] you can change the data representation in later versions without breaking it for everyone |
| 21:52:45 | <zzz> | hmm... gloss not only exports it but also doesn't perform any "smart" checks |
| 21:55:10 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 21:58:59 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:00:02 | × | acidjnk_new quits (~acidjnk@p200300d6e7058614083d03ca0d10755f.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 22:01:52 | → | Tuplanolla joins (~Tuplanoll@91-159-69-12.elisa-laajakaista.fi) |
| 22:02:14 | × | coot quits (~coot@213.134.176.158) (Quit: coot) |
| 22:02:45 | × | dcoutts_ quits (~duncan@host86-167-206-78.range86-167.btcentralplus.com) (Remote host closed the connection) |
| 22:03:07 | → | dcoutts_ joins (~duncan@host86-167-206-78.range86-167.btcentralplus.com) |
| 22:03:46 | × | Unode quits (~Unode@194.94.44.220) (Remote host closed the connection) |
| 22:04:57 | → | Unode joins (~Unode@194.94.44.220) |
| 22:08:09 | × | ph88 quits (~ph88@ltea-178-013-121-150.pools.arcor-ip.net) (Remote host closed the connection) |
| 22:08:30 | → | ph88 joins (~ph88@ltea-178-013-121-150.pools.arcor-ip.net) |
| 22:11:20 | → | malte joins (~malte@mal.tc) |
| 22:13:41 | × | ph88 quits (~ph88@ltea-178-013-121-150.pools.arcor-ip.net) (Ping timeout: 268 seconds) |
| 22:13:49 | × | heartbur1 quits (~gass@2a00:d880:3:1::b1e4:b241) (Quit: leaving) |
| 22:15:18 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 22:17:20 | → | heartburn joins (~gass@2a00:d880:3:1::b1e4:b241) |
| 22:18:05 | → | darchitect1 joins (~darchitec@2a00:23c6:3584:df01:b208:b196:e5ae:769e) |
| 22:18:38 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 22:25:44 | × | califax quits (~califax@user/califx) (Read error: Connection reset by peer) |
| 22:25:44 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 22:25:44 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Write error: Broken pipe) |
| 22:25:44 | × | ec quits (~ec@gateway/tor-sasl/ec) (Write error: Connection reset by peer) |
| 22:25:44 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Write error: Connection reset by peer) |
| 22:25:44 | × | noteness quits (~noteness@user/noteness) (Write error: Connection reset by peer) |
| 22:25:44 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Write error: Broken pipe) |
| 22:25:44 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Write error: Broken pipe) |
| 22:25:44 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 22:26:09 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 22:26:12 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 22:26:21 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 22:26:38 | → | califax joins (~califax@user/califx) |
| 22:26:41 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 22:26:54 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 22:26:55 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 22:27:07 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 22:28:32 | → | noteness joins (~noteness@user/noteness) |
| 22:31:37 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds) |
| 22:31:40 | <glguy> | dminuoso: I pushed out a version of config-schema that supports matching against arbitrary values instead of just atoms. I don't know if that's still useful to you, but it's on the response to your PR I made a while back |
| 22:32:43 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 22:37:40 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 22:41:52 | × | mmhat quits (~mmh@p200300f1c706f7beee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.6) |
| 22:42:02 | × | lsrts^ quits (~lsrts@206.85.120.17) (Ping timeout: 268 seconds) |
| 22:44:35 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Quit: Leaving) |
| 22:49:25 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
| 22:51:36 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 22:51:56 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 22:54:38 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 22:55:13 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 22:58:43 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::a1ec) (Ping timeout: 244 seconds) |
| 22:59:30 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Client Quit) |
| 23:00:12 | → | nate4 joins (~nate@98.45.169.16) |
| 23:00:26 | → | luffy joins (~chenqisu1@183.217.201.23) |
| 23:05:27 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
| 23:18:30 | → | lsrts^ joins (~lsrts@206.85.120.17) |
| 23:29:30 | × | moonsheep quits (~user@user/moonsheep) (Read error: Connection reset by peer) |
| 23:29:46 | → | moonsheep joins (~user@user/moonsheep) |
| 23:36:26 | × | darchitect1 quits (~darchitec@2a00:23c6:3584:df01:b208:b196:e5ae:769e) (Ping timeout: 244 seconds) |
| 23:36:59 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::a1ec) |
| 23:38:01 | × | raym quits (~raym@user/raym) (Remote host closed the connection) |
| 23:41:17 | × | slack1256 quits (~slack1256@wsip-184-177-0-226.no.no.cox.net) (Ping timeout: 255 seconds) |
| 23:41:43 | × | Tuplanolla quits (~Tuplanoll@91-159-69-12.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:42:04 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 23:42:22 | → | raym joins (~raym@user/raym) |
| 23:42:30 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 23:42:48 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Client Quit) |
| 23:44:21 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 23:56:39 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 23:57:09 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
All times are in UTC on 2022-08-10.