Home liberachat/#haskell: Logs Calendar

Logs on 2021-06-23 (liberachat/#haskell)

00:00:58 <chisui> Even if you assume that the function terminates, the domain of `forall x. x -> x` is infinitely large.
00:02:54 <janus> right, but why even talk about forall if it is even undecidable to answer the question for "the general first-order theory of the natural numbers expressed in Peano's axioms". wouldn't that have better literature?
00:03:05 × trufas quits (~trufas@177.240.218.218) (Ping timeout: 252 seconds)
00:03:32 <Axman6> janus: thanks, I'll give that a go
00:03:45 trufas joins (~trufas@177.240.218.218)
00:04:26 × lbseale quits (~lbseale@user/ep1ctetus) (Ping timeout: 265 seconds)
00:04:29 <eggplantade> I think this paper explains the restriction. The paper is quite technical, though. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.142.4166
00:04:52 Feuermagier joins (~Feuermagi@user/feuermagier)
00:05:52 lbseale joins (~lbseale@user/ep1ctetus)
00:06:21 × BosonCollider quits (~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 258 seconds)
00:08:25 × peterhil_ quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Read error: Connection reset by peer)
00:08:48 <eggplantade> safinaskar: https://ryanglscott.github.io/2019/05/26/on-the-arity-of-type-families/
00:09:11 peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
00:09:30 <safinaskar> ok, thanks everybody
00:09:34 <safinaskar> i will read links
00:12:14 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
00:13:15 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
00:16:18 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
00:18:56 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 265 seconds)
00:19:18 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
00:20:57 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
00:21:07 × pottsy quits (~pottsy@2400:4050:b560:3700:d9ad:59b1:5f34:93cd) (Quit: Leaving)
00:25:49 × Deide quits (~Deide@user/deide) (Quit: Seeee yaaaa)
00:26:52 renzhi joins (~xp@2607:fa49:6501:9500:5589:4dab:9f77:1a6b)
00:29:30 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
00:31:06 × henninb quits (~henninb@63.226.174.157) (Remote host closed the connection)
00:32:05 × lbseale quits (~lbseale@user/ep1ctetus) (Quit: Leaving)
00:33:34 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:34:29 lbseale joins (~lbseale@user/ep1ctetus)
00:35:39 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
00:37:23 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
00:37:24 × dhil quits (~dhil@195.213.192.47) (Ping timeout: 258 seconds)
00:40:08 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds)
00:40:56 hmmmas joins (~chenqisu1@183.217.200.246)
00:43:14 shimin joins (~liushimin@2409:893c:d32:97:28d4:25fe:fcfb:1863)
00:43:26 × argento quits (~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving)
00:45:45 × hmmmas quits (~chenqisu1@183.217.200.246) (Client Quit)
00:46:44 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
00:49:06 safinaskar parts (~safinaska@109-252-90-89.nat.spd-mgts.ru) ()
00:52:06 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
00:53:07 hmmmas joins (~chenqisu1@183.217.200.246)
00:56:24 stevenxl_ joins (~stevenlei@174.128.182.212)
00:59:21 <chisui> Hey, why is this error occurring https://paste.debian.net/1202086/ ? As far as I can tell the quantified constraint doesn't imply that the instance is user provided.
00:59:30 × stevenxl quits (~stevenlei@174.128.182.215) (Ping timeout: 268 seconds)
01:01:44 × phma quits (phma@2001:5b0:210d:d028:dead:9920:575e:b71e) (Read error: Connection reset by peer)
01:02:14 <qrpnxz> how do i turn a float into an integer? I've tried like fromInteger . fromIntegral . floor and stuff and gotten nowhere
01:04:27 <Clint> qrpnxz: what's wrong with floor
01:04:46 <qrpnxz> doesn't work idk let me get the error message
01:05:02 <Clint> > floor 5.5
01:05:04 <lambdabot> 5
01:05:24 <Clint> > round 5.5
01:05:26 <lambdabot> 6
01:05:34 <qrpnxz> https://termbin.com/fyi2
01:06:11 <Clint> get rid of "fromIntegral ."
01:06:36 <qrpnxz> wtf lmao
01:06:41 <Clint> and what do you mean for take (floor 2.0) [1..] to do?
01:06:58 <qrpnxz> i thought i tried that but guess not
01:07:10 <qrpnxz> i mean it for it to take 2 ofc since the floor of 2.0 is 2
01:07:15 <Clint> ok, just checking
01:07:17 <geekosaur> qrpnxz, you want to apply it not compose it, but it would be doing nothing
01:07:38 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
01:08:46 <qrpnxz> oh, the real error in my code is that function will apply more tightly than multiplication rip
01:11:03 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
01:11:44 warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
01:13:09 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
01:13:49 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
01:14:01 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
01:15:05 × stevenxl_ quits (~stevenlei@174.128.182.212) (Quit: leaving)
01:16:06 × warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 244 seconds)
01:21:07 × chisui quits (~chisui@200116b866492700342cdc4d594c896c.dip.versatel-1u1.de) (Ping timeout: 246 seconds)
01:21:44 × howdy` quits (~user@2001:8003:2432:d501:1ea:381d:5464:1a19) (Ping timeout: 252 seconds)
01:21:46 sheepduck joins (~sheepduck@user/sheepduck)
01:22:26 howdy` joins (~user@2001:8004:1d00:2409:685e:a149:f33:6c38)
01:23:27 haskl joins (~haskeller@user/haskl)
01:25:09 howdy`` joins (~user@2001:8003:2432:d501:7c9a:6d35:e5a2:fb9c)
01:27:20 × howdy` quits (~user@2001:8004:1d00:2409:685e:a149:f33:6c38) (Ping timeout: 268 seconds)
01:28:55 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
01:32:00 pfurla_ joins (~pfurla@216.131.82.46)
01:34:49 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 265 seconds)
01:37:34 × hegstal quits (~hegstal@2a02:c7f:7604:8a00:7821:4ac6:7f63:f8) (Remote host closed the connection)
01:40:04 × ukari quits (~ukari@user/ukari) (Remote host closed the connection)
01:44:43 ukari joins (~ukari@user/ukari)
01:47:37 × trent2 quits (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 244 seconds)
01:48:08 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
01:48:25 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
01:48:32 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
01:51:54 × shimin quits (~liushimin@2409:893c:d32:97:28d4:25fe:fcfb:1863) (Ping timeout: 264 seconds)
01:51:55 × mikail_ quits (~mikail@90.212.77.3) (Ping timeout: 268 seconds)
01:52:49 <qrpnxz> there a syntax to do like half open ranges on lists like `[0...l]` or smth like that?
01:54:51 <glguy> qrpnxz, [0..l-1]
01:54:52 <geekosaur> no, and in fact Haskell's story there is a bit strange for some types
01:55:32 <geekosaur> notably Double can run past the end of the range under some circumstances
01:56:57 <boxscape> > [1.1, 1.31..4]
01:56:58 <lambdabot> [1.1,1.31,1.52,1.73,1.94,2.15,2.36,2.57,2.78,2.9899999999999998,3.1999999999...
01:57:18 <boxscape> somewhat anticlimactic when lambdabot doesn't show the whole list
01:58:08 <qrpnxz> glguy, 😭️
01:58:12 <qrpnxz> alright thanks guys
01:58:38 <c_wraith> > [1, 2.5 .. 3.5]
01:58:39 <lambdabot> [1.0,2.5,4.0]
01:58:42 <ChaiTRex> > last [1.1, 1.31..4]
01:58:44 <lambdabot> 4.039999999999999
01:59:14 <glguy> qrpnxz, I find the languages that do that just make a confusing mess with it
01:59:41 <glguy> like Rust's .. and ..=
01:59:43 <qrpnxz> i think one language does .. and ..=, which is perfectly legible
01:59:54 <qrpnxz> lol
02:00:09 <geekosaur> de gustibus…
02:02:05 × xff0x quits (~xff0x@2001:1a81:5218:4800:ee:cf49:8e18:79e1) (Ping timeout: 244 seconds)
02:03:50 xff0x joins (~xff0x@2001:1a81:5256:f800:ed61:c578:88bf:885a)
02:05:41 <boxscape> I think with syntax like [1,2...n] or anything similar it clearly seems to suggest that n is inside the list
02:07:11 <qrpnxz> .. vs ... is kind of anybodies guess, but .. vs ..= is obvious
02:08:13 <glguy> If you're going to have both, then ..< and ..= at least
02:08:26 <boxscape> ^
02:10:11 <boxscape> it's strange that [n..m] gets desugared into enumFromTo but `if c then a else b` doesn't get desugared into ifThenElse without RebindableSyntax
02:14:25 GoodbyeVincent joins (~GoodbyeVi@55.15.95.92.rev.sfr.net)
02:16:36 <boxscape> (It's also strange that RebindableSyntax/OverloadedLists doesn't let you supply your own enumFromTo, I suppose)
02:17:06 outoftime joins (~ruslan@46.227.138.42)
02:19:35 ddellacosta joins (~ddellacos@ool-44c73aff.dyn.optonline.net)
02:35:20 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:35:20 FinnElija is now known as Guest3314
02:35:20 × Guest3314 quits (~finn_elij@user/finn-elija/x-0085643) (Killed (cadmium.libera.chat (Nickname regained by services)))
02:35:20 finn_elija is now known as FinnElija
02:36:54 × alx741 quits (~alx741@181.196.68.156) (Quit: alx741)
02:41:07 Topsi joins (~Tobias@dyndsl-095-033-016-151.ewe-ip-backbone.de)
02:43:06 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
02:43:11 × ddellacosta quits (~ddellacos@ool-44c73aff.dyn.optonline.net) (Remote host closed the connection)
02:44:46 <outoftime> Does Haskell have an arbitrary precision fraction data type? I can not loose precision been working with values of +-10^128.
02:45:09 <glguy> outoftime, it has Rational
02:45:57 <Axman6> > 2^255 % 3^127
02:45:59 <lambdabot> 5789604461865809771178549250434395392663499233282028201972879200395656481996...
02:46:14 <Axman6> :t 2^255 % 3^127
02:46:15 <lambdabot> Integral a => Ratio a
02:48:06 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
02:52:55 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
02:53:50 × pieguy128 quits (~pieguy128@bas1-montreal02-65-92-163-194.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in)
02:54:09 pieguy128 joins (~pieguy128@bas1-montreal02-65-92-163-194.dsl.bell.ca)
02:54:54 × renzhi quits (~xp@2607:fa49:6501:9500:5589:4dab:9f77:1a6b) (Ping timeout: 268 seconds)
02:55:48 × td_ quits (~td@94.134.91.59) (Ping timeout: 252 seconds)
02:57:13 warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
02:57:42 td_ joins (~td@muedsl-82-207-238-055.citykom.de)
03:00:52 <Cale> Axman6: Ah yes, the just interval between C and an F♭♭♭♭♭♭♭♭♭♭♭♭♭♭♭♭♭♭ 53 octaves above it
03:01:50 phma joins (phma@2001:5b0:210d:d028:4f8f:d565:65bb:29c2)
03:01:53 <peddie> outoftime: you can use a library like `hmpfr` or `qd` to get a higher precision floating-point type
03:03:50 <qrpnxz> but why, it's built in
03:04:10 <qrpnxz> hey, does type Name = Int actually create a new type or is this an alias?
03:04:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:04:17 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
03:04:48 <peddie> qrpnxz: you mean Rational is built in? yes, but it represents exact rational numbers, and sometimes you want a floating-point approximate reals and/or IEEE754 semantics
03:05:06 <qrpnxz> there is also bigfloat, i forget what it's called tho
03:05:39 <peddie> qrpnxz: there are bindings to libbf, but they don't include many functions right now
03:06:10 trent2 joins (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
03:06:52 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
03:06:52 <peddie> qrpnxz: `type Name = Int` is an alias; you can use `newtype` to create a new type
03:06:57 <qrpnxz> ty
03:07:10 × pfurla_ quits (~pfurla@216.131.82.46) (Ping timeout: 252 seconds)
03:07:53 × warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 252 seconds)
03:09:47 <qrpnxz> ah, there's no bigfloat, ig you can just use Integer then
03:11:29 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
03:12:42 × juhp quits (~juhp@128.106.188.66) (Quit: juhp)
03:12:51 <monochrom> Haha Cale you have abstract perfect pitch.
03:12:56 juhp joins (~juhp@128.106.188.66)
03:13:35 justsomeguy joins (~justsomeg@user/justsomeguy)
03:13:57 pottsy joins (~pottsy@2400:4050:b560:3700:f364:dfb7:d56f:99c4)
03:14:06 <outoftime> I have never used Haskell before and I want to solve `Zn = Z_{n-1}^2 + C` wich gives cicle of length 6 for Z0 and C in range -100..100 (it has no solution in N)
03:15:07 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: Textual IRC Client: www.textualapp.com)
03:15:18 × Scotty_Trees quits (~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net) (Quit: Leaving)
03:15:31 talismanick joins (~user@2601:644:8502:d700::94c9)
03:15:57 <outoftime> I had idea to implement `Fraction a b` but I've read "Learn You a Haskell for Great Good!" to the point when I could do it. That is why asked, maybe there is some type I can start using right now.
03:16:29 <outoftime> *Fraction (Integer a) (Integer b)
03:16:39 <ChaiTRex> outoftime: Data.Ratio
03:17:04 <talismanick> Cabal v3.* uses the new commands by default, right?
03:17:12 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
03:17:30 <talismanick> e.g. "cabal install" is the same as "cabal v2-install" or "cabal new-install" in Cabal v2.*
03:17:49 bone-baboon joins (~bone-babo@37.19.198.11)
03:18:09 <talismanick> Please tell me I haven't been priming my system for Cabal Hell
03:21:12 <peddie> outoftime: that's the Rational type
03:21:13 <monochrom> Yes, v2- is the default.
03:22:12 warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
03:22:55 <outoftime> ChaiTRex: thank you!
03:25:50 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
03:26:27 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
03:26:39 <ChaiTRex> No problem.
03:26:42 × warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 264 seconds)
03:26:50 Morrow_ joins (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
03:27:33 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
03:30:24 × fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds)
03:30:33 justBull is now known as justK
03:31:20 × hmmmas quits (~chenqisu1@183.217.200.246) (Quit: Leaving.)
03:32:14 norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
03:33:12 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
03:33:12 × Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 252 seconds)
03:33:29 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
03:33:44 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 258 seconds)
03:33:51 × x_kuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
03:34:17 × Morrow_ quits (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 268 seconds)
03:35:44 JSharp is now known as JSharp_
03:35:48 JSharp_ is now known as JSharp__
03:35:51 JSharp__ is now known as jaesharp
03:35:54 jaesharp is now known as jaesharp_
03:35:59 jaesharp_ is now known as jaesharp__
03:36:35 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
03:37:13 jaesharp__ is now known as JSharp
03:38:18 JSharp is now known as Rachel
03:38:33 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
03:38:38 Rachel is now known as Rachel_
03:38:40 Rachel_ is now known as Rachel__
03:38:43 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds)
03:38:43 Lord_of_Life_ is now known as Lord_of_Life
03:38:52 Rachel__ is now known as JSharp
03:39:14 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
03:40:22 <guest61> JSharp please stop flooding
03:43:21 <bone-baboon> Can lambdabot be used to help answer FAQ that repeatedly come up in a IRC channel?
03:44:06 <JSharp> guest61: I thought I parted all of my channels :/ - sorry about that!
03:45:48 sekun joins (~sekun@180.190.208.125)
03:46:17 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
03:48:47 <boxscape> @where TAPL
03:48:47 <lambdabot> "Types and Programming Languages" by Benjamin C. Pierce in 2002-02-01 at <https://www.cis.upenn.edu/~bcpierce/tapl/>
03:49:00 <boxscape> bone-baboon: you can have it remember things for arbitrary keywords ^
03:50:16 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
03:52:36 Morrow joins (~MorrowM_@147.161.13.60)
03:52:54 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
03:53:16 MorrowM joins (~MorrowM_@147.161.13.60)
03:53:48 <qrpnxz> there a way to derive the number typeclasses for things like newtype X a = X Float?
03:54:30 Morrow_ joins (~MorrowM_@147.161.13.60)
03:54:50 <bone-baboon> boxscape: Thanks
03:56:10 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
03:57:01 v01d4lph4 joins (~v01d4lph4@122.160.65.250)
03:57:01 × v01d4lph4 quits (~v01d4lph4@122.160.65.250) (Changing host)
03:57:01 v01d4lph4 joins (~v01d4lph4@user/v01d4lph4)
03:57:02 × Morrow quits (~MorrowM_@147.161.13.60) (Ping timeout: 252 seconds)
03:58:57 × MorrowM quits (~MorrowM_@147.161.13.60) (Ping timeout: 268 seconds)
03:59:27 <boxscape> % :set -XGeneralizedNewtypeDeriving
03:59:27 <yahb> boxscape:
03:59:34 <boxscape> % newtype X a = X Float deriving Num
03:59:34 <yahb> boxscape:
03:59:36 <boxscape> qrpnxz: ^
04:00:02 <boxscape> qrpnxz: these days it's good practice to also enable -XDerivingStrategies and write `deriving newtype Num` to make it clear that you're using newtype deriving to derive it
04:00:53 × Topsi quits (~Tobias@dyndsl-095-033-016-151.ewe-ip-backbone.de) (Read error: Connection reset by peer)
04:11:42 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
04:15:07 <sekun> thyriaen: Lazy evaluation means you don't have to specify how many times you want it to cycle. Just take `n` elements from the list, and GHC will only evaluate what you take. `take 3 $ cycle [1, 2]`.
04:18:10 <sm[m]> why do some people dislike Data.Default (def) ? Is it because it's harder for IDEs to show the definition ?
04:19:30 <JSharp> boxscape: I saw that yesterday on TweagIO's YouTube video - *very cool* - it's so easy to miss super useful extensions.
04:19:37 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
04:23:49 <glguy> sm[m], it generally only makes code more complicated
04:24:05 <glguy> for everyone put the person who got to save some keystrokes when writing that bit of code
04:24:11 <glguy> but the*
04:24:43 <sm[m]> glguy: I see
04:24:53 <sm[m]> I'm getting the feeling it's the same with lenses, but the benefits are a bit more
04:24:59 <glguy> To know what 'def' is in some code I have to de type inference to work out its type and then hunt down the instance that was used
04:25:04 × TranquilEcho quits (~grom@user/tranquilecho) (Quit: WeeChat 2.8)
04:25:17 <sm[m]> both these break IDE code navigation
04:25:43 <glguy> You mean if you use TH to generate them?
04:25:51 <sm[m]> yes
04:25:59 <sm[m]> if we avoid TH I guess they are navigable then
04:26:25 <glguy> the definition of lenses can be guessed correctly, at least
04:26:36 <glguy> for the kinds of things TH can generate
04:26:44 <sm[m]> I might be getting finally dragged into the world of lens...
04:27:57 <glguy> What're you lensing?
04:28:01 <sm[m]> it feels like they both giveth and taketh away. The code can be easier to understand superficially, but is harder to understand completely
04:28:05 <glguy> which implementation are you using?
04:28:14 <sm[m]> glguy: I'm reviewing a PR adding lenses to lots of hledger types
04:28:32 <sm[m]> microlens, classy lenses made with TH
04:30:43 <sm[m]> (https://github.com/simonmichael/hledger/pull/1545)
04:30:55 <boxscape> JSharp: yeah, I spend some time a while ago just taking a quick look at every extension listed in https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts.html
04:31:03 <boxscape> s/spend/spent
04:31:30 × Morrow_ quits (~MorrowM_@147.161.13.60) (Ping timeout: 252 seconds)
04:31:40 <boxscape> JSharp: oh, better link: https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/table.html
04:32:05 <JSharp> boxscape: cheers! I tried doing that a while ago and one issue I had was just the lack of guidance around what using certain extensions does to the language itself - sometimes it's really quite subtle; and a number of extensions are completely broken/deprecated.
04:33:05 <boxscape> yeah the docs could probably be better here and there
04:35:30 <glguy> sm[m], that's sure a lot to review
04:36:12 <JSharp> Well, the docs are pretty good - they just don't really include best practices (they're not constructed like, say, the docs for the APT package manager - where the documentation is almost entirely intertwined with Debian (the project which built and uses APT for package management) Project Policy on its use.
04:36:47 <JSharp> and that's fine, of course - but it does present a challenge for onboarding, as it were.
04:37:18 <outoftime> How to improve speed of https://pastebin.ubuntu.com/p/kdjHGFT3tG/ ?
04:37:31 <JSharp> I doubt that I'm making any sort of a novel observation here
04:38:59 <JSharp> outoftime: https://blog.jez.io/profiling-in-haskell/
04:39:41 tusko joins (~yeurt@user/tusko)
04:39:51 <tusko> how does one learn haskell?
04:40:24 <glguy> mostly by writing programs in it
04:40:30 <siraben> practice
04:40:34 <dsal> tusko: depends on which one. I alternate between solving problems in haskell and reading about other people solving problems in haskell
04:40:36 <JSharp> tusko: what's your experience with programming in general?
04:41:04 <tusko> C, C++, Python, Java, Tcl, Lisp, some Scala
04:41:13 wei2912 joins (~wei2912@112.199.250.21)
04:41:26 <tusko> I've done various things
04:42:18 <JSharp> tsuko - ok - well, you might start with http://dev.stephendiehl.com/hask/ and use http://learnyouahaskell.com/chapters to fill in any gaps and for the exercises
04:42:20 <dsal> I'm `foldM`ing over `some parser` -- is there a thing that's a sort of combination of `foldM` and `some` that would let me do these things together?
04:42:37 <dsal> In my parser, it basically consumes all the stuff into a list and then folds it, which defers failures.
04:43:22 <boxscape> JSharp tusko : I don't think LYAH has exercises. https://www.seas.upenn.edu/~cis194/spring13/lectures.html for example does, though
04:44:15 <JSharp> boxscape tusko ... *chuckles* ... actually you may be right about that lack of exercises; I coded along with it, which is probably why I misremembered that.
04:44:46 × peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 265 seconds)
04:47:19 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
04:47:44 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
04:47:45 × lavaman quits (~lavaman@98.38.249.169) (Read error: Connection reset by peer)
04:48:04 lavaman joins (~lavaman@98.38.249.169)
04:49:24 <sm[m]> glguy: is it ? I'm.. getting used to it. IntelliJ IDEA or VS Code helps (neither is perfect, alas)
04:49:46 <glguy> I just mean that it touches a lot of files is all
04:49:59 <glguy> Do either of those IDEs help you keep track of what you've reviewed so far?
04:50:32 <sm[m]> it does indeed, the changes are mostly simple in this case fortunately. Yes, at least one of them lets you mark files as seen
04:51:01 <sm[m]> VS Code
04:51:32 <sm[m]> VS Code doesn't let you add code comments when reviewing by commit though; only if you review all file changes at once
04:51:33 peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
04:52:11 <sm[m]> also it doesn't let you collapse unchanged parts of files for a compact view of diffs. That's a nice feature in IDEA
04:52:33 <sm[m]> but, Code can navigate your code with hls. I wish IDEA could
04:52:51 <glguy> yeah, hls makes a big difference
04:53:09 <sm[m]> IDEAs find is so good it almost doesn't matter, but..
04:54:00 <boxscape> can hls show you usage sites of names?
04:54:29 <sm[m]> yes, I believe that's a normal feature now
04:54:32 <boxscape> ah, nice
04:55:00 <sm[m]> oh, maybe the thing that doesn't work yet is usage sites in other packages within your project. Not sure
04:55:13 <boxscape> ah, well, understandable
04:55:29 <sm[m]> bah :)
05:02:31 × AgentM quits (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.)
05:07:29 × chaosite quits (~chaosite@user/chaosite) (Ping timeout: 265 seconds)
05:08:27 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
05:09:57 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
05:10:01 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:12:30 Morrow_ joins (~MorrowM_@147.161.13.60)
05:13:01 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 258 seconds)
05:13:32 chaosite joins (~chaosite@user/chaosite)
05:14:51 justsomeguy parts (~justsomeg@user/justsomeguy) (WeeChat 3.0.1)
05:17:10 justsomeguy joins (~justsomeg@user/justsomeguy)
05:18:26 × chaosite quits (~chaosite@user/chaosite) (Ping timeout: 252 seconds)
05:22:53 jneira joins (~jneira@212.8.115.226)
05:24:45 × johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
05:25:44 <outoftime> sm[m]: aren't you using emacs/vim?
05:26:37 gentauro_ joins (~gentauro@taa-cgn11.kviknet.dk)
05:27:17 <sm[m]> outoftime: emacs too, yes
05:27:56 <sm[m]> I fire up code or IDEA for some coding and especially for reviewing PRs
05:28:28 deshalb joins (~deshalb@user/deshalb)
05:28:41 gzj joins (~GZJ0X@96.45.188.88.16clouds.com)
05:29:21 <sm[m]> is there a way to automatically generate the non-TH boilerplate code for lenses ?
05:30:12 × gentauro quits (~gentauro@user/gentauro) (Ping timeout: 265 seconds)
05:33:24 chomwitt joins (~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4)
05:34:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:36:33 <outoftime> `liftM2 (,) [0..12000] [0..12000]` can this be improved in terms of speed?
05:37:12 <Axman6> not really
05:40:26 <jophish> <outoftime "`liftM2 (,) [0..12000] [0..12000"> What are you trying to do with this though?
05:45:18 <outoftime> jophish: https://pastebin.ubuntu.com/p/kdjHGFT3tG/
05:46:08 × Xnuk quits (~xnuk@vultr.xnu.kr) (Quit: ZNC - https://znc.in)
05:46:22 × jneira_ quits (~jneira_@131.red-79-155-1.dynamicip.rima-tde.net) (Ping timeout: 258 seconds)
05:46:26 Xnuk joins (~xnuk@45.76.202.58)
05:46:27 killsushi joins (~killsushi@user/killsushi)
05:46:50 <outoftime> JSharp: I have no idea why, but executable made with stack take 12 seconds to finish with -O2 option passed, but when I'm building same code with GHC in my system, executable take 5 seconds to finnish
05:48:29 <Axman6> outoftime: that's probably because you're sorting them. what you can do is, numerator each numerator, generate each in value in order by using [abs, abs-1 .. 1, and then writing a merge function which merged sorted lists
05:48:37 <outoftime> Maybe it is because stack has separate lib module. Anyway, profiling didn't help.
05:48:54 <outoftime> Axman6: genRange is like instant
05:49:06 × TheCoffeMaker_ quits (~TheCoffeM@125-121-245-190.fibertel.com.ar) (Quit: So long and thanks for all the fish)
05:49:19 <Axman6> is last genRange instance?
05:49:27 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
05:50:11 <Axman6> I think you might actually get better performance if you use liftM2 (,) (genRange abs) (genRange abs) rather than forcing them to point ot the same value
05:50:20 <outoftime> `where normalized = genRange abs` this should not be executed multiple times, am I wrong?
05:50:47 <Axman6> it will cause the whole list to be retained in memory though
05:51:26 <jophish> keeping that product in memory is also like 3GB, perhaps there's a way you can stream it to whatever's consuming it
05:51:30 <jophish> (maybe you're doing that already)
05:52:09 <Axman6> hmm, actually I think both ways will force it to be retained anyway
05:52:16 <outoftime> jophish: right now I'm just taking length of that list, no processing done...
05:52:31 <jophish> ah, k
05:52:46 <outoftime> I mean it gets consumed
05:53:00 <jophish> <Axman6 "hmm, actually I think both ways "> yeah, the little lists, but they're only 12001 elements long right?
05:53:23 <Axman6> depends on abs
05:53:29 <outoftime> 12500 or so
05:53:49 <outoftime> total 146M elements
05:56:36 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
05:57:19 chaosite joins (~chaosite@user/chaosite)
05:58:48 <qrpnxz> i was able to derive num, fractional, and floating, but not real
06:01:37 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
06:02:28 × chaosite quits (~chaosite@user/chaosite) (Ping timeout: 258 seconds)
06:04:36 chaosite joins (~chaosite@user/chaosite)
06:05:58 × Morrow_ quits (~MorrowM_@147.161.13.60) (Ping timeout: 265 seconds)
06:06:48 <outoftime> Axman6: I'm confused. Does `normalized` get reevaluated on each iteration of `foldM2` or it is just clonned? Profiler says that `main` took 7% time, while `initials` 92%, doesn't looks like `getRage` have any noticable execution time.
06:07:15 <outoftime> Do you know any way to make parallel execution?
06:07:23 <Axman6> no, normalised basically gives a name for a single object in the heap that both uses reference
06:08:40 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
06:10:18 × chaosite quits (~chaosite@user/chaosite) (Ping timeout: 268 seconds)
06:10:19 fef joins (~thedawn@user/thedawn)
06:12:06 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
06:12:32 aman joins (~aman@user/aman)
06:12:46 fef joins (~thedawn@user/thedawn)
06:14:21 CookE[] joins (~thedawn@user/thedawn)
06:15:13 <qrpnxz> what is the purpose of the GHC hierarchy?
06:17:42 <Axman6> it
06:17:48 × fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds)
06:18:08 <Axman6> it's where definitions specific to GHC live, many of which are reexported in standard modules like Prelude, Data.List etc.
06:18:09 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
06:23:10 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
06:23:29 <Axman6> they often contain functions which aren't part of what is required from a haskell compiler according to the report, for example things like powModSecInteger is something provided by integer-gmp, which provides timing safe exponentiation of integers modulo another integer https://hackage.haskell.org/package/integer-gmp-1.0.3.0/docs/GHC-Integer-GMP-Internals.html#v:powModSecInteger
06:25:04 × mud quits (~mud@user/kadoban) (Ping timeout: 244 seconds)
06:25:26 awth13 joins (~user@user/awth13)
06:26:53 mud joins (~mud@user/kadoban)
06:29:02 michalz joins (~michalz@185.246.204.125)
06:29:56 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
06:30:49 leeb_ joins (~leeb@KD111239153068.au-net.ne.jp)
06:31:18 CookE[] is now known as fef
06:34:00 × leeb quits (~leeb@KD111239153143.au-net.ne.jp) (Ping timeout: 265 seconds)
06:34:31 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
06:35:05 × harry quits (~harry@92.234.0.237) (Ping timeout: 272 seconds)
06:35:27 × mud quits (~mud@user/kadoban) (Ping timeout: 265 seconds)
06:36:27 mud joins (~mud@user/kadoban)
06:36:47 berberman joins (~berberman@user/berberman)
06:38:06 × berberman_ quits (~berberman@user/berberman) (Ping timeout: 264 seconds)
06:42:42 × mud quits (~mud@user/kadoban) (Ping timeout: 265 seconds)
06:43:36 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
06:44:18 × tcard quits (~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving)
06:45:42 lortabac joins (~lortabac@2a01:e0a:541:b8f0:d7c7:704e:32f2:af10)
06:47:10 × michalz quits (~michalz@185.246.204.125) (Remote host closed the connection)
06:49:40 michalz joins (~michalz@185.246.204.114)
06:50:46 × norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 258 seconds)
06:52:08 chaosite joins (~chaosite@user/chaosite)
06:53:06 tcard joins (~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp)
06:54:52 <talismanick> Is it worth using vabal nowadays? Ironically, I had to go back in versions with ghcup manually to install it.
06:55:39 <dminuoso> talismanick: Perhaps there's some issue with ghcup or the way you use it.
06:55:57 <dminuoso> cabal-install is not better or worse than the alternatives like stack
06:56:21 wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com)
06:56:28 <dminuoso> Id say the community is largely split 47/47/6 on cabal/stack/nix
06:57:15 <talismanick> dminuoso: Nothing wrong here. It's just that vabal depends on base base > 4.11.0 and < 4.13.0
06:57:17 × chaosite quits (~chaosite@user/chaosite) (Ping timeout: 258 seconds)
06:57:34 <dminuoso> Hold on, vabal?
06:57:40 <tomsmeding> https://github.com/vabal/vabal
06:57:42 <talismanick> so I used ghcup to fetch 4.12.0 and installed vabal
06:57:42 tomsmeding thinks
06:57:52 × charukiewicz quits (~quassel@irouteince04.i.subnet.rcn.com) (Ping timeout: 268 seconds)
06:57:58 <dminuoso> Okay, I really thought that was just a typo and you meant cabal
06:58:00 mpt joins (~tom@2a02:908:1862:49e0::3)
06:58:14 charukiewicz joins (~quassel@irouteince04.i.subnet.rcn.com)
06:58:31 <talismanick> I have befuddled once again
06:58:45 <dminuoso> tomsmeding: vabal hasnt been updated in close to 2 years it seems
06:58:50 <dminuoso> Or talismanick.
06:58:54 <dminuoso> Two nicks with t is hard.
06:59:00 <tomsmeding> yes
06:59:09 <tomsmeding> we befuddle once more
06:59:26 chaosite joins (~chaosite@user/chaosite)
06:59:32 <dminuoso> vabal does indeed look like a nice thing.
06:59:51 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
07:00:26 <talismanick> I came across it while trying to build clckwrks (which itself appears to have languished for a time and needs an older version of GHC)
07:00:34 <dminuoso> So I guess vabal just does constraint solving, and then ghcup's me into the most recent ghc that works with the build plan?
07:00:45 <dminuoso> (constraint solving by presumably calling into Cabal-lib)
07:01:43 <talismanick> Speaking of which, are there maintained alternatives to LambdaCMS and clckwrks? Once I get it to compile, clckwrks looks promising.
07:02:03 <talismanick> (It has recent commits, but it seems to be in "maintenance mode" AFAICT)
07:03:23 chele joins (~chele@user/chele)
07:04:24 × chaosite quits (~chaosite@user/chaosite) (Ping timeout: 252 seconds)
07:05:04 <talismanick> I could set the GHC version manually via ghcup and be on my way, but aren't we in the 21st century?
07:06:47 <dminuoso> talismanick: Just remember that ghcup manipulates global state
07:06:54 Morrow joins (~MorrowM_@147.161.13.60)
07:08:42 <cdsmith> 0
07:08:52 <talismanick> dminuoso: That's what I mean. I feel like a caveman, peeking into the cabalfile for this and setting the GHC version for each project, one at a time.
07:09:00 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
07:10:51 <dminuoso> talismanick: I dont mean to sway you away from vabal, but you could also use nix-shell to do the same thing
07:10:58 <lortabac> IIRC there was this idea of integrating vabal's functionality into ghcup, not sure if it's still the case
07:11:04 <dminuoso> At least for that I could help you, as I have no experience with vabal
07:11:05 talismanick summons his courage and tries "vabal configure"
07:11:08 <lortabac> https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/99
07:11:19 <talismanick> already regretting this
07:11:45 <dminuoso> talismanick: nix-shell has the unique benefit that this doesnt need any rely on global state management of "the active version"
07:11:56 gehmehgeh joins (~user@user/gehmehgeh)
07:11:58 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:12:26 <dminuoso> It doesnt do the "figure out a matching GHC version" part, but it lets you easily keep different cabal/ghc/(any dependency) versions across different projects
07:12:26 <talismanick> dminuoso: I once tried to configure Nix (atop Void Linux). Never again. No hard feelings, but "nope".
07:12:40 × sekun quits (~sekun@180.190.208.125) (Ping timeout: 265 seconds)
07:12:41 <talismanick> Seems cool, gave me a migraine
07:12:50 dminuoso shrugs
07:13:49 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
07:15:54 × sheepduck quits (~sheepduck@user/sheepduck) (Remote host closed the connection)
07:16:04 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
07:16:31 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
07:17:06 × leah2 quits (~leah@vuxu.org) (Ping timeout: 240 seconds)
07:18:33 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Quit: mikoto-chan)
07:20:52 leah2 joins (~leah@vuxu.org)
07:23:06 vpan joins (~vilius@212.117.1.172)
07:23:35 warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
07:24:04 trcc joins (~trcc@users-1190.st.net.au.dk)
07:25:59 × fendor quits (~fendor@178.115.129.107.wireless.dyn.drei.com) (Read error: Connection reset by peer)
07:28:05 × warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 268 seconds)
07:29:08 × trent2 quits (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 244 seconds)
07:30:07 trent2 joins (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
07:30:29 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
07:31:14 <talismanick> Actually...
07:32:11 <talismanick> nvm
07:34:05 × mpt quits (~tom@2a02:908:1862:49e0::3) (Ping timeout: 252 seconds)
07:39:14 jakalx joins (~jakalx@base.jakalx.net)
07:41:26 × tusko quits (~yeurt@user/tusko) (Remote host closed the connection)
07:41:43 tusko joins (~yeurt@user/tusko)
07:45:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:46:55 chaosite joins (~chaosite@user/chaosite)
07:47:06 × euandreh_ quits (~euandreh@2804:14c:33:9fe5:3fd5:92e4:b3b4:44e0) (Ping timeout: 240 seconds)
07:48:08 euandreh_ joins (~euandreh@2804:14c:33:9fe5:a60:af0:9ad8:d1f7)
07:52:04 × chaosite quits (~chaosite@user/chaosite) (Ping timeout: 252 seconds)
07:52:04 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
07:53:01 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
07:54:30 chaosite joins (~chaosite@user/chaosite)
07:55:37 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Remote host closed the connection)
07:58:37 × bone-baboon quits (~bone-babo@37.19.198.11) (Ping timeout: 258 seconds)
07:59:33 × chaosite quits (~chaosite@user/chaosite) (Ping timeout: 265 seconds)
08:11:07 <outoftime> How to move from [Maybe a] to Maybe [a], disgard Nothing and collect Just a values? `sequence` returns Nothing if some of elements is nothing.
08:11:09 hendursa1 joins (~weechat@user/hendursaga)
08:11:59 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
08:12:35 BosonCollider joins (~olofs@90-227-86-119-no542.tbcn.telia.com)
08:14:03 chaosite joins (~chaosite@user/chaosite)
08:14:20 × trent2 quits (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 268 seconds)
08:14:23 <maerwald> talismanick: I believe Franciman is vabal maintainer
08:15:02 <peddie> outoftime: catMaybes
08:15:31 <peddie> :t catMaybe
08:15:32 <lambdabot> error:
08:15:32 <lambdabot> • Variable not in scope: catMaybe
08:15:32 <lambdabot> • Perhaps you meant one of these:
08:15:41 <merijn> :t catMaybes
08:15:42 <lambdabot> [Maybe a] -> [a]
08:15:45 <merijn> Alternatively
08:15:52 <merijn> Don't make a list of Maybe a to begin with
08:15:54 <merijn> :t mapMaybe
08:15:56 <lambdabot> (a -> Maybe b) -> [a] -> [b]
08:16:59 × derelict quits (~derelict@user/derelict) (Ping timeout: 252 seconds)
08:16:59 <maerwald> talismanick: also, feel free to provide patches for https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/99
08:17:09 × fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds)
08:17:32 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
08:17:32 allbery_b joins (~geekosaur@xmonad/geekosaur)
08:18:13 × xff0x quits (~xff0x@2001:1a81:5256:f800:ed61:c578:88bf:885a) (Ping timeout: 244 seconds)
08:18:53 × chaosite quits (~chaosite@user/chaosite) (Ping timeout: 265 seconds)
08:19:02 xff0x joins (~xff0x@port-92-193-228-27.dynamic.as20676.net)
08:19:56 × Morrow quits (~MorrowM_@147.161.13.60) (Ping timeout: 252 seconds)
08:28:56 mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
08:33:30 × peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 252 seconds)
08:37:51 Nak50 joins (~Nak@2604:3d08:2678:cc00::4b6a)
08:40:30 × gentauro_ quits (~gentauro@taa-cgn11.kviknet.dk) (Changing host)
08:40:30 gentauro_ joins (~gentauro@user/gentauro)
08:42:08 Guest25 joins (~Guest25@l37-195-240-36.novotelecom.ru)
08:45:54 ubert joins (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
08:47:36 __monty__ joins (~toonn@user/toonn)
08:54:18 johnw joins (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0)
08:54:34 <phaazon> just wrote a bunch of linear functions… it felt good
08:55:39 × Guest25 quits (~Guest25@l37-195-240-36.novotelecom.ru) (Quit: Client closed)
08:56:01 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
08:57:13 yoctocell joins (~user@h87-96-130-155.cust.a3fiber.se)
08:59:08 hegstal joins (~hegstal@2a02:c7f:7604:8a00:5796:3b40:5569:c90)
09:00:18 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 240 seconds)
09:01:58 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:04:15 bontaq joins (~user@ool-18e47f8d.dyn.optonline.net)
09:08:43 × Nak50 quits (~Nak@2604:3d08:2678:cc00::4b6a) (Ping timeout: 246 seconds)
09:10:00 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
09:10:47 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
09:11:23 jneira joins (~jneira@212.8.115.226)
09:12:32 × azeem quits (~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) (Ping timeout: 265 seconds)
09:14:03 azeem joins (~azeem@176.201.6.138)
09:17:47 cfricke joins (~cfricke@user/cfricke)
09:23:56 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
09:29:51 × azeem quits (~azeem@176.201.6.138) (Ping timeout: 258 seconds)
09:32:00 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
09:33:05 azeem joins (~azeem@176.201.6.138)
09:33:07 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
09:36:13 <outoftime> May I ask what you think about this code https://pastebin.ubuntu.com/p/Z9ZQs9k84s/ ?
09:36:18 Ariakenom joins (~Ariakenom@2001:9b1:efb:fc00:70b4:9739:defc:32cb)
09:38:15 × killsushi quits (~killsushi@user/killsushi) (Quit: Leaving)
09:43:54 × azeem quits (~azeem@176.201.6.138) (Ping timeout: 252 seconds)
09:43:56 × curiousggay_ quits (~curiousgg@178.217.208.8) (Remote host closed the connection)
09:48:42 azeem joins (~azeem@176.201.6.138)
09:49:08 × ubert quits (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
09:49:20 ubert joins (~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33)
09:49:36 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
09:49:57 Scotty_Trees joins (~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net)
09:56:22 mc47 joins (~mc47@xmonad/TheMC47)
09:56:38 xkuru joins (~xkuru@user/xkuru)
09:57:24 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
09:58:28 × azeem quits (~azeem@176.201.6.138) (Ping timeout: 268 seconds)
09:58:36 × BosonCollider quits (~olofs@90-227-86-119-no542.tbcn.telia.com) (Read error: Connection reset by peer)
09:58:53 BosonCollider joins (~olofs@90-227-86-119-no542.tbcn.telia.com)
09:59:14 azeem joins (~azeem@176.201.6.138)
10:00:38 <dminuoso> outoftime: A bunch of small typical mistakes
10:00:46 <dminuoso> `[x] ++ ...` is better written as `x : ...`
10:00:56 <dminuoso> `putStrLn . show` is better written as `print`
10:01:12 <dminuoso> You seem to be overly using ($), consider using composition or parens perhaps
10:01:55 <merijn> Looks mostly fine
10:02:03 <merijn> some style differences from how I'd write it
10:02:23 <dminuoso> Things like mapM_ or liftM2 are a bit odd, Id just use the applicative versions instead out of habit
10:02:34 <dminuoso> (the monadic ones should be thrown out IMO)
10:02:44 <merijn> last is probably a bad one too use
10:02:47 dhil joins (~dhil@195.213.192.47)
10:03:08 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 252 seconds)
10:03:27 × xkuru quits (~xkuru@user/xkuru) (Quit: Unvirtualizing)
10:03:30 <merijn> partial and inefficient, but whether it can be easily replaced depends on the algorithm and I'm too lazy to understand that :p
10:03:53 xkuru joins (~xkuru@user/xkuru)
10:04:08 <merijn> I feel 'f' can be rewritten into a helper + iterate too
10:04:15 <boxscape> you can replace (head . group) by the versions from Data.List.NonEmpty if you want to avoid using head (which many people do since it's partial)
10:04:20 <merijn> :t iterate
10:04:21 <lambdabot> (a -> a) -> a -> [a]
10:04:22 <dminuoso> The amount of group/sort suggests you might perhaps want to use a map instead.
10:04:28 qbt joins (~edun@user/edun)
10:04:34 <dminuoso> From containers
10:04:39 <merijn> boxscape: it's not partial there, since group never returns empty lists
10:04:48 <merijn> > iterate (+1) 0
10:04:50 <lambdabot> [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,2...
10:05:16 <boxscape> merijn: sure, but a mistake down the line could transform it into a partial use. Not sure how likely that is, I just like not having head in my code at all.
10:05:35 <boxscape> (er, also I meant (map head . group))
10:06:53 × Ariakenom quits (~Ariakenom@2001:9b1:efb:fc00:70b4:9739:defc:32cb) (Quit: Leaving)
10:07:02 <boxscape> personally I'd probably write `pair@(z, c)` instead of pattern matching on pair in the where block
10:07:08 Ariakenom joins (~Ariakenom@2001:9b1:efb:fc00:70b4:9739:defc:32cb)
10:08:16 × talismanick quits (~user@2601:644:8502:d700::94c9) (Ping timeout: 244 seconds)
10:10:01 fendor joins (~fendor@178.115.129.107.wireless.dyn.drei.com)
10:10:49 <Ariakenom> this head is cute
10:10:49 <Ariakenom> allSame xs = all (head xs ==) xs
10:10:55 howdy`` is now known as howdy
10:11:08 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
10:11:44 brandonh joins (~brandonh@151.34.105.205)
10:11:57 × brandonh quits (~brandonh@151.34.105.205) (Client Quit)
10:15:00 <boxscape> allSame = and . (zipWith (==) <*> tail) -- I might do this to avoid head but yeah yours reads nicer
10:15:06 <boxscape> wait
10:15:08 <boxscape> % tail []
10:15:08 <yahb> boxscape: *** Exception: Prelude.tail: empty list
10:15:12 <boxscape> whoops
10:15:30 × raoul quits (~raoul@nomnomnomnom.co.uk) (Remote host closed the connection)
10:15:30 f0c1s joins (~f0c1s@136.185.130.32)
10:15:55 <__monty__> Tail is no better than head?
10:16:06 <boxscape> yeah that's what I just realized
10:16:08 <boxscape> I guess I would use drop 1
10:16:09 <__monty__> You seem kinda obsessed with head for no reason.
10:16:13 <boxscape> wait that doesn't help
10:16:18 <boxscape> oh no it does
10:16:29 <__monty__> > drop 1 []
10:16:29 <boxscape> __monty__: I just like to not have any partial functions, period
10:16:31 <lambdabot> []
10:16:43 <__monty__> It does not help.
10:16:48 <boxscape> why not?
10:16:51 <__monty__> tail []
10:16:56 <__monty__> > tail []
10:16:57 <lambdabot> *Exception: Prelude.tail: empty list
10:17:13 <__monty__> Oh, nvm, I'm wrong this time.
10:20:12 × chele quits (~chele@user/chele) (Remote host closed the connection)
10:21:00 f0c1s_ joins (~f0c1s@106.197.230.212)
10:22:44 Morrow joins (~MorrowM_@147.161.13.60)
10:23:35 × f0c1s quits (~f0c1s@136.185.130.32) (Ping timeout: 265 seconds)
10:24:33 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 265 seconds)
10:24:52 DNH joins (~textual@8.44.0.30)
10:27:42 dunkeln joins (~dunkeln@188.71.193.140)
10:28:41 × dunkeln quits (~dunkeln@188.71.193.140) (Client Quit)
10:28:57 dunkeln joins (~dunkeln@188.71.193.140)
10:29:52 × qbt quits (~edun@user/edun) (Ping timeout: 265 seconds)
10:35:47 × azeem quits (~azeem@176.201.6.138) (Ping timeout: 258 seconds)
10:36:26 azeem joins (~azeem@176.201.6.138)
10:37:19 × dunkeln quits (~dunkeln@188.71.193.140) (Ping timeout: 258 seconds)
10:37:47 pie__bnc is now known as pie_
10:38:04 pie_ is now known as __
10:38:06 __ is now known as pie_
10:38:22 pie_ is now known as pie__
10:38:23 pie__ is now known as pie_
10:38:32 MorrowM joins (~MorrowM_@147.161.9.12)
10:39:02 × wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:39:09 pie_ is now known as the
10:39:12 the is now known as pie_
10:41:38 × Morrow quits (~MorrowM_@147.161.13.60) (Ping timeout: 268 seconds)
10:42:06 mpt joins (~tom@2a02:908:1862:49e0::3)
10:42:16 dunkeln joins (~dunkeln@188.71.193.140)
10:45:20 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
10:46:35 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:47:41 chisui joins (~chisui@200116b866efc300342cdc4d594c896c.dip.versatel-1u1.de)
10:49:02 × DNH quits (~textual@8.44.0.30) (Ping timeout: 268 seconds)
10:50:07 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
10:50:42 kuribas joins (~user@ptr-25vy0ia3kl0vdl4qmg0.18120a2.ip6.access.telenet.be)
10:51:44 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
10:52:01 × GIANTWORLDKEEPER quits (~pjetcetal@2.95.227.207) (Remote host closed the connection)
10:52:23 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:56:14 DNH joins (~DNH@8.43.122.6)
10:56:26 × MorrowM quits (~MorrowM_@147.161.9.12) (Ping timeout: 268 seconds)
10:56:31 raoul joins (~raoul@nomnomnomnom.co.uk)
10:57:38 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
10:57:50 hseg joins (~gesh@195.192.229.14)
10:57:56 <chisui> Hey, has someone any clue why ghc produces this error? https://gist.github.com/chisui/7b558c2d63e3a7fcffc67ae714b69714
10:57:59 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:58:56 <chisui> The QuantifiedConstraint shouldn't imply that the instance of Typeable is user defined or am I missing something? This looks like a bug to me.
10:59:55 mekeor joins (~user@2001:a61:3430:c01:f86:cca7:c1fe:e2b4)
11:02:04 × mpt quits (~tom@2a02:908:1862:49e0::3) (Ping timeout: 268 seconds)
11:03:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
11:03:21 × juhp quits (~juhp@128.106.188.66) (Remote host closed the connection)
11:03:49 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:03:50 × pbrisbin quits (~patrick@pool-173-49-147-28.phlapa.fios.verizon.net) (Ping timeout: 252 seconds)
11:05:50 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
11:05:54 <boxscape> chisui: that does look weird, from a quick look at the GHC source code I can only find that error message used in relation to checking instance heads
11:06:42 <int-e> chisui: https://paste.debian.net/1202126/ may be a viable workaround
11:07:06 MorrowM joins (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
11:07:25 <int-e> but yeah, it does look like a bug
11:07:53 <chisui> Thanks.
11:08:04 × mekeor quits (~user@2001:a61:3430:c01:f86:cca7:c1fe:e2b4) (Remote host closed the connection)
11:10:25 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
11:13:28 <boxscape> chisui: FWIW unless there really is a reason to not allow this it looks like `not quantified_constraint` is missing in this guard https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/Tc/Validity.hs#L1539-1542
11:14:47 <chisui> boxscape: I'll mention that in the issue.
11:15:05 <boxscape> 👍️
11:15:18 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
11:16:59 <merijn> Achievement unlocked: GHC bug ;)
11:18:58 hmmmas joins (~chenqisu1@183.217.200.246)
11:21:35 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
11:25:07 warnz joins (~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net)
11:27:23 × hseg quits (~gesh@195.192.229.14) (Ping timeout: 265 seconds)
11:27:52 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
11:29:27 × warnz quits (~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net) (Ping timeout: 258 seconds)
11:30:00 <chisui> If someones interested: https://gitlab.haskell.org/ghc/ghc/-/issues/20033
11:31:54 × hmmmas quits (~chenqisu1@183.217.200.246) (Quit: Leaving.)
11:31:54 Franciman joins (~francesco@openglass.it)
11:32:06 <Franciman> maerwald: you available?
11:32:33 <maerwald> barely
11:32:49 <Franciman> ok np I wanted to talk to you about ghcup satisfy
11:32:56 <Franciman> it can wait
11:33:43 × danso quits (~danso@23-233-111-52.cpe.pppoe.ca) (Quit: WeeChat 3.2)
11:33:59 fef joins (~thedawn@user/thedawn)
11:34:19 × wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal)
11:34:40 <maerwald> there is #haskell-ghcup
11:35:01 <Franciman> great
11:36:43 danso joins (~danso@23-233-111-52.cpe.pppoe.ca)
11:36:49 × f0c1s_ quits (~f0c1s@106.197.230.212) (Quit: Leaving)
11:37:47 f0c1s joins (~f0c1s@136.185.130.32)
11:37:51 f0c1s_ joins (~f0c1s@136.185.130.32)
11:37:55 × f0c1s_ quits (~f0c1s@136.185.130.32) (Remote host closed the connection)
11:38:29 × finsternis quits (~X@23.226.237.192) (Remote host closed the connection)
11:41:22 × Axman6 quits (~Axman6@user/axman6) (Remote host closed the connection)
11:42:00 Axman6 joins (~Axman6@user/axman6)
11:43:16 jakzale joins (uid499518@id-499518.charlton.irccloud.com)
11:46:17 × Axman6 quits (~Axman6@user/axman6) (Ping timeout: 256 seconds)
11:46:22 × BosonCollider quits (~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 252 seconds)
11:46:28 xff0x_ joins (~xff0x@2001:1a81:5270:f300:fe1c:5171:b5b6:4cc4)
11:48:37 × xff0x quits (~xff0x@port-92-193-228-27.dynamic.as20676.net) (Ping timeout: 258 seconds)
11:51:23 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
11:51:31 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
11:52:41 BosonCollider joins (~olofs@90-227-86-119-no542.tbcn.telia.com)
11:59:57 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
12:00:30 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
12:00:54 ChaiTRex joins (~ChaiTRex@user/chaitrex)
12:01:46 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
12:03:58 <shane> I'm looking for a thing, but I don't know what it's called. I guess I'm looking for a "category", that's kind of like (->), except the output is always solely a "subproduct" of the input?
12:04:31 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 244 seconds)
12:05:42 × ubert quits (~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33) (Ping timeout: 264 seconds)
12:07:52 <shane> So like, if we were to call this thing ~>, the only two valid implementations of `(a, a) -> a` would be `fst` and `snd`
12:08:35 <shane> I suppose that's true by parametricity if `a` is polymorphic
12:08:46 <dminuoso> shane: Mmm, Lens definitely fits that description.
12:08:47 Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
12:08:54 Axman6 joins (~Axman6@user/axman6)
12:09:18 <dminuoso> i.e. `Lens' S T` gives you T as a sub-part of S
12:09:35 <shane> I suppose, if it's a law abiding lens
12:09:54 <shane> Actually it doesn't even have to be law breaking
12:10:16 <dminuoso> Well I guess its not entirely true
12:10:30 <dminuoso> Try and find a precise way of saying what "subproduct" exactly means
12:10:36 <shane> Yes, I'm trying :)
12:10:40 <dminuoso> Because one could argue that:
12:10:44 <dminuoso> split :: a -> (a, a)
12:10:48 <chisui> shane: do you mean a cartesian category?
12:10:53 <dminuoso> gives you a subproduct
12:11:03 <dminuoso> this gets a bit more interesting with impredicativity in the mix
12:11:12 <shane> chisui: Maybe, that sounds promising
12:12:01 <dminuoso> Mmm, come to think of it I think chisui is right. This is just a cartesian category
12:12:22 <shane> Let's forget about the `(a, a) ~> a` example, because that's true by parametricity. If you specialise it to `(Int, Int) ~> Int`, I want it to be such that the output `Int` has to be one of the two given ones. It can never just be `1` or `2` etc. Or even `negate a` or `a + 1`
12:12:37 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
12:12:42 <shane> Okay, I will look up cartesian category
12:12:50 <shane> Are there any Haskell libraries that implement something like that?
12:12:55 <dminuoso> Or actually a precartesian category
12:12:57 <dminuoso> Yes
12:12:59 <dminuoso> https://hackage.haskell.org/package/category-extras-0.52.0/docs/Control-Category-Cartesian.html#t:PreCartesian
12:13:05 fef joins (~thedawn@user/thedawn)
12:13:36 <shane> Okay, thanks!
12:16:00 hseg joins (~gesh@195.192.229.14)
12:16:24 wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com)
12:16:31 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
12:16:50 lavaman joins (~lavaman@98.38.249.169)
12:17:13 <chisui> shane: what do you mean by "can never just be `1` or `2` etc. Or even `negate a` or `a + 1`"? wouldn't `fst (1, 2)` give you `1` in your example?
12:17:41 dunkeln_1 joins (~dunkeln@94.129.65.28)
12:17:49 <dminuoso> Well I guess he just wants a categorical product
12:18:07 <dminuoso> Such that this commutes https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/CategoricalProduct-03.svg/560px-CategoricalProduct-03.svg.png
12:18:08 × dunkeln quits (~dunkeln@188.71.193.140) (Ping timeout: 265 seconds)
12:18:31 <dminuoso> maybe cartesian category was too strong, even
12:19:28 × fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds)
12:19:30 <chisui> what throws me off a little is that he wants `(a, a)` a categoriacal product would be `(a, b)`
12:19:31 <shane> chisui: I suppose I mean `const 1` or `const 2`.
12:19:54 shapr joins (~user@2601:7c0:8180:89d0:e21a:92b8:d08a:508f)
12:20:16 <dminuoso> shane: Look into what a product is in category theory.
12:20:33 <dminuoso> I suspect you're chasing the commuting diagram I linked above
12:20:56 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
12:21:12 × wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Ping timeout: 252 seconds)
12:26:09 euandreh_ is now known as euandreh
12:31:10 × hueso quits (~root@user/hueso) (Ping timeout: 258 seconds)
12:32:33 GIANTWORLDKEEPER joins (~pjetcetal@2.95.227.207)
12:33:36 × dunkeln_1 quits (~dunkeln@94.129.65.28) (Ping timeout: 265 seconds)
12:36:42 egoist joins (~egoist@186.235.85.100)
12:38:34 hueso joins (~root@user/hueso)
12:40:03 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
12:40:17 TranquilEcho joins (~grom@user/tranquilecho)
12:40:22 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 265 seconds)
12:40:53 × azeem quits (~azeem@176.201.6.138) (Read error: Connection reset by peer)
12:42:17 azeem joins (~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it)
12:44:26 pbrisbin joins (~patrick@pool-173-49-147-28.phlapa.fios.verizon.net)
12:44:43 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
12:45:03 × xff0x_ quits (~xff0x@2001:1a81:5270:f300:fe1c:5171:b5b6:4cc4) (Ping timeout: 268 seconds)
12:46:40 xff0x_ joins (~xff0x@2001:1a81:5271:d900:c621:6547:99a4:fbb5)
12:47:23 fef joins (~thedawn@user/thedawn)
12:49:30 cfricke joins (~cfricke@user/cfricke)
12:50:54 × turlando quits (~turlando@user/turlando) (Ping timeout: 252 seconds)
12:54:15 dunkeln_ joins (~dunkeln@94.129.65.28)
12:54:56 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 258 seconds)
12:55:49 juhp joins (~juhp@128.106.188.66)
12:55:59 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
12:56:01 jakalx parts (~jakalx@base.jakalx.net) ()
12:56:02 × xff0x_ quits (~xff0x@2001:1a81:5271:d900:c621:6547:99a4:fbb5) (Ping timeout: 250 seconds)
12:56:48 jakalx joins (~jakalx@base.jakalx.net)
12:57:44 turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it)
12:57:44 × turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
12:57:44 turlando joins (~turlando@user/turlando)
12:58:40 xff0x_ joins (~xff0x@port-92-193-138-158.dynamic.as20676.net)
13:00:02 ubert joins (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
13:00:58 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
13:01:09 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
13:01:13 alx741 joins (~alx741@181.196.68.156)
13:03:49 × hueso quits (~root@user/hueso) (Read error: Connection reset by peer)
13:04:34 hueso joins (~root@user/hueso)
13:04:50 sekun joins (~sekun@180.190.208.125)
13:05:11 xff0x joins (~xff0x@2001:1a81:5272:1d00:a8b6:9f02:264b:fce)
13:06:52 × xff0x_ quits (~xff0x@port-92-193-138-158.dynamic.as20676.net) (Ping timeout: 250 seconds)
13:07:26 × hseg quits (~gesh@195.192.229.14) (Ping timeout: 265 seconds)
13:08:21 × dunkeln_ quits (~dunkeln@94.129.65.28) (Ping timeout: 258 seconds)
13:08:50 norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
13:09:14 zebrag joins (~chris@user/zebrag)
13:10:20 × xff0x quits (~xff0x@2001:1a81:5272:1d00:a8b6:9f02:264b:fce) (Ping timeout: 250 seconds)
13:10:56 × f0c1s quits (~f0c1s@136.185.130.32) (Remote host closed the connection)
13:12:00 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
13:12:33 kayprish joins (~kayprish@46.240.143.86)
13:12:54 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Read error: Connection reset by peer)
13:13:02 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
13:13:02 xff0x joins (~xff0x@2001:1a81:5272:4100:c2fe:5e6:247e:dd00)
13:13:29 CookE[] joins (~thedawn@user/thedawn)
13:13:42 f0c1s joins (~f0c1s@136.185.130.32)
13:13:43 × norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 265 seconds)
13:14:06 Nahra` joins (~user@static.161.95.99.88.clients.your-server.de)
13:14:21 lambdap6 joins (~lambdap@static.167.190.119.168.clients.your-server.de)
13:15:06 × kmein quits (~weechat@user/kmein) (Ping timeout: 252 seconds)
13:15:06 × Nahra quits (~user@static.161.95.99.88.clients.your-server.de) (Ping timeout: 252 seconds)
13:15:16 × fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds)
13:15:28 × lambdap quits (~lambdap@static.167.190.119.168.clients.your-server.de) (Ping timeout: 252 seconds)
13:15:28 lambdap6 is now known as lambdap
13:15:37 warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
13:15:49 × Cajun quits (~Cajun@ip98-163-211-112.no.no.cox.net) (Ping timeout: 246 seconds)
13:17:34 × chisui quits (~chisui@200116b866efc300342cdc4d594c896c.dip.versatel-1u1.de) (Ping timeout: 246 seconds)
13:18:30 kmein joins (~weechat@user/kmein)
13:22:22 × zebrag quits (~chris@user/zebrag) (Remote host closed the connection)
13:22:27 fluffyballoon joins (~fluffybal@199.204.58.62)
13:23:58 × azeem quits (~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) (Read error: Connection reset by peer)
13:24:08 azeem joins (~azeem@176.201.6.138)
13:24:09 chisui joins (~chisui@200116b866efc300342cdc4d594c896c.dip.versatel-1u1.de)
13:24:19 cfricke joins (~cfricke@user/cfricke)
13:24:29 × azeem quits (~azeem@176.201.6.138) (Read error: Connection reset by peer)
13:24:42 azeem joins (~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it)
13:24:57 AgentM joins (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
13:24:57 norias joins (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
13:26:58 zebrag joins (~chris@user/zebrag)
13:27:13 allbery_b is now known as geekosaur
13:29:55 × DNH quits (~DNH@8.43.122.6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:30:07 × zebrag quits (~chris@user/zebrag) (Read error: Connection reset by peer)
13:34:41 zebrag joins (~chris@user/zebrag)
13:34:44 dunkeln_ joins (~dunkeln@188.71.193.140)
13:41:42 × warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
13:41:54 warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
13:42:50 × dunkeln_ quits (~dunkeln@188.71.193.140) (Ping timeout: 250 seconds)
13:43:14 DNH joins (~DNH@8.43.122.6)
13:44:51 ystael joins (~ystael@user/ystael)
13:44:53 × DNH quits (~DNH@8.43.122.6) (Read error: Connection reset by peer)
13:48:18 × f0c1s quits (~f0c1s@136.185.130.32) (Quit: Leaving)
13:54:00 × nerdypepper quits (~nerdypepp@user/nerdypepper) (Quit: bye)
13:54:53 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
13:58:10 nerdypepper joins (~nerdypepp@user/nerdypepper)
13:58:44 × remexre quits (~nathan@user/remexre) (Read error: Connection reset by peer)
13:59:52 × smarton quits (~smarton@2a01:4f9:c010:4e92::1) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
14:00:39 DNH joins (~DNH@2a09:bac0:48::82b:7a06)
14:01:33 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
14:02:29 remexre joins (~nathan@user/remexre)
14:02:41 smarton joins (~smarton@121407.xyz)
14:03:00 × jakzale quits (uid499518@id-499518.charlton.irccloud.com) (Quit: Connection closed for inactivity)
14:04:23 sayola joins (~vekto@dslb-088-078-152-192.088.078.pools.vodafone-ip.de)
14:05:32 trcc_ joins (~trcc@eduroam09.au.dk)
14:06:18 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 264 seconds)
14:07:02 safinaskar joins (~safinaska@109-252-90-89.nat.spd-mgts.ru)
14:07:06 × ubert quits (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Ping timeout: 250 seconds)
14:07:17 <safinaskar> is it true that "forall a." always means "forall a :: Type."?
14:07:21 dyeplexer joins (~dyeplexer@user/dyeplexer)
14:08:50 × trcc quits (~trcc@users-1190.st.net.au.dk) (Ping timeout: 268 seconds)
14:10:03 <lortabac> safinaskar: no, sometimes a different kind can be infered
14:10:15 <dminuoso> % :set -XPolyKinds
14:10:15 <yahb> dminuoso:
14:10:16 × trcc_ quits (~trcc@eduroam09.au.dk) (Ping timeout: 265 seconds)
14:10:30 <safinaskar> lortabac: thanks
14:11:42 fendor_ joins (~fendor@178.165.189.179.wireless.dyn.drei.com)
14:12:14 <dminuoso> % f :: forall a b. a -> Const a b; f = Const
14:12:14 <yahb> dminuoso:
14:12:16 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
14:12:18 <dminuoso> % :t f -- safinaskar
14:12:18 <yahb> dminuoso: forall {k} {a} {b :: k}. a -> Const a b
14:13:49 Sgeo joins (~Sgeo@user/sgeo)
14:14:17 × fendor quits (~fendor@178.115.129.107.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
14:14:50 fendor_ is now known as fendor
14:15:03 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 258 seconds)
14:15:05 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
14:15:21 safinaskar parts (~safinaska@109-252-90-89.nat.spd-mgts.ru) ()
14:19:05 safinaskar joins (~safinaska@109-252-90-89.nat.spd-mgts.ru)
14:20:38 <safinaskar> is it true that "singletons" library is limited compared to hypothetical future dependent haskell (dh), because with singletons (as opposed to true dh) you cannot have types depending on runtime values?
14:21:57 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 258 seconds)
14:22:18 jao joins (jao@gateway/vpn/protonvpn/jao)
14:22:18 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
14:22:18 jneira_ joins (~jneira_@131.red-79-155-1.dynamicip.rima-tde.net)
14:22:32 hounded joins (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com)
14:22:39 hounded_woodstoc joins (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com)
14:22:39 × hounded_woodstoc quits (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Client Quit)
14:23:42 <merijn> "probably"?
14:23:52 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
14:24:12 <merijn> It's also probably true that Dependent Haskell will always suck, even in the future
14:24:15 × Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds)
14:24:18 × shapr quits (~user@2601:7c0:8180:89d0:e21a:92b8:d08a:508f) (Ping timeout: 264 seconds)
14:24:28 wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com)
14:26:24 <safinaskar> merijn: i didn't say "probably"
14:29:03 <dminuoso> To be fair, singletons gives you a good approximating for lightweight dependently typed programming.
14:29:12 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Ping timeout: 250 seconds)
14:29:22 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
14:30:16 <merijn> safinaskar: Probably was my answer
14:30:28 <merijn> "is this true?" probably, yes
14:31:26 <safinaskar> well, my question is about current state
14:31:44 × BosonCollider quits (~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 252 seconds)
14:31:46 <safinaskar> is it true that currently you cannot pass runtime values as arguments to types?
14:32:14 <chisui> What's the status of the Unsaturated Type Families proposal anyways?
14:32:32 <merijn> That depends on what you're opinion on "faking something that looks like passing runtime values to types" is
14:32:41 <merijn> Can you do it? No.
14:32:52 <merijn> Does singletons let you fake the ability to do it? Yes.
14:34:12 <safinaskar> ok, thanks
14:34:14 safinaskar parts (~safinaska@109-252-90-89.nat.spd-mgts.ru) ()
14:34:30 <dminuoso> What an odd fella.
14:35:05 peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
14:35:59 <davean> There was so much left unsaid in their question I struggled to come up with a question that would narrow down what they were asking enough to make it worth asking to try to get to an answer
14:37:23 <maerwald[m]> Maybe this is an assignment and they just needed *any* answer
14:37:32 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:37:38 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:38:09 × egoist quits (~egoist@186.235.85.100) (Quit: WeeChat 3.1)
14:38:40 <chisui> ... or win an argument :D
14:39:02 <maerwald> Yeah, that's even more important and requires our support
14:39:23 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
14:39:57 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
14:40:08 BosonCollider joins (~olofs@90-227-86-119-no542.tbcn.telia.com)
14:43:39 <davean> I mean, I guess core to the problem is types don't exist along side runtime values in any sense
14:43:52 <davean> so the question is, on the face of it, nonsensicle
14:44:09 <davean> but many type-looking things do exist
14:45:10 × CookE[] quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds)
14:45:58 <dminuoso> Snarky opinion: Python is dependently typed: x if (type(o) is str) else y
14:46:40 <dminuoso> Type checking your program amounts to running it and see if its well behaved.
14:47:25 × ystael quits (~ystael@user/ystael) (Read error: Connection reset by peer)
14:48:12 ystael joins (~ystael@user/ystael)
14:49:04 hammock joins (~Hammock@2600:1700:19a1:3330::625)
14:49:29 <maerwald> It's well behaved by definition no?
14:49:30 × chomwitt quits (~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) (Ping timeout: 264 seconds)
14:49:49 <davean> yah the thing maerwald said
14:51:19 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
14:54:09 <nshepperd> it passes type checking if it does what you want
14:54:18 <nshepperd> The most powerful type system on earth!
14:55:44 <maerwald> We just need a confogurable type system
14:56:05 <maerwald> confoguration...
14:56:24 maerwald signs off lol
14:58:38 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
14:59:40 <gentauro_> maerwald: sign off? Is that a certificate? :P
14:59:46 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
15:00:05 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
15:00:12 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
15:01:10 teaSlurper joins (~chris@81.96.113.213)
15:01:48 gentauro_ is now known as gentauro
15:03:02 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:04:35 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
15:04:38 <carbolymer> is there a function `PersistEntity r => r -> Key r` in "persistent" library? I'm trying to get key of my entity
15:06:37 <merijn> carbolymer: I *think* I'm using one somewhere in my code
15:06:42 <merijn> So I think so
15:06:58 <merijn> but, eh, it can be hard to dig up the right stuff :p
15:07:21 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:08:25 <sekun> do people actually use the haskell packages from nixpkgs?
15:08:35 <sekun> for projects
15:08:54 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
15:08:57 <Taneb> sekun: yes
15:09:10 <dminuoso> sekun: Yes.
15:10:54 <sekun> alright cool. does it improve compile times at all compared to just cabal/stack? or there's no difference?
15:11:24 <sekun> i'm not sure if the packages on there are also binaries
15:11:38 <davean> sekun: hahaha, people try
15:11:44 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:11:54 <davean> sekun: there are some binary, sure, but cabal already caches in the same way
15:12:07 <davean> sekun: so, "marginal" at best and the nixos stuff is very limited in what it can handle
15:12:14 <Taneb> sekun: nixpkgs has a binary cache
15:12:51 <davean> sekun: it only helps at all the first compile
15:12:59 × warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
15:13:03 × tv quits (~tv@user/tv) (Ping timeout: 268 seconds)
15:13:04 <sekun> davean: limited in what way? sorry i'm just trying to get an idea
15:13:04 <davean> and it will have issues
15:13:18 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
15:13:23 <dminuoso> sekun: The primary motivation for nix is getting deterministic output.
15:13:24 <sekun> Taneb: I see
15:13:51 tv joins (~tv@user/tv)
15:14:06 <davean> sekun: well it only supports a single version of a package at all, which falls flat on its face immedately, if you compile with flags for debugging and such, you're in a worse place than just using cabal, its always behind, historically nixos broke packages silently. ..
15:14:29 <dminuoso> sekun: In haskell+nix for actual building, it's generally a bit slower for various reasons.
15:14:30 × ystael quits (~ystael@user/ystael) (Read error: Connection reset by peer)
15:15:02 <dminuoso> And the problems davean points out are addressed in haskell.nix
15:15:10 ystael joins (~ystael@user/ystael)
15:15:13 <davean> dminuoso: Yah, haskell.nix is WAY better
15:15:33 <davean> Ok, haskell.nix isn't actively detremental
15:15:37 <davean> which I'd claim nix is
15:15:46 <dminuoso> davean: To be fair, I think of nix a bit more like stackage wrt to versions.
15:15:53 <dminuoso> But in a way that you can transitively switch out dependencies easily
15:15:57 <dminuoso> Or modify their flags
15:16:01 <davean> dminuoso: stackage never ripped out dependency requirements
15:16:06 warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
15:16:08 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:16:11 <dminuoso> Of course not, neither has nix
15:16:16 <davean> dminuoso: YES YES nix HAS
15:16:19 <davean> Seriously
15:16:26 <davean> they actively jail broke packages as THE STANDARD
15:16:32 <davean> It lead me to SERIOUS issues
15:16:44 <davean> No, absolutely seriously this is a nix thing historically
15:16:52 <Taneb> dminuoso: yeah, that was (is?) a comman thing in nixpkgs' haskell package set
15:17:01 <davean> they had a set of packages they directly removed depencency requirements on
15:17:14 <dminuoso> Maybe I misunderstand what you mean by "ripping out dependency requirements" then
15:17:15 <davean> dminuoso: Seriously, this is a huge fucking deal
15:17:35 <dminuoso> Ah
15:17:37 <davean> dminuoso: ok,. so if I have a package that says "directory >= 1.4.1 && < 1.5" nix would rewrite it to "directory"
15:17:42 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
15:17:50 <davean> and build it against 1.4
15:17:57 <Taneb> Ctrl-F in https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/haskell-modules/configuration-common.nix for "doJailbreak"
15:17:58 <davean> I lost data in production because of this shit
15:18:09 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:d7c7:704e:32f2:af10) (Quit: WeeChat 2.8)
15:18:30 <dminuoso> Mmm, what happened here? I recall that jailbreak was a really rare thing to do
15:18:32 slowButPresent joins (~slowButPr@user/slowbutpresent)
15:18:50 <davean> dminuoso: they at least at one point *always* jailbroke for what they considered the "base" package set
15:18:56 <davean> Universally
15:19:32 <davean> which things like directory were in that set
15:20:14 <dminuoso> This is strange, so the first 10ish examples I went through are all jailbroken just to get the right quickcheck and run tests..
15:20:20 <dminuoso> Shouldn't that be a case of dontCheck?
15:20:22 dminuoso stares
15:20:33 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:20:43 <davean> dminuoso: and this is the "less scary" future
15:20:56 <nshepperd> i thought the point of nix was to not need to do those things...
15:21:05 <davean> dminuoso: they seriously use to UNIVERSALLY do it for some packages, and jailbreaking was something more
15:21:12 <davean> nshepperd: yah well
15:21:19 <davean> nshepperd: its SPECIFICLY the *haskell* stuff in nix
15:21:31 <dminuoso> davean: From what I can tell, its definitely not universal behavior. It seems to be the sledgehammer to massage bounds.
15:21:40 <dminuoso> For the odd package that wouldnt otherwise build
15:21:45 <davean> dminuoso: no, as I keep tell you, this is the "future" where they tried to back off it
15:21:54 <dminuoso> I find that hard to believe
15:21:57 <davean> dminuoso: but they did it to *every* package for certain dependencies
15:22:03 <davean> dminuoso: well its true so uh?
15:22:05 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
15:22:31 ubert joins (~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33)
15:22:49 <davean> directory was one of them
15:22:59 <davean> it would NEVER enforce a dependency requirement on directory, AT ALL
15:24:51 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:25:46 <maerwald> Nix bashing? Lemme get popcorn first
15:26:24 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
15:27:07 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
15:28:42 <sekun> Ah I checked haskell.nix and found this https://input-output-hk.github.io/haskell.nix/motivation/. I think I'll start from here and see how it goes.
15:29:12 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:29:37 × azeem quits (~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) (Ping timeout: 268 seconds)
15:30:05 azeem joins (~azeem@176.201.6.138)
15:30:43 <sekun> davean: is the issue you mentioned also present in haskell.nix? or is it only an issue if you just use nix + nixpkgs
15:30:45 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
15:31:17 <davean> sekun: no, haskell.nix at least tries to address all the above issues and make a more honest compilation of Haskell code
15:31:35 <davean> sekun: It still won't really help your build times other than the first time, but
15:31:43 <davean> it doesn't cause you active issues :)
15:31:55 <davean> and it might even solve some problems!
15:32:36 <sekun> davean: i see that's good to hear. i guess there's really no temporary workaround for haskell's build times :(
15:33:33 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:33:33 CookE[] joins (~thedawn@user/thedawn)
15:33:46 <davean> sekun: I mean there is directly addressing the issue
15:33:58 <davean> why are your build times long?
15:34:31 <davean> if what you care about is that clean build's build time, haskell.nix does help
15:34:56 <davean> But you only build dependencies once per configuration of said dependency with cabal
15:35:03 <davean> so you probably care about YOUR code's compile time in practice
15:35:08 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
15:35:10 <davean> So why is your code not compiling fast?
15:35:20 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
15:36:19 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.1)
15:38:00 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:38:43 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
15:39:33 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
15:39:35 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
15:40:10 mikail_ joins (~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf)
15:40:12 Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
15:42:25 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:42:59 × chisui quits (~chisui@200116b866efc300342cdc4d594c896c.dip.versatel-1u1.de) (Quit: Client closed)
15:43:36 × MorrowM quits (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds)
15:44:01 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
15:44:20 chisui joins (~chisui@200116b866efc30078bec775310a636c.dip.versatel-1u1.de)
15:45:04 × sekun quits (~sekun@180.190.208.125) (Ping timeout: 252 seconds)
15:45:25 chomwitt joins (~Pitsikoko@athedsl-16082.home.otenet.gr)
15:46:51 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:48:25 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
15:50:01 opv joins (~opv@methodsofcontrol.com)
15:50:15 Ollie[m] joins (~ollieocha@2001:470:69fc:105::41a5)
15:51:12 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:52:45 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
15:53:13 arjun_ joins (~arjun@160.202.37.101)
15:53:27 <chisui> I came across a library that redefined some categorical typeclasses in a more categorical way, like `Functor (c0 :: k0 -> k0 -> Type) (c1 :: k1 -> k1 -> Type) (f :: k0 -> k1)` , but I forgot the name. Does anyone know how that package is called?
15:54:45 × azeem quits (~azeem@176.201.6.138) (Read error: Connection reset by peer)
15:55:06 azeem joins (~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it)
15:55:28 <c_wraith> I think there are actually several packages that explore that direction
15:55:32 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
15:55:50 zeenk joins (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3)
15:56:57 <chisui> do you have the name of some? they don't seem to be indexed by hoggle
15:57:02 pfurla_ joins (~pfurla@216.131.82.16)
15:57:07 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
15:57:59 <chisui> *hoogle
15:58:30 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Client Quit)
15:59:23 <c_wraith> https://hackage.haskell.org/package/hask is one, though I don't think it's the one you saw
15:59:44 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 252 seconds)
16:00:32 finsternis joins (~X@23.226.237.192)
16:01:21 CookE[] is now known as fef
16:01:21 lbseale joins (~lbseale@user/ep1ctetus)
16:01:50 <c_wraith> https://hackage.haskell.org/package/data-category is another, though probably still not the one you're looking for
16:02:58 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
16:03:54 <chisui> Thank you c_wraith but none of those are what I was looking for
16:04:23 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
16:05:02 trcc joins (~trcc@eduroam09.au.dk)
16:05:03 × trcc quits (~trcc@eduroam09.au.dk) (Remote host closed the connection)
16:05:38 trcc joins (~trcc@users-1190.st.net.au.dk)
16:05:59 × warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
16:06:16 × ubert quits (~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33) (Ping timeout: 250 seconds)
16:07:56 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 268 seconds)
16:08:57 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
16:09:02 <chisui> The package is called "category" *facepalm*
16:09:18 ChaiTRex joins (~ChaiTRex@user/chaitrex)
16:11:03 <carbolymer> davean: wait how did you lost your data? Your package incorporated version with a bug, outside of cabal bounds , or what happened?
16:14:20 dunkeln joins (~dunkeln@188.71.193.140)
16:14:44 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:15:25 × dhil quits (~dhil@195.213.192.47) (Ping timeout: 258 seconds)
16:17:49 <c_wraith> chisui: well, if I helped you at least figure out what to search for, I'm calling that a win. :)
16:18:04 × hgolden quits (~hgolden2@cpe-172-114-84-61.socal.res.rr.com) (Remote host closed the connection)
16:19:32 × BosonCollider quits (~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 252 seconds)
16:19:42 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
16:20:59 warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
16:21:03 × warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
16:23:05 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
16:23:10 warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
16:23:17 Guest3175 joins (~Guest31@176.41.31.219)
16:23:45 <davean> carbolymer: yah, I specificly said "I require directory that has a bug fixed because that bug affects me", and the nixpkg approach said "haha, we don't believe you"
16:26:21 × pfurla_ quits (~pfurla@216.131.82.16) (Ping timeout: 268 seconds)
16:28:23 zyklotomic parts (~ethan@2604:a880:800:10::79f:8001) (WeeChat 2.8)
16:29:01 dhil joins (~dhil@80.208.56.181)
16:29:08 <c_wraith> yikes. Overriding version bounds without explicit instructions to do so is scary.
16:32:42 × vpan quits (~vilius@212.117.1.172) (Quit: Leaving.)
16:33:17 derelict joins (~derelict@user/derelict)
16:33:32 <maerwald> That's why I usually avoid 'directory' and reimplemented everything myself, lol. But I'm missing windows support. AFPP etc... grml
16:34:23 × mrmonday quits (~robert@what.i.hope.is.not.a.tabernaevagant.es) (Quit: .)
16:34:32 mrmonday joins (~robert@what.i.hope.is.not.a.tabernaevagant.es)
16:35:26 <maerwald> Cross platform functions are the worst. Purely functional and "local reasoning" goes out the window and laughs at you
16:37:15 × wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:38:24 <c_wraith> "purely functional" goes out the window when working with filesystems anyway
16:39:04 <maerwald> How would a functionsl filesystem look like?
16:40:43 jumper149 joins (~jumper149@80.240.31.34)
16:43:10 <monochrom> It would support undo.
16:43:47 <monochrom> Imagine you're back to the 2000's and you got yourself into cabal hell. Don't you wish you could undo?
16:43:56 <c_wraith> it would look like a log-based filesystem
16:44:41 mikail__ joins (~mikail@90.212.77.3)
16:45:35 BosonCollider joins (~olofs@90-227-86-119-no542.tbcn.telia.com)
16:45:38 <sclv> If in imagining im in the 2000s im not thinking about cabal i’m remembering when britney was on the radio, the housing market was good, and i could still buy a large coke for 1.25
16:45:41 peterhil_ joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
16:45:47 × ystael quits (~ystael@user/ystael) (Quit: Lost terminal)
16:46:23 <monochrom> That would be "how would a functional society look like?" >:)
16:46:29 ubert joins (~Thunderbi@p200300ecdf259deac0d59fca0b69df22.dip0.t-ipconnect.de)
16:46:43 <c_wraith> oh no, we've switched meanings of "functional"!
16:47:30 × mikail_ quits (~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf) (Ping timeout: 240 seconds)
16:47:30 × peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Read error: Connection reset by peer)
16:47:58 <monochrom> I'm great at puns. That "functional" could still mean you have undo.
16:49:36 <monochrom> I just gave out an assignment to students yesterday, it's coding up iterative deepening in Haskell, taking advantage of lazy lists and lazy evaluation. I began with "this assignment deepens (pun intended, just you wait) your experience with lazy evaluation"
16:49:52 × warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
16:51:21 <c_wraith> Laziness and iterative deepening seem like a weird mix. the big benefit to iterative deepening it (usually) uses way less memory than a breadth-first search.
16:51:35 <c_wraith> +is
16:53:28 <monochrom> Breadth-first search still takes up much memory under lazy evaluation.
16:54:52 <c_wraith> I suppose you could apply laziness to things like generating a list of all paths examined by iterative deepening without blowing up its memory use
16:55:05 × dhil quits (~dhil@80.208.56.181) (Ping timeout: 265 seconds)
16:56:16 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:57:32 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
16:58:21 fef joins (~thedawn@user/thedawn)
16:58:23 × peterhil_ quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Quit: Must not waste too much time here...)
16:58:34 peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
17:03:03 × Guest3175 quits (~Guest31@176.41.31.219) (Quit: Client closed)
17:03:04 ystael joins (~ystael@user/ystael)
17:03:10 mc47 joins (~mc47@xmonad/TheMC47)
17:03:38 × kuribas quits (~user@ptr-25vy0ia3kl0vdl4qmg0.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
17:04:25 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
17:04:35 <norias> yeah, to be honest, coming from imperative programming
17:04:41 <norias> i'm 1 day in to haskell
17:04:56 <norias> and i can't imagine how programs that do things happen in functional programming
17:05:07 <norias> not saying it can't / doesn't happen
17:05:20 <norias> just my brain hasn't reached comprehension, yet
17:05:29 <norias> but it looks cool as hell
17:07:44 <ski> you compute a series of intput/output interactions with the external world (everything outside of the process running the Haskell program)
17:08:14 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:08:38 <ski> the simplest possible model of this is to view a program as a function that, given input text (standard input), computes output text (standard output)
17:08:45 dhil joins (~dhil@195.213.192.47)
17:08:53 <ski> @type interact
17:08:54 <lambdabot> (String -> String) -> IO ()
17:09:18 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 264 seconds)
17:09:40 ec joins (~ec@gateway/tor-sasl/ec)
17:09:50 <ski> can be used, to play with this idea. e.g. passing a function that divides up the input `String' into lives, reversing each line, then concatenating them together into a `String' again
17:10:24 <ski> @type interact (unlines . map reverse . lines)
17:10:25 <lambdabot> IO ()
17:10:57 <ski> > (unlines . map reverse . lines) "foo\nbar\nbaz\n"
17:10:58 <lambdabot> "oof\nrab\nzab\n"
17:11:55 <ski> however, when you want to do more sophisticated (text-based) interactions, or when you start to want to do other things (open files, network connections, spawn other processes, &c.), this simplistic model shows its limitations
17:13:17 <ski> and so we have a richer ((embedded) domain-specific) language for specifying exactly what I/O interactions to do, in which order. which is the `IO' (abstract data) type
17:13:22 <ski> @type getLine
17:13:23 <lambdabot> IO String
17:15:41 × aman quits (~aman@user/aman) (Ping timeout: 268 seconds)
17:16:41 <ski> a value of type `IO String' describes interactions to perform, so as to (hopefully) compute a `String' in the end, as result
17:18:08 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
17:18:37 <ski> (in any case, the `IO String' does not (in general) "contain" any `String'. the `String' will be computed, as a result of actually performing the series of instructions specified by the value of type `IO String' (the "action"). performing/running it again, will quite possibly result in a different `String' being produced. but it's still the same action, the same value of type `IO String', that's being run)
17:20:42 wallymathieu joins (~wallymath@81-234-151-21-no94.tbcn.telia.com)
17:20:45 <ski> norias : so, by using basic "action" building blocks, like `getLine', one can combine them into larger, more complicated actions, using `(>>)' or `(>>=)', which constructs an action from two smaller ones, that, when later executed, will first execute the first "su-action", then the second one
17:20:56 <ski> (>>) :: IO a -> IO b -> IO b
17:21:09 <ski> (>>=) :: IO a -> (a -> IO b) -> IO b
17:21:26 × ozzymcduff quits (~mathieu@81-234-151-21-no94.tbcn.telia.com) (Remote host closed the connection)
17:22:02 MorrowM joins (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
17:22:11 <ski> `actA >> actB' will, when executed, first execute `actA' (throwing away its result value), then execute `actB' (whose result value will be the result value of the execution of the whole `actA >> actB')
17:22:43 ixlun joins (~ixlun@2001:470:69fc:105::41b3)
17:23:43 ozzymcduff joins (~mathieu@81-234-151-21-no94.tbcn.telia.com)
17:23:52 <ski> the second combinator is to not throw away the intermediate result, but rather allow the second action to depend on which value resulted from executing the first action. so the second one is actually a function that is fed the intermediate result, and (possibly) uses that to construct the second action to perform
17:24:02 × involans quits (~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net) (Ping timeout: 258 seconds)
17:25:35 <ski> so, `act >>= cont' will, when executed, first execute `act', getting its result back (call it `res'); then execute `cont res' (passing the intermediate result to the function ("continuation") that then computes the second action to execute). as before, the result of the second action is the result of the whole
17:26:19 <ski> so, one very simple program now is `getLine >>= putStrLn'. a slightly more complicated one is `getLine >>= (putStrLn . reverse)'
17:26:23 gehmehgeh joins (~user@user/gehmehgeh)
17:26:25 <ski> @type putStrLn
17:26:26 <lambdabot> String -> IO ()
17:27:01 thyriaen joins (~thyriaen@45.178.75.13)
17:27:12 <ski> `putStrLn str' is action that, when executed, will output `str' (on standard output) (and then give back an uninteresting result (of type `()') from the execution)
17:28:36 × DNH quits (~DNH@2a09:bac0:48::82b:7a06) (Ping timeout: 250 seconds)
17:28:38 <ski> next step up in complexity is to start to put conditionals, or `case' distinctions, into the second action (after `>>='), so that you decide to respond in different ways, depending on the intermediate result from the first action
17:28:40 safinaskar joins (~safinaska@109-252-90-89.nat.spd-mgts.ru)
17:29:35 <ski> norias : that's a very quick sketch of the very basics of Haskell I/O .. to get a better feel for this, you'd have to play around with it, and try to build larger things
17:29:37 <safinaskar> is it possible to pass runtime values as arguments to types? i asked this question today, and got answer that this is possible to fake somehow. please, give me some examples
17:30:22 × thyriaen quits (~thyriaen@45.178.75.13) (Client Quit)
17:30:33 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
17:30:39 <carbolymer> davean: that's fucked up. It's the opposite what's nix promises
17:31:11 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
17:31:15 <safinaskar> for example, I want "head" with this prototype: head :: forall a. foreach (x :: [a]). (null x ~ False) -> a
17:31:17 <ski> safinaskar : that's dependent types
17:31:27 <safinaskar> is it possible to fake this "head" using singletons?
17:31:56 <ixlun> Hi all. I've got this code: https://termbin.com/r17ge . I'm reading in a binary file that's approx 700Mb of floats. It takes a long time to run (in the order of minutes). I would have thought with lazy bytestrings this would have been pretty quick.
17:32:43 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
17:34:20 <monochrom> "(runGet $ many getFloatle)" kills laziness.
17:35:00 <monochrom> Building a long list also takes up much memory therefore time.
17:35:37 <ski> safinaskar : singletons allow you to associate a value with a corresponding type, "of the same shape". but the value is of a new type, specifically made for this. e.g. `data Nat = Zero | Succ Nat', then `data NatIs :: Nat -> * where IsZero :: NatIs Zero; IsSucc :: NatIs n -> NatIs (Succ n)'. so, given an input of type `NatIs n', you automatically get a corresponding type `n'
17:36:33 <ski> safinaskar : but i'm not aware of a way to do this generically (for your arbitrary element type `a', say)
17:36:48 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
17:37:18 <ixlun> monochrom: Right, I presume it's the runGet function that's killing laziness? If so, is there a way around it?
17:37:51 MoC joins (~moc@user/moc)
17:38:19 <monochrom> "many" kills laziness.
17:38:34 × mikail__ quits (~mikail@90.212.77.3) (Ping timeout: 250 seconds)
17:38:57 Erutuon joins (~Erutuon@user/erutuon)
17:43:17 <safinaskar> ski: it seems i understand. and this means that we can have, say, list of such naturals using existential types, right? i. e. we can define "data Foo = forall (n :: Nat). Foo (NatIs n)", and then we can have "someList :: [Foo]". right?
17:44:32 <ixlun> monochrom: Right. Do you think I need to do some kind of incremental reads?
17:44:58 <monochrom> Use runGetOrFail on one single getFloatle. Or use conduit or pipes.
17:45:38 × MorrowM quits (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection)
17:45:56 MorrowM joins (~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
17:45:56 Guest33 joins (~Guest33@104.246.145.85)
17:46:41 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
17:47:54 × kayprish quits (~kayprish@46.240.143.86) (Remote host closed the connection)
17:48:59 × sleblanc quits (~sleblanc@user/sleblanc) (Ping timeout: 268 seconds)
17:50:36 <qrpnxz> is there a way to just import everything in the std lib in one go?
17:51:50 <ski> safinaskar : yes, but that seems fairly useless, since `exists n. NatIs n' would simply be isomorphic to a plain (value-level) `Nat'
17:52:06 <ixlun> monochrom: okay I'll take a look at that. Thanks!
17:52:19 <ski> the sole point of `NatIs n' would be to mention `n' elsewhere
17:52:55 × Guest33 quits (~Guest33@104.246.145.85) (Quit: Client closed)
17:53:00 <safinaskar> ski: i think i will able to somehow extract "n" from this "exists n. NatIs n" and pass it somewhere
17:57:17 <ski> consider something like `zipWith :: forall a b c n. (a -> b -> c) -> (Vec a n -> Vec b n -> Vec c n)'. the point of using the `n' index here is to mention it multiple times in the type, linking the lengths of the three vectors together. if you instead go `zipWith :: forall a b c. (a -> b -> c) -> ((exists n. Vec a n) -> (exists n. Vec b n) -> (exists n. Vec c n))', you can do that, but that's not really any
17:57:23 <ski> better than `zipWith :: forall a b c. (a -> b -> c) -> ([a] -> [b] -> [c])' in the first place
17:58:35 mikail__ joins (~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf)
17:58:46 <ski> similarly, someList :: [exists n. NatIs n]' isn't really any better than `someList :: [Nat]'. if you ever want to perform such a conversion, you can always use a function `toSingNat :: Nat -> exists n. NatIs n'
17:59:51 × arjun_ quits (~arjun@160.202.37.101) (Ping timeout: 265 seconds)
18:00:06 <jumper149> I am currently trying to fix my usage of MonadBaseControl, because I was missing some `restoreM`s. So instead I came up with this: https://github.com/jumper149/blucontrol/blob/fix-control/src/Blucontrol/Main/Control.hs#L54
18:00:58 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
18:01:02 <jumper149> The problem is, that I need to call `unsafeCoerce` right here. But when HLS tells me the type of `unsafeCoerce` is just like `id` here.
18:01:11 <safinaskar> ski: i will show example
18:01:17 <jumper149> When trying to run the program everything works fine.
18:01:28 ski will have to leave rather soon
18:01:38 <jumper149> So why can't GHC just infer type equality here. I guess it has to do with type families somehow.
18:02:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:03:02 <jumper149> This is the error without `unsafeCoerce`: http://ix.io/3qU1
18:03:53 warnz joins (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
18:07:03 × v01d4lph4 quits (~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
18:08:04 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
18:09:15 × fef quits (~thedawn@user/thedawn) (Ping timeout: 244 seconds)
18:09:20 <safinaskar> ski: here is example: https://paste.debian.net/1202170/
18:09:50 <safinaskar> ski: as you can see, i was able to actually use existential "Foo". and as you can see, Foo is better than just Nat
18:09:54 × xkuru quits (~xkuru@user/xkuru) (Ping timeout: 252 seconds)
18:10:30 <safinaskar> ski: i was able to pattern match on Foo value and then (if it greater than zero) pass it as second argument to division
18:10:54 <safinaskar> thus, compiler proved that at calling point of "divide" its second argument is not zero
18:11:22 <safinaskar> this way we can finally remove partial functions, such as division, "head", etc
18:14:06 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
18:15:17 × chisui quits (~chisui@200116b866efc30078bec775310a636c.dip.versatel-1u1.de) (Quit: Client closed)
18:16:10 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 258 seconds)
18:17:33 × mikail__ quits (~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf) (Quit: Leaving)
18:22:04 involans joins (~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net)
18:25:53 tusko parts (~yeurt@user/tusko) (Farewell)
18:26:07 chisui joins (~chisui@200116b866efc300e1478aa720ae1876.dip.versatel-1u1.de)
18:27:07 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:27:46 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Quit: Leaving.)
18:31:09 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
18:32:30 safinaskar97 joins (~safinaska@109.252.90.89)
18:35:10 econo joins (uid147250@user/econo)
18:35:43 × safinaskar quits (~safinaska@109-252-90-89.nat.spd-mgts.ru) (Ping timeout: 246 seconds)
18:38:01 × yoctocell quits (~user@h87-96-130-155.cust.a3fiber.se) (Quit: ERC (IRC client for Emacs 28.0.50))
18:40:19 × xsperry quits (~as@user/xsperry) (Ping timeout: 258 seconds)
18:42:20 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
18:43:30 × mcglk quits (~mcglk@131.191.49.120) (Quit: (seeya))
18:43:54 mcglk joins (~mcglk@131.191.49.120)
18:44:19 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
18:45:53 × johnw quits (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (Read error: Connection reset by peer)
18:46:27 × Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds)
18:47:18 johnw joins (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0)
18:48:48 fef joins (~thedawn@user/thedawn)
18:52:26 × jespada quits (~jespada@90.254.247.46) (Ping timeout: 252 seconds)
18:53:35 allbery_b joins (~geekosaur@xmonad/geekosaur)
18:53:35 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
18:54:38 × dunkeln quits (~dunkeln@188.71.193.140) (Ping timeout: 252 seconds)
18:55:31 × fef quits (~thedawn@user/thedawn) (Quit: Leaving)
18:55:31 jespada joins (~jespada@90.254.247.46)
19:00:25 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
19:01:44 allbery_b is now known as geekosaur
19:04:18 fresheyeball joins (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
19:04:50 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:04:51 dunkeln_ joins (~dunkeln@188.71.193.140)
19:05:14 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds)
19:05:35 × turlando quits (~turlando@user/turlando) (Ping timeout: 265 seconds)
19:06:37 myShoggoth joins (~myShoggot@75.164.29.44)
19:07:05 safinaskar97 parts (~safinaska@109.252.90.89) ()
19:08:49 turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it)
19:08:49 × turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
19:08:49 turlando joins (~turlando@user/turlando)
19:11:44 × ubert quits (~Thunderbi@p200300ecdf259deac0d59fca0b69df22.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
19:12:03 ubert joins (~Thunderbi@p200300ecdf259dc2c0d59fca0b69df22.dip0.t-ipconnect.de)
19:18:40 × ubert quits (~Thunderbi@p200300ecdf259dc2c0d59fca0b69df22.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
19:22:58 Deide joins (~Deide@wire.desu.ga)
19:22:58 × Deide quits (~Deide@wire.desu.ga) (Changing host)
19:22:58 Deide joins (~Deide@user/deide)
19:25:27 × turlando quits (~turlando@user/turlando) (Read error: Connection reset by peer)
19:27:05 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
19:28:14 Guest9 joins (~Guest9@43.241.144.49)
19:32:02 <Guest9> i like a book called pragmatic programmer , which books do you like/recommend?
19:32:05 <Guest9> in general/specific
19:32:34 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:34:06 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
19:37:34 <opv> Hi all. I am trying to build elm bc I need it on aarch64, and am failing miserably. I am very confused. Is this the right place to ask about cabal?
19:38:54 peterhil_ joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
19:39:44 × peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 258 seconds)
19:43:11 tzar_bomba joins (~tzar_bomb@78-56-41-78.static.zebra.lt)
19:45:56 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
19:46:24 <monochrom> Yes.
19:47:05 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
19:54:52 <maerwald> Great question.
19:55:11 turlando joins (~turlando@user/turlando)
19:56:43 lavaman joins (~lavaman@98.38.249.169)
19:59:08 × Guest9 quits (~Guest9@43.241.144.49) (Quit: Connection closed)
20:00:08 hseg joins (~gesh@195.192.229.14)
20:01:08 × dunkeln_ quits (~dunkeln@188.71.193.140) (Ping timeout: 250 seconds)
20:01:46 <dminuoso> davean: Okay, so in hindsight, I was aware doJailbreak did exist. I did some research, it's possible you're perhaps thinking of a relatively recent idea to automatically jailbreak on hackage2nix, but from everything I gather not unconditionally, only if it leads to buildable plans. But it is indeed a very sorrow thing if nix breaks cabal bound induced boundaries.
20:02:13 <davean> Its not recent, this happened to me in 2016
20:02:30 <dminuoso> Yeah, and I can already see how this on directory can cause really issues
20:02:39 <dminuoso> Even when its a transitive dependency
20:02:45 <dminuoso> This starts breaking other packages promises as well
20:02:49 <davean> Yep
20:02:55 <davean> It was a pretty deep big problem
20:03:03 × wallymathieu quits (~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:03:14 <davean> and it was hard to debug because it wasn't on the package - they do it in like the base package stuff
20:03:24 <davean> so it was in code *refered* to, didn't show up in the nix derivation its self at all :/
20:03:35 <davean> they broke it in the base infastructure
20:03:36 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:03:42 <davean> so you really had to dig in to find it
20:03:59 × derelict quits (~derelict@user/derelict) (Ping timeout: 244 seconds)
20:04:24 <dminuoso> Judging from the sample I looked at, perhaps the deeper problem is the heavy reliance of "its only marked buildable if tests pass"
20:04:30 <dminuoso> Which I think is an expensive threshold
20:04:41 <dminuoso> Mostly, things should be buildable as its roughly aligned with stackage
20:05:02 × juhp quits (~juhp@128.106.188.66) (Ping timeout: 250 seconds)
20:05:20 <dminuoso> If the reality is that a good portion of hackage has broken tests, then propagating lose dependencies is a super dangerous thing because they can affect unrelated libraries
20:05:26 <maerwald> Good reasons to avoid nix: bad ecosystem, low QA, too many chefs
20:05:36 <davean> well, the core of *this* particular problem is they never believed you'd need an upgrade of the GHC distributed packages
20:06:12 <davean> And they didn't want to consider multiple versions of those via if a nix derivation for them was used or GHC's derivation
20:06:39 chaosite joins (~chaosite@user/chaosite)
20:06:55 juhp joins (~juhp@128.106.188.66)
20:06:55 <dminuoso> Well, multiple concurrent haskellPackage versions is horrid UX in nix at the moment.
20:07:02 <dminuoso> Ideally I just want to callCabal2nix my package and be done with it
20:07:06 <dminuoso> This should improve things, not worsen then
20:07:20 <dminuoso> In light of all of this, I think I should really look into haskell.nix now
20:07:27 <davean> yah ...
20:08:14 <maerwald> haskell.nix shows that you need 10 nix engineers in a company to get anything done ;)
20:09:06 <dminuoso> I dont think its that extreme, but having followed quite a bit of rabbit holes recently I am convinced you do need 2 experts at least.
20:09:20 <dminuoso> Whether its worth it, you have to decidef
20:09:43 <dminuoso> We are going to use nix for configuring servers now, simply because the UX and advantages are simply uncontested
20:09:48 <dminuoso> But that's sort of orthogonal to the above problems
20:10:03 <davean> Yah, nix is a good idea, but there are deep problems. I don't think they're with nix specificly.
20:10:08 <dminuoso> Maybe, I might even think about switching back to cabal for haskell packages, and then patchelf'ing them into nix derivations
20:10:13 <davean> But the ecosystem built?
20:10:18 <davean> It uh, yah, has problems
20:10:21 <maerwald> Yeah, easy: no. The reason IOHK went down this rabbit hole is because daedalus is installed on the users machine via nix. IMO, that's crazy.
20:11:05 <dminuoso> davean: To be fair, every package distribution methods has its deep issues. I dont even want to start to discuss everything that's wrong with say rpm..
20:11:18 <davean> Yah
20:11:36 <maerwald> That's not a fair comparison
20:11:48 <maerwald> It's not about the format or the PM
20:11:50 shiraeeshi joins (~shiraeesh@109.166.57.36)
20:12:01 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
20:12:06 <maerwald> It's about the core developers, policies, QA
20:12:10 <dminuoso> Sure
20:12:28 <davean> In this case its about the philosophy of the people who are using the tool, but there are edges on the tools too, and what people do is a consiquence of the tools ergonomics too
20:12:42 <davean> Its not safe to use an ecosystem you don't invest in
20:12:48 <davean> sadly
20:13:41 <davean> <InsertHFShillhere>
20:13:46 <dminuoso> Some interesting things I recently learned, is that apparently in the go-world its super common to depend on package directly via github *tags*
20:14:20 <dminuoso> When you start translating those go dependencies into nix using the common tools, that means over time your dependencies suddenly experience sha mismatches, because in the go community its normal to just move tags around too..
20:14:50 <dminuoso> and apparently the same developers that came up with the go2nix (or whatevver they are called) didnt think it was a good idea to translate git refs into commit..
20:14:51 <maerwald> don't remind me that I did Go professionally once... ugh
20:15:11 pavonia joins (~user@user/siracusa)
20:15:22 <maerwald> The only good thing about Go is that APIs are usually stable
20:15:35 <dminuoso> maerwald: Correct me if Im wrong, but this all appears to stem out of this "there should be minimal effort involved in writing software or making packages"
20:15:42 <dminuoso> for whatever good or bad this does
20:16:02 <maerwald> It's the lack of tooling that forces people to keep their API stable
20:16:04 <dminuoso> Is there some sort of hackage equivalent in go?
20:16:13 <dminuoso> or Cabal-the-spec?
20:16:38 <maerwald> you can import directly from github
20:17:02 <maerwald> They have some vendoring tools too
20:17:08 <davean> Look, we're lucky we have ok tools. They should get better - they're being made better. As a community we should value that and invest in them
20:17:09 <maerwald> they're broken as well
20:17:14 <dminuoso> So if github ever goes down or loses data because of stupid admins, then if your business relies on go suddenly breaks apart?
20:17:24 <maerwald> yes
20:17:25 <davean> just because people have a little pain with them doesn't mean they aren't good
20:17:34 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
20:17:36 × jneira_ quits (~jneira_@131.red-79-155-1.dynamicip.rima-tde.net) (Ping timeout: 250 seconds)
20:17:39 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
20:17:51 <dminuoso> Oh haha, regarding github.. a really funny and sad story from a friend..
20:18:08 <dminuoso> He tried to GPDR gitlab to inquire about all data they have on him.
20:18:13 × norias quits (~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 268 seconds)
20:18:26 <maerwald> Well, my opinion is that PVP and semver are the reasons for API anarchy
20:18:28 <dminuoso> In the jungle of Gitlab this request turned from "GPDR inquiry" to "GPDR delete"
20:18:45 <dminuoso> And his account and all projects, commits, messages... *everything* was irrecoverably deleted.
20:19:20 <davean> Holy, why?
20:19:29 <dminuoso> Ask gitlab
20:19:33 <davean> well, i backup stuff
20:19:41 <maerwald> They have incompetent admins
20:19:46 <JSharp> that's painful. :/
20:19:47 <maerwald> Not the first incident
20:20:36 <dolio> Because that's the easiest way to comply?
20:20:51 <dminuoso> "we dont have anything on you"
20:21:04 × peterhil_ quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 250 seconds)
20:22:41 peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
20:24:29 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
20:24:53 mc47 joins (~mc47@xmonad/TheMC47)
20:25:04 DNH joins (~DNH@8.43.122.6)
20:25:50 × mc47 quits (~mc47@xmonad/TheMC47) (Client Quit)
20:25:57 <dminuoso> maerwald: At any rate, its a bad sad that go is in that state. Overall go seems like a cute language for making minimal tools. This discussion immediately reminded me of https://gnu.support/gnu-emacs/What-is-wrong-with-MELPA-on-Microsoft-Github.html
20:26:17 <dminuoso> All of this fully applies to the go-ecosystem as well, it seems.
20:26:30 <dolio> Also javascript, probably.
20:26:40 <maerwald> Go is good for microservices, nothing more
20:27:15 <dminuoso> Ive seen a bunch of CLI tools written in go as well, it seems fairly suitable for such tasks too
20:27:37 <dminuoso> Most recent thing is `morph`, which is how we're going to deploy nixos machines with. :)
20:27:47 <maerwald> python is better at cli tools imo
20:28:40 <dminuoso> perhaps yeah, guess it depends what you have in your toolkit
20:28:52 <dminuoso> I dont have any python or go experience, so my cli tools are written in Haskell
20:29:21 <dminuoso> But with Haskell some common tasks do require 5 lines of code, that should really just take 1.
20:30:31 <maerwald> I'm not a huge fan of optparse-applicative. Too many details to deal wits
20:30:42 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
20:30:42 allbery_b joins (~geekosaur@xmonad/geekosaur)
20:30:51 allbery_b is now known as geekosaur
20:31:01 <maerwald> With TH you could build something better, but then you need TH... ugh
20:31:09 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:31:15 <davean> maerwald: I've wanted improvements also. In some ways I want MORE complications tohugh.
20:31:45 <maerwald> I'm a fan of https://click.palletsprojects.com/en/8.0.x/
20:32:08 <davean> maerwald: thats so limited though, isn'tit?
20:32:28 jneira_ joins (~jneira_@131.red-79-155-1.dynamicip.rima-tde.net)
20:32:30 <maerwald> You can escape easily and do more complex things
20:33:09 <dminuoso> maerwald: optparse-applicative is really odd. it's very a great powertool, but for minimal cli tool it's easily overkill. :(
20:33:23 <dminuoso> Wouldnt want to give it up regardless
20:33:33 <maerwald> My optparse code atm is 500 LOC or so
20:33:38 <davean> I think part of optparse's problem is it tries to look too friendly while being powerful and falls short of both
20:33:51 <dminuoso> maerwald: btw, for minimal code, one could also consider optparse-generic
20:34:16 <dminuoso> I did take some initial looks, it could be a suitable replacement for "I want to carve out a 0 effort cli tool"
20:34:47 <dminuoso> It's easily composable with optparse-applicative, so you can break out and write manual parsers at any point
20:35:29 shapr joins (~user@2601:7c0:8180:89d0:ed87:906a:cd61:bb34)
20:36:31 <davean> maerwald: does https://click.palletsprojects.com/en/8.0.x/ support implementing something like "find"?
20:37:21 <maerwald> Not sure, been a while since I used python (or rather coconut)
20:37:37 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
20:38:16 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Remote host closed the connection)
20:40:10 <davean> maerwald: I don't see how it could be - but I only skimmed
20:40:32 <davean> It doesn't look like a comparable tool - but thats good, its not possible to do both things at once
20:42:03 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
20:43:10 × Deide quits (~Deide@user/deide) (Read error: Connection reset by peer)
20:43:28 Deide joins (~Deide@wire.desu.ga)
20:43:28 × Deide quits (~Deide@wire.desu.ga) (Changing host)
20:43:28 Deide joins (~Deide@user/deide)
20:44:24 <maerwald> I remember there are escape hatches though
20:44:25 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
20:44:28 × chomwitt quits (~Pitsikoko@athedsl-16082.home.otenet.gr) (Ping timeout: 250 seconds)
20:45:11 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
20:45:18 <davean> maerwald: I'd be interested in how their approach could have a capible escape hatch
20:45:24 <davean> they're using decorators and such
20:45:32 derelict joins (~derelict@user/derelict)
20:45:37 × derelict quits (~derelict@user/derelict) (Client Quit)
20:45:38 dunkeln_ joins (~dunkeln@188.71.193.140)
20:45:43 <davean> I'd think any escape hatch would have to be entirely different and break what they're doing
20:45:54 <davean> So I guess i'll look at it ore
20:46:15 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
20:46:47 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
20:48:22 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:49:00 × remexre quits (~nathan@user/remexre) (Quit: WeeChat 3.0.1)
20:49:01 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.1)
20:49:03 <dminuoso> davean: which part of `find` are you looking for exactly?
20:49:18 <davean> dminuoso: How it handles arguments
20:49:19 <davean> its a style
20:49:37 <davean> Its just a good example of actually parsing vs. the simpler base-posix style
20:49:41 <dminuoso> Mmm, what style is that?
20:49:52 <davean> have you not used find?
20:50:05 <davean> Its order dependent, and meaning changes based on the prefix
20:50:18 <davean> you can read the man page
20:50:28 <dminuoso> find is one of those tools I very poorly use Im afraid
20:50:35 <davean> its entirely context sensitive
20:51:25 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 246 seconds)
20:51:45 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
20:51:59 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
20:52:46 AWizzArd joins (~code@user/awizzard)
20:53:31 geekosaur joins (~geekosaur@xmonad/geekosaur)
20:54:05 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
20:58:29 <maerwald> Wouldn't that need optparse-monad?
20:58:29 remexre joins (~nathan@user/remexre)
20:59:00 <dminuoso> optparse-selective would suffice
20:59:16 <davean> maerwald: depends - is the applicative on an infinite tree? ;)
20:59:43 × AgentM quits (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.)
20:59:56 <maerwald> I'm a fan of selective. ..would like to see more applications
20:59:59 <dminuoso> I did try looking into pulling out an optparse-selective, and then I stared at the implementation of optparse-applicative and said no, Im not getting paid for this.
21:00:18 <dminuoso> It's doable, but you need rewrite a lot of optparse for it :(
21:01:46 × deshalb quits (~deshalb@user/deshalb) (Quit: leaving)
21:01:58 <davean> dminuoso: How not interested in that are you?
21:02:14 <maerwald> While at it, fix bytestring input
21:02:21 <davean> maerwald: optparse-applicative has a bit more than applicative
21:02:28 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
21:02:46 safinaskar joins (~safinaska@109.252.90.89)
21:03:52 <safinaskar> look here: https://paste.debian.net/1202170/ . i was able to pass runtime values as arguments to types!
21:04:14 <safinaskar> i. e. i can essentially use full power of dependent haskell now. and prove things!
21:04:33 × hammock quits (~Hammock@2600:1700:19a1:3330::625) (Ping timeout: 268 seconds)
21:04:35 <safinaskar> i was able to pattern match on Foo value and then (if it greater than zero) pass it as second argument to division
21:04:47 <safinaskar> thus, compiler proved that at calling point of "divide" its second argument is not zero
21:04:52 <safinaskar> this way we can finally remove partial functions, such as division, "head", etc
21:06:11 <dminuoso> davean: Not much. Im looking into fixing a bunch of cabal stuff first since these actually annoy me. :-)
21:06:27 <dminuoso> optparse-selective is just wishful thinking, Im lacking a genuine use for it
21:06:58 × gzj quits (~GZJ0X@96.45.188.88.16clouds.com) (Remote host closed the connection)
21:09:44 <maerwald> I've been thinking about forking cabal and create a more radical unix style interface with several tools, more low level than current cabal-install
21:10:01 <maerwald> But no capacity and no demand
21:11:28 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
21:14:01 <maerwald> I think stack and cabal are converging to the point that the choice will become irrelevant even for power users at some point
21:14:23 vicentius joins (~vicentius@user/vicentius)
21:18:00 × warnz quits (~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
21:18:02 × mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 268 seconds)
21:18:12 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:19:53 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 268 seconds)
21:21:19 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
21:21:27 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
21:24:29 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
21:25:10 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:26:13 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:26:42 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:28:37 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
21:29:07 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:29:26 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:29:51 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
21:30:22 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
21:30:41 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
21:30:58 safinaskar parts (~safinaska@109.252.90.89) ()
21:30:59 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:31:31 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
21:32:23 derelict joins (~derelict@user/derelict)
21:33:05 trcc_ joins (~trcc@eduroam09.au.dk)
21:33:48 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:35:22 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:36:02 × trcc quits (~trcc@users-1190.st.net.au.dk) (Ping timeout: 250 seconds)
21:37:20 × trcc_ quits (~trcc@eduroam09.au.dk) (Ping timeout: 250 seconds)
21:38:29 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:38:40 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a50f:dc97:cbbc:9783)
21:39:21 hammock joins (~Hammock@2600:1700:19a1:3330::625)
21:40:02 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:40:12 × chisui quits (~chisui@200116b866efc300e1478aa720ae1876.dip.versatel-1u1.de) (Quit: Client closed)
21:40:19 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
21:42:12 waleee joins (~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
21:42:32 × dunkeln_ quits (~dunkeln@188.71.193.140) (Ping timeout: 250 seconds)
21:42:57 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:42:58 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a50f:dc97:cbbc:9783) (Ping timeout: 250 seconds)
21:44:30 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:44:54 × michalz quits (~michalz@185.246.204.114) (Remote host closed the connection)
21:47:17 <pavonia> I'm trying to map a replacement function over a list that replaces elements from a list with corresponding elements from another list, e.g. map (replace [1,3] [10,30]) [1,2,3,4] => [10,2,30,4]. Is there a way to make the lookup for each element take constant time? Both Map and HashMap seem to have logarithmic lookup time
21:47:18 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 250 seconds)
21:47:20 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:48:45 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
21:48:52 betelgeuse joins (~john2gb@94-225-47-8.access.telenet.be)
21:49:42 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
21:50:24 × jao quits (jao@gateway/vpn/protonvpn/jao) (Ping timeout: 265 seconds)
21:51:52 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
21:52:06 <dminuoso> pavonia: how would that work, exactly?
21:52:25 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a50f:dc97:cbbc:9783)
21:53:32 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.1)
21:54:20 <pavonia> I was thinking about a "real" hash map. Is the no Haskell implementation?
21:54:43 <dminuoso> a "real" hash map? constant time lookup? :-)
21:55:28 × betelgeuse quits (~john2gb@94-225-47-8.access.telenet.be) (Ping timeout: 246 seconds)
21:55:33 <dminuoso> That would requie perfect hashing
21:55:49 <pavonia> When you have a large case expression, what is the lookup time for this structure internally?
21:56:17 <dminuoso> Im not sure if GHC can translate this into a jump table
21:57:23 <dminuoso> It seems so
21:58:06 <pavonia> So which concrete data type would you suggest for fastest lookup?
21:58:29 <dminuoso> Id start by profiling and ensuring this is even worth the trouble..
21:58:46 <dminuoso> Do you have actual prof data? Or is this just a case of premature optimization
21:59:22 <pavonia> It's more a theoretical question
21:59:59 ec joins (~ec@gateway/tor-sasl/ec)
22:00:09 <dminuoso> Hard to answer a theoretical question. Improving performance usually depends on what you're doing exactly
22:00:13 <pavonia> That is performance doesn't matter in my case but I'm curious what would be the fastest lookup type
22:00:51 <dminuoso> From what I can gather case-of is constant time and fast if GHC can translate it into a jump table
22:01:54 <dminuoso> And then it depends on the scrutinee and the pattern clauses
22:02:07 <pavonia> But you can't build such a case-expression dynamically, can you?
22:02:35 <dminuoso> From what exactly?
22:03:11 <dminuoso> generally, Id probably just use HashMap from unordered-containers as a first step if I want quick access
22:03:30 <dminuoso> If that's not enough, then Id look into the specific issue at hand
22:03:57 <pavonia> For two lists as in the example above
22:04:12 <pavonia> So HashMap is generally faster than Map?
22:06:53 <dminuoso> Generally yes
22:07:12 <dminuoso> If the key is Int, then IntMap might (?) perform better, Im not sure
22:07:22 <dminuoso> Also, Id throw in bytestring-tries into the mix
22:07:37 <dminuoso> https://hackage.haskell.org/package/bytestring-trie
22:07:47 trcc joins (~trcc@2-104-60-169-cable.dk.customer.tdc.net)
22:08:10 <dminuoso> pavonia: but keep in mind that HashMap is unordered
22:08:36 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
22:08:37 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a50f:dc97:cbbc:9783) (Remote host closed the connection)
22:09:28 × derelict quits (~derelict@user/derelict) (Ping timeout: 246 seconds)
22:09:28 <monochrom> Premature generalization is the root of premature optimization.
22:10:58 <monochrom> Ultimately it may come down to just telling you about -ddump-simpl -ddump-stg -ddump-opt-cmm -ddump-asm so you can see what happens to your specific case.
22:11:30 × trcc quits (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Client Quit)
22:11:47 <monochrom> Because the other correct answer is "it depends".
22:12:02 × fendor quits (~fendor@178.165.189.179.wireless.dyn.drei.com) (Remote host closed the connection)
22:15:06 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:15:27 machinedgod joins (~machinedg@24.105.81.50)
22:16:01 <pavonia> dminuoso: Okay, thanks
22:18:02 killsushi joins (~killsushi@user/killsushi)
22:21:54 × brian_da_mage quits (~Neuromanc@user/briandamag) (Ping timeout: 264 seconds)
22:25:13 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal)
22:27:40 × peterhil quits (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 252 seconds)
22:27:42 peterhil_ joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
22:28:43 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
22:31:34 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
22:31:34 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
22:31:51 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
22:32:00 × tzar_bomba quits (~tzar_bomb@78-56-41-78.static.zebra.lt) (Quit: Client closed)
22:33:25 × azeem quits (~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) (Ping timeout: 265 seconds)
22:33:32 × vicentius quits (~vicentius@user/vicentius) (Ping timeout: 252 seconds)
22:34:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:35:05 <hseg> are newtype family instances not representationally equal to what they wrap?
22:35:11 Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
22:35:19 × ephemient quits (uid407513@id-407513.tooting.irccloud.com) (Quit: Connection closed for inactivity)
22:36:00 <hseg> so given e.g. data family Sorted f; newtype instance Sorted [a] = SortedList {getSorted :: [a]}
22:36:14 <hseg> coerce :: Sorted [a] -> [a] is forbidden?
22:36:47 azeem joins (~azeem@176.201.6.138)
22:38:14 <hseg> hrm... experimenting more shows this isn't what's going wrong, getting more data
22:42:57 <hseg> oh ffs. is there a reason the (unordered-)containers haddocks don't show role annotations?
22:44:22 × azeem quits (~azeem@176.201.6.138) (Read error: Connection reset by peer)
22:44:42 × Ariakenom quits (~Ariakenom@2001:9b1:efb:fc00:70b4:9739:defc:32cb) (Quit: Leaving)
22:45:18 azeem joins (~azeem@dynamic-adsl-94-34-50-190.clienti.tiscali.it)
22:45:50 × jlamothe quits (~jlamothe@198.251.57.81) (Quit: leaving)
22:47:32 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:48:33 jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
22:50:38 × BosonCollider quits (~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 258 seconds)
22:51:02 derelict joins (~derelict@user/derelict)
22:51:46 × zeenk quits (~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3) (Quit: Konversation terminated!)
22:53:01 lavaman joins (~lavaman@98.38.249.169)
22:55:39 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a50f:dc97:cbbc:9783)
23:00:21 sekun joins (~sekun@180.190.208.125)
23:02:08 × hseg quits (~gesh@195.192.229.14) (Quit: WeeChat 3.2)
23:08:01 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3-dev)
23:08:20 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
23:13:14 trent2 joins (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
23:17:08 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
23:17:19 × DNH quits (~DNH@8.43.122.6) (Quit: Textual IRC Client: www.textualapp.com)
23:19:49 × shiraeeshi quits (~shiraeesh@109.166.57.36) (Ping timeout: 265 seconds)
23:21:12 × involans quits (~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net) (Ping timeout: 252 seconds)
23:26:49 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 246 seconds)
23:29:32 xsperry joins (~as@user/xsperry)
23:29:33 × xsperry quits (~as@user/xsperry) (Excess Flood)
23:31:33 × jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
23:34:27 Erutuon joins (~Erutuon@user/erutuon)
23:34:47 justsomeguy joins (~justsomeg@user/justsomeguy)
23:36:04 × waleee quits (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 250 seconds)
23:36:43 <justsomeguy> In lambda calculus, is there a name for something that is the opposite of a combinator? (By "opposite of a combinator" I mean a function that does not use any of its bound arguments, or parameters, but only uses free variables, instead.)
23:36:47 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
23:37:13 × TheRAt quits (~TheRAt@user/therat) (Read error: Connection reset by peer)
23:38:17 <hpc> a constant function?
23:38:41 <dolio> That doesn't sound like the opposite of a combinator.
23:40:07 <justsomeguy> Do you mean that my description doesn't sound like the opposite of a combinator, or that a constant function doesn't sound like the opposite of a combinator?
23:41:11 <monochrom> I propose the name "dependency hell". :)
23:41:12 <dolio> The description.
23:41:42 TheRAt joins (~TheRAt@user/therat)
23:42:51 <dolio> The things usable in the body of a combinator are the parameters, application, and previously defined combinators, in the usual formal definition I'm familiar with.
23:43:07 <dolio> So, if it only uses application and previously defined combinators, it's a combinator.
23:44:38 <justsomeguy> In functions that aren't combinators, there is also the possibility of using a variable that is defined in an enclosing scope, which is known as a free variable. So, you can use a variable that isn't in the head of a lambda within a function body.
23:44:40 <dolio> And in combinator calculi, there aren't any other constants that could go in the body of a combinator.
23:45:41 <dminuoso> justsomeguy: So for example the inner lambda in: \x -> \y -> x y ?
23:46:13 <dminuoso> Or rather just: \y -> x y
23:46:17 <dminuoso> This is simpler to talk about
23:46:45 <dminuoso> justsomeguy: Id say its a free expression.
23:47:12 <justsomeguy> No, something like (\x -> a x), is an example of what I'm talking about. The x comes from an enclosing scope, and is not a formal parameter in the lambda head of the function, but is still valid in the (untyped) lambda calculus.
23:47:47 <dminuoso> justsomeguy: Yeah, Id say the opposite of `combinator` is `free expression`
23:47:56 <dminuoso> (where free expression means its some expression with free variables)
23:48:02 <justsomeguy> Free expression sounds about right :^)
23:49:00 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
23:49:19 <justsomeguy> (There is another name for this thing, though, and I wish I could remember it. Oh well.)
23:49:26 UpstreamSalmon joins (uid12077@id-12077.stonehaven.irccloud.com)
23:50:16 fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
23:53:21 <c_wraith> I'm looking at the Applicative laws, and a lot of them seem unusual. Like, Identity, Homomorphism, and Interchange all basically are different forms of "pure is a unit of <*>"
23:53:43 lavaman joins (~lavaman@98.38.249.169)
23:54:14 <monochrom> Yes, but formally it is very difficult to express that because <*> is annoyingly assymetric.
23:54:28 <c_wraith> the only law describing how multiple uses of <*> must interact is the composition law, and it's a really indirect way of essentially saying "<*> is associative"
23:54:28 × fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 246 seconds)
23:54:43 <monochrom> A version of those laws written in liftA2(,) has a much better chance at looking much nicer.
23:54:53 <monochrom> Yes, that too.
23:56:03 <c_wraith> I suppose it does all come down to the type asymmetry between the arguments of <*>
23:57:11 <shachaf> his paper gives that version too: https://www.staff.city.ac.uk/~ross/papers/Applicative.pdf
23:57:24 machinedgod joins (~machinedg@24.105.81.50)
23:57:49 <shachaf> T
23:58:15 <monochrom> Ah, I should have taught that to my students.
23:58:50 <monochrom> I have inflicted the madness of the <*> laws on my students. I feel bad for them.
23:58:51 <shachaf> Page 10, I should have said.
23:59:16 <shachaf> Certainly symmetric versions are much nicer.
23:59:34 <shachaf> Whether liftA2/pure or liftA2 (,)/pure ()

All times are in UTC on 2021-06-23.