Logs on 2021-08-18 (liberachat/#haskell)
| 00:00:24 | × | Matthias1 quits (~Matthias1@2603-8001-b545-4900-0d81-0ba2-5923-c2fb.res6.spectrum.com) (Remote host closed the connection) |
| 00:00:27 | × | fabfianda quits (~fabfianda@mob-5-91-112-128.net.vodafone.it) (Remote host closed the connection) |
| 00:00:57 | × | polyphem quits (~polyphem@ip5f5ac3ae.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
| 00:01:47 | → | Matthias1 joins (~Matthias1@2603-8001-b545-4900-0d81-0ba2-5923-c2fb.res6.spectrum.com) |
| 00:03:46 | → | polyphem joins (~polyphem@2a00:20:c044:9066:4432:d689:6451:b719) |
| 00:07:13 | → | fabfianda joins (~fabfianda@mob-5-91-112-128.net.vodafone.it) |
| 00:10:48 | × | Guest84 quits (~Guest84@2406:3003:2006:447e:a859:4a56:2629:b84e) (Quit: Client closed) |
| 00:12:12 | × | polyphem quits (~polyphem@2a00:20:c044:9066:4432:d689:6451:b719) (Ping timeout: 245 seconds) |
| 00:13:02 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 00:16:40 | × | aarvar quits (~aaron@2601:602:a080:fa0:2492:1e35:77f6:26e2) (Ping timeout: 240 seconds) |
| 00:16:48 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 00:20:40 | × | fernand quits (~fernand@179.156.35.4) (Ping timeout: 240 seconds) |
| 00:20:56 | × | Xnuk quits (~xnuk@vultr.xnu.kr) (Quit: ZNC - https://znc.in) |
| 00:21:12 | → | Xnuk joins (~xnuk@vultr.xnu.kr) |
| 00:22:41 | <lechner> | Hi, i can't find much documentation or many examples for here/heredoc. Do any of them support the pipe-less syntax shown here? https://www.reddit.com/r/haskell/comments/8ereh/a_here_document_syntax/c091t96 |
| 00:23:11 | × | chomwitt quits (~chomwitt@ppp-94-67-193-240.home.otenet.gr) (Remote host closed the connection) |
| 00:24:12 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 245 seconds) |
| 00:27:58 | → | lavaman joins (~lavaman@98.38.249.169) |
| 00:29:43 | <lechner> | never mind, i think Data.String.Here does! |
| 00:31:25 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 244 seconds) |
| 00:39:53 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 00:46:40 | × | waleee quits (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 240 seconds) |
| 00:47:57 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds) |
| 01:04:19 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 01:09:12 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds) |
| 01:15:36 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Quit: Leaving) |
| 01:16:57 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 01:18:46 | tabemann_ | is now known as tabemann |
| 01:20:30 | → | Cajun joins (~Cajun@user/cajun) |
| 01:24:02 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 01:26:32 | × | lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
| 01:36:53 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 01:41:10 | × | pbrisbin quits (~patrick@pool-108-16-214-93.phlapa.fios.verizon.net) (Ping timeout: 240 seconds) |
| 01:47:45 | → | keutoi joins (~keutoi@157.48.90.57) |
| 01:47:55 | × | xff0x quits (~xff0x@2001:1a81:535d:2700:6b08:445c:db9b:4d20) (Ping timeout: 258 seconds) |
| 01:48:00 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 268 seconds) |
| 01:49:38 | → | xff0x joins (~xff0x@2001:1a81:5394:ea00:e22:1073:dc28:9e41) |
| 01:50:50 | → | polyphem joins (~polyphem@2a02:810d:640:776c:f4c0:a27a:540e:c15e) |
| 01:58:10 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 01:59:40 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 240 seconds) |
| 02:00:53 | × | alx741 quits (~alx741@181.196.68.125) (Quit: alx741) |
| 02:01:44 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 02:11:13 | × | td_ quits (~td@muedsl-82-207-238-133.citykom.de) (Ping timeout: 248 seconds) |
| 02:12:16 | → | ahlk joins (~user@2600:1700:31c0:3a10::48) |
| 02:13:11 | → | td_ joins (~td@94.134.91.158) |
| 02:15:38 | → | thyriaen_ joins (~thyriaen@dynamic-077-013-081-232.77.13.pool.telefonica.de) |
| 02:16:48 | → | sleblanc joins (~sleblanc@user/sleblanc) |
| 02:17:18 | → | rubix joins (~user@2601:602:9502:c70:b7f7:ce5b:5e25:126d) |
| 02:19:10 | × | thyriaen quits (~thyriaen@x4dbf521a.dyn.telefonica.de) (Ping timeout: 240 seconds) |
| 02:22:05 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:22:05 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (zinc.libera.chat (Nickname regained by services))) |
| 02:22:05 | finn_elija | is now known as FinnElija |
| 02:23:05 | × | thyriaen_ quits (~thyriaen@dynamic-077-013-081-232.77.13.pool.telefonica.de) (Remote host closed the connection) |
| 02:23:40 | × | benin036932 quits (~benin@183.82.178.142) (Ping timeout: 240 seconds) |
| 02:27:25 | × | Matthias1 quits (~Matthias1@2603-8001-b545-4900-0d81-0ba2-5923-c2fb.res6.spectrum.com) (Read error: Connection reset by peer) |
| 02:28:03 | → | Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) |
| 02:30:24 | × | hiruji quits (~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in) |
| 02:30:38 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 02:30:39 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 02:30:42 | allbery_b | is now known as geekosaur |
| 02:36:27 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 02:38:18 | → | hiruji joins (~hiruji@user/hiruji) |
| 02:41:33 | × | obs quits (~obscur1ty@user/obs/x-5924898) (Read error: Connection reset by peer) |
| 02:46:25 | <lechner> | Hi, could someone please explain this error with postgres-simple? https://paste.debian.net/1208064/ |
| 02:48:20 | <Axman6> | you probably need to add a type annotation so the compiler knows what type you actually want |
| 02:48:38 | <lechner> | where, though? |
| 02:49:01 | <c_wraith> | anywhere that specifies it |
| 02:49:21 | <lechner> | output? |
| 02:49:29 | <c_wraith> | type inference means you can mention the type anywhere and it will be plumbed through appropriately |
| 02:49:33 | <Axman6> | (rows :: [Foo]) <- query... or something. that might need a language extension though |
| 02:50:09 | <Axman6> | if you use `rows` somewhere, you can also add it there by replacing `rows` with `(rows :: [Foo])` |
| 02:51:24 | → | Seby joins (~Seby@115.98.232.63) |
| 02:51:40 | <lechner> | what's the easiest way to print rows? i think it's a [String] |
| 02:52:06 | <c_wraith> | (mapM_ putStrLn) ? |
| 02:52:25 | <c_wraith> | and... it's probably not a [String] |
| 02:52:47 | <c_wraith> | I don't think that instance exists |
| 02:53:49 | <c_wraith> | lechner: it's polymorphic in the return type. it can be anything that has an appropriate instance |
| 02:54:08 | <lechner> | yeah, i get that |
| 02:54:16 | <c_wraith> | though it will have runtime errors if the instance doesn't fit the returned data |
| 02:54:42 | <lechner> | i just cant figure out what i will get back |
| 02:55:24 | <c_wraith> | then how could the compiler? :P |
| 02:56:04 | <c_wraith> | the fact is, we can't tell you. |
| 02:56:10 | <c_wraith> | it depends on the query |
| 02:56:34 | <lechner> | yeah it's my first time with pg-simple |
| 02:56:56 | <c_wraith> | for quick'n'dirty, you probably want a tuple type |
| 02:57:14 | <c_wraith> | with a number of elements matching the number of things you're selecting, and appropriate types for each element |
| 02:57:16 | <lechner> | single column |
| 02:58:05 | <lechner> | https://hackage.haskell.org/package/postgresql-simple-0.6.4/docs/Database-PostgreSQL-Simple.html#t:Connection |
| 02:58:11 | <lechner> | sorry |
| 02:58:38 | <c_wraith> | You probably want the 1-tuple, then. https://hackage.haskell.org/package/postgresql-simple-0.6.4/docs/Database-PostgreSQL-Simple.html#t:Only |
| 02:59:21 | <c_wraith> | try mapM_ (putStrLn . fromOnly) |
| 02:59:32 | <Axman6> | yeah I was going to say, Only will be the type you need |
| 02:59:49 | <Axman6> | so it'll return Only String's |
| 02:59:53 | <lechner> | Only or [Only String] ? |
| 03:00:09 | <c_wraith> | r ~ Only String |
| 03:00:18 | <c_wraith> | the return type is IO [r] |
| 03:03:33 | ← | rubix parts (~user@2601:602:9502:c70:b7f7:ce5b:5e25:126d) (ERC (IRC client for Emacs 28.0.50)) |
| 03:03:47 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 03:04:49 | <lechner> | it's magic! the calls to fromOnly inside mapM_ were enough to compile |
| 03:04:59 | <c_wraith> | the advantage of printing with (mapM_ (putStrLn . fromOnly)) is that type inference means that it uniquely identifies the type of r |
| 03:05:15 | <lechner> | yeah, it's amazing! |
| 03:05:34 | <lechner> | which way of printin wuold not do so? |
| 03:05:40 | <lechner> | printing |
| 03:05:49 | <lechner> | would |
| 03:06:04 | <c_wraith> | replacing putStrLn with print would leave the type ambiguous |
| 03:06:24 | <c_wraith> | or just using (mapM_ print) |
| 03:06:27 | → | iqubic joins (~user@2601:602:9502:c70:b7f7:ce5b:5e25:126d) |
| 03:06:41 | <c_wraith> | it would *work*, but the types wouldn't be inferred |
| 03:07:57 | × | Skyfire quits (~pyon@user/pyon) (Quit: WeeChat 3.2) |
| 03:08:21 | → | Skyfire joins (~pyon@user/pyon) |
| 03:08:53 | <lechner> | unfortunately the query result is wrong. can -simple pass Pg array types? |
| 03:09:11 | <lechner> | the query is otherwise tested |
| 03:09:17 | <lechner> | and short |
| 03:10:24 | <c_wraith> | looks like it |
| 03:10:28 | <c_wraith> | https://hackage.haskell.org/package/postgresql-simple-0.6.4/docs/Database-PostgreSQL-Simple-Types.html#t:PGArray |
| 03:12:01 | × | hueso quits (~root@user/hueso) (Ping timeout: 248 seconds) |
| 03:14:35 | → | hueso joins (~root@user/hueso) |
| 03:17:26 | × | sim590 quits (~simon@modemcable090.207-203-24.mc.videotron.ca) (Quit: WeeChat 2.9) |
| 03:19:32 | → | simon1 joins (~simon@modemcable090.207-203-24.mc.videotron.ca) |
| 03:19:50 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 03:20:08 | <lechner> | Is there an easier way to write this? mapM_ (putStrLn $) (map ("Need " <>) $ map fromOnly rows |
| 03:21:21 | <c_wraith> | well, a left section of ($) is always redundant |
| 03:21:49 | <lechner> | point taken |
| 03:22:12 | <c_wraith> | and then you have three consecutive maps. well, one is a mapM_, but that could be written as sequence_ . map |
| 03:22:20 | <c_wraith> | you can always fuse consecutive maps |
| 03:22:43 | <c_wraith> | mapM_ (putStrLn . ("Need " <>) . fromOnly) rows |
| 03:22:47 | <Axman6> | that's mapM_ (putStrLn . ("Need "<>) . fromOnly) rows |
| 03:23:09 | Axman6 | highfives c_wraith |
| 03:23:12 | × | monochrom quits (trebla@216.138.220.146) (Quit: NO CARRIER) |
| 03:23:24 | <lechner> | i had a problem with the operator precedence of <> vs unapplied fromOnly |
| 03:23:41 | <lechner> | i see |
| 03:23:47 | <lechner> | TIL |
| 03:23:47 | <c_wraith> | that should be irrelevant when using a section |
| 03:25:06 | <lechner> | Axman6: thanks! it must be painful to watch |
| 03:26:10 | × | derelict quits (~derelict@user/derelict) (Ping timeout: 240 seconds) |
| 03:28:05 | → | monochrom joins (trebla@216.138.220.146) |
| 03:29:15 | <lechner> | c_wraith: thank you so much for your help! i have a VALUES vs unnest() problem but will have to solve that later tonight. great progress! |
| 03:33:27 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 03:35:14 | → | jamie101 joins (~jamie101@pa49-199-6-183.pa.vic.optusnet.com.au) |
| 03:39:09 | ← | jamie101 parts (~jamie101@pa49-199-6-183.pa.vic.optusnet.com.au) () |
| 03:47:01 | → | aarvar joins (~aaron@2601:602:a080:fa0:d9cd:315e:aa0a:fa0) |
| 03:47:28 | × | aarvar quits (~aaron@2601:602:a080:fa0:d9cd:315e:aa0a:fa0) (Client Quit) |
| 03:47:57 | × | shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 245 seconds) |
| 03:50:07 | → | falafel joins (~falafel@2601:483:4e00:2b20:e0f3:c7c1:91ca:fe6e) |
| 03:50:58 | → | u0_a253 joins (~u0_a253@2402:9d80:247:f919:764b:d5cb:dc9:2b1d) |
| 03:51:35 | <u0_a253> | hello world |
| 03:54:41 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:55:33 | <lechner> | Hi, is [1, 2, 3] the same as [(1), (2), (3)] please? |
| 03:56:02 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 03:56:24 | <lechner> | it's for this with one column https://hackage.haskell.org/package/postgresql-simple-0.6.4/docs/Database-PostgreSQL-Simple-Types.html#t:Values |
| 03:58:24 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 03:59:14 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 04:00:03 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 04:02:53 | → | mei joins (~mei@user/mei) |
| 04:04:07 | <int-e> | lechner: yes to your question, but it's not applicable to the documentation, which has a list of tuples, more like [(1,2), (3,4)] |
| 04:04:25 | <int-e> | > length [(1,2),(3,4)] |
| 04:04:27 | <lambdabot> | 2 |
| 04:04:44 | <lechner> | int-e: what if my tuples contain only one element each? |
| 04:05:03 | <int-e> | > [(1),(2),(3),(4)] |
| 04:05:05 | <lambdabot> | [1,2,3,4] |
| 04:05:16 | <int-e> | I already said yes :-/ |
| 04:06:03 | → | severen joins (~severen@202.36.179.72) |
| 04:07:02 | <lechner> | am i not doing the same thing as the example? https://paste.debian.net/1208072/ |
| 04:12:04 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 04:17:09 | <oak-> | >[(1,),(2,),(3,),(4,)] |
| 04:17:33 | <oak-> | > [(1,),(2,),(3,),(4,)] |
| 04:17:35 | <lambdabot> | error: |
| 04:17:35 | <lambdabot> | • No instance for (Typeable t0) |
| 04:17:35 | <lambdabot> | arising from a use of ‘show_M72548533020348860047’ |
| 04:18:11 | <glguy> | > (1,) 2 |
| 04:18:13 | <lambdabot> | (1,2) |
| 04:18:59 | <glguy> | > (,1) 2 |
| 04:19:01 | <lambdabot> | (2,1) |
| 04:20:39 | × | severen quits (~severen@202.36.179.72) (Quit: WeeChat 3.2) |
| 04:22:33 | ← | ahlk parts (~user@2600:1700:31c0:3a10::48) (ERC (IRC client for Emacs 26.1)) |
| 04:22:54 | <int-e> | https://hackage.haskell.org/package/postgresql-simple-0.6.4/docs/Database-PostgreSQL-Simple.html#t:Only |
| 04:23:01 | <int-e> | lechner: ^^ |
| 04:24:39 | <int-e> | (which I found via the list of instances of ToRow) |
| 04:28:40 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 04:32:33 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 248 seconds) |
| 04:39:58 | → | derelict joins (~derelict@user/derelict) |
| 04:44:12 | × | derelict quits (~derelict@user/derelict) (Ping timeout: 245 seconds) |
| 04:44:16 | × | marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Quit: Reconnecting) |
| 04:44:31 | → | marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8) |
| 04:51:13 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 04:52:54 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 04:54:51 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 04:55:54 | <nerdypepper> | hiya o/, is there a parser library for haskell that can help produce loseless syntax trees? something like rowan for rust: https://github.com/rust-analyzer/rowan |
| 04:56:43 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds) |
| 05:01:13 | <lechner> | int-e: unfortunately, i have no idea where to stick that Only https://paste.debian.net/1208074/ |
| 05:01:14 | <Axman6> | what does a "lossless syntax tree" mean? |
| 05:02:11 | <Axman6> | lechner: Only is for the results, not the arguments |
| 05:03:02 | <nerdypepper> | Axman6: it preserves whitespace, comments etc., a more common term is concrete syntax tree. the idea is you can reproduce the source text from the syntax tree |
| 05:03:35 | <Axman6> | you could definitely do that with any of the parser libraries I would think |
| 05:05:56 | <nerdypepper> | Axman6: oh yeah for sure, you can still preserve whitespace tokens etc. i was hoping to find a library that does the necessary performance optimizations for you (like rowan). |
| 05:06:33 | <nerdypepper> | rowan explicitly tries to avoid allocating every single token by interning whitespace and sharing structurally similar subtrees etc. |
| 05:07:26 | <int-e> | It's needed for the outer tuple, I think. Only (Values [blah,blub]) |
| 05:07:53 | × | argento quits (~argent0@168-227-97-23.ptr.westnet.com.ar) (Quit: leaving) |
| 05:09:31 | <Axman6> | edwardk: do you have any thoughts on nerdypepper's question? It feels like trifecta/parsers should be able to do this for you, but I'm not familliar enough to say for sure |
| 05:10:36 | <int-e> | nerdypepper: And I think it wants ByteString or Text, never String. |
| 05:11:32 | <lechner> | int-e: it seems a step closer, perhaps https://paste.debian.net/1208075/ |
| 05:12:16 | <int-e> | sorry for picking the wrong nick all the time :-/ |
| 05:15:21 | <Axman6> | lechner: why are you using Values? |
| 05:15:31 | <Axman6> | it seems like you're really complicating things more than they need to be |
| 05:15:48 | <lechner> | please go ahead |
| 05:15:55 | <iqubic> | I see that #haskell survived the transition to Libera. That's good to see. |
| 05:16:01 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 05:16:17 | <lechner> | Axman6: 'semver' cast, maybe? |
| 05:16:28 | <int-e> | Well, the ToField Char indicates that it used a ToField a => ToRow [a] instance to get at ToRow String, so something went wrong apart from not using ByteString or Text (the string should be a field, not a row) |
| 05:16:40 | × | Seby quits (~Seby@115.98.232.63) (Ping timeout: 240 seconds) |
| 05:16:41 | <Axman6> | oh actually... I hadn't looked at the query very closely |
| 05:17:13 | <Axman6> | iqubic: irc is just a medium, #haskell will never die |
| 05:17:18 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 05:17:25 | <iqubic> | That's good to know. |
| 05:17:34 | int-e | isn't fully following either. |
| 05:17:58 | <lechner> | Axman6: it's also an antijoin via EXCEPT |
| 05:19:03 | <int-e> | lechner: Quite possibly the strings also need Only. And by ByteString or Text, not String. |
| 05:19:14 | <int-e> | s/by/be/ |
| 05:19:33 | <Axman6> | ok I can see now what you were trying to do but I have no idea how it's supposed to be done |
| 05:19:45 | <lechner> | without Only from the strings https://paste.debian.net/1208076/ |
| 05:20:32 | <lechner> | Axman6: it's a value transfer issue. i could also use JSON |
| 05:20:34 | <int-e> | lechner: Only turns a field into a row. |
| 05:21:03 | <int-e> | and there is a ToField instance for Text. |
| 05:21:13 | <Axman6> | Have you tried `(Values ["semver"] [Only ("2.1.6" :: ByteString)])`? |
| 05:21:25 | <Axman6> | or Text? |
| 05:21:38 | <int-e> | Axman6: We're getting there. You also need Only on the outside. |
| 05:22:32 | <lechner> | that compile, with Text |
| 05:22:37 | <lechner> | compiled |
| 05:23:01 | <Axman6> | so all good? |
| 05:23:11 | <Axman6> | does the query run??? :o |
| 05:23:47 | <lechner> | the query isn't working |
| 05:23:58 | <Axman6> | now for the fun part :P |
| 05:24:38 | <lechner> | the query is tested; and this is the second time around |
| 05:26:05 | <lechner> | i can probably use PGArray with unnest or a JSON string but VALUES seemed so easy |
| 05:30:12 | <edwardk> | Axman6: context? |
| 05:30:16 | <edwardk> | *reading back* |
| 05:30:31 | <Axman6> | see message at XX:55 |
| 05:30:39 | <edwardk> | lossless parsing? |
| 05:30:39 | <lechner> | what does the "fat" arrow here mean, please? https://hackage.haskell.org/package/postgresql-simple-0.6.4/docs/Database-PostgreSQL-Simple.html#v:formatQuery |
| 05:31:05 | <Axman6> | it's a type class constraint |
| 05:31:24 | <Axman6> | saying that q must be an instance of the ToRow class |
| 05:31:59 | <edwardk> | i usually wind up building a parser for whitespace that captures everything inside the whitespace and then make sure my syntax trees are very close to the surface language syntax with little whitespace bins in the tree wherever spaces could occur. this works until you need layout and then regenerating the tree has some extra consistency crap it has to satisfy. |
| 05:32:24 | <edwardk> | but i don't know a general purpose 'exactprint' style library |
| 05:32:53 | <edwardk> | (whitespace here includes comments, etc.) |
| 05:32:59 | <dibblego> | we started writing one aaaaages ago |
| 05:32:59 | Axman6 | awaits the nerdsnipe to kick in... |
| 05:33:20 | <edwardk> | not happening. groq's keeping me busy this month and i just bought a house and am moving =) |
| 05:33:33 | <Axman6> | 'grats! |
| 05:34:10 | → | iqubic` joins (~user@2601:602:9502:c70:b7f7:ce5b:5e25:126d) |
| 05:34:19 | ← | iqubic` parts (~user@2601:602:9502:c70:b7f7:ce5b:5e25:126d) () |
| 05:34:53 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) |
| 05:38:10 | × | iqubic quits (~user@2601:602:9502:c70:b7f7:ce5b:5e25:126d) (Ping timeout: 240 seconds) |
| 05:40:11 | <cdsmith> | Does this exist somewhere? data ReifiedInstance (cls :: Type -> Constraint) (a :: Type) where ReifiedInstance :: cls a => ReifiedInstance cls a |
| 05:42:56 | <nerdypepper> | Axman6: thanks for the mention, trifecta looks great, i will take a look at that. it would be a pretty mega project to rewrite something like rowan, but i am not opposed to trying that out either! |
| 05:43:11 | <hsek[m]> | Are there resources for me to read regarding separating API types from the DB types in `servant`? I don't really understand why because it seems really convenient. But I know that a lot of people advocate against it. https://old.reddit.com/r/haskell/comments/p64g1q/servantutil_extending_servant_with_database/h9bbpaa/ |
| 05:44:11 | × | fabfianda quits (~fabfianda@mob-5-91-112-128.net.vodafone.it) (Ping timeout: 268 seconds) |
| 05:49:44 | × | Gurkenglas_ quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 268 seconds) |
| 05:51:34 | × | ablutor quits (~quassel@wasscher.com) (Quit: going for vitamine d) |
| 05:51:51 | → | ablutor joins (~quassel@wasscher.com) |
| 05:52:07 | <cdsmith> | hsek: Can't point to a document, but APIs have different compatibility constraints. They might start out looking similar to backend data, but over time, you'll want to migrate your storage schemas, while APIs must stay the same. That's hard to handle if they are the same type. |
| 05:55:56 | → | favonia joins (~favonia@user/favonia) |
| 05:59:25 | × | ozzymcduff quits (~mathieu@81-234-151-21-no94.tbcn.telia.com) (Remote host closed the connection) |
| 06:02:28 | → | ozzymcduff joins (~mathieu@81-234-151-21-no94.tbcn.telia.com) |
| 06:02:39 | <hsek[m]> | I see, thanks Chris Smith ! |
| 06:02:41 | × | arahael quits (~arahael@124.170.238.106) (Ping timeout: 248 seconds) |
| 06:03:10 | × | falafel quits (~falafel@2601:483:4e00:2b20:e0f3:c7c1:91ca:fe6e) (Ping timeout: 240 seconds) |
| 06:03:32 | → | wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com) |
| 06:04:43 | → | Obo joins (~roberto@h-46-59-103-134.A498.priv.bahnhof.se) |
| 06:06:34 | <lechner> | int-e Axman6: it was the stupidest of all errors. the function was not called. anyway, now I have a runtime type error: Incompatible {errSQLType = "semver", errSQLTableOid = Nothing, errSQLField = "lintian_version", errHaskellType = "Text", errMessage = "types incompatible"} |
| 06:07:31 | <lechner> | but it's quite late here. thank you both for your help so far! |
| 06:10:17 | → | ubert joins (~Thunderbi@91.141.56.213.wireless.dyn.drei.com) |
| 06:12:03 | → | arahael joins (~arahael@203.221.97.63) |
| 06:16:43 | × | echoreply1 quits (~echoreply@2001:19f0:9002:1f3b:5400:ff:fe6f:8b8d) (Quit: WeeChat 2.8) |
| 06:17:01 | → | Seby joins (~Seby@115.98.232.63) |
| 06:17:46 | × | Seby quits (~Seby@115.98.232.63) (Client Quit) |
| 06:17:50 | → | vysn joins (~vysn@user/vysn) |
| 06:18:03 | → | echoreply joins (~echoreply@45.32.163.16) |
| 06:18:10 | → | chomwitt joins (~chomwitt@2a02:587:dc0c:e200:12c3:7bff:fe6d:d374) |
| 06:20:04 | × | wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 06:22:45 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 06:25:16 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 06:28:47 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 245 seconds) |
| 06:32:47 | × | aegon quits (~mike@174.127.249.180) (Quit: Lost terminal) |
| 06:37:43 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 06:41:19 | × | smitop quits (~smitop@user/smitop) (Remote host closed the connection) |
| 06:42:08 | → | smitop joins (~smitop@user/smitop) |
| 06:43:46 | → | lortabac joins (~lortabac@151.73.97.57) |
| 06:44:52 | → | acidjnk_new3 joins (~acidjnk@p200300d0c72b955250c7a959aba8feb6.dip0.t-ipconnect.de) |
| 06:48:06 | → | ubert1 joins (~Thunderbi@91.141.56.213.wireless.dyn.drei.com) |
| 06:48:33 | → | michalz joins (~michalz@185.246.204.62) |
| 06:48:48 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 06:49:39 | → | Unhammer joins (~Unhammer@user/unhammer) |
| 06:59:13 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds) |
| 07:03:11 | → | derelict joins (~derelict@user/derelict) |
| 07:04:15 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 07:04:40 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds) |
| 07:05:28 | Lord_of_Life_ | is now known as Lord_of_Life |
| 07:10:46 | <albet70> | please unbanned 47.245.54.240 |
| 07:15:00 | <dibblego> | albet70: read the topic |
| 07:16:52 | → | Boomerang joins (~Boomerang@xd520f68c.cust.hiper.dk) |
| 07:23:58 | → | u0_a2531 joins (~u0_a253@2402:9d80:247:f919:942:7578:ff92:e257) |
| 07:24:47 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 07:25:17 | × | lortabac quits (~lortabac@151.73.97.57) (Read error: Connection reset by peer) |
| 07:26:05 | × | u0_a253 quits (~u0_a253@2402:9d80:247:f919:764b:d5cb:dc9:2b1d) (Remote host closed the connection) |
| 07:26:44 | × | u0_a2531 quits (~u0_a253@2402:9d80:247:f919:942:7578:ff92:e257) (Remote host closed the connection) |
| 07:28:56 | → | lortabac joins (~lortabac@151.73.97.57) |
| 07:30:09 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:34:20 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 07:35:05 | × | shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit) |
| 07:39:13 | → | slack1256 joins (~slack1256@191.125.227.92) |
| 07:40:59 | × | justache quits (~justache@user/justache) (Ping timeout: 252 seconds) |
| 07:41:42 | → | benin036932 joins (~benin@183.82.178.142) |
| 07:43:00 | → | justache joins (~justache@user/justache) |
| 07:44:33 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 07:45:10 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 07:47:10 | × | justache quits (~justache@user/justache) (Ping timeout: 240 seconds) |
| 07:47:10 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 07:47:21 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) |
| 07:49:21 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds) |
| 07:52:17 | → | justache joins (~justache@user/justache) |
| 07:56:07 | × | Xnuk quits (~xnuk@vultr.xnu.kr) (Quit: ZNC - https://znc.in) |
| 07:56:25 | → | Xnuk joins (~xnuk@45.76.202.58) |
| 07:58:27 | × | justache quits (~justache@user/justache) (Read error: Connection reset by peer) |
| 07:58:49 | × | hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 07:59:18 | → | justache joins (~justache@user/justache) |
| 07:59:32 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 08:03:16 | <merijn> | sshine_: I wouldn't say that's *cabal* failing, but it's a weird error. You're using a much newer version of hspec than your stack setup, but afaict the newer Hspec still exports Spec there, so that compilation still shouldn't fail |
| 08:04:50 | <maralorn> | maerwald: I have just tested streamly-posix with hspec 2.7.10 (because that’s the stackage-lts version). That worked. So theoretically you could lower the version bound on it. |
| 08:05:23 | <merijn> | sshine_: oh, I have a *wildly* speculative theory, lemme test it :) |
| 08:05:25 | → | hendursa1 joins (~weechat@user/hendursaga) |
| 08:05:42 | <maerwald> | maralorn: hspec-discover as well? |
| 08:06:05 | × | slack1256 quits (~slack1256@191.125.227.92) (Remote host closed the connection) |
| 08:06:13 | <maralorn> | maerwald: Yes |
| 08:06:37 | <maerwald> | maralorn: what version? |
| 08:06:47 | <maralorn> | Same |
| 08:07:20 | → | dschrempf joins (~dominik@2a01-036d-0118-a2d1-3c86-9363-4322-fee7.pool6.digikabel.hu) |
| 08:08:36 | → | Kirat joins (~Gill@103.217.122.17) |
| 08:08:40 | × | hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
| 08:08:47 | → | nschoe joins (~quassel@2a01:e0a:8e:a190:f185:3872:6a89:c741) |
| 08:09:57 | <maralorn> | maerwald: ^ |
| 08:10:07 | <maralorn> | (forgot the highlight) |
| 08:12:25 | → | oldsk00l joins (~znc@ec2-3-69-166-47.eu-central-1.compute.amazonaws.com) |
| 08:12:42 | × | Kirat quits (~Gill@103.217.122.17) (Client Quit) |
| 08:13:39 | → | Guest48 joins (~Guest48@2001:8003:33f0:c100:90f4:2120:7bc8:55aa) |
| 08:14:05 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 08:17:23 | × | ubert quits (~Thunderbi@91.141.56.213.wireless.dyn.drei.com) (Quit: ubert) |
| 08:17:24 | ubert1 | is now known as ubert |
| 08:17:39 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 08:17:39 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 08:17:42 | allbery_b | is now known as geekosaur |
| 08:17:42 | → | ub joins (~Thunderbi@91.141.56.213.wireless.dyn.drei.com) |
| 08:17:58 | <merijn> | sshine_: That I can't test, because I can't reproduce it locally >.> But at the very least I see a couple of errors in the repo/config |
| 08:22:07 | × | ub quits (~Thunderbi@91.141.56.213.wireless.dyn.drei.com) (Ping timeout: 245 seconds) |
| 08:22:36 | × | oldsk00l quits (~znc@ec2-3-69-166-47.eu-central-1.compute.amazonaws.com) (Remote host closed the connection) |
| 08:23:07 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 08:27:55 | → | Pickchea joins (~private@user/pickchea) |
| 08:30:04 | × | timCF quits (~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving) |
| 08:31:13 | × | rovert quits (uid389732@id-389732.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:35:41 | → | dyeplexer joins (~dyeplexer@user/dyeplexer) |
| 08:36:22 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 08:36:49 | × | micro quits (~micro@user/micro) (Quit: Lost terminal) |
| 08:37:35 | → | micro joins (~micro@user/micro) |
| 08:38:25 | × | Guest48 quits (~Guest48@2001:8003:33f0:c100:90f4:2120:7bc8:55aa) (Quit: Client closed) |
| 08:38:29 | → | fendor joins (~fendor@77.119.161.62.wireless.dyn.drei.com) |
| 08:40:44 | → | defanor joins (~defanor@tart.uberspace.net) |
| 08:43:55 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) () |
| 08:46:54 | <defanor> | Hello. I've just updated to Cabal 3 (cabal-install from Debian 11 repositories), and failing to find how to install custom libraries (the ones I'm writing) properly: `cabal install --lib` appears to work fine (no errors), but then `cabal install` says "unknown package" when I'm trying to build projects dependent on such a library. Is it the intended behaviour, and how does one build projects like that with Cabal 3 ( |
| 08:46:54 | <defanor> | except for v2- commands)? |
| 08:47:09 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 08:48:07 | <merijn> | defanor: tbh, you really shouldn't be using "install --lib" |
| 08:48:37 | <merijn> | defanor: Also, in cabal 3 the X and "v2-X" are identical |
| 08:49:11 | <defanor> | merijn: Oh, perhaps I had in mind v1- ones then; meant the old behaviour. What should I use instead of install, then? |
| 08:49:25 | <merijn> | It depends *why* you want to install |
| 08:49:45 | <merijn> | If it is "so I can use this in another library/project I work on" the answer is: you shouldn't use install at all |
| 08:50:20 | <defanor> | Indeed, to use those libraries from other projects. What should I use instead, then? |
| 08:51:45 | <merijn> | defanor: If the libraries are on hackage, then nothing, they will be installed automatically when you use "build" if you want to depend on local (modified?) versions of libraries or unreleased libraries, then you want to use a cabal.project file with either 1) a remote-repo entry or 2) a filled in "local-packages:" pointing at the relevant local paths |
| 08:51:51 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 08:52:42 | <defanor> | It's the latter in this case (some of those are work-related), will look into those options. Thanks! |
| 08:52:46 | <merijn> | defanor: See https://cabal.readthedocs.io/en/latest/cabal-project.html#specifying-the-local-packages which has examples of both |
| 08:52:49 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 248 seconds) |
| 08:52:49 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 248 seconds) |
| 08:53:04 | <merijn> | defanor: And https://cabal.readthedocs.io/en/latest/cabal-project.html#specifying-packages-from-remote-version-control-locations |
| 08:54:38 | <merijn> | defanor: For work situations where everyone is consistently using the same "internal" packages, you should probably just commit the cabal.project file to the repo for everyone to use |
| 08:56:12 | <merijn> | also, in the category more complicated (but thorough) solutions: It's perfectly possible to run your own private hackage server and point cabal-install at that so it will consult both the internal hackage server and public hackage |
| 09:00:02 | × | polyphem quits (~polyphem@2a02:810d:640:776c:f4c0:a27a:540e:c15e) (Ping timeout: 245 seconds) |
| 09:00:27 | <defanor> | I keep thinking of packaging everything into .deb and running an apt repository that way, to reuse a single package manager for everything (reducing the possibility of version mismatches, setting external dependencies from system repositories, etc). But will probably look into that later, just manual building for now. |
| 09:08:45 | → | fabfianda joins (~fabfianda@37.183.255.57) |
| 09:20:27 | <defanor> | Tried to build with a cabal.project, seems to work for me. The packages live in a single repository (subdirectories), so have put cabal.project into its root. |
| 09:21:17 | <merijn> | defanor: That's pretty much the intended use of cabal.project, yes :) |
| 09:22:03 | <merijn> | defanor: Note that you can specify local overrides for it in cabal.project.local (the idea being you can commit cabal.project to the repo for everyone working on it and .local has whatever tweaks specific to what you're doing) |
| 09:23:08 | → | Axma70428 joins (~Axman6@user/axman6) |
| 09:24:41 | × | Axman6 quits (~Axman6@user/axman6) (Ping timeout: 256 seconds) |
| 09:25:07 | × | jespada quits (~jespada@90.254.247.46) (Ping timeout: 245 seconds) |
| 09:27:10 | × | waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 240 seconds) |
| 09:27:41 | → | jespada joins (~jespada@90.254.247.46) |
| 09:29:28 | → | waleee joins (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) |
| 09:39:06 | → | lavaman joins (~lavaman@98.38.249.169) |
| 09:39:08 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 268 seconds) |
| 09:43:38 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 258 seconds) |
| 09:50:10 | → | Pickchea joins (~private@user/pickchea) |
| 09:53:01 | → | PinealGlandOptic joins (~PinealGla@37.115.210.35) |
| 09:54:42 | → | __monty__ joins (~toonn@user/toonn) |
| 09:56:29 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 09:56:42 | → | ikex1 joins (~ash@user/ikex) |
| 09:56:55 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 09:58:15 | × | ikex quits (~ash@user/ikex) (Ping timeout: 268 seconds) |
| 09:58:16 | ikex1 | is now known as ikex |
| 10:01:39 | × | dschrempf quits (~dominik@2a01-036d-0118-a2d1-3c86-9363-4322-fee7.pool6.digikabel.hu) (Ping timeout: 258 seconds) |
| 10:01:47 | × | tinwood quits (~tinwood@canonical/tinwood) (Remote host closed the connection) |
| 10:02:32 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 10:03:56 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:04:49 | → | tinwood joins (~tinwood@general.default.akavanagh.uk0.bigv.io) |
| 10:04:49 | × | tinwood quits (~tinwood@general.default.akavanagh.uk0.bigv.io) (Changing host) |
| 10:04:49 | → | tinwood joins (~tinwood@canonical/tinwood) |
| 10:05:14 | × | lortabac quits (~lortabac@151.73.97.57) (Quit: WeeChat 2.8) |
| 10:09:10 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 10:09:41 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:11:45 | × | waleee quits (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 248 seconds) |
| 10:13:03 | × | jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
| 10:13:20 | → | jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 10:14:37 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 10:15:43 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:16:59 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 10:20:13 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 10:20:52 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 10:21:17 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds) |
| 10:21:19 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:21:58 | <albet70> | dibblego, is there a limit days for banned user or permanent? |
| 10:22:27 | <[exa]> | albet70: there's another channel for that, see topic |
| 10:22:51 | <albet70> | oh, I see, sorry |
| 10:25:55 | × | PinealGlandOptic quits (~PinealGla@37.115.210.35) (Quit: leaving) |
| 10:26:17 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 10:27:01 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:28:20 | → | polyphem joins (~polyphem@2a02:810d:640:776c:f4c0:a27a:540e:c15e) |
| 10:29:10 | → | kilolympus joins (~kilolympu@cpc92710-cmbg20-2-0-cust265.5-4.cable.virginm.net) |
| 10:30:14 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 10:33:16 | ChanServ | sets mode +o dibblego |
| 10:33:30 | dibblego | sets mode -b *!*@47.245.54.240 |
| 10:33:31 | × | haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
| 10:33:44 | → | haykam joins (~haykam@static.100.2.21.65.clients.your-server.de) |
| 10:33:46 | ChanServ | sets mode -o dibblego |
| 10:34:49 | → | Guest372 joins (~xxx@47.245.54.240) |
| 10:36:17 | × | chomwitt quits (~chomwitt@2a02:587:dc0c:e200:12c3:7bff:fe6d:d374) (Ping timeout: 245 seconds) |
| 10:37:44 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 10:38:29 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:43:40 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 10:43:57 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:44:28 | × | fendor quits (~fendor@77.119.161.62.wireless.dyn.drei.com) (Remote host closed the connection) |
| 10:44:40 | → | acidjnk_new joins (~acidjnk@p200300d0c72b952850c7a959aba8feb6.dip0.t-ipconnect.de) |
| 10:47:32 | × | acidjnk_new3 quits (~acidjnk@p200300d0c72b955250c7a959aba8feb6.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 10:57:49 | → | fvr joins (uid503686@id-503686.highgate.irccloud.com) |
| 11:01:04 | → | alx741 joins (~alx741@181.196.68.125) |
| 11:01:04 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 11:03:29 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 11:04:33 | × | ubert quits (~Thunderbi@91.141.56.213.wireless.dyn.drei.com) (Ping timeout: 248 seconds) |
| 11:05:25 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 11:06:26 | × | dsrt^ quits (~dsrt@209.65.131.194) (Ping timeout: 258 seconds) |
| 11:08:24 | → | chomwitt joins (~chomwitt@ppp-94-67-193-240.home.otenet.gr) |
| 11:08:54 | → | AlexNoo_ joins (~AlexNoo@94.233.241.41) |
| 11:12:52 | × | AlexZenon quits (~alzenon@94.233.240.231) (Ping timeout: 268 seconds) |
| 11:12:52 | × | Alex_test quits (~al_test@94.233.240.231) (Ping timeout: 268 seconds) |
| 11:12:52 | × | AlexNoo quits (~AlexNoo@94.233.240.231) (Ping timeout: 268 seconds) |
| 11:16:24 | → | Alex_test joins (~al_test@94.233.241.41) |
| 11:16:49 | → | AlexZenon joins (~alzenon@94.233.241.41) |
| 11:22:22 | → | lortabac joins (~lortabac@151.73.97.57) |
| 11:22:41 | × | benin036932 quits (~benin@183.82.178.142) (Ping timeout: 248 seconds) |
| 11:25:18 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 11:27:23 | → | jumper149 joins (~jumper149@80.240.31.34) |
| 11:29:59 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
| 11:35:21 | × | Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection) |
| 11:36:21 | → | Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) |
| 11:37:59 | × | Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Read error: Connection reset by peer) |
| 11:42:11 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 11:43:33 | → | favonia joins (~favonia@user/favonia) |
| 11:43:51 | × | _\_ quits (~o@user/ding) (Quit: ___) |
| 11:44:04 | → | _\_ joins (~o@user/ding) |
| 11:44:06 | → | dschrempf joins (~dominik@92-249-159-252.pool.digikabel.hu) |
| 11:46:17 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 245 seconds) |
| 11:47:59 | <Hecate> | am sad |
| 11:48:04 | <Hecate> | I had a very nice usecase for Comonads |
| 11:48:11 | <Hecate> | and turns out `getField` does the job |
| 11:48:18 | <Hecate> | (with probably less overhead lol) |
| 11:48:26 | → | aguapesada joins (~aguapesad@2804:14c:8793:8e2f:a406:863b:f810:2d4c) |
| 11:49:23 | <hpc> | ah yes, truly your life is full of hardships :D |
| 11:50:38 | <hpc> | i had something similar with Cont, until i realized something entirely different instead |
| 11:55:10 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 11:56:47 | → | lortabac_ joins (~lortabac@151.73.3.232) |
| 11:58:22 | × | lortabac quits (~lortabac@151.73.97.57) (Ping timeout: 245 seconds) |
| 12:00:09 | → | benin036932 joins (~benin@183.82.178.142) |
| 12:01:58 | → | ubert joins (~Thunderbi@178.115.35.155.wireless.dyn.drei.com) |
| 12:03:02 | → | shriekingnoise joins (~shrieking@186.137.144.80) |
| 12:04:40 | × | keutoi quits (~keutoi@157.48.90.57) (Ping timeout: 240 seconds) |
| 12:05:10 | lortabac_ | is now known as lortabac |
| 12:12:33 | → | lavaman joins (~lavaman@98.38.249.169) |
| 12:15:47 | <merijn> | hpc: I actually have a use of Cont in my code! |
| 12:15:55 | <merijn> | And I even understood it when I wrote it! |
| 12:16:10 | <merijn> | Don't understand shit about it anymore, but it still works, so I just don't touch it :p |
| 12:18:29 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 12:20:49 | <hpc> | hah |
| 12:22:32 | <lechner> | Hi, I have postgresql-simple working via 'text'/Data.Text result types. Can the module hadle more custom conversions, such as from SEMVER from the Pg extension pg-simple to SemVer.Version from 'semver' in Haskell? |
| 12:22:46 | <lechner> | pg-semver |
| 12:22:57 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds) |
| 12:29:22 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 12:31:25 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 12:33:04 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 258 seconds) |
| 12:38:16 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 12:38:22 | × | acidjnk_new quits (~acidjnk@p200300d0c72b952850c7a959aba8feb6.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 12:39:27 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 12:41:36 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 12:47:04 | → | pbrisbin joins (~patrick@pool-108-16-214-93.phlapa.fios.verizon.net) |
| 12:49:17 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 12:50:01 | → | acidjnk_new joins (~acidjnk@p200300d0c72b952850c7a959aba8feb6.dip0.t-ipconnect.de) |
| 12:54:09 | × | ubert quits (~Thunderbi@178.115.35.155.wireless.dyn.drei.com) (Quit: ubert) |
| 12:54:27 | → | ubert joins (~Thunderbi@178.115.35.155.wireless.dyn.drei.com) |
| 12:59:54 | × | chomwitt quits (~chomwitt@ppp-94-67-193-240.home.otenet.gr) (Ping timeout: 258 seconds) |
| 13:07:03 | <maerwald> | how to convert `[Word8]` to `ByteArray#`? |
| 13:07:53 | <Hecate> | < hpc> ah yes, truly your life is full of hardships :D // This is the only hardship in my life that is relevant to this channel :p |
| 13:08:38 | <Hecate> | maerwald: 'coerce' ? :p |
| 13:09:07 | <Hecate> | no more seriously, maerwald, 'byteArrayFromList :: Prim a => [a] -> ByteArray' |
| 13:09:15 | <maerwald> | I'm already doing that |
| 13:09:21 | <maerwald> | it doesn't yield an unlifted type |
| 13:09:34 | <Hecate> | oh shit yes |
| 13:09:36 | <Hecate> | sorry |
| 13:09:48 | <maerwald> | unpacking from the constructor, oddly, also doesn't |
| 13:10:29 | <maerwald> | so `(\(BA.ByteArray ba) -> ba) . BA.byteArrayFromList $ ws` doesn't work |
| 13:13:47 | → | Guest40 joins (~Guest40@2a02:6b64:708f:0:9101:3c1b:1de7:cf00) |
| 13:13:47 | × | acidjnk_new quits (~acidjnk@p200300d0c72b952850c7a959aba8feb6.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 13:14:17 | → | Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com) |
| 13:17:48 | <Guest40> | is this the best place to get beginner help for haskell? |
| 13:18:22 | <dminuoso> | Whether it's the best that's for you to decide. |
| 13:18:39 | <dminuoso> | But we welcome beginners in this channel. |
| 13:19:10 | <dminuoso> | We also have #haskell-beginners which is less noisy, but dont feel pressured to go there. Sometimes this channel can be busy. :) |
| 13:19:28 | <Guest40> | that's nice, was just wondering because i didn't see anyone sending messages |
| 13:19:42 | <Guest40> | and whether people usually help out |
| 13:19:48 | <Guest40> | i'll make sure to join , thanks |
| 13:20:06 | <dminuoso> | You will usually have better response times in here |
| 13:20:21 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 13:20:38 | <Lycurgus> | and it's newbie friendly unlike some other langs/channels |
| 13:21:16 | <dminuoso> | Indeed, dont be scared away if people start off with advanced discussions. We dont mind beginner questions at all, even if they are very basic. :) |
| 13:22:31 | AlexNoo_ | is now known as AlexNoo |
| 13:22:48 | <Guest40> | thank you |
| 13:27:30 | <merijn> | Guest40: Activity here is spiky :p Also, most US people are asleep and the EU people are (pretending) to work :p |
| 13:31:14 | <maerwald> | is dlist good at fusing? |
| 13:31:55 | <maerwald> | example: https://paste.tomsmeding.com/GOQCMLgl |
| 13:32:09 | <maerwald> | I wonder if it will nicely build the bytestring or keep the list in memory |
| 13:35:23 | → | burnsidesLlama joins (~burnsides@client-8-71.eduroam.oxuni.org.uk) |
| 13:35:48 | <albet70> | could Cont replace Maybe or Either? |
| 13:35:59 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 13:36:46 | <janus> | how would it? it has only one constructor |
| 13:37:05 | × | wxallowed quits (~d4@151.51.133.244) (Ping timeout: 258 seconds) |
| 13:37:24 | → | drd joins (~drd@93-39-151-19.ip76.fastwebnet.it) |
| 13:38:27 | <albet70> | oh I forget that, they all can do early exit in >>=, so I wonder that |
| 13:39:40 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 13:40:23 | <albet70> | Cont can jump back to the beginning in the >>= chain, how would it? |
| 13:40:23 | <janus> | but any definition of >>= can do early exit, surely that doesn't make them all replacements for Maybe/Either? |
| 13:40:34 | <dminuoso> | albet70: Cont can implement all the other haskell-writable monads. |
| 13:40:37 | <dminuoso> | All. |
| 13:41:46 | <albet70> | dminuoso how would it? |
| 13:42:57 | <albet70> | I wonder who create or discover Cont first? |
| 13:45:11 | → | tengu1 joins (~tengu1@cpe-70-121-244-14.neb.res.rr.com) |
| 13:45:40 | × | burnsidesLlama quits (~burnsides@client-8-71.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 13:46:37 | → | burnsidesLlama joins (~burnsides@client-8-71.eduroam.oxuni.org.uk) |
| 13:46:41 | <dminuoso> | albet70: https://web.archive.org/web/20150925081214/https://www.fpcomplete.com/user/dpiponi/the-mother-of-all-monads |
| 13:50:40 | → | chomwitt joins (~chomwitt@ppp-94-67-193-240.home.otenet.gr) |
| 13:52:24 | × | burnsidesLlama quits (~burnsides@client-8-71.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 13:54:30 | <JavierNeira[m]> | the original post, still available was http://blog.sigfpe.com/2008/12/mother-of-all-monads.html |
| 13:54:48 | → | slack1256 joins (~slack1256@191.125.227.92) |
| 13:56:43 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 13:58:14 | × | lortabac quits (~lortabac@151.73.3.232) (Quit: WeeChat 2.8) |
| 14:00:36 | → | [Kalisto] joins (~nico@user/kalisto/x-8968079) |
| 14:01:16 | <[Kalisto]> | hi |
| 14:01:28 | <[Kalisto]> | i am trying to compile an old project of mine and i get this error |
| 14:01:30 | <[Kalisto]> | https://paste.tomsmeding.com/dVLlVsCb |
| 14:01:37 | <[Kalisto]> | i don't know what to do |
| 14:01:39 | <[Kalisto]> | :( |
| 14:01:58 | <[Kalisto]> | in the cabal file i have this |
| 14:01:59 | <[Kalisto]> | build-depends: base >=4.11 && <4.12, gd >=3000.7 && <3000.8, mtl >=2.2 && <2.3, parsec >=3.1 && <3.2 |
| 14:03:08 | <raehik> | it looks like your installed GHC is too new for your base dependency |
| 14:03:17 | <merijn> | That, yeah |
| 14:03:22 | <dminuoso> | [__1] rejecting: base-4.14.1.0/installed-4.14.1.0 (conflict: miniLogo => base>=4.11 && <4.12) |
| 14:03:42 | <[Kalisto]> | oh |
| 14:03:46 | <raehik> | you could loosen the dependency and see if it works, or install an older GHC |
| 14:03:51 | <dminuoso> | [Kalisto]: This reads: miniLogo induces a base dependency (you can, more or less, equate this with GHC version) of >=4.11 && <4.12 |
| 14:04:08 | <[Kalisto]> | i am compiling it inside a docker container |
| 14:04:12 | → | burnsidesLlama joins (~burnsides@client-8-71.eduroam.oxuni.org.uk) |
| 14:04:16 | <dminuoso> | [Kalisto]: And it rejects the (installed) base package of version 4.14.1.0 because it conflicts with that constraint I just cited. |
| 14:04:39 | <[Kalisto]> | i tried to, but I got errors |
| 14:04:42 | <[Kalisto]> | No instance for (MonadFail Data.Functor.Identity.Identity) |
| 14:04:53 | <[Kalisto]> | i just want to compile it :P |
| 14:06:37 | <[Kalisto]> | thanks |
| 14:08:31 | × | burnsidesLlama quits (~burnsides@client-8-71.eduroam.oxuni.org.uk) (Ping timeout: 252 seconds) |
| 14:09:12 | → | amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
| 14:12:21 | × | sleblanc quits (~sleblanc@user/sleblanc) (Ping timeout: 258 seconds) |
| 14:12:55 | <[Kalisto]> | it's alive, alive! :P |
| 14:13:07 | <[Kalisto]> | I used the 8.4.4 docker image and it worked |
| 14:13:10 | <[Kalisto]> | thank you |
| 14:13:47 | × | Guest40 quits (~Guest40@2a02:6b64:708f:0:9101:3c1b:1de7:cf00) (Quit: Client closed) |
| 14:15:11 | → | wxallowed joins (~d4@151.51.135.6) |
| 14:22:30 | × | dschrempf quits (~dominik@92-249-159-252.pool.digikabel.hu) (Quit: WeeChat 3.2) |
| 14:23:15 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
| 14:25:08 | → | gambpang joins (~ishipman@207.181.230.156) |
| 14:26:24 | → | burnsidesLlama joins (~burnsides@client-8-71.eduroam.oxuni.org.uk) |
| 14:28:44 | × | gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 14:28:49 | → | doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net) |
| 14:29:26 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 14:30:31 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 14:31:32 | → | pompez joins (~martin@user/pompez) |
| 14:33:13 | <tomsmeding> | it seems like the major thing impacting compatibility with early-8 series with now is MonadFail |
| 14:33:57 | <tomsmeding> | will ghc have one major compatibility-breaking change every major series? :p First FAM, then MonadFail |
| 14:34:57 | × | burnsidesLlama quits (~burnsides@client-8-71.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 14:37:23 | × | Cajun quits (~Cajun@user/cajun) (Quit: Client closed) |
| 14:39:15 | → | burnsidesLlama joins (~burnsides@client-8-71.eduroam.oxuni.org.uk) |
| 14:41:18 | × | burnsidesLlama quits (~burnsides@client-8-71.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 14:44:48 | → | peterhil_ joins (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) |
| 14:45:23 | <albet70> | dminuoso, very good article, Cont can jump back, so [] can? but [] can't early exit in jump back |
| 14:45:29 | × | artem quits (uid512590@id-512590.highgate.irccloud.com) (Quit: Connection closed for inactivity) |
| 14:46:35 | <gambpang> | Setting aside style considerations, is there any reason to prefer expressions like `f $ g $ h $ x` in a codebase to `f . g . h $ x` (or vice versa)? |
| 14:47:17 | → | burnsidesLlama joins (~burnsides@client-8-71.eduroam.oxuni.org.uk) |
| 14:47:28 | <albet70> | dminuoso, now I feel I can use Cont to do something but I don't understand it |
| 14:48:05 | × | peterhil quits (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) (Ping timeout: 268 seconds) |
| 14:48:09 | → | Guest87 joins (~Guest87@2a01:c23:5d93:6500:cd2c:9f7f:eeb2:be5b) |
| 14:48:23 | × | Boomerang quits (~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 258 seconds) |
| 14:50:14 | × | jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2) |
| 14:51:40 | × | norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 240 seconds) |
| 14:51:45 | <albet70> | and in that article, it does not mention the notorious callCC |
| 14:53:47 | × | mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 245 seconds) |
| 14:54:43 | <merijn> | albet70: Not understanding Cont is normal :p |
| 14:55:02 | <merijn> | I've written non-trivial code using Cont, but it still melts my brain each time >.> |
| 14:55:10 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 14:55:25 | → | s-h-i-n-o-b-i joins (~quassel@104.244.75.124) |
| 14:56:15 | <albet70> | merijn do u have some classic examples for ContT r IO a? |
| 14:56:38 | <albet70> | when should I use ContT? |
| 14:56:46 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) |
| 14:56:53 | <merijn> | albet70: Did you see the SO example on "ContT as bracket" yet? |
| 14:56:58 | <albet70> | which case it should be used? |
| 14:57:14 | <merijn> | https://stackoverflow.com/questions/26436095/what-are-good-haskell-conventions-for-managing-deeply-nested-bracket-patterns |
| 14:57:14 | <albet70> | not yet |
| 14:57:16 | → | skykanin joins (~skykanin@115.81-166-221.customer.lyse.net) |
| 14:57:17 | <merijn> | That one |
| 14:57:23 | <merijn> | Which is what I mostly use it for too |
| 15:01:45 | → | hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com) |
| 15:02:43 | → | Pickchea joins (~private@user/pickchea) |
| 15:02:56 | × | dajoer quits (~david@user/gvx) (Quit: leaving) |
| 15:03:01 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2) |
| 15:04:21 | × | Obo quits (~roberto@h-46-59-103-134.A498.priv.bahnhof.se) (Quit: WeeChat 2.8) |
| 15:05:36 | × | Guest87 quits (~Guest87@2a01:c23:5d93:6500:cd2c:9f7f:eeb2:be5b) (Quit: Client closed) |
| 15:06:22 | → | norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) |
| 15:06:26 | × | norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Remote host closed the connection) |
| 15:07:22 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 252 seconds) |
| 15:07:41 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
| 15:08:15 | <albet70> | some people said Cont can do branch control or jump back |
| 15:08:38 | <albet70> | full of magic |
| 15:09:28 | <kuribas> | is "fromListWith (++) " quadratic in the combining function? |
| 15:10:08 | <albet70> | :t maybe |
| 15:10:09 | <lambdabot> | b -> (a -> b) -> Maybe a -> b |
| 15:10:12 | <kuribas> | nvm, it is prepending, ... |
| 15:11:09 | <albet70> | when b ~ Cont r a, it can be used to something? |
| 15:13:25 | × | tengu1 quits (~tengu1@cpe-70-121-244-14.neb.res.rr.com) (Quit: Client closed) |
| 15:14:05 | → | qbt joins (~edun@user/edun) |
| 15:14:57 | × | qbt quits (~edun@user/edun) (Remote host closed the connection) |
| 15:15:43 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 15:17:03 | × | burnsidesLlama quits (~burnsides@client-8-71.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 15:17:36 | <kuribas> | albet70: probably... |
| 15:18:15 | → | burnsidesLlama joins (~burnsides@client-8-71.eduroam.oxuni.org.uk) |
| 15:18:51 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 15:19:14 | → | nate1 joins (~nate@2600:1010:b02a:2679:7ca9:9738:1435:e8d1) |
| 15:20:26 | × | burnsidesLlama quits (~burnsides@client-8-71.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 15:20:48 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 15:22:38 | → | burnsidesLlama joins (~burnsides@client-8-71.eduroam.oxuni.org.uk) |
| 15:22:56 | × | hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1) |
| 15:23:23 | → | hendursaga joins (~weechat@user/hendursaga) |
| 15:24:40 | × | burnsidesLlama quits (~burnsides@client-8-71.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 15:27:54 | → | burnsidesLlama joins (~burnsides@client-8-71.eduroam.oxuni.org.uk) |
| 15:28:14 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 15:28:45 | <c_wraith> | kuribas: prepending is the bad case for nested calls to (++). I expect fromListWith (++) would be pretty bad if there were a lot of duplicated keys |
| 15:28:51 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 15:30:15 | × | burnsidesLlama quits (~burnsides@client-8-71.eduroam.oxuni.org.uk) (Remote host closed the connection) |
| 15:30:39 | × | skykanin quits (~skykanin@115.81-166-221.customer.lyse.net) (Quit: WeeChat 3.2) |
| 15:31:01 | → | waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
| 15:31:48 | <c_wraith> | kuribas: oh, wait. English is ambiguous in fun ways. I see what you meant by "prepending", and you're right about that. I still think fromListWith (++) would be bad in the worst case. |
| 15:32:35 | <kuribas> | c_wraith: it's prepending like [el] ++ rest, but that's assuming the input has all singletons. |
| 15:33:04 | <kuribas> | c_wraith: or small lists, then it's still fine. |
| 15:33:06 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds) |
| 15:33:18 | <kuribas> | actually it's always linear... |
| 15:33:40 | → | t0zy joins (~t0zy@49.207.220.61) |
| 15:35:11 | <c_wraith> | kuribas: a quick check of the source says it's using foldl' |
| 15:35:20 | <c_wraith> | kuribas: which is the bad case for (++) |
| 15:36:10 | <kuribas> | c_wraith: dependends on the direction they apply it? |
| 15:36:48 | <kuribas> | fromListWith (++) [(5,"a"), (5,"b"), (3,"b"), (3,"a"), (5,"a")] == fromList [(3, "ab"), (5, "aba")] |
| 15:36:52 | <kuribas> | (from the docs) |
| 15:37:15 | <kuribas> | that looks like prepending... |
| 15:38:15 | <c_wraith> | oh, weird. that isn't the order I would expect the arguments at all |
| 15:38:21 | <kuribas> | Ah in insertWith: If the key does exist, the function will insert the pair (key, f new_value old_value). |
| 15:40:21 | <c_wraith> | well, I guess that makes fromListWith (++) efficient. But also not at all the operation I'd expect it to be |
| 15:41:06 | <kuribas> | what do you expect then? |
| 15:41:17 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 15:43:40 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 15:44:21 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) |
| 15:46:08 | <dminuoso> | gambpang: the latter is refactorable, the former not. |
| 15:46:10 | × | nate1 quits (~nate@2600:1010:b02a:2679:7ca9:9738:1435:e8d1) (Ping timeout: 240 seconds) |
| 15:46:19 | <dminuoso> | Or rather "easily refactorable" |
| 15:47:45 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 248 seconds) |
| 15:48:30 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
| 15:51:15 | → | qbt joins (~edun@user/edun) |
| 15:52:10 | × | ubert quits (~Thunderbi@178.115.35.155.wireless.dyn.drei.com) (Ping timeout: 240 seconds) |
| 15:52:13 | <c_wraith> | kuribas: I'd expect it to apply the function to the args in the opposite order such that fromListWith f [(1,a),(1,b),(1,c)] === fromList [(1, (a `f` b) `f' c)] |
| 15:52:32 | <c_wraith> | err. `f` the second time, too. |
| 15:53:10 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 15:53:14 | × | haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection) |
| 15:53:27 | → | haykam joins (~haykam@static.100.2.21.65.clients.your-server.de) |
| 15:57:00 | → | cheater joins (~Username@user/cheater) |
| 15:57:36 | × | slack1256 quits (~slack1256@191.125.227.92) (Remote host closed the connection) |
| 15:57:42 | → | pavonia joins (~user@user/siracusa) |
| 15:58:56 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:00:36 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 16:01:34 | → | Cajun joins (~Cajun@user/cajun) |
| 16:02:36 | → | lbseale joins (~lbseale@user/ep1ctetus) |
| 16:03:10 | × | aguapesada quits (~aguapesad@2804:14c:8793:8e2f:a406:863b:f810:2d4c) (Quit: CoreIRC for Android - www.coreirc.com) |
| 16:04:21 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 16:07:35 | <kuribas> | c_wraith: seems they optimized for (++) then :) |
| 16:08:43 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 16:09:35 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:12:44 | → | favonia joins (~favonia@user/favonia) |
| 16:13:22 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
| 16:15:01 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 16:16:07 | × | drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 252 seconds) |
| 16:16:25 | → | benin0369321 joins (~benin@183.82.178.142) |
| 16:19:09 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Remote host closed the connection) |
| 16:19:58 | × | benin036932 quits (~benin@183.82.178.142) (Ping timeout: 268 seconds) |
| 16:19:59 | benin0369321 | is now known as benin036932 |
| 16:20:19 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) |
| 16:22:58 | → | Atum_ joins (~IRC@user/atum/x-2392232) |
| 16:24:44 | → | drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) |
| 16:26:48 | → | econo joins (uid147250@user/econo) |
| 16:36:07 | <dminuoso> | gambpang: To elaborate on what I said earlier, writing `f . g . h $ x` or `(f . g . h) x` allows for mechanical refactoring since you can just take the composition and float it into a binding, e.g. let q = f . g . h in q x. |
| 16:38:34 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 16:39:09 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 16:40:21 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 16:44:17 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:50:41 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 248 seconds) |
| 16:52:00 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:52:04 | → | ubert joins (~Thunderbi@178.115.48.151.wireless.dyn.drei.com) |
| 17:02:13 | × | Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt) |
| 17:02:18 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 17:04:50 | → | mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
| 17:05:16 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer) |
| 17:07:57 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 17:08:22 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 245 seconds) |
| 17:08:27 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer) |
| 17:10:12 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 17:10:28 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer) |
| 17:12:54 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 17:13:45 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer) |
| 17:15:20 | simon1 | is now known as sim590 |
| 17:15:56 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 17:16:11 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 17:16:18 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 17:16:22 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer) |
| 17:18:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 17:18:49 | × | chomwitt quits (~chomwitt@ppp-94-67-193-240.home.otenet.gr) (Ping timeout: 252 seconds) |
| 17:20:05 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 17:20:13 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 17:24:39 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 17:31:12 | → | fef joins (~thedawn@user/thedawn) |
| 17:34:22 | × | fresheyeball quits (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9) |
| 17:40:02 | × | drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 245 seconds) |
| 17:40:07 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 17:41:10 | <gambpang> | dminuoso: Yeah, that's a point in favor for sure. Is it likely that the two variants wind up producing the ~same core/machine code? |
| 17:41:46 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 17:42:06 | <dminuoso> | Im not confident enough to answer this. |
| 17:43:25 | <dminuoso> | But honestly, that line of thought smells like premature optimization. |
| 17:43:37 | <dminuoso> | I'd worry about writing expressive, readable and maintainable code first. |
| 17:44:13 | <Drew[m]1> | I would be shocked if `let q = f . g . h in q x` did not inline to `(f . g . h) x` |
| 17:44:36 | <dminuoso> | Drew[m]1: I presume they meant ($) vs (.) |
| 17:45:03 | → | Pickchea joins (~private@user/pickchea) |
| 17:45:04 | <dminuoso> | I know GHC has some hacks in place for ($), and if memory serves right ($) actually gets completely elided in the intermediate representation to make runST work. |
| 17:45:27 | <dminuoso> | But Im not confident to make a claim here. |
| 17:46:01 | <Drew[m]1> | {-# INLINE (.) #-} |
| 17:46:01 | <Drew[m]1> | (.) f g = \x -> f (g x) |
| 17:46:21 | <Drew[m]1> | Oops that was meant to be on seperate lines |
| 17:46:23 | → | chomwitt joins (~chomwitt@ppp-94-67-193-240.home.otenet.gr) |
| 17:46:47 | <dminuoso> | And then we begin to have discussions about how the inliner works.. |
| 17:46:55 | <dminuoso> | Or rather the simplifier |
| 17:46:58 | <monochrom> | I cite premature optimization too. If this is in a hotspot, read core and asm code, and/or benchmark. If this is not in a hotspot, why are you worrying. |
| 17:47:00 | <Drew[m]1> | Yeah |
| 17:49:19 | <monochrom> | And even if it's in a hotspot and the more humane code is under-optimized, the GHC people will love to know your use case, then go think about how to optimize it. There is still a possible future in which the humane version is optimized. |
| 17:51:10 | <dminuoso> | I mean granted, there's certain behaviors that generally lead to more performant code. |
| 17:52:13 | <dminuoso> | But that's something you generally develop with experience, and are often still wrong. |
| 17:52:37 | <monochrom> | Drew[m]1, it did come out as seperate lines, no worries, your IRC client split it for you :) |
| 17:52:49 | <dminuoso> | `String`, despite having a horribly inefficient cache-hostile representation, seems to perform generally good enough to not be a hot spot in any of my programs.. |
| 17:52:57 | → | Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
| 17:53:11 | <dminuoso> | At least not a measurable/relevant hotspot |
| 17:53:54 | <davean> | tring HIGHLY depends on wher in the code it is, also when it is a problem its generally a very spread out problem |
| 17:53:59 | <monochrom> | Idiomatic Haskell tends not to do heavy string processing in the first place anyway. This is not Perl or Tcl or shell script. |
| 17:54:04 | <davean> | But it can be the best option in some cases |
| 17:57:29 | <monochrom> | HTML scrappers would need optimized strings. But HTML scrappers are no longer hip this year. (Yes, 5 or 10 years ago it was hip, every other day someone would come here saying "I'm writing an HTML scrapper, this is taking 1GB for a 100MB file...") |
| 17:59:03 | → | wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com) |
| 18:01:23 | × | hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity) |
| 18:02:04 | <maerwald> | ppl are doing that with haskell |
| 18:02:06 | <maerwald> | see xeno |
| 18:02:48 | <maerwald> | Here's a maintained fork https://gitlab.com/migamake/xeno |
| 18:03:22 | <maerwald> | oddly, it's faster than some C parsers |
| 18:03:34 | <maerwald> | but it's not idiomatic haskell in any sense |
| 18:03:49 | <maerwald> | just bytestring trickery optimizing to pointer tricks |
| 18:04:45 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 18:04:48 | × | polyphem quits (~polyphem@2a02:810d:640:776c:f4c0:a27a:540e:c15e) (Read error: Connection reset by peer) |
| 18:05:13 | <davean> | maerwald: I don't know what Haskell you're reading, pointer tricks on bytestrings is what most of the Haskell I've read lately is all about! :) |
| 18:05:42 | <maerwald> | I'll be impressed if we have a fast streamly based XML parser |
| 18:05:44 | <maerwald> | not before |
| 18:06:11 | → | hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com) |
| 18:06:37 | <monochrom> | Well yeah, ever since bytestring, HTML scrapper performance became a solved problem. |
| 18:07:22 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 18:08:54 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 18:10:59 | → | keutoi joins (~keutoi@223.238.95.231) |
| 18:16:39 | → | aegon joins (~mike@174.127.249.180) |
| 18:22:18 | <dminuoso> | code optimizing to memory tricks is a fairly legit and common thing to do to make code fast.. |
| 18:22:25 | <dminuoso> | just saying.. |
| 18:27:03 | × | fef quits (~thedawn@user/thedawn) (Remote host closed the connection) |
| 18:27:22 | <monochrom> | :) |
| 18:27:55 | <aegon> | huh, how do you go about testing somethign that requires a postgresql connection trying to reason about testing functions that interact with postgresql simple, should i create a dummy db and test against that :? |
| 18:28:19 | <dminuoso> | aegon: That's probably the most common way, yes. |
| 18:28:58 | <dminuoso> | Depending on what you want to test, possibly mocking or some tagless final encoding could also help. Also, if you can write code that is portable with sqlite as well, you can use sqlite for testing. |
| 18:29:41 | <dminuoso> | Or you can use unit tests if you can decouple the logic from the database |
| 18:29:51 | <dminuoso> | And bypass the need for a database entirely |
| 18:30:06 | <maerwald> | dminuoso: I dunno, in haskell it feels particularly fragile (and often is), because how things optimize/inline may change drastically from GHC to GHC and library version |
| 18:31:29 | × | keutoi quits (~keutoi@223.238.95.231) (Ping timeout: 248 seconds) |
| 18:33:07 | → | keutoi joins (~keutoi@157.47.26.152) |
| 18:34:25 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds) |
| 18:36:24 | × | dyeplexer quits (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
| 18:48:24 | × | keutoi quits (~keutoi@157.47.26.152) (Quit: leaving) |
| 18:48:25 | × | t0zy quits (~t0zy@49.207.220.61) (Remote host closed the connection) |
| 18:48:40 | → | t0zy joins (~t0zy@49.207.220.61) |
| 18:51:15 | <dsal> | aegon: I've done something like this by modeling my effects separately in a class and then having different effect providers. This also helped me when I suspected I had a performance issue in my DB layer which ended up being unaffected by a memory-only provider. |
| 18:54:32 | <gambpang> | In case ppl care, the context is that we prefer `f . g . h $ x` (or `(f . g . h) x`) at work exactly because of that "obvious factorization" and nobody knew what if any costs there were over using chaining ($) |
| 18:55:28 | <Cale> | gambpang: The compiled code will typically be identical |
| 18:56:18 | → | d0ku joins (~d0ku@178.43.198.70.ipv4.supernova.orange.pl) |
| 18:58:43 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 18:59:10 | × | d0ku quits (~d0ku@178.43.198.70.ipv4.supernova.orange.pl) (Client Quit) |
| 18:59:21 | → | d0ku joins (~d0ku@178.43.198.70.ipv4.supernova.orange.pl) |
| 19:04:26 | × | wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 19:04:42 | → | tput joins (~tim@S0106a84e3fe54613.ed.shawcable.net) |
| 19:08:24 | → | shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
| 19:14:51 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 19:14:56 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:17:46 | × | gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 19:18:28 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 19:18:41 | × | Cajun quits (~Cajun@user/cajun) (Quit: Client closed) |
| 19:18:54 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 19:21:24 | → | Cajun joins (~Cajun@user/cajun) |
| 19:22:44 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 19:40:10 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
| 19:42:06 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 19:42:18 | × | ystael quits (~ystael@user/ystael) (Read error: Connection reset by peer) |
| 19:43:50 | → | gethuen joins (uid502979@id-502979.stonehaven.irccloud.com) |
| 19:45:25 | → | burnside_ joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 19:45:26 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
| 19:46:09 | × | alx741 quits (~alx741@181.196.68.125) (Ping timeout: 248 seconds) |
| 19:48:58 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 19:49:08 | <aegon> | dsal: dminuoso: roger that I'll try each and see how things vary maybe i should have used persistant vs postgresql-simple |
| 19:52:40 | × | fabfianda quits (~fabfianda@37.183.255.57) (Ping timeout: 240 seconds) |
| 19:57:55 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 19:59:39 | → | alx741 joins (~alx741@181.196.69.234) |
| 20:01:58 | → | jgeerds joins (~jgeerds@55d45555.access.ecotel.net) |
| 20:03:37 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 20:05:40 | × | juhp quits (~juhp@128.106.188.220) (Ping timeout: 268 seconds) |
| 20:11:47 | × | hendursaga quits (~weechat@user/hendursaga) (Remote host closed the connection) |
| 20:12:23 | → | hendursaga joins (~weechat@user/hendursaga) |
| 20:12:34 | → | chisui joins (~chisui@200116b8681e48004d4a4305e410a0e6.dip.versatel-1u1.de) |
| 20:13:39 | × | burnside_ quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 20:13:44 | <chisui> | Hey, does anyone have a clue why the sound is skipping in this application? https://github.com/chisui/fsynth/blob/master/src/Main.hs I fear that the reason is that it's the context switch from the generating thread to the writing one. |
| 20:14:08 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 20:16:11 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Read error: Connection reset by peer) |
| 20:16:22 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 20:16:32 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Remote host closed the connection) |
| 20:16:50 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 20:17:04 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 20:17:24 | × | gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 20:18:08 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 20:18:41 | <shapr> | chisui: does it help any to spawn off play as a separate thread? |
| 20:19:12 | <shapr> | you have -threaded, so I'd guess garbage collection is already on a separate thread? |
| 20:19:25 | <dsal> | I'm suspicious of `threadDelay 50` |
| 20:19:53 | <davean> | shapr: uh? Is it using hte pauseless GC? |
| 20:19:59 | <davean> | Otherwise thats not how threads and GC work |
| 20:20:14 | <chisui> | shapr: spawning a new thread doesn't help :( |
| 20:20:54 | <chisui> | dsal: the delay is just so that the buffer doesn't overflow. I checked and the buffer is always full enough when popped. |
| 20:20:55 | <dsal> | Is it using too much CPU, or too little? |
| 20:21:10 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 20:21:42 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 268 seconds) |
| 20:21:48 | <chisui> | dsal: Oh, it uses 100% on both threads it got. |
| 20:22:07 | <dsal> | `threadDelay` is often used as an approximation for a solution to a different problem. |
| 20:23:30 | <davean> | Yah, you usually want to wait until a specific time has happened, or something |
| 20:23:44 | <chisui> | dsal: Yeah, I should probably use something like a `TBQueue`. Unfortunately sdl2 requires the callback to be in `IO` |
| 20:24:03 | <dsal> | Sounds like too much CPU. :) I'd think this wouldn't be particularly expensive. Profiling might help you understand where all the CPU is going, but in general, I don't think any work should be done if there's nothing that needs computation. |
| 20:24:04 | <dsal> | :t atomically |
| 20:24:05 | <lambdabot> | error: Variable not in scope: atomically |
| 20:24:09 | <dsal> | boo |
| 20:24:17 | <dsal> | % :t atomically |
| 20:24:17 | <yahb> | dsal: STM a -> IO a |
| 20:24:57 | <chisui> | is that safe to use in a multythreaded environment? |
| 20:25:07 | <davean> | of course |
| 20:25:09 | <davean> | thats the point |
| 20:25:48 | <dsal> | Most other languages with multithreading support wish they could do this. :) |
| 20:25:59 | <tomsmeding> | chisui: the thing about STM is that all the STM actions within a single 'atomically' block should happen, well, atomically; how it does that in practice is try running it, and if it detects another thread has done something simultaneously, it rolls back and tries again |
| 20:26:40 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 20:27:04 | <tomsmeding> | where a mutex is "pessimistic concurrency", i.e. always paying the cost of locking expecting that races are going to happen often, STM is "optimistic concurrency", i.e. just going for it and paying when there actually ended up being a race |
| 20:27:32 | <davean> | tomsmeding: Uh, thats an implimentaiton detail that can vary |
| 20:27:37 | <tomsmeding> | I know |
| 20:27:56 | <tomsmeding> | but I think it's helpful in getting an intuitive understanding about what's even going on here, and how it _can_ even be implemented |
| 20:28:01 | × | favonia quits (~favonia@user/favonia) (Ping timeout: 252 seconds) |
| 20:28:13 | <davean> | I mean it can be implimented as a mutex too |
| 20:28:14 | <tomsmeding> | I often find that when I have no idea how something could even be implemented, I have no feeling for how to work with it |
| 20:28:21 | <tomsmeding> | okay fair |
| 20:28:35 | <tomsmeding> | then read it as a bit of evangelising about why STM is cool :) |
| 20:28:38 | <stevenxl> | Can someone point out to me what is wrong with ths stack.yaml file: |
| 20:28:40 | <davean> | Ok :) |
| 20:28:45 | <tomsmeding> | or, why ghc's implementation of it is cool |
| 20:28:48 | <stevenxl> | https://www.irccloud.com/pastebin/nUoRzgeh/ |
| 20:28:58 | <davean> | tomsmeding: Its no the the coolest! |
| 20:29:10 | stevenxl | Gives me a warning "Unrecognized field in Snapshot: extra-deps". |
| 20:29:12 | <davean> | tomsmeding: people have played with ones that use HTM, ones that have guarrenteed progress and fairness ... |
| 20:29:28 | <davean> | well, I don't know that the HTM ever happened |
| 20:30:41 | <stevenxl> | https://www.irccloud.com/pastebin/066TZS1X/ |
| 20:30:51 | stevenxl | Even that simple file gives me an error, and that is supposedly the default. |
| 20:30:58 | <chisui> | Ok, I'll will change to stm. Somehow I'm still not convinced that this will fix the issue |
| 20:31:53 | <tomsmeding> | stevenxl: can you give the full command you're invoking, and the full error? |
| 20:32:19 | stevenxl | Hi tomsmeding - thank you for the offer to help. Apparently, A custom snapshot doesn't use extra-deps, they go under packages. |
| 20:33:02 | <tomsmeding> | oh this is not a stack.yaml of a project? |
| 20:33:47 | <dsal> | chisui: My guess is that the issue is that you're burning all the cores and putting in time delays to try to artificially slow stuff down. Just organize information exchanges with queues and have a thread keeping it populated and let the other one read from it when it needs it. Shouldn't be using much CPU. |
| 20:34:08 | stevenxl | tomsmeding: I completely missed the fact that we have a `stack.yaml` which points to a resolver. |
| 20:34:24 | → | ystael joins (~ystael@user/ystael) |
| 20:35:05 | <chisui> | dsal: It' would be great if there was a streaming library that supports this. |
| 20:36:04 | <dsal> | Asking for data from IO is just `atomically . readTBQueue` |
| 20:36:16 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 252 seconds) |
| 20:36:23 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 20:36:35 | <adamCS> | chisui: Maybe streamly? (https://hackage.haskell.org/package/streamly) |
| 20:37:05 | <chisui> | should I use a bare TBQueue or chunk the data further? |
| 20:37:06 | → | jolly joins (~jolly@208.180.97.158) |
| 20:37:21 | <chisui> | adamCS: thanks, I'll take a look |
| 20:37:39 | <davean> | chisui: lots of streaming libraries can do this sort of thing |
| 20:38:07 | → | hexfive joins (~eric@50.35.83.177) |
| 20:38:22 | <dsal> | chisui: What you decide `a` should be there is up to you. Easy enough to change. |
| 20:40:07 | × | cheater quits (~Username@user/cheater) (Ping timeout: 252 seconds) |
| 20:40:16 | <tomsmeding> | chisui: how many things are you planning on pushing on that queue per second |
| 20:40:33 | <tomsmeding> | if that's 44100 things, then probably chunk that a bit :) |
| 20:40:44 | → | cheater joins (~Username@user/cheater) |
| 20:41:05 | <chisui> | tomsmeding: It's currently running on a sample rate of 48k ;) |
| 20:41:23 | <davean> | chisui: haha, whats your latency requirement? |
| 20:41:31 | <davean> | chisui: use that to calculate chunk size |
| 20:41:37 | <davean> | but 48kps is nothing |
| 20:41:53 | <davean> | I do that many web requests in a thread |
| 20:43:05 | <tomsmeding> | TBQueue is the classic two-lists implementation of a queue, so it will do a list reversal of roughly the whole queue every once in a while |
| 20:43:27 | <tomsmeding> | while throughput is fine, that's probably not great for latency, depending on exactly how large the queue will be |
| 20:43:28 | → | azeem joins (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) |
| 20:43:36 | <davean> | chisui: I'd probably make the chunks half the size of your latency requirement |
| 20:44:10 | <davean> | as a first default |
| 20:44:22 | <chisui> | I think that sdl always requests a fixed size chunk. I'll just use that |
| 20:45:01 | <davean> | chisui: last I knew it was configurable |
| 20:45:17 | × | pompez quits (~martin@user/pompez) (Quit: WeeChat 3.2) |
| 20:45:23 | <chisui> | yeah, but once it's configured it doesn't change randomly right? |
| 20:45:41 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 20:46:35 | <davean> | chisui: right, but you need to pick the size of that based on your latency requirement, so its just moving the problem |
| 20:55:37 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds) |
| 20:57:00 | × | fvr quits (uid503686@id-503686.highgate.irccloud.com) (Quit: Connection closed for inactivity) |
| 21:01:25 | → | burnsidesLlama joins (~burnsides@dhcp168-023.wadham.ox.ac.uk) |
| 21:01:42 | × | nschoe quits (~quassel@2a01:e0a:8e:a190:f185:3872:6a89:c741) (Ping timeout: 245 seconds) |
| 21:01:56 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 21:03:39 | → | acidjnk_new joins (~acidjnk@p200300d0c72b952850c7a959aba8feb6.dip0.t-ipconnect.de) |
| 21:03:52 | wrengr_away | is now known as wrengr |
| 21:05:40 | × | burnsidesLlama quits (~burnsides@dhcp168-023.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 21:08:19 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:08:50 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds) |
| 21:09:31 | → | favonia joins (~favonia@user/favonia) |
| 21:10:22 | <chisui> | Thank's everyone. Using TBQueue together with sensibly sized chunks worked wonders. |
| 21:11:56 | <tomsmeding> | 🎉 |
| 21:14:31 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 21:15:30 | <monochrom> | :) |
| 21:15:58 | × | hexfive quits (~eric@50.35.83.177) (Quit: WeeChat 3.0) |
| 21:17:35 | × | chisui quits (~chisui@200116b8681e48004d4a4305e410a0e6.dip.versatel-1u1.de) (Quit: Client closed) |
| 21:17:46 | <monochrom> | Yeah in your case you just go "atomically (enqueue this)" and "atomically (dequeue that)" and that's your IO level. |
| 21:18:00 | → | chisui joins (~chisui@200116b8681e48004d4a4305e410a0e6.dip.versatel-1u1.de) |
| 21:18:54 | <monochrom> | The STM level needs to be more fine-grained because "enqueue this" for example is multiple lines of STM code. |
| 21:19:10 | <monochrom> | or more precisely, multiple operations. |
| 21:20:10 | <chisui> | monochrom: are you talking about the current version I pushed? |
| 21:20:11 | <monochrom> | And other people will also have use cases requiring "atomically (enqueue this and dequeue something else)". |
| 21:20:24 | <monochrom> | I think yes. I haven't checked. |
| 21:21:10 | × | ubert quits (~Thunderbi@178.115.48.151.wireless.dyn.drei.com) (Ping timeout: 240 seconds) |
| 21:21:21 | <tomsmeding> | chisui: you just missed one message https://ircbrowse.tomsmeding.com/browse/lchaskell?id=145828#trid145828 |
| 21:22:05 | <chisui> | Ah, that makes sense |
| 21:22:18 | <monochrom> | Oh, that. I missed that too haha. |
| 21:30:49 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 21:33:07 | → | pgib joins (~textual@173.38.117.86) |
| 21:34:40 | × | qbt quits (~edun@user/edun) (Ping timeout: 240 seconds) |
| 21:38:11 | × | azeem quits (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Read error: Connection reset by peer) |
| 21:44:23 | <dsal> | chisui: do you still need that IORef? |
| 21:45:08 | <chisui> | dsal: I use it to fill a single chunk. |
| 21:45:09 | <dsal> | I guess I don't quite understand that part. |
| 21:50:08 | × | doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection) |
| 21:53:55 | → | polyphem joins (~polyphem@2a02:810d:640:776c:f4c0:a27a:540e:c15e) |
| 21:56:37 | → | zebrag joins (~chris@user/zebrag) |
| 21:58:47 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 22:00:55 | → | azeem joins (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) |
| 22:04:21 | → | doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net) |
| 22:04:35 | × | gambpang quits (~ishipman@207.181.230.156) (Remote host closed the connection) |
| 22:07:21 | <aegon> | does ghc automatically use the newtype strategy for deriving newtypes or should I be explicit about that to make sure |
| 22:07:46 | × | d0ku quits (~d0ku@178.43.198.70.ipv4.supernova.orange.pl) (Ping timeout: 268 seconds) |
| 22:10:15 | × | Cajun quits (~Cajun@user/cajun) (Quit: Client closed) |
| 22:11:05 | → | Cajun joins (~Cajun@user/cajun) |
| 22:11:44 | ell | is now known as ellie |
| 22:12:57 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 245 seconds) |
| 22:15:31 | → | p0lyph3m joins (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) |
| 22:16:01 | × | p0lyph3m quits (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) (Client Quit) |
| 22:16:13 | × | chisui quits (~chisui@200116b8681e48004d4a4305e410a0e6.dip.versatel-1u1.de) (Ping timeout: 246 seconds) |
| 22:16:24 | → | p0lyph3m joins (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) |
| 22:16:42 | × | polyphem quits (~polyphem@2a02:810d:640:776c:f4c0:a27a:540e:c15e) (Ping timeout: 245 seconds) |
| 22:17:11 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:18:03 | <aegon> | bah, a page down in this post it talks about that and the accompanying compile warn line |
| 22:18:10 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 240 seconds) |
| 22:20:45 | p0lyph3m | is now known as polyphem |
| 22:21:00 | × | michalz quits (~michalz@185.246.204.62) (Remote host closed the connection) |
| 22:21:26 | × | polyphem quits (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) (Quit: CoreIRC for Android - www.coreirc.com) |
| 22:21:37 | → | polyphem joins (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) |
| 22:22:13 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 22:26:25 | × | mousey quits (~skymouse@gateway/tor-sasl/mousey) (Remote host closed the connection) |
| 22:26:52 | → | mousey joins (~skymouse@gateway/tor-sasl/mousey) |
| 22:29:37 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 245 seconds) |
| 22:32:17 | → | Guest56 joins (~textual@209.51.86.47) |
| 22:34:05 | × | mousey quits (~skymouse@gateway/tor-sasl/mousey) (Ping timeout: 244 seconds) |
| 22:36:03 | × | acidjnk_new quits (~acidjnk@p200300d0c72b952850c7a959aba8feb6.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 22:36:55 | → | andjjj23_ joins (~irc@107.170.228.47) |
| 22:38:27 | × | jgeerds quits (~jgeerds@55d45555.access.ecotel.net) (Ping timeout: 245 seconds) |
| 22:38:30 | × | Guest56 quits (~textual@209.51.86.47) (Quit: Textual IRC Client: www.textualapp.com) |
| 22:38:46 | → | venue joins (~venue@209.51.86.47) |
| 22:39:40 | <kilolympus> | I've got a gigantic ~/.stack directory (39 gigs on a 128 gb SSD), and I want to trim it down -- is there a way to use Stack to list projects that use a certain installed GHC version? (so I can safely delete stuff) |
| 22:40:18 | <kilolympus> | Or at least some form of safe purge method (I'm fine with recompiling everything again, since there may be older projects I no longer actively work on, which I can save on) |
| 22:40:45 | <kilolympus> | I heard I shouldn't just downright remove ~/.stack, since it can error out if project/.stack-work still exists |
| 22:41:04 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds) |
| 22:41:18 | <dsal> | You can rm -rf most of the big stuff in there. |
| 22:41:42 | <sm> | kilolympus: stack-clean-old is a good safe way |
| 22:42:18 | <sm> | also removing project/.stack-work would be another option |
| 22:42:45 | <kilolympus> | Ah, ok dsal, thanks! |
| 22:42:53 | <dsal> | sm's being more surgical. :) |
| 22:42:57 | <kilolympus> | sm: Didn't know about this, looks like stack-clean-old looks great! |
| 22:43:14 | <kilolympus> | Removing project/.stack-work would be fine, but the projects themselves are on a plenty big external HDD |
| 22:43:15 | <dsal> | I use nix-integration and don't worry about it anymore. Now it's all in /nix instead |
| 22:43:23 | <sm> | yup. Be aware it shows/removes different stuff depending whether you run it inside a project or not |
| 22:43:35 | <kilolympus> | Alright |
| 22:43:39 | <kilolympus> | Thanks! |
| 22:43:43 | × | venue quits (~venue@209.51.86.47) (Quit: Textual IRC Client: www.textualapp.com) |
| 22:44:02 | → | venue joins (~venue@209.51.86.47) |
| 22:45:21 | × | chomwitt quits (~chomwitt@ppp-94-67-193-240.home.otenet.gr) (Remote host closed the connection) |
| 22:48:16 | × | amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 252 seconds) |
| 22:49:10 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 22:51:06 | → | mousey joins (~skymouse@gateway/tor-sasl/mousey) |
| 22:51:20 | × | Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
| 22:51:34 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 22:54:55 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 22:55:10 | ← | venue parts (~venue@209.51.86.47) (adios) |
| 22:57:32 | → | venue joins (~venue@209.51.86.47) |
| 22:57:32 | venue | is now known as venuex |
| 22:58:34 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 23:00:15 | × | aegon quits (~mike@174.127.249.180) (Remote host closed the connection) |
| 23:03:12 | × | venuex quits (~venue@209.51.86.47) (Changing host) |
| 23:03:12 | → | venuex joins (~venue@user/venue) |
| 23:05:40 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 23:08:12 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 268 seconds) |
| 23:09:57 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 23:15:51 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 23:18:03 | → | wroathe joins (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) |
| 23:25:29 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds) |
| 23:28:33 | × | Jonno_FTW quits (~come@user/jonno-ftw/x-0835346) (Ping timeout: 268 seconds) |
| 23:33:07 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 23:36:19 | → | frosky joins (~froskyarr@50.7.59.207) |
| 23:36:50 | → | Jonno_FTW joins (~come@api.carswap.me) |
| 23:36:57 | × | dmwit quits (~dmwit@pool-108-28-26-143.washdc.fios.verizon.net) (Remote host closed the connection) |
| 23:38:08 | → | dajoer joins (~david@user/gvx) |
| 23:42:34 | → | oldsk00l joins (~znc@ec2-18-170-87-228.eu-west-2.compute.amazonaws.com) |
| 23:42:44 | × | oldsk00l_ quits (~znc@ec2-18-170-87-228.eu-west-2.compute.amazonaws.com) (Ping timeout: 268 seconds) |
| 23:46:31 | sajith_ | is now known as sajith |
| 23:50:18 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 23:50:42 | × | Axma70428 quits (~Axman6@user/axman6) (Remote host closed the connection) |
| 23:50:56 | → | Axman6 joins (~Axman6@user/axman6) |
| 23:52:19 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 23:54:10 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 23:56:26 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 23:59:23 | → | PinealGlandOptic joins (~PinealGla@37.115.210.35) |
All times are in UTC on 2021-08-18.