2021/06/23

2021-06-23 00:00:00 +0200 <Boarders> is there anywhere that lists which flag -O2 turns on?
2021-06-23 00:00:34 +0200x_kuru(~xkuru@user/xkuru)
2021-06-23 00:00:48 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-23 00:01:48 +0200 <geekosaur> "The easiest way to see what -O (etc.) “really mean” is to run with -v, then stand back in amazement.
2021-06-23 00:01:48 +0200 <geekosaur> "
2021-06-23 00:02:11 +0200 <geekosaur> presumably it's listed in the source code somewhere
2021-06-23 00:02:30 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-23 00:02:57 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-23 00:03:04 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-06-23 00:03:18 +0200xkuru(~xkuru@user/xkuru) (Ping timeout: 258 seconds)
2021-06-23 00:10:16 +0200 <Cale> Boarders: https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/Driver/Session.hs#L3850
2021-06-23 00:11:58 +0200 <Cale> also https://downloads.haskell.org/ghc/latest/docs/html/users_guide/flags.html#options-f-compact
2021-06-23 00:14:17 +0200SoF(~skius@user/skius) (Read error: Connection reset by peer)
2021-06-23 00:14:39 +0200SoF(~skius@user/skius)
2021-06-23 00:16:05 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-23 00:18:20 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
2021-06-23 00:21:32 +0200SoF(~skius@user/skius) (Ping timeout: 252 seconds)
2021-06-23 00:23:40 +0200SoF(~skius@user/skius)
2021-06-23 00:25:37 +0200derelict(~derelict@user/derelict)
2021-06-23 00:26:47 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-06-23 00:27:34 +0200ph88(~ph88@2a02:8109:9e00:7e5c:7c55:3c65:74e1:3dc5) (Quit: Leaving)
2021-06-23 00:29:50 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal)
2021-06-23 00:29:50 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 00:34:35 +0200Morrow_(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 268 seconds)
2021-06-23 00:36:56 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-06-23 00:41:56 +0200GIANTWORLDKEEPER(~pjetcetal@2.95.227.207) (Quit: EXIT)
2021-06-23 00:43:20 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt)
2021-06-23 00:45:55 +0200GIANTWORLDKEEPER(~pjetcetal@2.95.227.207)
2021-06-23 00:47:46 +0200o1lo01ol1o(~o1lo01ol1@bl7-89-228.dsl.telepac.pt) (Ping timeout: 258 seconds)
2021-06-23 00:52:13 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:c14c:3118:b974:8ae3) (Quit: Leaving)
2021-06-23 00:52:44 +0200 <dminuoso> Boarders: There's also a bunch of things that get activated simply based on optimization level without any more granular flags.
2021-06-23 00:54:41 +0200 <dminuoso> https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/StgToCmm/Layout.hs#L215
2021-06-23 00:55:07 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-23 00:56:01 +0200 <dminuoso> https://gitlab.haskell.org/ghc/ghc/-/blob/master/compiler/GHC/Cmm/Pipeline.hs#L146
2021-06-23 00:56:04 +0200 <dminuoso> And few others
2021-06-23 00:57:41 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-06-23 00:58:22 +0200tzar_bomba(~tzar_bomb@78-56-41-78.static.zebra.lt) (Quit: Client closed)
2021-06-23 00:59:58 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-06-23 01:01:27 +0200safinaskar(~safinaska@109-252-90-89.nat.spd-mgts.ru)
2021-06-23 01:01:29 +0200 <safinaskar> https://paste.debian.net/1202082/
2021-06-23 01:01:33 +0200 <safinaskar> why this doesn't compile?
2021-06-23 01:03:29 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-23 01:04:16 +0200shutdown_-h_now(~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl) (Ping timeout: 268 seconds)
2021-06-23 01:05:06 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-23 01:06:57 +0200obfusk(~quassel@a82-161-150-56.adsl.xs4all.nl) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-06-23 01:09:07 +0200obfusk(~quassel@a82-161-150-56.adsl.xs4all.nl)
2021-06-23 01:09:20 +0200mpt(~tom@2a02:908:1862:49e0::3)
2021-06-23 01:09:34 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-06-23 01:09:44 +0200alex3(~alex3@BSN-77-82-41.static.siol.net) (Ping timeout: 268 seconds)
2021-06-23 01:09:45 +0200 <eggplantade> Perhaps it doesn't instantiate parameteric types under @
2021-06-23 01:10:00 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 258 seconds)
2021-06-23 01:10:23 +0200shutdown_-h_now(~arjan@82-75-187-100.cable.dynamic.v4.ziggo.nl)
2021-06-23 01:10:31 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-23 01:10:38 +0200 <eggplantade> oh, it went the other way
2021-06-23 01:11:54 +0200Erutuon(~Erutuon@user/erutuon)
2021-06-23 01:12:18 +0200 <eggplantade> From the error message, it instantiated `IId` as `k -> k` for some new type variable k
2021-06-23 01:14:04 +0200 <eggplantade> This is the same as how when you use the function `id`, the type is `a -> a` for some new type variable a. The type is not `forall a. a -> a`
2021-06-23 01:14:12 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-06-23 01:19:05 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) (Ping timeout: 252 seconds)
2021-06-23 01:21:53 +0200 <Axman6> is there a way to get cabal to build docs for all dependencies of a package locally?
2021-06-23 01:22:34 +0200alex3(~alex3@bsn-77-82-41.static.siol.net)
2021-06-23 01:22:41 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-06-23 01:23:28 +0200mpt(~tom@2a02:908:1862:49e0::3) (Ping timeout: 244 seconds)
2021-06-23 01:25:45 +0200 <safinaskar> eggplantade: the error persists even if I write xx @(IId :: (forall (k :: Type). k -> k))
2021-06-23 01:31:50 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal)
2021-06-23 01:34:11 +0200henninb(~henninb@63.226.174.157)
2021-06-23 01:40:40 +0200chisui(~chisui@200116b866492700f0ddc72238639ee4.dip.versatel-1u1.de) (Ping timeout: 246 seconds)
2021-06-23 01:42:08 +0200 <eggplantade> I just noticed you defined IId as a type synonym
2021-06-23 01:42:54 +0200 <eggplantade> a type family
2021-06-23 01:44:03 +0200 <eggplantade> I think that is the problem. There are restrictions on how you can apply type families to arguments
2021-06-23 01:44:07 +0200 <janus> Axman6: i know you said cabal, but seems like stack can do it: https://www.reddit.com/r/haskell/comments/3glp5v/how_to_download_a_set_of_packages_and/ctz9mw4/
2021-06-23 01:44:08 +0200 <eggplantade> Can you use a newtype family instead
2021-06-23 01:44:21 +0200trent2(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
2021-06-23 01:44:45 +0200 <janus> another person in the thread claims that cabal can do it if you pass --reinstall
2021-06-23 01:45:44 +0200 <safinaskar> eggplantade: this is type synonym, not type family
2021-06-23 01:46:06 +0200 <safinaskar> eggplantade: i don't want newtype family. i want type synonym (or type family)
2021-06-23 01:46:30 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 264 seconds)
2021-06-23 01:47:28 +0200zeenk(~zeenk@2a02:2f04:a00e:6e00:d401:4c92:fecc:16f9) (Quit: Konversation terminated!)
2021-06-23 01:47:34 +0200 <eggplantade> hmm. I haven't seen that syntax with type synonyms before
2021-06-23 01:48:09 +0200 <eggplantade> The way you are using IId looks like you are trying to use a type-level function. However, you can't do that.
2021-06-23 01:49:12 +0200yoctocell(~user@h87-96-130-155.cust.a3fiber.se) (Ping timeout: 268 seconds)
2021-06-23 01:52:00 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-06-23 01:53:12 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-23 01:53:15 +0200chisui(~chisui@200116b866492700342cdc4d594c896c.dip.versatel-1u1.de)
2021-06-23 01:55:02 +0200 <safinaskar> eggplantade: yes, i want this
2021-06-23 01:55:09 +0200 <safinaskar> eggplantade: why i cannot do this?
2021-06-23 01:55:33 +0200fef(~thedawn@user/thedawn)
2021-06-23 01:55:53 +0200 <eggplantade> The type checker's job is to decide whether types are equal, but it is undecidable whether two functions are equal
2021-06-23 01:55:58 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 01:56:41 +0200 <safinaskar> eggplantade: please give some link about this
2021-06-23 01:59:33 +0200 <janus> if you can't know whether an arbitrary recursive function terminates, how would you know if it is equal? i wonder if it follows from the Entscheidungsproblem
2021-06-23 01:59:56 +0200hounded(~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Quit: Leaving)
2021-06-23 02:00:58 +0200 <chisui> Even if you assume that the function terminates, the domain of `forall x. x -> x` is infinitely large.
2021-06-23 02:02:54 +0200 <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?
2021-06-23 02:03:05 +0200trufas(~trufas@177.240.218.218) (Ping timeout: 252 seconds)
2021-06-23 02:03:32 +0200 <Axman6> janus: thanks, I'll give that a go
2021-06-23 02:03:45 +0200trufas(~trufas@177.240.218.218)
2021-06-23 02:04:26 +0200lbseale(~lbseale@user/ep1ctetus) (Ping timeout: 265 seconds)
2021-06-23 02:04:29 +0200 <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
2021-06-23 02:04:52 +0200Feuermagier(~Feuermagi@user/feuermagier)
2021-06-23 02:05:52 +0200lbseale(~lbseale@user/ep1ctetus)
2021-06-23 02:06:21 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 258 seconds)
2021-06-23 02:08:25 +0200peterhil_(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-06-23 02:08:48 +0200 <eggplantade> safinaskar: https://ryanglscott.github.io/2019/05/26/on-the-arity-of-type-families/
2021-06-23 02:09:11 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-06-23 02:09:30 +0200 <safinaskar> ok, thanks everybody
2021-06-23 02:09:34 +0200 <safinaskar> i will read links
2021-06-23 02:12:14 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-23 02:13:15 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
2021-06-23 02:16:18 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2021-06-23 02:18:56 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 265 seconds)
2021-06-23 02:19:18 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2021-06-23 02:20:57 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 02:21:07 +0200pottsy(~pottsy@2400:4050:b560:3700:d9ad:59b1:5f34:93cd) (Quit: Leaving)
2021-06-23 02:25:49 +0200Deide(~Deide@user/deide) (Quit: Seeee yaaaa)
2021-06-23 02:26:52 +0200renzhi(~xp@2607:fa49:6501:9500:5589:4dab:9f77:1a6b)
2021-06-23 02:29:30 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
2021-06-23 02:31:06 +0200henninb(~henninb@63.226.174.157) (Remote host closed the connection)
2021-06-23 02:32:05 +0200lbseale(~lbseale@user/ep1ctetus) (Quit: Leaving)
2021-06-23 02:33:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-23 02:34:29 +0200lbseale(~lbseale@user/ep1ctetus)
2021-06-23 02:35:39 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-06-23 02:37:23 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-06-23 02:37:24 +0200dhil(~dhil@195.213.192.47) (Ping timeout: 258 seconds)
2021-06-23 02:40:08 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds)
2021-06-23 02:40:56 +0200hmmmas(~chenqisu1@183.217.200.246)
2021-06-23 02:43:14 +0200shimin(~liushimin@2409:893c:d32:97:28d4:25fe:fcfb:1863)
2021-06-23 02:43:26 +0200argento(~argent0@168-227-96-26.ptr.westnet.com.ar) (Quit: leaving)
2021-06-23 02:45:45 +0200hmmmas(~chenqisu1@183.217.200.246) (Client Quit)
2021-06-23 02:46:44 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-23 02:49:06 +0200safinaskar(~safinaska@109-252-90-89.nat.spd-mgts.ru) ()
2021-06-23 02:52:06 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 268 seconds)
2021-06-23 02:53:07 +0200hmmmas(~chenqisu1@183.217.200.246)
2021-06-23 02:56:24 +0200stevenxl_(~stevenlei@174.128.182.212)
2021-06-23 02:59:21 +0200 <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.
2021-06-23 02:59:30 +0200stevenxl(~stevenlei@174.128.182.215) (Ping timeout: 268 seconds)
2021-06-23 03:01:44 +0200phma(phma@2001:5b0:210d:d028:dead:9920:575e:b71e) (Read error: Connection reset by peer)
2021-06-23 03:02:14 +0200 <qrpnxz> how do i turn a float into an integer? I've tried like fromInteger . fromIntegral . floor and stuff and gotten nowhere
2021-06-23 03:04:27 +0200 <Clint> qrpnxz: what's wrong with floor
2021-06-23 03:04:46 +0200 <qrpnxz> doesn't work idk let me get the error message
2021-06-23 03:05:02 +0200 <Clint> > floor 5.5
2021-06-23 03:05:04 +0200 <lambdabot> 5
2021-06-23 03:05:24 +0200 <Clint> > round 5.5
2021-06-23 03:05:26 +0200 <lambdabot> 6
2021-06-23 03:05:34 +0200 <qrpnxz> https://termbin.com/fyi2
2021-06-23 03:06:11 +0200 <Clint> get rid of "fromIntegral ."
2021-06-23 03:06:36 +0200 <qrpnxz> wtf lmao
2021-06-23 03:06:41 +0200 <Clint> and what do you mean for take (floor 2.0) [1..] to do?
2021-06-23 03:06:58 +0200 <qrpnxz> i thought i tried that but guess not
2021-06-23 03:07:10 +0200 <qrpnxz> i mean it for it to take 2 ofc since the floor of 2.0 is 2
2021-06-23 03:07:15 +0200 <Clint> ok, just checking
2021-06-23 03:07:17 +0200 <geekosaur> qrpnxz, you want to apply it not compose it, but it would be doing nothing
2021-06-23 03:07:38 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-06-23 03:08:46 +0200 <qrpnxz> oh, the real error in my code is that function will apply more tightly than multiplication rip
2021-06-23 03:11:03 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-06-23 03:11:44 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-23 03:13:09 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-23 03:13:49 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
2021-06-23 03:14:01 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 03:15:05 +0200stevenxl_(~stevenlei@174.128.182.212) (Quit: leaving)
2021-06-23 03:16:06 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 244 seconds)
2021-06-23 03:21:07 +0200chisui(~chisui@200116b866492700342cdc4d594c896c.dip.versatel-1u1.de) (Ping timeout: 246 seconds)
2021-06-23 03:21:44 +0200howdy`(~user@2001:8003:2432:d501:1ea:381d:5464:1a19) (Ping timeout: 252 seconds)
2021-06-23 03:21:46 +0200sheepduck(~sheepduck@user/sheepduck)
2021-06-23 03:22:26 +0200howdy`(~user@2001:8004:1d00:2409:685e:a149:f33:6c38)
2021-06-23 03:23:27 +0200haskl(~haskeller@user/haskl)
2021-06-23 03:25:09 +0200howdy``(~user@2001:8003:2432:d501:7c9a:6d35:e5a2:fb9c)
2021-06-23 03:27:20 +0200howdy`(~user@2001:8004:1d00:2409:685e:a149:f33:6c38) (Ping timeout: 268 seconds)
2021-06-23 03:28:55 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-23 03:32:00 +0200pfurla_(~pfurla@216.131.82.46)
2021-06-23 03:34:49 +0200pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 265 seconds)
2021-06-23 03:37:34 +0200hegstal(~hegstal@2a02:c7f:7604:8a00:7821:4ac6:7f63:f8) (Remote host closed the connection)
2021-06-23 03:40:04 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-06-23 03:44:43 +0200ukari(~ukari@user/ukari)
2021-06-23 03:47:37 +0200trent2(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 244 seconds)
2021-06-23 03:48:08 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
2021-06-23 03:48:25 +0200Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2021-06-23 03:48:32 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-23 03:51:54 +0200shimin(~liushimin@2409:893c:d32:97:28d4:25fe:fcfb:1863) (Ping timeout: 264 seconds)
2021-06-23 03:51:55 +0200mikail_(~mikail@90.212.77.3) (Ping timeout: 268 seconds)
2021-06-23 03:52:49 +0200 <qrpnxz> there a syntax to do like half open ranges on lists like `[0...l]` or smth like that?
2021-06-23 03:54:51 +0200 <glguy> qrpnxz, [0..l-1]
2021-06-23 03:54:52 +0200 <geekosaur> no, and in fact Haskell's story there is a bit strange for some types
2021-06-23 03:55:32 +0200 <geekosaur> notably Double can run past the end of the range under some circumstances
2021-06-23 03:56:57 +0200 <boxscape> > [1.1, 1.31..4]
2021-06-23 03:56:58 +0200 <lambdabot> [1.1,1.31,1.52,1.73,1.94,2.15,2.36,2.57,2.78,2.9899999999999998,3.1999999999...
2021-06-23 03:57:18 +0200 <boxscape> somewhat anticlimactic when lambdabot doesn't show the whole list
2021-06-23 03:58:08 +0200 <qrpnxz> glguy, 😭️
2021-06-23 03:58:12 +0200 <qrpnxz> alright thanks guys
2021-06-23 03:58:38 +0200 <c_wraith> > [1, 2.5 .. 3.5]
2021-06-23 03:58:39 +0200 <lambdabot> [1.0,2.5,4.0]
2021-06-23 03:58:42 +0200 <ChaiTRex> > last [1.1, 1.31..4]
2021-06-23 03:58:44 +0200 <lambdabot> 4.039999999999999
2021-06-23 03:59:14 +0200 <glguy> qrpnxz, I find the languages that do that just make a confusing mess with it
2021-06-23 03:59:41 +0200 <glguy> like Rust's .. and ..=
2021-06-23 03:59:43 +0200 <qrpnxz> i think one language does .. and ..=, which is perfectly legible
2021-06-23 03:59:54 +0200 <qrpnxz> lol
2021-06-23 04:00:09 +0200 <geekosaur> de gustibus…
2021-06-23 04:02:05 +0200xff0x(~xff0x@2001:1a81:5218:4800:ee:cf49:8e18:79e1) (Ping timeout: 244 seconds)
2021-06-23 04:03:50 +0200xff0x(~xff0x@2001:1a81:5256:f800:ed61:c578:88bf:885a)
2021-06-23 04:05:41 +0200 <boxscape> I think with syntax like [1,2...n] or anything similar it clearly seems to suggest that n is inside the list
2021-06-23 04:07:11 +0200 <qrpnxz> .. vs ... is kind of anybodies guess, but .. vs ..= is obvious
2021-06-23 04:08:13 +0200 <glguy> If you're going to have both, then ..< and ..= at least
2021-06-23 04:08:26 +0200 <boxscape> ^
2021-06-23 04:10:11 +0200 <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
2021-06-23 04:14:25 +0200GoodbyeVincent(~GoodbyeVi@55.15.95.92.rev.sfr.net)
2021-06-23 04:16:36 +0200 <boxscape> (It's also strange that RebindableSyntax/OverloadedLists doesn't let you supply your own enumFromTo, I suppose)
2021-06-23 04:17:06 +0200outoftime(~ruslan@46.227.138.42)
2021-06-23 04:19:35 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net)
2021-06-23 04:35:20 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-06-23 04:35:20 +0200FinnElijaGuest3314
2021-06-23 04:35:20 +0200Guest3314(~finn_elij@user/finn-elija/x-0085643) (Killed (cadmium.libera.chat (Nickname regained by services)))
2021-06-23 04:35:20 +0200finn_elijaFinnElija
2021-06-23 04:36:54 +0200alx741(~alx741@181.196.68.156) (Quit: alx741)
2021-06-23 04:41:07 +0200Topsi(~Tobias@dyndsl-095-033-016-151.ewe-ip-backbone.de)
2021-06-23 04:43:06 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-06-23 04:43:11 +0200ddellacosta(~ddellacos@ool-44c73aff.dyn.optonline.net) (Remote host closed the connection)
2021-06-23 04:44:46 +0200 <outoftime> Does Haskell have an arbitrary precision fraction data type? I can not loose precision been working with values of +-10^128.
2021-06-23 04:45:09 +0200 <glguy> outoftime, it has Rational
2021-06-23 04:45:57 +0200 <Axman6> > 2^255 % 3^127
2021-06-23 04:45:59 +0200 <lambdabot> 5789604461865809771178549250434395392663499233282028201972879200395656481996...
2021-06-23 04:46:14 +0200 <Axman6> :t 2^255 % 3^127
2021-06-23 04:46:15 +0200 <lambdabot> Integral a => Ratio a
2021-06-23 04:48:06 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 04:52:55 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-23 04:53:50 +0200pieguy128(~pieguy128@bas1-montreal02-65-92-163-194.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in)
2021-06-23 04:54:09 +0200pieguy128(~pieguy128@bas1-montreal02-65-92-163-194.dsl.bell.ca)
2021-06-23 04:54:54 +0200renzhi(~xp@2607:fa49:6501:9500:5589:4dab:9f77:1a6b) (Ping timeout: 268 seconds)
2021-06-23 04:55:48 +0200td_(~td@94.134.91.59) (Ping timeout: 252 seconds)
2021-06-23 04:57:13 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-23 04:57:42 +0200td_(~td@muedsl-82-207-238-055.citykom.de)
2021-06-23 05:00:52 +0200 <Cale> Axman6: Ah yes, the just interval between C and an F♭♭♭♭♭♭♭♭♭♭♭♭♭♭♭♭♭♭ 53 octaves above it
2021-06-23 05:01:50 +0200phma(phma@2001:5b0:210d:d028:4f8f:d565:65bb:29c2)
2021-06-23 05:01:53 +0200 <peddie> outoftime: you can use a library like `hmpfr` or `qd` to get a higher precision floating-point type
2021-06-23 05:03:50 +0200 <qrpnxz> but why, it's built in
2021-06-23 05:04:10 +0200 <qrpnxz> hey, does type Name = Int actually create a new type or is this an alias?
2021-06-23 05:04:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-23 05:04:17 +0200pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-06-23 05:04:48 +0200 <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
2021-06-23 05:05:06 +0200 <qrpnxz> there is also bigfloat, i forget what it's called tho
2021-06-23 05:05:39 +0200 <peddie> qrpnxz: there are bindings to libbf, but they don't include many functions right now
2021-06-23 05:06:10 +0200trent2(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
2021-06-23 05:06:52 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-23 05:06:52 +0200 <peddie> qrpnxz: `type Name = Int` is an alias; you can use `newtype` to create a new type
2021-06-23 05:06:57 +0200 <qrpnxz> ty
2021-06-23 05:07:10 +0200pfurla_(~pfurla@216.131.82.46) (Ping timeout: 252 seconds)
2021-06-23 05:07:53 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 252 seconds)
2021-06-23 05:09:47 +0200 <qrpnxz> ah, there's no bigfloat, ig you can just use Integer then
2021-06-23 05:11:29 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
2021-06-23 05:12:42 +0200juhp(~juhp@128.106.188.66) (Quit: juhp)
2021-06-23 05:12:51 +0200 <monochrom> Haha Cale you have abstract perfect pitch.
2021-06-23 05:12:56 +0200juhp(~juhp@128.106.188.66)
2021-06-23 05:13:35 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-06-23 05:13:57 +0200pottsy(~pottsy@2400:4050:b560:3700:f364:dfb7:d56f:99c4)
2021-06-23 05:14:06 +0200 <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)
2021-06-23 05:15:07 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: Textual IRC Client: www.textualapp.com)
2021-06-23 05:15:18 +0200Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net) (Quit: Leaving)
2021-06-23 05:15:31 +0200talismanick(~user@2601:644:8502:d700::94c9)
2021-06-23 05:15:57 +0200 <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.
2021-06-23 05:16:29 +0200 <outoftime> *Fraction (Integer a) (Integer b)
2021-06-23 05:16:39 +0200 <ChaiTRex> outoftime: Data.Ratio
2021-06-23 05:17:04 +0200 <talismanick> Cabal v3.* uses the new commands by default, right?
2021-06-23 05:17:12 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 05:17:30 +0200 <talismanick> e.g. "cabal install" is the same as "cabal v2-install" or "cabal new-install" in Cabal v2.*
2021-06-23 05:17:49 +0200bone-baboon(~bone-babo@37.19.198.11)
2021-06-23 05:18:09 +0200 <talismanick> Please tell me I haven't been priming my system for Cabal Hell
2021-06-23 05:21:12 +0200 <peddie> outoftime: that's the Rational type
2021-06-23 05:21:13 +0200 <monochrom> Yes, v2- is the default.
2021-06-23 05:22:12 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-23 05:22:55 +0200 <outoftime> ChaiTRex: thank you!
2021-06-23 05:25:50 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-06-23 05:26:27 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-23 05:26:39 +0200 <ChaiTRex> No problem.
2021-06-23 05:26:42 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 264 seconds)
2021-06-23 05:26:50 +0200Morrow_(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
2021-06-23 05:27:33 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 05:30:24 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-06-23 05:30:33 +0200justBulljustK
2021-06-23 05:31:20 +0200hmmmas(~chenqisu1@183.217.200.246) (Quit: Leaving.)
2021-06-23 05:32:14 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-06-23 05:33:12 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-06-23 05:33:12 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 252 seconds)
2021-06-23 05:33:29 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-06-23 05:33:44 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 258 seconds)
2021-06-23 05:33:51 +0200x_kuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-06-23 05:34:17 +0200Morrow_(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 268 seconds)
2021-06-23 05:35:44 +0200JSharpJSharp_
2021-06-23 05:35:48 +0200JSharp_JSharp__
2021-06-23 05:35:51 +0200JSharp__jaesharp
2021-06-23 05:35:54 +0200jaesharpjaesharp_
2021-06-23 05:35:59 +0200jaesharp_jaesharp__
2021-06-23 05:36:35 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-06-23 05:37:13 +0200jaesharp__JSharp
2021-06-23 05:38:18 +0200JSharpRachel
2021-06-23 05:38:33 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-06-23 05:38:38 +0200RachelRachel_
2021-06-23 05:38:40 +0200Rachel_Rachel__
2021-06-23 05:38:43 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds)
2021-06-23 05:38:43 +0200Lord_of_Life_Lord_of_Life
2021-06-23 05:38:52 +0200Rachel__JSharp
2021-06-23 05:39:14 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-06-23 05:40:22 +0200 <guest61> JSharp please stop flooding
2021-06-23 05:43:21 +0200 <bone-baboon> Can lambdabot be used to help answer FAQ that repeatedly come up in a IRC channel?
2021-06-23 05:44:06 +0200 <JSharp> guest61: I thought I parted all of my channels :/ - sorry about that!
2021-06-23 05:45:48 +0200sekun(~sekun@180.190.208.125)
2021-06-23 05:46:17 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-06-23 05:48:47 +0200 <boxscape> @where TAPL
2021-06-23 05:48:47 +0200 <lambdabot> "Types and Programming Languages" by Benjamin C. Pierce in 2002-02-01 at <https://www.cis.upenn.edu/~bcpierce/tapl/>
2021-06-23 05:49:00 +0200 <boxscape> bone-baboon: you can have it remember things for arbitrary keywords ^
2021-06-23 05:50:16 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-23 05:52:36 +0200Morrow(~MorrowM_@147.161.13.60)
2021-06-23 05:52:54 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-06-23 05:53:16 +0200MorrowM(~MorrowM_@147.161.13.60)
2021-06-23 05:53:48 +0200 <qrpnxz> there a way to derive the number typeclasses for things like newtype X a = X Float?
2021-06-23 05:54:30 +0200Morrow_(~MorrowM_@147.161.13.60)
2021-06-23 05:54:50 +0200 <bone-baboon> boxscape: Thanks
2021-06-23 05:56:10 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-06-23 05:57:01 +0200v01d4lph4(~v01d4lph4@122.160.65.250)
2021-06-23 05:57:01 +0200v01d4lph4(~v01d4lph4@122.160.65.250) (Changing host)
2021-06-23 05:57:01 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-06-23 05:57:02 +0200Morrow(~MorrowM_@147.161.13.60) (Ping timeout: 252 seconds)
2021-06-23 05:58:57 +0200MorrowM(~MorrowM_@147.161.13.60) (Ping timeout: 268 seconds)
2021-06-23 05:59:27 +0200 <boxscape> % :set -XGeneralizedNewtypeDeriving
2021-06-23 05:59:27 +0200 <yahb> boxscape:
2021-06-23 05:59:34 +0200 <boxscape> % newtype X a = X Float deriving Num
2021-06-23 05:59:34 +0200 <yahb> boxscape:
2021-06-23 05:59:36 +0200 <boxscape> qrpnxz: ^
2021-06-23 06:00:02 +0200 <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
2021-06-23 06:00:53 +0200Topsi(~Tobias@dyndsl-095-033-016-151.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-06-23 06:11:42 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-06-23 06:15:07 +0200 <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]`.
2021-06-23 06:18:10 +0200 <sm[m]> why do some people dislike Data.Default (def) ? Is it because it's harder for IDEs to show the definition ?
2021-06-23 06:19:30 +0200 <JSharp> boxscape: I saw that yesterday on TweagIO's YouTube video - *very cool* - it's so easy to miss super useful extensions.
2021-06-23 06:19:37 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-06-23 06:23:49 +0200 <glguy> sm[m], it generally only makes code more complicated
2021-06-23 06:24:05 +0200 <glguy> for everyone put the person who got to save some keystrokes when writing that bit of code
2021-06-23 06:24:11 +0200 <glguy> but the*
2021-06-23 06:24:43 +0200 <sm[m]> glguy: I see
2021-06-23 06:24:53 +0200 <sm[m]> I'm getting the feeling it's the same with lenses, but the benefits are a bit more
2021-06-23 06:24:59 +0200 <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
2021-06-23 06:25:04 +0200TranquilEcho(~grom@user/tranquilecho) (Quit: WeeChat 2.8)
2021-06-23 06:25:17 +0200 <sm[m]> both these break IDE code navigation
2021-06-23 06:25:43 +0200 <glguy> You mean if you use TH to generate them?
2021-06-23 06:25:51 +0200 <sm[m]> yes
2021-06-23 06:25:59 +0200 <sm[m]> if we avoid TH I guess they are navigable then
2021-06-23 06:26:25 +0200 <glguy> the definition of lenses can be guessed correctly, at least
2021-06-23 06:26:36 +0200 <glguy> for the kinds of things TH can generate
2021-06-23 06:26:44 +0200 <sm[m]> I might be getting finally dragged into the world of lens...
2021-06-23 06:27:57 +0200 <glguy> What're you lensing?
2021-06-23 06:28:01 +0200 <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
2021-06-23 06:28:05 +0200 <glguy> which implementation are you using?
2021-06-23 06:28:14 +0200 <sm[m]> glguy: I'm reviewing a PR adding lenses to lots of hledger types
2021-06-23 06:28:32 +0200 <sm[m]> microlens, classy lenses made with TH
2021-06-23 06:30:43 +0200 <sm[m]> (https://github.com/simonmichael/hledger/pull/1545)
2021-06-23 06:30:55 +0200 <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
2021-06-23 06:31:03 +0200 <boxscape> s/spend/spent
2021-06-23 06:31:30 +0200Morrow_(~MorrowM_@147.161.13.60) (Ping timeout: 252 seconds)
2021-06-23 06:31:40 +0200 <boxscape> JSharp: oh, better link: https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/table.html
2021-06-23 06:32:05 +0200 <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.
2021-06-23 06:33:05 +0200 <boxscape> yeah the docs could probably be better here and there
2021-06-23 06:35:30 +0200 <glguy> sm[m], that's sure a lot to review
2021-06-23 06:36:12 +0200 <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.
2021-06-23 06:36:47 +0200 <JSharp> and that's fine, of course - but it does present a challenge for onboarding, as it were.
2021-06-23 06:37:18 +0200 <outoftime> How to improve speed of https://pastebin.ubuntu.com/p/kdjHGFT3tG/ ?
2021-06-23 06:37:31 +0200 <JSharp> I doubt that I'm making any sort of a novel observation here
2021-06-23 06:38:59 +0200 <JSharp> outoftime: https://blog.jez.io/profiling-in-haskell/
2021-06-23 06:39:41 +0200tusko(~yeurt@user/tusko)
2021-06-23 06:39:51 +0200 <tusko> how does one learn haskell?
2021-06-23 06:40:24 +0200 <glguy> mostly by writing programs in it
2021-06-23 06:40:30 +0200 <siraben> practice
2021-06-23 06:40:34 +0200 <dsal> tusko: depends on which one. I alternate between solving problems in haskell and reading about other people solving problems in haskell
2021-06-23 06:40:36 +0200 <JSharp> tusko: what's your experience with programming in general?
2021-06-23 06:41:04 +0200 <tusko> C, C++, Python, Java, Tcl, Lisp, some Scala
2021-06-23 06:41:13 +0200wei2912(~wei2912@112.199.250.21)
2021-06-23 06:41:26 +0200 <tusko> I've done various things
2021-06-23 06:42:18 +0200 <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
2021-06-23 06:42:20 +0200 <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?
2021-06-23 06:42:37 +0200 <dsal> In my parser, it basically consumes all the stuff into a list and then folds it, which defers failures.
2021-06-23 06:43:22 +0200 <boxscape> JSharp tusko : I don't think LYAH has exercises. https://www.seas.upenn.edu/~cis194/spring13/lectures.html for example does, though
2021-06-23 06:44:15 +0200 <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.
2021-06-23 06:44:46 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 265 seconds)
2021-06-23 06:47:19 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection)
2021-06-23 06:47:44 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-23 06:47:45 +0200lavaman(~lavaman@98.38.249.169) (Read error: Connection reset by peer)
2021-06-23 06:48:04 +0200lavaman(~lavaman@98.38.249.169)
2021-06-23 06:49:24 +0200 <sm[m]> glguy: is it ? I'm.. getting used to it. IntelliJ IDEA or VS Code helps (neither is perfect, alas)
2021-06-23 06:49:46 +0200 <glguy> I just mean that it touches a lot of files is all
2021-06-23 06:49:59 +0200 <glguy> Do either of those IDEs help you keep track of what you've reviewed so far?
2021-06-23 06:50:32 +0200 <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
2021-06-23 06:51:01 +0200 <sm[m]> VS Code
2021-06-23 06:51:32 +0200 <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
2021-06-23 06:51:33 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-06-23 06:52:11 +0200 <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
2021-06-23 06:52:33 +0200 <sm[m]> but, Code can navigate your code with hls. I wish IDEA could
2021-06-23 06:52:51 +0200 <glguy> yeah, hls makes a big difference
2021-06-23 06:53:09 +0200 <sm[m]> IDEAs find is so good it almost doesn't matter, but..
2021-06-23 06:54:00 +0200 <boxscape> can hls show you usage sites of names?
2021-06-23 06:54:29 +0200 <sm[m]> yes, I believe that's a normal feature now
2021-06-23 06:54:32 +0200 <boxscape> ah, nice
2021-06-23 06:55:00 +0200 <sm[m]> oh, maybe the thing that doesn't work yet is usage sites in other packages within your project. Not sure
2021-06-23 06:55:13 +0200 <boxscape> ah, well, understandable
2021-06-23 06:55:29 +0200 <sm[m]> bah :)
2021-06-23 07:02:31 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.)
2021-06-23 07:07:29 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 265 seconds)
2021-06-23 07:08:27 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-23 07:09:57 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
2021-06-23 07:10:01 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-06-23 07:12:30 +0200Morrow_(~MorrowM_@147.161.13.60)
2021-06-23 07:13:01 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 258 seconds)
2021-06-23 07:13:32 +0200chaosite(~chaosite@user/chaosite)
2021-06-23 07:14:51 +0200justsomeguy(~justsomeg@user/justsomeguy) (WeeChat 3.0.1)
2021-06-23 07:17:10 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-06-23 07:18:26 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 252 seconds)
2021-06-23 07:22:53 +0200jneira(~jneira@212.8.115.226)
2021-06-23 07:24:45 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
2021-06-23 07:25:44 +0200 <outoftime> sm[m]: aren't you using emacs/vim?
2021-06-23 07:26:37 +0200gentauro_(~gentauro@taa-cgn11.kviknet.dk)
2021-06-23 07:27:17 +0200 <sm[m]> outoftime: emacs too, yes
2021-06-23 07:27:56 +0200 <sm[m]> I fire up code or IDEA for some coding and especially for reviewing PRs
2021-06-23 07:28:28 +0200deshalb(~deshalb@user/deshalb)
2021-06-23 07:28:41 +0200gzj(~GZJ0X@96.45.188.88.16clouds.com)
2021-06-23 07:29:21 +0200 <sm[m]> is there a way to automatically generate the non-TH boilerplate code for lenses ?
2021-06-23 07:30:12 +0200gentauro(~gentauro@user/gentauro) (Ping timeout: 265 seconds)
2021-06-23 07:33:24 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4)
2021-06-23 07:34:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-23 07:36:33 +0200 <outoftime> `liftM2 (,) [0..12000] [0..12000]` can this be improved in terms of speed?
2021-06-23 07:37:12 +0200 <Axman6> not really
2021-06-23 07:40:26 +0200 <jophish> <outoftime "`liftM2 (,) [0..12000] [0..12000"> What are you trying to do with this though?
2021-06-23 07:45:18 +0200 <outoftime> jophish: https://pastebin.ubuntu.com/p/kdjHGFT3tG/
2021-06-23 07:46:08 +0200Xnuk(~xnuk@vultr.xnu.kr) (Quit: ZNC - https://znc.in)
2021-06-23 07:46:22 +0200jneira_(~jneira_@131.red-79-155-1.dynamicip.rima-tde.net) (Ping timeout: 258 seconds)
2021-06-23 07:46:26 +0200Xnuk(~xnuk@45.76.202.58)
2021-06-23 07:46:27 +0200killsushi(~killsushi@user/killsushi)
2021-06-23 07:46:50 +0200 <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
2021-06-23 07:48:29 +0200 <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
2021-06-23 07:48:37 +0200 <outoftime> Maybe it is because stack has separate lib module. Anyway, profiling didn't help.
2021-06-23 07:48:54 +0200 <outoftime> Axman6: genRange is like instant
2021-06-23 07:49:06 +0200TheCoffeMaker_(~TheCoffeM@125-121-245-190.fibertel.com.ar) (Quit: So long and thanks for all the fish)
2021-06-23 07:49:19 +0200 <Axman6> is last genRange instance?
2021-06-23 07:49:27 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2021-06-23 07:50:11 +0200 <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
2021-06-23 07:50:20 +0200 <outoftime> `where normalized = genRange abs` this should not be executed multiple times, am I wrong?
2021-06-23 07:50:47 +0200 <Axman6> it will cause the whole list to be retained in memory though
2021-06-23 07:51:26 +0200 <jophish> keeping that product in memory is also like 3GB, perhaps there's a way you can stream it to whatever's consuming it
2021-06-23 07:51:30 +0200 <jophish> (maybe you're doing that already)
2021-06-23 07:52:09 +0200 <Axman6> hmm, actually I think both ways will force it to be retained anyway
2021-06-23 07:52:16 +0200 <outoftime> jophish: right now I'm just taking length of that list, no processing done...
2021-06-23 07:52:31 +0200 <jophish> ah, k
2021-06-23 07:52:46 +0200 <outoftime> I mean it gets consumed
2021-06-23 07:53:00 +0200 <jophish> <Axman6 "hmm, actually I think both ways "> yeah, the little lists, but they're only 12001 elements long right?
2021-06-23 07:53:23 +0200 <Axman6> depends on abs
2021-06-23 07:53:29 +0200 <outoftime> 12500 or so
2021-06-23 07:53:49 +0200 <outoftime> total 146M elements
2021-06-23 07:56:36 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-06-23 07:57:19 +0200chaosite(~chaosite@user/chaosite)
2021-06-23 07:58:48 +0200 <qrpnxz> i was able to derive num, fractional, and floating, but not real
2021-06-23 08:01:37 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-06-23 08:02:28 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 258 seconds)
2021-06-23 08:04:36 +0200chaosite(~chaosite@user/chaosite)
2021-06-23 08:05:58 +0200Morrow_(~MorrowM_@147.161.13.60) (Ping timeout: 265 seconds)
2021-06-23 08:06:48 +0200 <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.
2021-06-23 08:07:15 +0200 <outoftime> Do you know any way to make parallel execution?
2021-06-23 08:07:23 +0200 <Axman6> no, normalised basically gives a name for a single object in the heap that both uses reference
2021-06-23 08:08:40 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-06-23 08:10:18 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 268 seconds)
2021-06-23 08:10:19 +0200fef(~thedawn@user/thedawn)
2021-06-23 08:12:06 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-06-23 08:12:32 +0200aman(~aman@user/aman)
2021-06-23 08:12:46 +0200fef(~thedawn@user/thedawn)
2021-06-23 08:14:21 +0200CookE[](~thedawn@user/thedawn)
2021-06-23 08:15:13 +0200 <qrpnxz> what is the purpose of the GHC hierarchy?
2021-06-23 08:17:42 +0200 <Axman6> it
2021-06-23 08:17:48 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-06-23 08:18:08 +0200 <Axman6> it's where definitions specific to GHC live, many of which are reexported in standard modules like Prelude, Data.List etc.
2021-06-23 08:18:09 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-23 08:23:10 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-06-23 08:23:29 +0200 <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:powM…
2021-06-23 08:25:04 +0200mud(~mud@user/kadoban) (Ping timeout: 244 seconds)
2021-06-23 08:25:26 +0200awth13(~user@user/awth13)
2021-06-23 08:26:53 +0200mud(~mud@user/kadoban)
2021-06-23 08:29:02 +0200michalz(~michalz@185.246.204.125)
2021-06-23 08:29:56 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-23 08:30:49 +0200leeb_(~leeb@KD111239153068.au-net.ne.jp)
2021-06-23 08:31:18 +0200CookE[]fef
2021-06-23 08:34:00 +0200leeb(~leeb@KD111239153143.au-net.ne.jp) (Ping timeout: 265 seconds)
2021-06-23 08:34:31 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-06-23 08:35:05 +0200harry(~harry@92.234.0.237) (Ping timeout: 272 seconds)
2021-06-23 08:35:27 +0200mud(~mud@user/kadoban) (Ping timeout: 265 seconds)
2021-06-23 08:36:27 +0200mud(~mud@user/kadoban)
2021-06-23 08:36:47 +0200berberman(~berberman@user/berberman)
2021-06-23 08:38:06 +0200berberman_(~berberman@user/berberman) (Ping timeout: 264 seconds)
2021-06-23 08:42:42 +0200mud(~mud@user/kadoban) (Ping timeout: 265 seconds)
2021-06-23 08:43:36 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-06-23 08:44:18 +0200tcard(~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving)
2021-06-23 08:45:42 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:d7c7:704e:32f2:af10)
2021-06-23 08:47:10 +0200michalz(~michalz@185.246.204.125) (Remote host closed the connection)
2021-06-23 08:49:40 +0200michalz(~michalz@185.246.204.114)
2021-06-23 08:50:46 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 258 seconds)
2021-06-23 08:52:08 +0200chaosite(~chaosite@user/chaosite)
2021-06-23 08:53:06 +0200tcard(~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp)
2021-06-23 08:54:52 +0200 <talismanick> Is it worth using vabal nowadays? Ironically, I had to go back in versions with ghcup manually to install it.
2021-06-23 08:55:39 +0200 <dminuoso> talismanick: Perhaps there's some issue with ghcup or the way you use it.
2021-06-23 08:55:57 +0200 <dminuoso> cabal-install is not better or worse than the alternatives like stack
2021-06-23 08:56:21 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-23 08:56:28 +0200 <dminuoso> Id say the community is largely split 47/47/6 on cabal/stack/nix
2021-06-23 08:57:15 +0200 <talismanick> dminuoso: Nothing wrong here. It's just that vabal depends on base base > 4.11.0 and < 4.13.0
2021-06-23 08:57:17 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 258 seconds)
2021-06-23 08:57:34 +0200 <dminuoso> Hold on, vabal?
2021-06-23 08:57:40 +0200 <tomsmeding> https://github.com/vabal/vabal
2021-06-23 08:57:42 +0200 <talismanick> so I used ghcup to fetch 4.12.0 and installed vabal
2021-06-23 08:57:42 +0200tomsmedingthinks
2021-06-23 08:57:52 +0200charukiewicz(~quassel@irouteince04.i.subnet.rcn.com) (Ping timeout: 268 seconds)
2021-06-23 08:57:58 +0200 <dminuoso> Okay, I really thought that was just a typo and you meant cabal
2021-06-23 08:58:00 +0200mpt(~tom@2a02:908:1862:49e0::3)
2021-06-23 08:58:14 +0200charukiewicz(~quassel@irouteince04.i.subnet.rcn.com)
2021-06-23 08:58:31 +0200 <talismanick> I have befuddled once again
2021-06-23 08:58:45 +0200 <dminuoso> tomsmeding: vabal hasnt been updated in close to 2 years it seems
2021-06-23 08:58:50 +0200 <dminuoso> Or talismanick.
2021-06-23 08:58:54 +0200 <dminuoso> Two nicks with t is hard.
2021-06-23 08:59:00 +0200 <tomsmeding> yes
2021-06-23 08:59:09 +0200 <tomsmeding> we befuddle once more
2021-06-23 08:59:26 +0200chaosite(~chaosite@user/chaosite)
2021-06-23 08:59:32 +0200 <dminuoso> vabal does indeed look like a nice thing.
2021-06-23 08:59:51 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-06-23 09:00:26 +0200 <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)
2021-06-23 09:00:34 +0200 <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?
2021-06-23 09:00:45 +0200 <dminuoso> (constraint solving by presumably calling into Cabal-lib)
2021-06-23 09:01:43 +0200 <talismanick> Speaking of which, are there maintained alternatives to LambdaCMS and clckwrks? Once I get it to compile, clckwrks looks promising.
2021-06-23 09:02:03 +0200 <talismanick> (It has recent commits, but it seems to be in "maintenance mode" AFAICT)
2021-06-23 09:03:23 +0200chele(~chele@user/chele)
2021-06-23 09:04:24 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 252 seconds)
2021-06-23 09:05:04 +0200 <talismanick> I could set the GHC version manually via ghcup and be on my way, but aren't we in the 21st century?
2021-06-23 09:06:47 +0200 <dminuoso> talismanick: Just remember that ghcup manipulates global state
2021-06-23 09:06:54 +0200Morrow(~MorrowM_@147.161.13.60)
2021-06-23 09:08:42 +0200 <cdsmith> 0
2021-06-23 09:08:52 +0200 <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.
2021-06-23 09:09:00 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-23 09:10:51 +0200 <dminuoso> talismanick: I dont mean to sway you away from vabal, but you could also use nix-shell to do the same thing
2021-06-23 09:10:58 +0200 <lortabac> IIRC there was this idea of integrating vabal's functionality into ghcup, not sure if it's still the case
2021-06-23 09:11:04 +0200 <dminuoso> At least for that I could help you, as I have no experience with vabal
2021-06-23 09:11:05 +0200talismanicksummons his courage and tries "vabal configure"
2021-06-23 09:11:08 +0200 <lortabac> https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/99
2021-06-23 09:11:19 +0200 <talismanick> already regretting this
2021-06-23 09:11:45 +0200 <dminuoso> talismanick: nix-shell has the unique benefit that this doesnt need any rely on global state management of "the active version"
2021-06-23 09:11:56 +0200gehmehgeh(~user@user/gehmehgeh)
2021-06-23 09:11:58 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-06-23 09:12:26 +0200 <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
2021-06-23 09:12:26 +0200 <talismanick> dminuoso: I once tried to configure Nix (atop Void Linux). Never again. No hard feelings, but "nope".
2021-06-23 09:12:40 +0200sekun(~sekun@180.190.208.125) (Ping timeout: 265 seconds)
2021-06-23 09:12:41 +0200 <talismanick> Seems cool, gave me a migraine
2021-06-23 09:12:50 +0200dminuososhrugs
2021-06-23 09:13:49 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-06-23 09:15:54 +0200sheepduck(~sheepduck@user/sheepduck) (Remote host closed the connection)
2021-06-23 09:16:04 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-06-23 09:16:31 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-23 09:17:06 +0200leah2(~leah@vuxu.org) (Ping timeout: 240 seconds)
2021-06-23 09:18:33 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Quit: mikoto-chan)
2021-06-23 09:20:52 +0200leah2(~leah@vuxu.org)
2021-06-23 09:23:06 +0200vpan(~vilius@212.117.1.172)
2021-06-23 09:23:35 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-23 09:24:04 +0200trcc(~trcc@users-1190.st.net.au.dk)
2021-06-23 09:25:59 +0200fendor(~fendor@178.115.129.107.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-06-23 09:28:05 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Ping timeout: 268 seconds)
2021-06-23 09:29:08 +0200trent2(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 244 seconds)
2021-06-23 09:30:07 +0200trent2(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
2021-06-23 09:30:29 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-23 09:31:14 +0200 <talismanick> Actually...
2021-06-23 09:32:11 +0200 <talismanick> nvm
2021-06-23 09:34:05 +0200mpt(~tom@2a02:908:1862:49e0::3) (Ping timeout: 252 seconds)
2021-06-23 09:39:14 +0200jakalx(~jakalx@base.jakalx.net)
2021-06-23 09:41:26 +0200tusko(~yeurt@user/tusko) (Remote host closed the connection)
2021-06-23 09:41:43 +0200tusko(~yeurt@user/tusko)
2021-06-23 09:45:09 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-23 09:46:55 +0200chaosite(~chaosite@user/chaosite)
2021-06-23 09:47:06 +0200euandreh_(~euandreh@2804:14c:33:9fe5:3fd5:92e4:b3b4:44e0) (Ping timeout: 240 seconds)
2021-06-23 09:48:08 +0200euandreh_(~euandreh@2804:14c:33:9fe5:a60:af0:9ad8:d1f7)
2021-06-23 09:52:04 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 252 seconds)
2021-06-23 09:52:04 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 252 seconds)
2021-06-23 09:53:01 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-06-23 09:54:30 +0200chaosite(~chaosite@user/chaosite)
2021-06-23 09:55:37 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Remote host closed the connection)
2021-06-23 09:58:37 +0200bone-baboon(~bone-babo@37.19.198.11) (Ping timeout: 258 seconds)
2021-06-23 09:59:33 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 265 seconds)
2021-06-23 10:11:07 +0200 <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.
2021-06-23 10:11:09 +0200hendursa1(~weechat@user/hendursaga)
2021-06-23 10:11:59 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-06-23 10:12:35 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-06-23 10:14:03 +0200chaosite(~chaosite@user/chaosite)
2021-06-23 10:14:20 +0200trent2(~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 268 seconds)
2021-06-23 10:14:23 +0200 <maerwald> talismanick: I believe Franciman is vabal maintainer
2021-06-23 10:15:02 +0200 <peddie> outoftime: catMaybes
2021-06-23 10:15:31 +0200 <peddie> :t catMaybe
2021-06-23 10:15:32 +0200 <lambdabot> error:
2021-06-23 10:15:32 +0200 <lambdabot> • Variable not in scope: catMaybe
2021-06-23 10:15:32 +0200 <lambdabot> • Perhaps you meant one of these:
2021-06-23 10:15:41 +0200 <merijn> :t catMaybes
2021-06-23 10:15:42 +0200 <lambdabot> [Maybe a] -> [a]
2021-06-23 10:15:45 +0200 <merijn> Alternatively
2021-06-23 10:15:52 +0200 <merijn> Don't make a list of Maybe a to begin with
2021-06-23 10:15:54 +0200 <merijn> :t mapMaybe
2021-06-23 10:15:56 +0200 <lambdabot> (a -> Maybe b) -> [a] -> [b]
2021-06-23 10:16:59 +0200derelict(~derelict@user/derelict) (Ping timeout: 252 seconds)
2021-06-23 10:16:59 +0200 <maerwald> talismanick: also, feel free to provide patches for https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/99
2021-06-23 10:17:09 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-06-23 10:17:32 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-06-23 10:17:32 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-06-23 10:18:13 +0200xff0x(~xff0x@2001:1a81:5256:f800:ed61:c578:88bf:885a) (Ping timeout: 244 seconds)
2021-06-23 10:18:53 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 265 seconds)
2021-06-23 10:19:02 +0200xff0x(~xff0x@port-92-193-228-27.dynamic.as20676.net)
2021-06-23 10:19:56 +0200Morrow(~MorrowM_@147.161.13.60) (Ping timeout: 252 seconds)
2021-06-23 10:28:56 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-23 10:33:30 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 252 seconds)
2021-06-23 10:37:51 +0200Nak50(~Nak@2604:3d08:2678:cc00::4b6a)
2021-06-23 10:40:30 +0200gentauro_(~gentauro@taa-cgn11.kviknet.dk) (Changing host)
2021-06-23 10:40:30 +0200gentauro_(~gentauro@user/gentauro)
2021-06-23 10:42:08 +0200Guest25(~Guest25@l37-195-240-36.novotelecom.ru)
2021-06-23 10:45:54 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2021-06-23 10:47:36 +0200__monty__(~toonn@user/toonn)
2021-06-23 10:54:18 +0200johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0)
2021-06-23 10:54:34 +0200 <phaazon> just wrote a bunch of linear functions… it felt good
2021-06-23 10:55:39 +0200Guest25(~Guest25@l37-195-240-36.novotelecom.ru) (Quit: Client closed)
2021-06-23 10:56:01 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-23 10:57:13 +0200yoctocell(~user@h87-96-130-155.cust.a3fiber.se)
2021-06-23 10:59:08 +0200hegstal(~hegstal@2a02:c7f:7604:8a00:5796:3b40:5569:c90)
2021-06-23 11:00:18 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 240 seconds)
2021-06-23 11:01:58 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-23 11:04:15 +0200bontaq(~user@ool-18e47f8d.dyn.optonline.net)
2021-06-23 11:08:43 +0200Nak50(~Nak@2604:3d08:2678:cc00::4b6a) (Ping timeout: 246 seconds)
2021-06-23 11:10:00 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-23 11:10:47 +0200jneira(~jneira@212.8.115.226) (Quit: Client closed)
2021-06-23 11:11:23 +0200jneira(~jneira@212.8.115.226)
2021-06-23 11:12:32 +0200azeem(~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) (Ping timeout: 265 seconds)
2021-06-23 11:14:03 +0200azeem(~azeem@176.201.6.138)
2021-06-23 11:17:47 +0200cfricke(~cfricke@user/cfricke)
2021-06-23 11:23:56 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
2021-06-23 11:29:51 +0200azeem(~azeem@176.201.6.138) (Ping timeout: 258 seconds)
2021-06-23 11:32:00 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-06-23 11:33:05 +0200azeem(~azeem@176.201.6.138)
2021-06-23 11:33:07 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-06-23 11:36:13 +0200 <outoftime> May I ask what you think about this code https://pastebin.ubuntu.com/p/Z9ZQs9k84s/ ?
2021-06-23 11:36:18 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:70b4:9739:defc:32cb)
2021-06-23 11:38:15 +0200killsushi(~killsushi@user/killsushi) (Quit: Leaving)
2021-06-23 11:43:54 +0200azeem(~azeem@176.201.6.138) (Ping timeout: 252 seconds)
2021-06-23 11:43:56 +0200curiousggay_(~curiousgg@178.217.208.8) (Remote host closed the connection)
2021-06-23 11:48:42 +0200azeem(~azeem@176.201.6.138)
2021-06-23 11:49:08 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
2021-06-23 11:49:20 +0200ubert(~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33)
2021-06-23 11:49:36 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-06-23 11:49:57 +0200Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net)
2021-06-23 11:56:22 +0200mc47(~mc47@xmonad/TheMC47)
2021-06-23 11:56:38 +0200xkuru(~xkuru@user/xkuru)
2021-06-23 11:57:24 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-23 11:58:28 +0200azeem(~azeem@176.201.6.138) (Ping timeout: 268 seconds)
2021-06-23 11:58:36 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com) (Read error: Connection reset by peer)
2021-06-23 11:58:53 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-06-23 11:59:14 +0200azeem(~azeem@176.201.6.138)
2021-06-23 12:00:38 +0200 <dminuoso> outoftime: A bunch of small typical mistakes
2021-06-23 12:00:46 +0200 <dminuoso> `[x] ++ ...` is better written as `x : ...`
2021-06-23 12:00:56 +0200 <dminuoso> `putStrLn . show` is better written as `print`
2021-06-23 12:01:12 +0200 <dminuoso> You seem to be overly using ($), consider using composition or parens perhaps
2021-06-23 12:01:55 +0200 <merijn> Looks mostly fine
2021-06-23 12:02:03 +0200 <merijn> some style differences from how I'd write it
2021-06-23 12:02:23 +0200 <dminuoso> Things like mapM_ or liftM2 are a bit odd, Id just use the applicative versions instead out of habit
2021-06-23 12:02:34 +0200 <dminuoso> (the monadic ones should be thrown out IMO)
2021-06-23 12:02:44 +0200 <merijn> last is probably a bad one too use
2021-06-23 12:02:47 +0200dhil(~dhil@195.213.192.47)
2021-06-23 12:03:08 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 252 seconds)
2021-06-23 12:03:27 +0200xkuru(~xkuru@user/xkuru) (Quit: Unvirtualizing)
2021-06-23 12:03:30 +0200 <merijn> partial and inefficient, but whether it can be easily replaced depends on the algorithm and I'm too lazy to understand that :p
2021-06-23 12:03:53 +0200xkuru(~xkuru@user/xkuru)
2021-06-23 12:04:08 +0200 <merijn> I feel 'f' can be rewritten into a helper + iterate too
2021-06-23 12:04:15 +0200 <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)
2021-06-23 12:04:20 +0200 <merijn> :t iterate
2021-06-23 12:04:21 +0200 <lambdabot> (a -> a) -> a -> [a]
2021-06-23 12:04:22 +0200 <dminuoso> The amount of group/sort suggests you might perhaps want to use a map instead.
2021-06-23 12:04:28 +0200qbt(~edun@user/edun)
2021-06-23 12:04:34 +0200 <dminuoso> From containers
2021-06-23 12:04:39 +0200 <merijn> boxscape: it's not partial there, since group never returns empty lists
2021-06-23 12:04:48 +0200 <merijn> > iterate (+1) 0
2021-06-23 12:04:50 +0200 <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...
2021-06-23 12:05:16 +0200 <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.
2021-06-23 12:05:35 +0200 <boxscape> (er, also I meant (map head . group))
2021-06-23 12:06:53 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:70b4:9739:defc:32cb) (Quit: Leaving)
2021-06-23 12:07:02 +0200 <boxscape> personally I'd probably write `pair@(z, c)` instead of pattern matching on pair in the where block
2021-06-23 12:07:08 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:70b4:9739:defc:32cb)
2021-06-23 12:08:16 +0200talismanick(~user@2601:644:8502:d700::94c9) (Ping timeout: 244 seconds)
2021-06-23 12:10:01 +0200fendor(~fendor@178.115.129.107.wireless.dyn.drei.com)
2021-06-23 12:10:49 +0200 <Ariakenom> this head is cute
2021-06-23 12:10:49 +0200 <Ariakenom> allSame xs = all (head xs ==) xs
2021-06-23 12:10:55 +0200howdy``howdy
2021-06-23 12:11:08 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-06-23 12:11:44 +0200brandonh(~brandonh@151.34.105.205)
2021-06-23 12:11:57 +0200brandonh(~brandonh@151.34.105.205) (Client Quit)
2021-06-23 12:15:00 +0200 <boxscape> allSame = and . (zipWith (==) <*> tail) -- I might do this to avoid head but yeah yours reads nicer
2021-06-23 12:15:06 +0200 <boxscape> wait
2021-06-23 12:15:08 +0200 <boxscape> % tail []
2021-06-23 12:15:08 +0200 <yahb> boxscape: *** Exception: Prelude.tail: empty list
2021-06-23 12:15:12 +0200 <boxscape> whoops
2021-06-23 12:15:30 +0200raoul(~raoul@nomnomnomnom.co.uk) (Remote host closed the connection)
2021-06-23 12:15:30 +0200f0c1s(~f0c1s@136.185.130.32)
2021-06-23 12:15:55 +0200 <__monty__> Tail is no better than head?
2021-06-23 12:16:06 +0200 <boxscape> yeah that's what I just realized
2021-06-23 12:16:08 +0200 <boxscape> I guess I would use drop 1
2021-06-23 12:16:09 +0200 <__monty__> You seem kinda obsessed with head for no reason.
2021-06-23 12:16:13 +0200 <boxscape> wait that doesn't help
2021-06-23 12:16:18 +0200 <boxscape> oh no it does
2021-06-23 12:16:29 +0200 <__monty__> > drop 1 []
2021-06-23 12:16:29 +0200 <boxscape> __monty__: I just like to not have any partial functions, period
2021-06-23 12:16:31 +0200 <lambdabot> []
2021-06-23 12:16:43 +0200 <__monty__> It does not help.
2021-06-23 12:16:48 +0200 <boxscape> why not?
2021-06-23 12:16:51 +0200 <__monty__> tail []
2021-06-23 12:16:56 +0200 <__monty__> > tail []
2021-06-23 12:16:57 +0200 <lambdabot> *Exception: Prelude.tail: empty list
2021-06-23 12:17:13 +0200 <__monty__> Oh, nvm, I'm wrong this time.
2021-06-23 12:20:12 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-06-23 12:21:00 +0200f0c1s_(~f0c1s@106.197.230.212)
2021-06-23 12:22:44 +0200Morrow(~MorrowM_@147.161.13.60)
2021-06-23 12:23:35 +0200f0c1s(~f0c1s@136.185.130.32) (Ping timeout: 265 seconds)
2021-06-23 12:24:33 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 265 seconds)
2021-06-23 12:24:52 +0200DNH(~textual@8.44.0.30)
2021-06-23 12:27:42 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-23 12:28:41 +0200dunkeln(~dunkeln@188.71.193.140) (Client Quit)
2021-06-23 12:28:57 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-23 12:29:52 +0200qbt(~edun@user/edun) (Ping timeout: 265 seconds)
2021-06-23 12:35:47 +0200azeem(~azeem@176.201.6.138) (Ping timeout: 258 seconds)
2021-06-23 12:36:26 +0200azeem(~azeem@176.201.6.138)
2021-06-23 12:37:19 +0200dunkeln(~dunkeln@188.71.193.140) (Ping timeout: 258 seconds)
2021-06-23 12:37:47 +0200pie__bncpie_
2021-06-23 12:38:04 +0200pie___
2021-06-23 12:38:06 +0200__pie_
2021-06-23 12:38:22 +0200pie_pie__
2021-06-23 12:38:23 +0200pie__pie_
2021-06-23 12:38:32 +0200MorrowM(~MorrowM_@147.161.9.12)
2021-06-23 12:39:02 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-23 12:39:09 +0200pie_the
2021-06-23 12:39:12 +0200thepie_
2021-06-23 12:41:38 +0200Morrow(~MorrowM_@147.161.13.60) (Ping timeout: 268 seconds)
2021-06-23 12:42:06 +0200mpt(~tom@2a02:908:1862:49e0::3)
2021-06-23 12:42:16 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-23 12:45:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-06-23 12:46:35 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-23 12:47:41 +0200chisui(~chisui@200116b866efc300342cdc4d594c896c.dip.versatel-1u1.de)
2021-06-23 12:49:02 +0200DNH(~textual@8.44.0.30) (Ping timeout: 268 seconds)
2021-06-23 12:50:07 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-06-23 12:50:42 +0200kuribas(~user@ptr-25vy0ia3kl0vdl4qmg0.18120a2.ip6.access.telenet.be)
2021-06-23 12:51:44 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-06-23 12:52:01 +0200GIANTWORLDKEEPER(~pjetcetal@2.95.227.207) (Remote host closed the connection)
2021-06-23 12:52:23 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-23 12:56:14 +0200DNH(~DNH@8.43.122.6)
2021-06-23 12:56:26 +0200MorrowM(~MorrowM_@147.161.9.12) (Ping timeout: 268 seconds)
2021-06-23 12:56:31 +0200raoul(~raoul@nomnomnomnom.co.uk)
2021-06-23 12:57:38 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-06-23 12:57:50 +0200hseg(~gesh@195.192.229.14)
2021-06-23 12:57:56 +0200 <chisui> Hey, has someone any clue why ghc produces this error? https://gist.github.com/chisui/7b558c2d63e3a7fcffc67ae714b69714
2021-06-23 12:57:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-23 12:58:56 +0200 <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.
2021-06-23 12:59:55 +0200mekeor(~user@2001:a61:3430:c01:f86:cca7:c1fe:e2b4)
2021-06-23 13:02:04 +0200mpt(~tom@2a02:908:1862:49e0::3) (Ping timeout: 268 seconds)
2021-06-23 13:03:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-06-23 13:03:21 +0200juhp(~juhp@128.106.188.66) (Remote host closed the connection)
2021-06-23 13:03:49 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-23 13:03:50 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net) (Ping timeout: 252 seconds)
2021-06-23 13:05:50 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-23 13:05:54 +0200 <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
2021-06-23 13:06:42 +0200 <int-e> chisui: https://paste.debian.net/1202126/ may be a viable workaround
2021-06-23 13:07:06 +0200MorrowM(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
2021-06-23 13:07:25 +0200 <int-e> but yeah, it does look like a bug
2021-06-23 13:07:53 +0200 <chisui> Thanks.
2021-06-23 13:08:04 +0200mekeor(~user@2001:a61:3430:c01:f86:cca7:c1fe:e2b4) (Remote host closed the connection)
2021-06-23 13:10:25 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-23 13:13:28 +0200 <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
2021-06-23 13:14:47 +0200 <chisui> boxscape: I'll mention that in the issue.
2021-06-23 13:15:05 +0200 <boxscape> 👍️
2021-06-23 13:15:18 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
2021-06-23 13:16:59 +0200 <merijn> Achievement unlocked: GHC bug ;)
2021-06-23 13:18:58 +0200hmmmas(~chenqisu1@183.217.200.246)
2021-06-23 13:21:35 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2021-06-23 13:25:07 +0200warnz(~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net)
2021-06-23 13:27:23 +0200hseg(~gesh@195.192.229.14) (Ping timeout: 265 seconds)
2021-06-23 13:27:52 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-06-23 13:29:27 +0200warnz(~warnz@104-55-100-55.lightspeed.lsvlky.sbcglobal.net) (Ping timeout: 258 seconds)
2021-06-23 13:30:00 +0200 <chisui> If someones interested: https://gitlab.haskell.org/ghc/ghc/-/issues/20033
2021-06-23 13:31:54 +0200hmmmas(~chenqisu1@183.217.200.246) (Quit: Leaving.)
2021-06-23 13:31:54 +0200Franciman(~francesco@openglass.it)
2021-06-23 13:32:06 +0200 <Franciman> maerwald: you available?
2021-06-23 13:32:33 +0200 <maerwald> barely
2021-06-23 13:32:49 +0200 <Franciman> ok np I wanted to talk to you about ghcup satisfy
2021-06-23 13:32:56 +0200 <Franciman> it can wait
2021-06-23 13:33:43 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca) (Quit: WeeChat 3.2)
2021-06-23 13:33:59 +0200fef(~thedawn@user/thedawn)
2021-06-23 13:34:19 +0200wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-06-23 13:34:40 +0200 <maerwald> there is #haskell-ghcup
2021-06-23 13:35:01 +0200 <Franciman> great
2021-06-23 13:36:43 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-06-23 13:36:49 +0200f0c1s_(~f0c1s@106.197.230.212) (Quit: Leaving)
2021-06-23 13:37:47 +0200f0c1s(~f0c1s@136.185.130.32)
2021-06-23 13:37:51 +0200f0c1s_(~f0c1s@136.185.130.32)
2021-06-23 13:37:55 +0200f0c1s_(~f0c1s@136.185.130.32) (Remote host closed the connection)
2021-06-23 13:38:29 +0200finsternis(~X@23.226.237.192) (Remote host closed the connection)
2021-06-23 13:41:22 +0200Axman6(~Axman6@user/axman6) (Remote host closed the connection)
2021-06-23 13:42:00 +0200Axman6(~Axman6@user/axman6)
2021-06-23 13:43:16 +0200jakzale(uid499518@id-499518.charlton.irccloud.com)
2021-06-23 13:46:17 +0200Axman6(~Axman6@user/axman6) (Ping timeout: 256 seconds)
2021-06-23 13:46:22 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 252 seconds)
2021-06-23 13:46:28 +0200xff0x_(~xff0x@2001:1a81:5270:f300:fe1c:5171:b5b6:4cc4)
2021-06-23 13:48:37 +0200xff0x(~xff0x@port-92-193-228-27.dynamic.as20676.net) (Ping timeout: 258 seconds)
2021-06-23 13:51:23 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 13:51:31 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-23 13:52:41 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-06-23 13:59:57 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-23 14:00:30 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2021-06-23 14:00:54 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2021-06-23 14:01:46 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-23 14:03:58 +0200 <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?
2021-06-23 14:04:31 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 244 seconds)
2021-06-23 14:05:42 +0200ubert(~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33) (Ping timeout: 264 seconds)
2021-06-23 14:07:52 +0200 <shane> So like, if we were to call this thing ~>, the only two valid implementations of `(a, a) -> a` would be `fst` and `snd`
2021-06-23 14:08:35 +0200 <shane> I suppose that's true by parametricity if `a` is polymorphic
2021-06-23 14:08:46 +0200 <dminuoso> shane: Mmm, Lens definitely fits that description.
2021-06-23 14:08:47 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-06-23 14:08:54 +0200Axman6(~Axman6@user/axman6)
2021-06-23 14:09:18 +0200 <dminuoso> i.e. `Lens' S T` gives you T as a sub-part of S
2021-06-23 14:09:35 +0200 <shane> I suppose, if it's a law abiding lens
2021-06-23 14:09:54 +0200 <shane> Actually it doesn't even have to be law breaking
2021-06-23 14:10:16 +0200 <dminuoso> Well I guess its not entirely true
2021-06-23 14:10:30 +0200 <dminuoso> Try and find a precise way of saying what "subproduct" exactly means
2021-06-23 14:10:36 +0200 <shane> Yes, I'm trying :)
2021-06-23 14:10:40 +0200 <dminuoso> Because one could argue that:
2021-06-23 14:10:44 +0200 <dminuoso> split :: a -> (a, a)
2021-06-23 14:10:48 +0200 <chisui> shane: do you mean a cartesian category?
2021-06-23 14:10:53 +0200 <dminuoso> gives you a subproduct
2021-06-23 14:11:03 +0200 <dminuoso> this gets a bit more interesting with impredicativity in the mix
2021-06-23 14:11:12 +0200 <shane> chisui: Maybe, that sounds promising
2021-06-23 14:12:01 +0200 <dminuoso> Mmm, come to think of it I think chisui is right. This is just a cartesian category
2021-06-23 14:12:22 +0200 <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`
2021-06-23 14:12:37 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-06-23 14:12:42 +0200 <shane> Okay, I will look up cartesian category
2021-06-23 14:12:50 +0200 <shane> Are there any Haskell libraries that implement something like that?
2021-06-23 14:12:55 +0200 <dminuoso> Or actually a precartesian category
2021-06-23 14:12:57 +0200 <dminuoso> Yes
2021-06-23 14:12:59 +0200 <dminuoso> https://hackage.haskell.org/package/category-extras-0.52.0/docs/Control-Category-Cartesian.html#t:…
2021-06-23 14:13:05 +0200fef(~thedawn@user/thedawn)
2021-06-23 14:13:36 +0200 <shane> Okay, thanks!
2021-06-23 14:16:00 +0200hseg(~gesh@195.192.229.14)
2021-06-23 14:16:24 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-23 14:16:31 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 14:16:50 +0200lavaman(~lavaman@98.38.249.169)
2021-06-23 14:17:13 +0200 <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?
2021-06-23 14:17:41 +0200dunkeln_1(~dunkeln@94.129.65.28)
2021-06-23 14:17:49 +0200 <dminuoso> Well I guess he just wants a categorical product
2021-06-23 14:18:07 +0200 <dminuoso> Such that this commutes https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/CategoricalProduct-03.svg/560px-Categori…
2021-06-23 14:18:08 +0200dunkeln(~dunkeln@188.71.193.140) (Ping timeout: 265 seconds)
2021-06-23 14:18:31 +0200 <dminuoso> maybe cartesian category was too strong, even
2021-06-23 14:19:28 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-06-23 14:19:30 +0200 <chisui> what throws me off a little is that he wants `(a, a)` a categoriacal product would be `(a, b)`
2021-06-23 14:19:31 +0200 <shane> chisui: I suppose I mean `const 1` or `const 2`.
2021-06-23 14:19:54 +0200shapr(~user@2601:7c0:8180:89d0:e21a:92b8:d08a:508f)
2021-06-23 14:20:16 +0200 <dminuoso> shane: Look into what a product is in category theory.
2021-06-23 14:20:33 +0200 <dminuoso> I suspect you're chasing the commuting diagram I linked above
2021-06-23 14:20:56 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-23 14:21:12 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Ping timeout: 252 seconds)
2021-06-23 14:26:09 +0200euandreh_euandreh
2021-06-23 14:31:10 +0200hueso(~root@user/hueso) (Ping timeout: 258 seconds)
2021-06-23 14:32:33 +0200GIANTWORLDKEEPER(~pjetcetal@2.95.227.207)
2021-06-23 14:33:36 +0200dunkeln_1(~dunkeln@94.129.65.28) (Ping timeout: 265 seconds)
2021-06-23 14:36:42 +0200egoist(~egoist@186.235.85.100)
2021-06-23 14:38:34 +0200hueso(~root@user/hueso)
2021-06-23 14:40:03 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-06-23 14:40:17 +0200TranquilEcho(~grom@user/tranquilecho)
2021-06-23 14:40:22 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 265 seconds)
2021-06-23 14:40:53 +0200azeem(~azeem@176.201.6.138) (Read error: Connection reset by peer)
2021-06-23 14:42:17 +0200azeem(~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it)
2021-06-23 14:44:26 +0200pbrisbin(~patrick@pool-173-49-147-28.phlapa.fios.verizon.net)
2021-06-23 14:44:43 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-23 14:45:03 +0200xff0x_(~xff0x@2001:1a81:5270:f300:fe1c:5171:b5b6:4cc4) (Ping timeout: 268 seconds)
2021-06-23 14:46:40 +0200xff0x_(~xff0x@2001:1a81:5271:d900:c621:6547:99a4:fbb5)
2021-06-23 14:47:23 +0200fef(~thedawn@user/thedawn)
2021-06-23 14:49:30 +0200cfricke(~cfricke@user/cfricke)
2021-06-23 14:50:54 +0200turlando(~turlando@user/turlando) (Ping timeout: 252 seconds)
2021-06-23 14:54:15 +0200dunkeln_(~dunkeln@94.129.65.28)
2021-06-23 14:54:56 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 258 seconds)
2021-06-23 14:55:49 +0200juhp(~juhp@128.106.188.66)
2021-06-23 14:55:59 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-06-23 14:56:01 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-06-23 14:56:02 +0200xff0x_(~xff0x@2001:1a81:5271:d900:c621:6547:99a4:fbb5) (Ping timeout: 250 seconds)
2021-06-23 14:56:48 +0200jakalx(~jakalx@base.jakalx.net)
2021-06-23 14:57:44 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it)
2021-06-23 14:57:44 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
2021-06-23 14:57:44 +0200turlando(~turlando@user/turlando)
2021-06-23 14:58:40 +0200xff0x_(~xff0x@port-92-193-138-158.dynamic.as20676.net)
2021-06-23 15:00:02 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2021-06-23 15:00:58 +0200jneira(~jneira@212.8.115.226) (Quit: Client closed)
2021-06-23 15:01:09 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2021-06-23 15:01:13 +0200alx741(~alx741@181.196.68.156)
2021-06-23 15:03:49 +0200hueso(~root@user/hueso) (Read error: Connection reset by peer)
2021-06-23 15:04:34 +0200hueso(~root@user/hueso)
2021-06-23 15:04:50 +0200sekun(~sekun@180.190.208.125)
2021-06-23 15:05:11 +0200xff0x(~xff0x@2001:1a81:5272:1d00:a8b6:9f02:264b:fce)
2021-06-23 15:06:52 +0200xff0x_(~xff0x@port-92-193-138-158.dynamic.as20676.net) (Ping timeout: 250 seconds)
2021-06-23 15:07:26 +0200hseg(~gesh@195.192.229.14) (Ping timeout: 265 seconds)
2021-06-23 15:08:21 +0200dunkeln_(~dunkeln@94.129.65.28) (Ping timeout: 258 seconds)
2021-06-23 15:08:50 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-06-23 15:09:14 +0200zebrag(~chris@user/zebrag)
2021-06-23 15:10:20 +0200xff0x(~xff0x@2001:1a81:5272:1d00:a8b6:9f02:264b:fce) (Ping timeout: 250 seconds)
2021-06-23 15:10:56 +0200f0c1s(~f0c1s@136.185.130.32) (Remote host closed the connection)
2021-06-23 15:12:00 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-23 15:12:33 +0200kayprish(~kayprish@46.240.143.86)
2021-06-23 15:12:54 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Read error: Connection reset by peer)
2021-06-23 15:13:02 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-23 15:13:02 +0200xff0x(~xff0x@2001:1a81:5272:4100:c2fe:5e6:247e:dd00)
2021-06-23 15:13:29 +0200CookE[](~thedawn@user/thedawn)
2021-06-23 15:13:42 +0200f0c1s(~f0c1s@136.185.130.32)
2021-06-23 15:13:43 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 265 seconds)
2021-06-23 15:14:06 +0200Nahra`(~user@static.161.95.99.88.clients.your-server.de)
2021-06-23 15:14:21 +0200lambdap6(~lambdap@static.167.190.119.168.clients.your-server.de)
2021-06-23 15:15:06 +0200kmein(~weechat@user/kmein) (Ping timeout: 252 seconds)
2021-06-23 15:15:06 +0200Nahra(~user@static.161.95.99.88.clients.your-server.de) (Ping timeout: 252 seconds)
2021-06-23 15:15:16 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-06-23 15:15:28 +0200lambdap(~lambdap@static.167.190.119.168.clients.your-server.de) (Ping timeout: 252 seconds)
2021-06-23 15:15:28 +0200lambdap6lambdap
2021-06-23 15:15:37 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-23 15:15:49 +0200Cajun(~Cajun@ip98-163-211-112.no.no.cox.net) (Ping timeout: 246 seconds)
2021-06-23 15:17:34 +0200chisui(~chisui@200116b866efc300342cdc4d594c896c.dip.versatel-1u1.de) (Ping timeout: 246 seconds)
2021-06-23 15:18:30 +0200kmein(~weechat@user/kmein)
2021-06-23 15:22:22 +0200zebrag(~chris@user/zebrag) (Remote host closed the connection)
2021-06-23 15:22:27 +0200fluffyballoon(~fluffybal@199.204.58.62)
2021-06-23 15:23:58 +0200azeem(~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-06-23 15:24:08 +0200azeem(~azeem@176.201.6.138)
2021-06-23 15:24:09 +0200chisui(~chisui@200116b866efc300342cdc4d594c896c.dip.versatel-1u1.de)
2021-06-23 15:24:19 +0200cfricke(~cfricke@user/cfricke)
2021-06-23 15:24:29 +0200azeem(~azeem@176.201.6.138) (Read error: Connection reset by peer)
2021-06-23 15:24:42 +0200azeem(~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it)
2021-06-23 15:24:57 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
2021-06-23 15:24:57 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net)
2021-06-23 15:26:58 +0200zebrag(~chris@user/zebrag)
2021-06-23 15:27:13 +0200allbery_bgeekosaur
2021-06-23 15:29:55 +0200DNH(~DNH@8.43.122.6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-23 15:30:07 +0200zebrag(~chris@user/zebrag) (Read error: Connection reset by peer)
2021-06-23 15:34:41 +0200zebrag(~chris@user/zebrag)
2021-06-23 15:34:44 +0200dunkeln_(~dunkeln@188.71.193.140)
2021-06-23 15:41:42 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
2021-06-23 15:41:54 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-23 15:42:50 +0200dunkeln_(~dunkeln@188.71.193.140) (Ping timeout: 250 seconds)
2021-06-23 15:43:14 +0200DNH(~DNH@8.43.122.6)
2021-06-23 15:44:51 +0200ystael(~ystael@user/ystael)
2021-06-23 15:44:53 +0200DNH(~DNH@8.43.122.6) (Read error: Connection reset by peer)
2021-06-23 15:48:18 +0200f0c1s(~f0c1s@136.185.130.32) (Quit: Leaving)
2021-06-23 15:54:00 +0200nerdypepper(~nerdypepp@user/nerdypepper) (Quit: bye)
2021-06-23 15:54:53 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-06-23 15:58:10 +0200nerdypepper(~nerdypepp@user/nerdypepper)
2021-06-23 15:58:44 +0200remexre(~nathan@user/remexre) (Read error: Connection reset by peer)
2021-06-23 15:59:52 +0200smarton(~smarton@2a01:4f9:c010:4e92::1) (Quit: ZNC 1.7.2+deb3 - https://znc.in)
2021-06-23 16:00:39 +0200DNH(~DNH@2a09:bac0:48::82b:7a06)
2021-06-23 16:01:33 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-23 16:02:29 +0200remexre(~nathan@user/remexre)
2021-06-23 16:02:41 +0200smarton(~smarton@121407.xyz)
2021-06-23 16:03:00 +0200jakzale(uid499518@id-499518.charlton.irccloud.com) (Quit: Connection closed for inactivity)
2021-06-23 16:04:23 +0200sayola(~vekto@dslb-088-078-152-192.088.078.pools.vodafone-ip.de)
2021-06-23 16:05:32 +0200trcc_(~trcc@eduroam09.au.dk)
2021-06-23 16:06:18 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 264 seconds)
2021-06-23 16:07:02 +0200safinaskar(~safinaska@109-252-90-89.nat.spd-mgts.ru)
2021-06-23 16:07:06 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Ping timeout: 250 seconds)
2021-06-23 16:07:17 +0200 <safinaskar> is it true that "forall a." always means "forall a :: Type."?
2021-06-23 16:07:21 +0200dyeplexer(~dyeplexer@user/dyeplexer)
2021-06-23 16:08:50 +0200trcc(~trcc@users-1190.st.net.au.dk) (Ping timeout: 268 seconds)
2021-06-23 16:10:03 +0200 <lortabac> safinaskar: no, sometimes a different kind can be infered
2021-06-23 16:10:15 +0200 <dminuoso> % :set -XPolyKinds
2021-06-23 16:10:15 +0200 <yahb> dminuoso:
2021-06-23 16:10:16 +0200trcc_(~trcc@eduroam09.au.dk) (Ping timeout: 265 seconds)
2021-06-23 16:10:30 +0200 <safinaskar> lortabac: thanks
2021-06-23 16:11:42 +0200fendor_(~fendor@178.165.189.179.wireless.dyn.drei.com)
2021-06-23 16:12:14 +0200 <dminuoso> % f :: forall a b. a -> Const a b; f = Const
2021-06-23 16:12:14 +0200 <yahb> dminuoso:
2021-06-23 16:12:16 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 16:12:18 +0200 <dminuoso> % :t f -- safinaskar
2021-06-23 16:12:18 +0200 <yahb> dminuoso: forall {k} {a} {b :: k}. a -> Const a b
2021-06-23 16:13:49 +0200Sgeo(~Sgeo@user/sgeo)
2021-06-23 16:14:17 +0200fendor(~fendor@178.115.129.107.wireless.dyn.drei.com) (Ping timeout: 258 seconds)
2021-06-23 16:14:50 +0200fendor_fendor
2021-06-23 16:15:03 +0200dyeplexer(~dyeplexer@user/dyeplexer) (Ping timeout: 258 seconds)
2021-06-23 16:15:05 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 16:15:21 +0200safinaskar(~safinaska@109-252-90-89.nat.spd-mgts.ru) ()
2021-06-23 16:19:05 +0200safinaskar(~safinaska@109-252-90-89.nat.spd-mgts.ru)
2021-06-23 16:20:38 +0200 <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?
2021-06-23 16:21:57 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 258 seconds)
2021-06-23 16:22:18 +0200jao(jao@gateway/vpn/protonvpn/jao)
2021-06-23 16:22:18 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 16:22:18 +0200jneira_(~jneira_@131.red-79-155-1.dynamicip.rima-tde.net)
2021-06-23 16:22:32 +0200hounded(~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com)
2021-06-23 16:22:39 +0200hounded_woodstoc(~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com)
2021-06-23 16:22:39 +0200hounded_woodstoc(~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Client Quit)
2021-06-23 16:23:42 +0200 <merijn> "probably"?
2021-06-23 16:23:52 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 16:24:12 +0200 <merijn> It's also probably true that Dependent Haskell will always suck, even in the future
2021-06-23 16:24:15 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds)
2021-06-23 16:24:18 +0200shapr(~user@2601:7c0:8180:89d0:e21a:92b8:d08a:508f) (Ping timeout: 264 seconds)
2021-06-23 16:24:28 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-23 16:26:24 +0200 <safinaskar> merijn: i didn't say "probably"
2021-06-23 16:29:03 +0200 <dminuoso> To be fair, singletons gives you a good approximating for lightweight dependently typed programming.
2021-06-23 16:29:12 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Ping timeout: 250 seconds)
2021-06-23 16:29:22 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-23 16:30:16 +0200 <merijn> safinaskar: Probably was my answer
2021-06-23 16:30:28 +0200 <merijn> "is this true?" probably, yes
2021-06-23 16:31:26 +0200 <safinaskar> well, my question is about current state
2021-06-23 16:31:44 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 252 seconds)
2021-06-23 16:31:46 +0200 <safinaskar> is it true that currently you cannot pass runtime values as arguments to types?
2021-06-23 16:32:14 +0200 <chisui> What's the status of the Unsaturated Type Families proposal anyways?
2021-06-23 16:32:32 +0200 <merijn> That depends on what you're opinion on "faking something that looks like passing runtime values to types" is
2021-06-23 16:32:41 +0200 <merijn> Can you do it? No.
2021-06-23 16:32:52 +0200 <merijn> Does singletons let you fake the ability to do it? Yes.
2021-06-23 16:34:12 +0200 <safinaskar> ok, thanks
2021-06-23 16:34:14 +0200safinaskar(~safinaska@109-252-90-89.nat.spd-mgts.ru) ()
2021-06-23 16:34:30 +0200 <dminuoso> What an odd fella.
2021-06-23 16:35:05 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-06-23 16:35:59 +0200 <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
2021-06-23 16:37:23 +0200 <maerwald[m]> Maybe this is an assignment and they just needed *any* answer
2021-06-23 16:37:32 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-23 16:37:38 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-23 16:38:09 +0200egoist(~egoist@186.235.85.100) (Quit: WeeChat 3.1)
2021-06-23 16:38:40 +0200 <chisui> ... or win an argument :D
2021-06-23 16:39:02 +0200 <maerwald> Yeah, that's even more important and requires our support
2021-06-23 16:39:23 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-23 16:39:57 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-06-23 16:40:08 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-06-23 16:43:39 +0200 <davean> I mean, I guess core to the problem is types don't exist along side runtime values in any sense
2021-06-23 16:43:52 +0200 <davean> so the question is, on the face of it, nonsensicle
2021-06-23 16:44:09 +0200 <davean> but many type-looking things do exist
2021-06-23 16:45:10 +0200CookE[](~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-06-23 16:45:58 +0200 <dminuoso> Snarky opinion: Python is dependently typed: x if (type(o) is str) else y
2021-06-23 16:46:40 +0200 <dminuoso> Type checking your program amounts to running it and see if its well behaved.
2021-06-23 16:47:25 +0200ystael(~ystael@user/ystael) (Read error: Connection reset by peer)
2021-06-23 16:48:12 +0200ystael(~ystael@user/ystael)
2021-06-23 16:49:04 +0200hammock(~Hammock@2600:1700:19a1:3330::625)
2021-06-23 16:49:29 +0200 <maerwald> It's well behaved by definition no?
2021-06-23 16:49:30 +0200chomwitt(~Pitsikoko@2a02:587:dc0b:0:d8f7:cdfe:4658:bec4) (Ping timeout: 264 seconds)
2021-06-23 16:49:49 +0200 <davean> yah the thing maerwald said
2021-06-23 16:51:19 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 16:54:09 +0200 <nshepperd> it passes type checking if it does what you want
2021-06-23 16:54:18 +0200 <nshepperd> The most powerful type system on earth!
2021-06-23 16:55:44 +0200 <maerwald> We just need a confogurable type system
2021-06-23 16:56:05 +0200 <maerwald> confoguration...
2021-06-23 16:56:24 +0200maerwaldsigns off lol
2021-06-23 16:58:38 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 16:59:40 +0200 <gentauro_> maerwald: sign off? Is that a certificate? :P
2021-06-23 16:59:46 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-23 17:00:05 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-23 17:00:12 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 17:01:10 +0200teaSlurper(~chris@81.96.113.213)
2021-06-23 17:01:48 +0200gentauro_gentauro
2021-06-23 17:03:02 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 17:04:35 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 17:04:38 +0200 <carbolymer> is there a function `PersistEntity r => r -> Key r` in "persistent" library? I'm trying to get key of my entity
2021-06-23 17:06:37 +0200 <merijn> carbolymer: I *think* I'm using one somewhere in my code
2021-06-23 17:06:42 +0200 <merijn> So I think so
2021-06-23 17:06:58 +0200 <merijn> but, eh, it can be hard to dig up the right stuff :p
2021-06-23 17:07:21 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 17:08:25 +0200 <sekun> do people actually use the haskell packages from nixpkgs?
2021-06-23 17:08:35 +0200 <sekun> for projects
2021-06-23 17:08:54 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 17:08:57 +0200 <Taneb> sekun: yes
2021-06-23 17:09:10 +0200 <dminuoso> sekun: Yes.
2021-06-23 17:10:54 +0200 <sekun> alright cool. does it improve compile times at all compared to just cabal/stack? or there's no difference?
2021-06-23 17:11:24 +0200 <sekun> i'm not sure if the packages on there are also binaries
2021-06-23 17:11:38 +0200 <davean> sekun: hahaha, people try
2021-06-23 17:11:44 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 17:11:54 +0200 <davean> sekun: there are some binary, sure, but cabal already caches in the same way
2021-06-23 17:12:07 +0200 <davean> sekun: so, "marginal" at best and the nixos stuff is very limited in what it can handle
2021-06-23 17:12:14 +0200 <Taneb> sekun: nixpkgs has a binary cache
2021-06-23 17:12:51 +0200 <davean> sekun: it only helps at all the first compile
2021-06-23 17:12:59 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
2021-06-23 17:13:03 +0200tv(~tv@user/tv) (Ping timeout: 268 seconds)
2021-06-23 17:13:04 +0200 <sekun> davean: limited in what way? sorry i'm just trying to get an idea
2021-06-23 17:13:04 +0200 <davean> and it will have issues
2021-06-23 17:13:18 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 17:13:23 +0200 <dminuoso> sekun: The primary motivation for nix is getting deterministic output.
2021-06-23 17:13:24 +0200 <sekun> Taneb: I see
2021-06-23 17:13:51 +0200tv(~tv@user/tv)
2021-06-23 17:14:06 +0200 <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. ..
2021-06-23 17:14:29 +0200 <dminuoso> sekun: In haskell+nix for actual building, it's generally a bit slower for various reasons.
2021-06-23 17:14:30 +0200ystael(~ystael@user/ystael) (Read error: Connection reset by peer)
2021-06-23 17:15:02 +0200 <dminuoso> And the problems davean points out are addressed in haskell.nix
2021-06-23 17:15:10 +0200ystael(~ystael@user/ystael)
2021-06-23 17:15:13 +0200 <davean> dminuoso: Yah, haskell.nix is WAY better
2021-06-23 17:15:33 +0200 <davean> Ok, haskell.nix isn't actively detremental
2021-06-23 17:15:37 +0200 <davean> which I'd claim nix is
2021-06-23 17:15:46 +0200 <dminuoso> davean: To be fair, I think of nix a bit more like stackage wrt to versions.
2021-06-23 17:15:53 +0200 <dminuoso> But in a way that you can transitively switch out dependencies easily
2021-06-23 17:15:57 +0200 <dminuoso> Or modify their flags
2021-06-23 17:16:01 +0200 <davean> dminuoso: stackage never ripped out dependency requirements
2021-06-23 17:16:06 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-23 17:16:08 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 17:16:11 +0200 <dminuoso> Of course not, neither has nix
2021-06-23 17:16:16 +0200 <davean> dminuoso: YES YES nix HAS
2021-06-23 17:16:19 +0200 <davean> Seriously
2021-06-23 17:16:26 +0200 <davean> they actively jail broke packages as THE STANDARD
2021-06-23 17:16:32 +0200 <davean> It lead me to SERIOUS issues
2021-06-23 17:16:44 +0200 <davean> No, absolutely seriously this is a nix thing historically
2021-06-23 17:16:52 +0200 <Taneb> dminuoso: yeah, that was (is?) a comman thing in nixpkgs' haskell package set
2021-06-23 17:17:01 +0200 <davean> they had a set of packages they directly removed depencency requirements on
2021-06-23 17:17:14 +0200 <dminuoso> Maybe I misunderstand what you mean by "ripping out dependency requirements" then
2021-06-23 17:17:15 +0200 <davean> dminuoso: Seriously, this is a huge fucking deal
2021-06-23 17:17:35 +0200 <dminuoso> Ah
2021-06-23 17:17:37 +0200 <davean> dminuoso: ok,. so if I have a package that says "directory >= 1.4.1 && < 1.5" nix would rewrite it to "directory"
2021-06-23 17:17:42 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 17:17:50 +0200 <davean> and build it against 1.4
2021-06-23 17:17:57 +0200 <Taneb> Ctrl-F in https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/haskell-modules/configuration-common… for "doJailbreak"
2021-06-23 17:17:58 +0200 <davean> I lost data in production because of this shit
2021-06-23 17:18:09 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:d7c7:704e:32f2:af10) (Quit: WeeChat 2.8)
2021-06-23 17:18:30 +0200 <dminuoso> Mmm, what happened here? I recall that jailbreak was a really rare thing to do
2021-06-23 17:18:32 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-06-23 17:18:50 +0200 <davean> dminuoso: they at least at one point *always* jailbroke for what they considered the "base" package set
2021-06-23 17:18:56 +0200 <davean> Universally
2021-06-23 17:19:32 +0200 <davean> which things like directory were in that set
2021-06-23 17:20:14 +0200 <dminuoso> This is strange, so the first 10ish examples I went through are all jailbroken just to get the right quickcheck and run tests..
2021-06-23 17:20:20 +0200 <dminuoso> Shouldn't that be a case of dontCheck?
2021-06-23 17:20:22 +0200dminuosostares
2021-06-23 17:20:33 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 17:20:43 +0200 <davean> dminuoso: and this is the "less scary" future
2021-06-23 17:20:56 +0200 <nshepperd> i thought the point of nix was to not need to do those things...
2021-06-23 17:21:05 +0200 <davean> dminuoso: they seriously use to UNIVERSALLY do it for some packages, and jailbreaking was something more
2021-06-23 17:21:12 +0200 <davean> nshepperd: yah well
2021-06-23 17:21:19 +0200 <davean> nshepperd: its SPECIFICLY the *haskell* stuff in nix
2021-06-23 17:21:31 +0200 <dminuoso> davean: From what I can tell, its definitely not universal behavior. It seems to be the sledgehammer to massage bounds.
2021-06-23 17:21:40 +0200 <dminuoso> For the odd package that wouldnt otherwise build
2021-06-23 17:21:45 +0200 <davean> dminuoso: no, as I keep tell you, this is the "future" where they tried to back off it
2021-06-23 17:21:54 +0200 <dminuoso> I find that hard to believe
2021-06-23 17:21:57 +0200 <davean> dminuoso: but they did it to *every* package for certain dependencies
2021-06-23 17:22:03 +0200 <davean> dminuoso: well its true so uh?
2021-06-23 17:22:05 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 17:22:31 +0200ubert(~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33)
2021-06-23 17:22:49 +0200 <davean> directory was one of them
2021-06-23 17:22:59 +0200 <davean> it would NEVER enforce a dependency requirement on directory, AT ALL
2021-06-23 17:24:51 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 17:25:46 +0200 <maerwald> Nix bashing? Lemme get popcorn first
2021-06-23 17:26:24 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 17:27:07 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2021-06-23 17:28:42 +0200 <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.
2021-06-23 17:29:12 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 17:29:37 +0200azeem(~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it) (Ping timeout: 268 seconds)
2021-06-23 17:30:05 +0200azeem(~azeem@176.201.6.138)
2021-06-23 17:30:43 +0200 <sekun> davean: is the issue you mentioned also present in haskell.nix? or is it only an issue if you just use nix + nixpkgs
2021-06-23 17:30:45 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 17:31:17 +0200 <davean> sekun: no, haskell.nix at least tries to address all the above issues and make a more honest compilation of Haskell code
2021-06-23 17:31:35 +0200 <davean> sekun: It still won't really help your build times other than the first time, but
2021-06-23 17:31:43 +0200 <davean> it doesn't cause you active issues :)
2021-06-23 17:31:55 +0200 <davean> and it might even solve some problems!
2021-06-23 17:32:36 +0200 <sekun> davean: i see that's good to hear. i guess there's really no temporary workaround for haskell's build times :(
2021-06-23 17:33:33 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 17:33:33 +0200CookE[](~thedawn@user/thedawn)
2021-06-23 17:33:46 +0200 <davean> sekun: I mean there is directly addressing the issue
2021-06-23 17:33:58 +0200 <davean> why are your build times long?
2021-06-23 17:34:31 +0200 <davean> if what you care about is that clean build's build time, haskell.nix does help
2021-06-23 17:34:56 +0200 <davean> But you only build dependencies once per configuration of said dependency with cabal
2021-06-23 17:35:03 +0200 <davean> so you probably care about YOUR code's compile time in practice
2021-06-23 17:35:08 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 17:35:10 +0200 <davean> So why is your code not compiling fast?
2021-06-23 17:35:20 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-23 17:36:19 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.1)
2021-06-23 17:38:00 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 17:38:43 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-06-23 17:39:33 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 17:39:35 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-06-23 17:40:10 +0200mikail_(~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf)
2021-06-23 17:40:12 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-06-23 17:42:25 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 17:42:59 +0200chisui(~chisui@200116b866efc300342cdc4d594c896c.dip.versatel-1u1.de) (Quit: Client closed)
2021-06-23 17:43:36 +0200MorrowM(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds)
2021-06-23 17:44:01 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 17:44:20 +0200chisui(~chisui@200116b866efc30078bec775310a636c.dip.versatel-1u1.de)
2021-06-23 17:45:04 +0200sekun(~sekun@180.190.208.125) (Ping timeout: 252 seconds)
2021-06-23 17:45:25 +0200chomwitt(~Pitsikoko@athedsl-16082.home.otenet.gr)
2021-06-23 17:46:51 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 17:48:25 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 17:50:01 +0200opv(~opv@methodsofcontrol.com)
2021-06-23 17:50:15 +0200Ollie[m](~ollieocha@2001:470:69fc:105::41a5)
2021-06-23 17:51:12 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 17:52:45 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 17:53:13 +0200arjun_(~arjun@160.202.37.101)
2021-06-23 17:53:27 +0200 <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?
2021-06-23 17:54:45 +0200azeem(~azeem@176.201.6.138) (Read error: Connection reset by peer)
2021-06-23 17:55:06 +0200azeem(~azeem@dynamic-adsl-84-220-246-231.clienti.tiscali.it)
2021-06-23 17:55:28 +0200 <c_wraith> I think there are actually several packages that explore that direction
2021-06-23 17:55:32 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 17:55:50 +0200zeenk(~zeenk@2a02:2f04:a106:9600:82fb:aed9:ca9:38d3)
2021-06-23 17:56:57 +0200 <chisui> do you have the name of some? they don't seem to be indexed by hoggle
2021-06-23 17:57:02 +0200pfurla_(~pfurla@216.131.82.16)
2021-06-23 17:57:07 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 17:57:59 +0200 <chisui> *hoogle
2021-06-23 17:58:30 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Client Quit)
2021-06-23 17:59:23 +0200 <c_wraith> https://hackage.haskell.org/package/hask is one, though I don't think it's the one you saw
2021-06-23 17:59:44 +0200pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 252 seconds)
2021-06-23 18:00:32 +0200finsternis(~X@23.226.237.192)
2021-06-23 18:01:21 +0200CookE[]fef
2021-06-23 18:01:21 +0200lbseale(~lbseale@user/ep1ctetus)
2021-06-23 18:01:50 +0200 <c_wraith> https://hackage.haskell.org/package/data-category is another, though probably still not the one you're looking for
2021-06-23 18:02:58 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-23 18:03:54 +0200 <chisui> Thank you c_wraith but none of those are what I was looking for
2021-06-23 18:04:23 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-23 18:05:02 +0200trcc(~trcc@eduroam09.au.dk)
2021-06-23 18:05:03 +0200trcc(~trcc@eduroam09.au.dk) (Remote host closed the connection)
2021-06-23 18:05:38 +0200trcc(~trcc@users-1190.st.net.au.dk)
2021-06-23 18:05:59 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
2021-06-23 18:06:16 +0200ubert(~Thunderbi@2a02:8109:9880:303c:e6b3:18ff:fe83:8f33) (Ping timeout: 250 seconds)
2021-06-23 18:07:56 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 268 seconds)
2021-06-23 18:08:57 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2021-06-23 18:09:02 +0200 <chisui> The package is called "category" *facepalm*
2021-06-23 18:09:18 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2021-06-23 18:11:03 +0200 <carbolymer> davean: wait how did you lost your data? Your package incorporated version with a bug, outside of cabal bounds , or what happened?
2021-06-23 18:14:20 +0200dunkeln(~dunkeln@188.71.193.140)
2021-06-23 18:14:44 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-23 18:15:25 +0200dhil(~dhil@195.213.192.47) (Ping timeout: 258 seconds)
2021-06-23 18:17:49 +0200 <c_wraith> chisui: well, if I helped you at least figure out what to search for, I'm calling that a win. :)
2021-06-23 18:18:04 +0200hgolden(~hgolden2@cpe-172-114-84-61.socal.res.rr.com) (Remote host closed the connection)
2021-06-23 18:19:32 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 252 seconds)
2021-06-23 18:19:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-06-23 18:20:59 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-23 18:21:03 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
2021-06-23 18:23:05 +0200pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-06-23 18:23:10 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-23 18:23:17 +0200Guest3175(~Guest31@176.41.31.219)
2021-06-23 18:23:45 +0200 <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"
2021-06-23 18:26:21 +0200pfurla_(~pfurla@216.131.82.16) (Ping timeout: 268 seconds)
2021-06-23 18:28:23 +0200zyklotomic(~ethan@2604:a880:800:10::79f:8001) (WeeChat 2.8)
2021-06-23 18:29:01 +0200dhil(~dhil@80.208.56.181)
2021-06-23 18:29:08 +0200 <c_wraith> yikes. Overriding version bounds without explicit instructions to do so is scary.
2021-06-23 18:32:42 +0200vpan(~vilius@212.117.1.172) (Quit: Leaving.)
2021-06-23 18:33:17 +0200derelict(~derelict@user/derelict)
2021-06-23 18:33:32 +0200 <maerwald> That's why I usually avoid 'directory' and reimplemented everything myself, lol. But I'm missing windows support. AFPP etc... grml
2021-06-23 18:34:23 +0200mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es) (Quit: .)
2021-06-23 18:34:32 +0200mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es)
2021-06-23 18:35:26 +0200 <maerwald> Cross platform functions are the worst. Purely functional and "local reasoning" goes out the window and laughs at you
2021-06-23 18:37:15 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-23 18:38:24 +0200 <c_wraith> "purely functional" goes out the window when working with filesystems anyway
2021-06-23 18:39:04 +0200 <maerwald> How would a functionsl filesystem look like?
2021-06-23 18:40:43 +0200jumper149(~jumper149@80.240.31.34)
2021-06-23 18:43:10 +0200 <monochrom> It would support undo.
2021-06-23 18:43:47 +0200 <monochrom> Imagine you're back to the 2000's and you got yourself into cabal hell. Don't you wish you could undo?
2021-06-23 18:43:56 +0200 <c_wraith> it would look like a log-based filesystem
2021-06-23 18:44:41 +0200mikail__(~mikail@90.212.77.3)
2021-06-23 18:45:35 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-06-23 18:45:38 +0200 <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
2021-06-23 18:45:41 +0200peterhil_(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-06-23 18:45:47 +0200ystael(~ystael@user/ystael) (Quit: Lost terminal)
2021-06-23 18:46:23 +0200 <monochrom> That would be "how would a functional society look like?" >:)
2021-06-23 18:46:29 +0200ubert(~Thunderbi@p200300ecdf259deac0d59fca0b69df22.dip0.t-ipconnect.de)
2021-06-23 18:46:43 +0200 <c_wraith> oh no, we've switched meanings of "functional"!
2021-06-23 18:47:30 +0200mikail_(~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf) (Ping timeout: 240 seconds)
2021-06-23 18:47:30 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-06-23 18:47:58 +0200 <monochrom> I'm great at puns. That "functional" could still mean you have undo.
2021-06-23 18:49:36 +0200 <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"
2021-06-23 18:49:52 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
2021-06-23 18:51:21 +0200 <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.
2021-06-23 18:51:35 +0200 <c_wraith> +is
2021-06-23 18:53:28 +0200 <monochrom> Breadth-first search still takes up much memory under lazy evaluation.
2021-06-23 18:54:52 +0200 <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
2021-06-23 18:55:05 +0200dhil(~dhil@80.208.56.181) (Ping timeout: 265 seconds)
2021-06-23 18:56:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-23 18:57:32 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-06-23 18:58:21 +0200fef(~thedawn@user/thedawn)
2021-06-23 18:58:23 +0200peterhil_(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Quit: Must not waste too much time here...)
2021-06-23 18:58:34 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-06-23 19:03:03 +0200Guest3175(~Guest31@176.41.31.219) (Quit: Client closed)
2021-06-23 19:03:04 +0200ystael(~ystael@user/ystael)
2021-06-23 19:03:10 +0200mc47(~mc47@xmonad/TheMC47)
2021-06-23 19:03:38 +0200kuribas(~user@ptr-25vy0ia3kl0vdl4qmg0.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-06-23 19:04:25 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-23 19:04:35 +0200 <norias> yeah, to be honest, coming from imperative programming
2021-06-23 19:04:41 +0200 <norias> i'm 1 day in to haskell
2021-06-23 19:04:56 +0200 <norias> and i can't imagine how programs that do things happen in functional programming
2021-06-23 19:05:07 +0200 <norias> not saying it can't / doesn't happen
2021-06-23 19:05:20 +0200 <norias> just my brain hasn't reached comprehension, yet
2021-06-23 19:05:29 +0200 <norias> but it looks cool as hell
2021-06-23 19:07:44 +0200 <ski> you compute a series of intput/output interactions with the external world (everything outside of the process running the Haskell program)
2021-06-23 19:08:14 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-23 19:08:38 +0200 <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)
2021-06-23 19:08:45 +0200dhil(~dhil@195.213.192.47)
2021-06-23 19:08:53 +0200 <ski> @type interact
2021-06-23 19:08:54 +0200 <lambdabot> (String -> String) -> IO ()
2021-06-23 19:09:18 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Ping timeout: 264 seconds)
2021-06-23 19:09:40 +0200ec(~ec@gateway/tor-sasl/ec)
2021-06-23 19:09:50 +0200 <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
2021-06-23 19:10:24 +0200 <ski> @type interact (unlines . map reverse . lines)
2021-06-23 19:10:25 +0200 <lambdabot> IO ()
2021-06-23 19:10:57 +0200 <ski> > (unlines . map reverse . lines) "foo\nbar\nbaz\n"
2021-06-23 19:10:58 +0200 <lambdabot> "oof\nrab\nzab\n"
2021-06-23 19:11:55 +0200 <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
2021-06-23 19:13:17 +0200 <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
2021-06-23 19:13:22 +0200 <ski> @type getLine
2021-06-23 19:13:23 +0200 <lambdabot> IO String
2021-06-23 19:15:41 +0200aman(~aman@user/aman) (Ping timeout: 268 seconds)
2021-06-23 19:16:41 +0200 <ski> a value of type `IO String' describes interactions to perform, so as to (hopefully) compute a `String' in the end, as result
2021-06-23 19:18:08 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8)
2021-06-23 19:18:37 +0200 <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)
2021-06-23 19:20:42 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-23 19:20:45 +0200 <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
2021-06-23 19:20:56 +0200 <ski> (>>) :: IO a -> IO b -> IO b
2021-06-23 19:21:09 +0200 <ski> (>>=) :: IO a -> (a -> IO b) -> IO b
2021-06-23 19:21:26 +0200ozzymcduff(~mathieu@81-234-151-21-no94.tbcn.telia.com) (Remote host closed the connection)
2021-06-23 19:22:02 +0200MorrowM(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
2021-06-23 19:22:11 +0200 <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')
2021-06-23 19:22:43 +0200ixlun(~ixlun@2001:470:69fc:105::41b3)
2021-06-23 19:23:43 +0200ozzymcduff(~mathieu@81-234-151-21-no94.tbcn.telia.com)
2021-06-23 19:23:52 +0200 <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
2021-06-23 19:24:02 +0200involans(~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net) (Ping timeout: 258 seconds)
2021-06-23 19:25:35 +0200 <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
2021-06-23 19:26:19 +0200 <ski> so, one very simple program now is `getLine >>= putStrLn'. a slightly more complicated one is `getLine >>= (putStrLn . reverse)'
2021-06-23 19:26:23 +0200gehmehgeh(~user@user/gehmehgeh)
2021-06-23 19:26:25 +0200 <ski> @type putStrLn
2021-06-23 19:26:26 +0200 <lambdabot> String -> IO ()
2021-06-23 19:27:01 +0200thyriaen(~thyriaen@45.178.75.13)
2021-06-23 19:27:12 +0200 <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)
2021-06-23 19:28:36 +0200DNH(~DNH@2a09:bac0:48::82b:7a06) (Ping timeout: 250 seconds)
2021-06-23 19:28:38 +0200 <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
2021-06-23 19:28:40 +0200safinaskar(~safinaska@109-252-90-89.nat.spd-mgts.ru)
2021-06-23 19:29:35 +0200 <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
2021-06-23 19:29:37 +0200 <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
2021-06-23 19:30:22 +0200thyriaen(~thyriaen@45.178.75.13) (Client Quit)
2021-06-23 19:30:33 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-06-23 19:30:39 +0200 <carbolymer> davean: that's fucked up. It's the opposite what's nix promises
2021-06-23 19:31:11 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 19:31:15 +0200 <safinaskar> for example, I want "head" with this prototype: head :: forall a. foreach (x :: [a]). (null x ~ False) -> a
2021-06-23 19:31:17 +0200 <ski> safinaskar : that's dependent types
2021-06-23 19:31:27 +0200 <safinaskar> is it possible to fake this "head" using singletons?
2021-06-23 19:31:56 +0200 <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.
2021-06-23 19:32:43 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-23 19:34:20 +0200 <monochrom> "(runGet $ many getFloatle)" kills laziness.
2021-06-23 19:35:00 +0200 <monochrom> Building a long list also takes up much memory therefore time.
2021-06-23 19:35:37 +0200 <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'
2021-06-23 19:36:33 +0200 <ski> safinaskar : but i'm not aware of a way to do this generically (for your arbitrary element type `a', say)
2021-06-23 19:36:48 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-23 19:37:18 +0200 <ixlun> monochrom: Right, I presume it's the runGet function that's killing laziness? If so, is there a way around it?
2021-06-23 19:37:51 +0200MoC(~moc@user/moc)
2021-06-23 19:38:19 +0200 <monochrom> "many" kills laziness.
2021-06-23 19:38:34 +0200mikail__(~mikail@90.212.77.3) (Ping timeout: 250 seconds)
2021-06-23 19:38:57 +0200Erutuon(~Erutuon@user/erutuon)
2021-06-23 19:43:17 +0200 <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?
2021-06-23 19:44:32 +0200 <ixlun> monochrom: Right. Do you think I need to do some kind of incremental reads?
2021-06-23 19:44:58 +0200 <monochrom> Use runGetOrFail on one single getFloatle. Or use conduit or pipes.
2021-06-23 19:45:38 +0200MorrowM(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection)
2021-06-23 19:45:56 +0200MorrowM(~MorrowM_@bzq-110-168-31-106.red.bezeqint.net)
2021-06-23 19:45:56 +0200Guest33(~Guest33@104.246.145.85)
2021-06-23 19:46:41 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-23 19:47:54 +0200kayprish(~kayprish@46.240.143.86) (Remote host closed the connection)
2021-06-23 19:48:59 +0200sleblanc(~sleblanc@user/sleblanc) (Ping timeout: 268 seconds)
2021-06-23 19:50:36 +0200 <qrpnxz> is there a way to just import everything in the std lib in one go?
2021-06-23 19:51:50 +0200 <ski> safinaskar : yes, but that seems fairly useless, since `exists n. NatIs n' would simply be isomorphic to a plain (value-level) `Nat'
2021-06-23 19:52:06 +0200 <ixlun> monochrom: okay I'll take a look at that. Thanks!
2021-06-23 19:52:19 +0200 <ski> the sole point of `NatIs n' would be to mention `n' elsewhere
2021-06-23 19:52:55 +0200Guest33(~Guest33@104.246.145.85) (Quit: Client closed)
2021-06-23 19:53:00 +0200 <safinaskar> ski: i think i will able to somehow extract "n" from this "exists n. NatIs n" and pass it somewhere
2021-06-23 19:57:17 +0200 <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
2021-06-23 19:57:23 +0200 <ski> better than `zipWith :: forall a b c. (a -> b -> c) -> ([a] -> [b] -> [c])' in the first place
2021-06-23 19:58:35 +0200mikail__(~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf)
2021-06-23 19:58:46 +0200 <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'
2021-06-23 19:59:51 +0200arjun_(~arjun@160.202.37.101) (Ping timeout: 265 seconds)
2021-06-23 20:00:06 +0200 <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
2021-06-23 20:00:58 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-06-23 20:01:02 +0200 <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.
2021-06-23 20:01:11 +0200 <safinaskar> ski: i will show example
2021-06-23 20:01:17 +0200 <jumper149> When trying to run the program everything works fine.
2021-06-23 20:01:28 +0200skiwill have to leave rather soon
2021-06-23 20:01:38 +0200 <jumper149> So why can't GHC just infer type equality here. I guess it has to do with type families somehow.
2021-06-23 20:02:43 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-23 20:03:02 +0200 <jumper149> This is the error without `unsafeCoerce`: http://ix.io/3qU1
2021-06-23 20:03:53 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb)
2021-06-23 20:07:03 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Remote host closed the connection)
2021-06-23 20:08:04 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-06-23 20:09:15 +0200fef(~thedawn@user/thedawn) (Ping timeout: 244 seconds)
2021-06-23 20:09:20 +0200 <safinaskar> ski: here is example: https://paste.debian.net/1202170/
2021-06-23 20:09:50 +0200 <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
2021-06-23 20:09:54 +0200xkuru(~xkuru@user/xkuru) (Ping timeout: 252 seconds)
2021-06-23 20:10:30 +0200 <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
2021-06-23 20:10:54 +0200 <safinaskar> thus, compiler proved that at calling point of "divide" its second argument is not zero
2021-06-23 20:11:22 +0200 <safinaskar> this way we can finally remove partial functions, such as division, "head", etc
2021-06-23 20:14:06 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-23 20:15:17 +0200chisui(~chisui@200116b866efc30078bec775310a636c.dip.versatel-1u1.de) (Quit: Client closed)
2021-06-23 20:16:10 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 258 seconds)
2021-06-23 20:17:33 +0200mikail__(~mikail@2a02:c7f:bc9c:3100:ae93:93fc:603f:ceaf) (Quit: Leaving)
2021-06-23 20:22:04 +0200involans(~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net)
2021-06-23 20:25:53 +0200tusko(~yeurt@user/tusko) (Farewell)
2021-06-23 20:26:07 +0200chisui(~chisui@200116b866efc300e1478aa720ae1876.dip.versatel-1u1.de)
2021-06-23 20:27:07 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-23 20:27:46 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Quit: Leaving.)
2021-06-23 20:31:09 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-23 20:32:30 +0200safinaskar97(~safinaska@109.252.90.89)
2021-06-23 20:35:10 +0200econo(uid147250@user/econo)
2021-06-23 20:35:43 +0200safinaskar(~safinaska@109-252-90-89.nat.spd-mgts.ru) (Ping timeout: 246 seconds)
2021-06-23 20:38:01 +0200yoctocell(~user@h87-96-130-155.cust.a3fiber.se) (Quit: ERC (IRC client for Emacs 28.0.50))
2021-06-23 20:40:19 +0200xsperry(~as@user/xsperry) (Ping timeout: 258 seconds)
2021-06-23 20:42:20 +0200acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-06-23 20:43:30 +0200mcglk(~mcglk@131.191.49.120) (Quit: (seeya))
2021-06-23 20:43:54 +0200mcglk(~mcglk@131.191.49.120)
2021-06-23 20:44:19 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-06-23 20:45:53 +0200johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (Read error: Connection reset by peer)
2021-06-23 20:46:27 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 258 seconds)
2021-06-23 20:47:18 +0200johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0)
2021-06-23 20:48:48 +0200fef(~thedawn@user/thedawn)
2021-06-23 20:52:26 +0200jespada(~jespada@90.254.247.46) (Ping timeout: 252 seconds)
2021-06-23 20:53:35 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-06-23 20:53:35 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-06-23 20:54:38 +0200dunkeln(~dunkeln@188.71.193.140) (Ping timeout: 252 seconds)
2021-06-23 20:55:31 +0200fef(~thedawn@user/thedawn) (Quit: Leaving)
2021-06-23 20:55:31 +0200jespada(~jespada@90.254.247.46)
2021-06-23 21:00:25 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-23 21:01:44 +0200allbery_bgeekosaur
2021-06-23 21:04:18 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
2021-06-23 21:04:50 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-23 21:04:51 +0200dunkeln_(~dunkeln@188.71.193.140)
2021-06-23 21:05:14 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 250 seconds)
2021-06-23 21:05:35 +0200turlando(~turlando@user/turlando) (Ping timeout: 265 seconds)
2021-06-23 21:06:37 +0200myShoggoth(~myShoggot@75.164.29.44)
2021-06-23 21:07:05 +0200safinaskar97(~safinaska@109.252.90.89) ()
2021-06-23 21:08:49 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it)
2021-06-23 21:08:49 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
2021-06-23 21:08:49 +0200turlando(~turlando@user/turlando)
2021-06-23 21:11:44 +0200ubert(~Thunderbi@p200300ecdf259deac0d59fca0b69df22.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-06-23 21:12:03 +0200ubert(~Thunderbi@p200300ecdf259dc2c0d59fca0b69df22.dip0.t-ipconnect.de)
2021-06-23 21:18:40 +0200ubert(~Thunderbi@p200300ecdf259dc2c0d59fca0b69df22.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-06-23 21:22:58 +0200Deide(~Deide@wire.desu.ga)
2021-06-23 21:22:58 +0200Deide(~Deide@wire.desu.ga) (Changing host)
2021-06-23 21:22:58 +0200Deide(~Deide@user/deide)
2021-06-23 21:25:27 +0200turlando(~turlando@user/turlando) (Read error: Connection reset by peer)
2021-06-23 21:27:05 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-06-23 21:28:14 +0200Guest9(~Guest9@43.241.144.49)
2021-06-23 21:32:02 +0200 <Guest9> i like a book called pragmatic programmer , which books do you like/recommend?
2021-06-23 21:32:05 +0200 <Guest9> in general/specific
2021-06-23 21:32:34 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-23 21:34:06 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
2021-06-23 21:37:34 +0200 <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?
2021-06-23 21:38:54 +0200peterhil_(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-06-23 21:39:44 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 258 seconds)
2021-06-23 21:43:11 +0200tzar_bomba(~tzar_bomb@78-56-41-78.static.zebra.lt)
2021-06-23 21:45:56 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-23 21:46:24 +0200 <monochrom> Yes.
2021-06-23 21:47:05 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-23 21:54:52 +0200 <maerwald> Great question.
2021-06-23 21:55:11 +0200turlando(~turlando@user/turlando)
2021-06-23 21:56:43 +0200lavaman(~lavaman@98.38.249.169)
2021-06-23 21:59:08 +0200Guest9(~Guest9@43.241.144.49) (Quit: Connection closed)
2021-06-23 22:00:08 +0200hseg(~gesh@195.192.229.14)
2021-06-23 22:01:08 +0200dunkeln_(~dunkeln@188.71.193.140) (Ping timeout: 250 seconds)
2021-06-23 22:01:46 +0200 <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.
2021-06-23 22:02:13 +0200 <davean> Its not recent, this happened to me in 2016
2021-06-23 22:02:30 +0200 <dminuoso> Yeah, and I can already see how this on directory can cause really issues
2021-06-23 22:02:39 +0200 <dminuoso> Even when its a transitive dependency
2021-06-23 22:02:45 +0200 <dminuoso> This starts breaking other packages promises as well
2021-06-23 22:02:49 +0200 <davean> Yep
2021-06-23 22:02:55 +0200 <davean> It was a pretty deep big problem
2021-06-23 22:03:03 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-23 22:03:14 +0200 <davean> and it was hard to debug because it wasn't on the package - they do it in like the base package stuff
2021-06-23 22:03:24 +0200 <davean> so it was in code *refered* to, didn't show up in the nix derivation its self at all :/
2021-06-23 22:03:35 +0200 <davean> they broke it in the base infastructure
2021-06-23 22:03:36 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-23 22:03:42 +0200 <davean> so you really had to dig in to find it
2021-06-23 22:03:59 +0200derelict(~derelict@user/derelict) (Ping timeout: 244 seconds)
2021-06-23 22:04:24 +0200 <dminuoso> Judging from the sample I looked at, perhaps the deeper problem is the heavy reliance of "its only marked buildable if tests pass"
2021-06-23 22:04:30 +0200 <dminuoso> Which I think is an expensive threshold
2021-06-23 22:04:41 +0200 <dminuoso> Mostly, things should be buildable as its roughly aligned with stackage
2021-06-23 22:05:02 +0200juhp(~juhp@128.106.188.66) (Ping timeout: 250 seconds)
2021-06-23 22:05:20 +0200 <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
2021-06-23 22:05:26 +0200 <maerwald> Good reasons to avoid nix: bad ecosystem, low QA, too many chefs
2021-06-23 22:05:36 +0200 <davean> well, the core of *this* particular problem is they never believed you'd need an upgrade of the GHC distributed packages
2021-06-23 22:06:12 +0200 <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
2021-06-23 22:06:39 +0200chaosite(~chaosite@user/chaosite)
2021-06-23 22:06:55 +0200juhp(~juhp@128.106.188.66)
2021-06-23 22:06:55 +0200 <dminuoso> Well, multiple concurrent haskellPackage versions is horrid UX in nix at the moment.
2021-06-23 22:07:02 +0200 <dminuoso> Ideally I just want to callCabal2nix my package and be done with it
2021-06-23 22:07:06 +0200 <dminuoso> This should improve things, not worsen then
2021-06-23 22:07:20 +0200 <dminuoso> In light of all of this, I think I should really look into haskell.nix now
2021-06-23 22:07:27 +0200 <davean> yah ...
2021-06-23 22:08:14 +0200 <maerwald> haskell.nix shows that you need 10 nix engineers in a company to get anything done ;)
2021-06-23 22:09:06 +0200 <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.
2021-06-23 22:09:20 +0200 <dminuoso> Whether its worth it, you have to decidef
2021-06-23 22:09:43 +0200 <dminuoso> We are going to use nix for configuring servers now, simply because the UX and advantages are simply uncontested
2021-06-23 22:09:48 +0200 <dminuoso> But that's sort of orthogonal to the above problems
2021-06-23 22:10:03 +0200 <davean> Yah, nix is a good idea, but there are deep problems. I don't think they're with nix specificly.
2021-06-23 22:10:08 +0200 <dminuoso> Maybe, I might even think about switching back to cabal for haskell packages, and then patchelf'ing them into nix derivations
2021-06-23 22:10:13 +0200 <davean> But the ecosystem built?
2021-06-23 22:10:18 +0200 <davean> It uh, yah, has problems
2021-06-23 22:10:21 +0200 <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.
2021-06-23 22:11:05 +0200 <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..
2021-06-23 22:11:18 +0200 <davean> Yah
2021-06-23 22:11:36 +0200 <maerwald> That's not a fair comparison
2021-06-23 22:11:48 +0200 <maerwald> It's not about the format or the PM
2021-06-23 22:11:50 +0200shiraeeshi(~shiraeesh@109.166.57.36)
2021-06-23 22:12:01 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-23 22:12:06 +0200 <maerwald> It's about the core developers, policies, QA
2021-06-23 22:12:10 +0200 <dminuoso> Sure
2021-06-23 22:12:28 +0200 <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
2021-06-23 22:12:42 +0200 <davean> Its not safe to use an ecosystem you don't invest in
2021-06-23 22:12:48 +0200 <davean> sadly
2021-06-23 22:13:41 +0200 <davean> <InsertHFShillhere>
2021-06-23 22:13:46 +0200 <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*
2021-06-23 22:14:20 +0200 <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..
2021-06-23 22:14:50 +0200 <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..
2021-06-23 22:14:51 +0200 <maerwald> don't remind me that I did Go professionally once... ugh
2021-06-23 22:15:11 +0200pavonia(~user@user/siracusa)
2021-06-23 22:15:22 +0200 <maerwald> The only good thing about Go is that APIs are usually stable
2021-06-23 22:15:35 +0200 <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"
2021-06-23 22:15:42 +0200 <dminuoso> for whatever good or bad this does
2021-06-23 22:16:02 +0200 <maerwald> It's the lack of tooling that forces people to keep their API stable
2021-06-23 22:16:04 +0200 <dminuoso> Is there some sort of hackage equivalent in go?
2021-06-23 22:16:13 +0200 <dminuoso> or Cabal-the-spec?
2021-06-23 22:16:38 +0200 <maerwald> you can import directly from github
2021-06-23 22:17:02 +0200 <maerwald> They have some vendoring tools too
2021-06-23 22:17:08 +0200 <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
2021-06-23 22:17:09 +0200 <maerwald> they're broken as well
2021-06-23 22:17:14 +0200 <dminuoso> So if github ever goes down or loses data because of stupid admins, then if your business relies on go suddenly breaks apart?
2021-06-23 22:17:24 +0200 <maerwald> yes
2021-06-23 22:17:25 +0200 <davean> just because people have a little pain with them doesn't mean they aren't good
2021-06-23 22:17:34 +0200MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-06-23 22:17:36 +0200jneira_(~jneira_@131.red-79-155-1.dynamicip.rima-tde.net) (Ping timeout: 250 seconds)
2021-06-23 22:17:39 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-06-23 22:17:51 +0200 <dminuoso> Oh haha, regarding github.. a really funny and sad story from a friend..
2021-06-23 22:18:08 +0200 <dminuoso> He tried to GPDR gitlab to inquire about all data they have on him.
2021-06-23 22:18:13 +0200norias(~jaredm@c-98-219-195-163.hsd1.pa.comcast.net) (Ping timeout: 268 seconds)
2021-06-23 22:18:26 +0200 <maerwald> Well, my opinion is that PVP and semver are the reasons for API anarchy
2021-06-23 22:18:28 +0200 <dminuoso> In the jungle of Gitlab this request turned from "GPDR inquiry" to "GPDR delete"
2021-06-23 22:18:45 +0200 <dminuoso> And his account and all projects, commits, messages... *everything* was irrecoverably deleted.
2021-06-23 22:19:20 +0200 <davean> Holy, why?
2021-06-23 22:19:29 +0200 <dminuoso> Ask gitlab
2021-06-23 22:19:33 +0200 <davean> well, i backup stuff
2021-06-23 22:19:41 +0200 <maerwald> They have incompetent admins
2021-06-23 22:19:46 +0200 <JSharp> that's painful. :/
2021-06-23 22:19:47 +0200 <maerwald> Not the first incident
2021-06-23 22:20:36 +0200 <dolio> Because that's the easiest way to comply?
2021-06-23 22:20:51 +0200 <dminuoso> "we dont have anything on you"
2021-06-23 22:21:04 +0200peterhil_(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) (Ping timeout: 250 seconds)
2021-06-23 22:22:41 +0200peterhil(~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi)
2021-06-23 22:24:29 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-06-23 22:24:53 +0200mc47(~mc47@xmonad/TheMC47)
2021-06-23 22:25:04 +0200DNH(~DNH@8.43.122.6)
2021-06-23 22:25:50 +0200mc47(~mc47@xmonad/TheMC47) (Client Quit)
2021-06-23 22:25:57 +0200 <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
2021-06-23 22:26:17 +0200 <dminuoso> All of this fully applies to the go-ecosystem as well, it seems.
2021-06-23 22:26:30 +0200 <dolio> Also javascript, probably.
2021-06-23 22:26:40 +0200 <maerwald> Go is good for microservices, nothing more
2021-06-23 22:27:15 +0200 <dminuoso> Ive seen a bunch of CLI tools written in go as well, it seems fairly suitable for such tasks too
2021-06-23 22:27:37 +0200 <dminuoso> Most recent thing is `morph`, which is how we're going to deploy nixos machines with. :)
2021-06-23 22:27:47 +0200 <maerwald> python is better at cli tools imo
2021-06-23 22:28:40 +0200 <dminuoso> perhaps yeah, guess it depends what you have in your toolkit
2021-06-23 22:28:52 +0200 <dminuoso> I dont have any python or go experience, so my cli tools are written in Haskell
2021-06-23 22:29:21 +0200 <dminuoso> But with Haskell some common tasks do require 5 lines of code, that should really just take 1.
2021-06-23 22:30:31 +0200 <maerwald> I'm not a huge fan of optparse-applicative. Too many details to deal wits
2021-06-23 22:30:42 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-06-23 22:30:42 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-06-23 22:30:51 +0200allbery_bgeekosaur
2021-06-23 22:31:01 +0200 <maerwald> With TH you could build something better, but then you need TH... ugh
2021-06-23 22:31:09 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-06-23 22:31:15 +0200 <davean> maerwald: I've wanted improvements also. In some ways I want MORE complications tohugh.
2021-06-23 22:31:45 +0200 <maerwald> I'm a fan of https://click.palletsprojects.com/en/8.0.x/
2021-06-23 22:32:08 +0200 <davean> maerwald: thats so limited though, isn'tit?
2021-06-23 22:32:28 +0200jneira_(~jneira_@131.red-79-155-1.dynamicip.rima-tde.net)
2021-06-23 22:32:30 +0200 <maerwald> You can escape easily and do more complex things
2021-06-23 22:33:09 +0200 <dminuoso> maerwald: optparse-applicative is really odd. it's very a great powertool, but for minimal cli tool it's easily overkill. :(
2021-06-23 22:33:23 +0200 <dminuoso> Wouldnt want to give it up regardless
2021-06-23 22:33:33 +0200 <maerwald> My optparse code atm is 500 LOC or so
2021-06-23 22:33:38 +0200 <davean> I think part of optparse's problem is it tries to look too friendly while being powerful and falls short of both
2021-06-23 22:33:51 +0200 <dminuoso> maerwald: btw, for minimal code, one could also consider optparse-generic
2021-06-23 22:34:16 +0200 <dminuoso> I did take some initial looks, it could be a suitable replacement for "I want to carve out a 0 effort cli tool"
2021-06-23 22:34:47 +0200 <dminuoso> It's easily composable with optparse-applicative, so you can break out and write manual parsers at any point
2021-06-23 22:35:29 +0200shapr(~user@2601:7c0:8180:89d0:ed87:906a:cd61:bb34)
2021-06-23 22:36:31 +0200 <davean> maerwald: does https://click.palletsprojects.com/en/8.0.x/ support implementing something like "find"?
2021-06-23 22:37:21 +0200 <maerwald> Not sure, been a while since I used python (or rather coconut)
2021-06-23 22:37:37 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-06-23 22:38:16 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:e846:fcb5:a54b:afb8) (Remote host closed the connection)
2021-06-23 22:40:10 +0200 <davean> maerwald: I don't see how it could be - but I only skimmed
2021-06-23 22:40:32 +0200 <davean> It doesn't look like a comparable tool - but thats good, its not possible to do both things at once
2021-06-23 22:42:03 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 22:43:10 +0200Deide(~Deide@user/deide) (Read error: Connection reset by peer)
2021-06-23 22:43:28 +0200Deide(~Deide@wire.desu.ga)
2021-06-23 22:43:28 +0200Deide(~Deide@wire.desu.ga) (Changing host)
2021-06-23 22:43:28 +0200Deide(~Deide@user/deide)
2021-06-23 22:44:24 +0200 <maerwald> I remember there are escape hatches though
2021-06-23 22:44:25 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-23 22:44:28 +0200chomwitt(~Pitsikoko@athedsl-16082.home.otenet.gr) (Ping timeout: 250 seconds)
2021-06-23 22:45:11 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 22:45:18 +0200 <davean> maerwald: I'd be interested in how their approach could have a capible escape hatch
2021-06-23 22:45:24 +0200 <davean> they're using decorators and such
2021-06-23 22:45:32 +0200derelict(~derelict@user/derelict)
2021-06-23 22:45:37 +0200derelict(~derelict@user/derelict) (Client Quit)
2021-06-23 22:45:38 +0200dunkeln_(~dunkeln@188.71.193.140)
2021-06-23 22:45:43 +0200 <davean> I'd think any escape hatch would have to be entirely different and break what they're doing
2021-06-23 22:45:54 +0200 <davean> So I guess i'll look at it ore
2021-06-23 22:46:15 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-23 22:46:47 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 22:48:22 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-23 22:49:00 +0200remexre(~nathan@user/remexre) (Quit: WeeChat 3.0.1)
2021-06-23 22:49:01 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.1)
2021-06-23 22:49:03 +0200 <dminuoso> davean: which part of `find` are you looking for exactly?
2021-06-23 22:49:18 +0200 <davean> dminuoso: How it handles arguments
2021-06-23 22:49:19 +0200 <davean> its a style
2021-06-23 22:49:37 +0200 <davean> Its just a good example of actually parsing vs. the simpler base-posix style
2021-06-23 22:49:41 +0200 <dminuoso> Mmm, what style is that?
2021-06-23 22:49:52 +0200 <davean> have you not used find?
2021-06-23 22:50:05 +0200 <davean> Its order dependent, and meaning changes based on the prefix
2021-06-23 22:50:18 +0200 <davean> you can read the man page
2021-06-23 22:50:28 +0200 <dminuoso> find is one of those tools I very poorly use Im afraid
2021-06-23 22:50:35 +0200 <davean> its entirely context sensitive
2021-06-23 22:51:25 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 246 seconds)
2021-06-23 22:51:45 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-06-23 22:51:59 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-23 22:52:46 +0200AWizzArd(~code@user/awizzard)
2021-06-23 22:53:31 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-06-23 22:54:05 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-23 22:58:29 +0200 <maerwald> Wouldn't that need optparse-monad?
2021-06-23 22:58:29 +0200remexre(~nathan@user/remexre)
2021-06-23 22:59:00 +0200 <dminuoso> optparse-selective would suffice
2021-06-23 22:59:16 +0200 <davean> maerwald: depends - is the applicative on an infinite tree? ;)
2021-06-23 22:59:43 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.)
2021-06-23 22:59:56 +0200 <maerwald> I'm a fan of selective. ..would like to see more applications
2021-06-23 22:59:59 +0200 <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.
2021-06-23 23:00:18 +0200 <dminuoso> It's doable, but you need rewrite a lot of optparse for it :(
2021-06-23 23:01:46 +0200deshalb(~deshalb@user/deshalb) (Quit: leaving)
2021-06-23 23:01:58 +0200 <davean> dminuoso: How not interested in that are you?
2021-06-23 23:02:14 +0200 <maerwald> While at it, fix bytestring input
2021-06-23 23:02:21 +0200 <davean> maerwald: optparse-applicative has a bit more than applicative
2021-06-23 23:02:28 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-23 23:02:46 +0200safinaskar(~safinaska@109.252.90.89)
2021-06-23 23:03:52 +0200 <safinaskar> look here: https://paste.debian.net/1202170/ . i was able to pass runtime values as arguments to types!
2021-06-23 23:04:14 +0200 <safinaskar> i. e. i can essentially use full power of dependent haskell now. and prove things!
2021-06-23 23:04:33 +0200hammock(~Hammock@2600:1700:19a1:3330::625) (Ping timeout: 268 seconds)
2021-06-23 23:04:35 +0200 <safinaskar> i was able to pattern match on Foo value and then (if it greater than zero) pass it as second argument to division
2021-06-23 23:04:47 +0200 <safinaskar> thus, compiler proved that at calling point of "divide" its second argument is not zero
2021-06-23 23:04:52 +0200 <safinaskar> this way we can finally remove partial functions, such as division, "head", etc
2021-06-23 23:06:11 +0200 <dminuoso> davean: Not much. Im looking into fixing a bunch of cabal stuff first since these actually annoy me. :-)
2021-06-23 23:06:27 +0200 <dminuoso> optparse-selective is just wishful thinking, Im lacking a genuine use for it
2021-06-23 23:06:58 +0200gzj(~GZJ0X@96.45.188.88.16clouds.com) (Remote host closed the connection)
2021-06-23 23:09:44 +0200 <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
2021-06-23 23:10:01 +0200 <maerwald> But no capacity and no demand
2021-06-23 23:11:28 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 23:14:01 +0200 <maerwald> I think stack and cabal are converging to the point that the choice will become irrelevant even for power users at some point
2021-06-23 23:14:23 +0200vicentius(~vicentius@user/vicentius)
2021-06-23 23:18:00 +0200warnz(~warnz@2600:1700:77c0:5610:799f:ce24:eb20:cceb) (Remote host closed the connection)
2021-06-23 23:18:02 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 268 seconds)
2021-06-23 23:18:12 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 23:19:53 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 268 seconds)
2021-06-23 23:21:19 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
2021-06-23 23:21:27 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
2021-06-23 23:24:29 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-23 23:25:10 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 23:26:13 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-23 23:26:42 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 23:28:37 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-23 23:29:07 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-06-23 23:29:26 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 23:29:51 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-23 23:30:22 +0200falafel(~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-06-23 23:30:41 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-23 23:30:58 +0200safinaskar(~safinaska@109.252.90.89) ()
2021-06-23 23:30:59 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 23:31:31 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-23 23:32:23 +0200derelict(~derelict@user/derelict)
2021-06-23 23:33:05 +0200trcc_(~trcc@eduroam09.au.dk)
2021-06-23 23:33:48 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 23:35:22 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 23:36:02 +0200trcc(~trcc@users-1190.st.net.au.dk) (Ping timeout: 250 seconds)
2021-06-23 23:37:20 +0200trcc_(~trcc@eduroam09.au.dk) (Ping timeout: 250 seconds)
2021-06-23 23:38:29 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 23:38:40 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a50f:dc97:cbbc:9783)
2021-06-23 23:39:21 +0200hammock(~Hammock@2600:1700:19a1:3330::625)
2021-06-23 23:40:02 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 23:40:12 +0200chisui(~chisui@200116b866efc300e1478aa720ae1876.dip.versatel-1u1.de) (Quit: Client closed)
2021-06-23 23:40:19 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
2021-06-23 23:42:12 +0200waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-06-23 23:42:32 +0200dunkeln_(~dunkeln@188.71.193.140) (Ping timeout: 250 seconds)
2021-06-23 23:42:57 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 23:42:58 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a50f:dc97:cbbc:9783) (Ping timeout: 250 seconds)
2021-06-23 23:44:30 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 23:44:54 +0200michalz(~michalz@185.246.204.114) (Remote host closed the connection)
2021-06-23 23:47:17 +0200 <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
2021-06-23 23:47:18 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 250 seconds)
2021-06-23 23:47:20 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-06-23 23:48:45 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-06-23 23:48:52 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be)
2021-06-23 23:49:42 +0200fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-06-23 23:50:24 +0200jao(jao@gateway/vpn/protonvpn/jao) (Ping timeout: 265 seconds)
2021-06-23 23:51:52 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2021-06-23 23:52:06 +0200 <dminuoso> pavonia: how would that work, exactly?
2021-06-23 23:52:25 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a50f:dc97:cbbc:9783)
2021-06-23 23:53:32 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.1)
2021-06-23 23:54:20 +0200 <pavonia> I was thinking about a "real" hash map. Is the no Haskell implementation?
2021-06-23 23:54:43 +0200 <dminuoso> a "real" hash map? constant time lookup? :-)
2021-06-23 23:55:28 +0200betelgeuse(~john2gb@94-225-47-8.access.telenet.be) (Ping timeout: 246 seconds)
2021-06-23 23:55:33 +0200 <dminuoso> That would requie perfect hashing
2021-06-23 23:55:49 +0200 <pavonia> When you have a large case expression, what is the lookup time for this structure internally?
2021-06-23 23:56:17 +0200 <dminuoso> Im not sure if GHC can translate this into a jump table
2021-06-23 23:57:23 +0200 <dminuoso> It seems so
2021-06-23 23:58:06 +0200 <pavonia> So which concrete data type would you suggest for fastest lookup?
2021-06-23 23:58:29 +0200 <dminuoso> Id start by profiling and ensuring this is even worth the trouble..
2021-06-23 23:58:46 +0200 <dminuoso> Do you have actual prof data? Or is this just a case of premature optimization
2021-06-23 23:59:22 +0200 <pavonia> It's more a theoretical question
2021-06-23 23:59:59 +0200ec(~ec@gateway/tor-sasl/ec)