2023/12/08

2023-12-08 00:01:11 +0100misterfish(~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 245 seconds)
2023-12-08 00:01:34 +0100lottaquestions(~nick@2607:fa49:503d:b200:7cfa:fcd1:a658:6a49) (Ping timeout: 268 seconds)
2023-12-08 00:01:51 +0100mechap(~mechap@user/mechap) (Quit: WeeChat 4.1.2)
2023-12-08 00:02:35 +0100remedan(~remedan@ip-94-112-0-18.bb.vodafone.cz)
2023-12-08 00:06:26 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-12-08 00:11:10 +0100chomwitt(~chomwitt@2a02:587:7a09:c300:1ac0:4dff:fedb:a3f1) (Ping timeout: 246 seconds)
2023-12-08 00:16:07 +0100 <DerDummNemetzkii> how does one solve cyclic graph dependencies in haskell?
2023-12-08 00:17:24 +0100 <geekosaur> symbolic references is one waty. "tying the knot" is another
2023-12-08 00:17:36 +0100 <geekosaur> https://wiki.haskell.org/Tying_the_Knot
2023-12-08 00:18:38 +0100 <DerDummNemetzkii> thanks
2023-12-08 00:24:20 +0100alp_(~alp@2001:861:e3d6:8f80:27cf:eb18:e4f:ec96) (Ping timeout: 256 seconds)
2023-12-08 00:26:52 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-12-08 00:34:30 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2023-12-08 00:36:07 +0100 <EvanR> do you mean module dependencies
2023-12-08 00:43:07 +0100 <DerDummNemetzkii> EvanR, aye
2023-12-08 00:43:33 +0100 <DerDummNemetzkii> ModuleB imports ModuleA which imports ModuleB
2023-12-08 00:43:54 +0100 <geekosaur> oh dear
2023-12-08 00:43:56 +0100 <EvanR> an hs-boot file will tell ghc about the loops and allow the compilation to go through
2023-12-08 00:43:59 +0100 <EvanR> however
2023-12-08 00:44:07 +0100 <EvanR> probably best to just not do that
2023-12-08 00:44:28 +0100 <DerDummNemetzkii> kinda hard to when I need modules to have a parent.
2023-12-08 00:44:53 +0100 <EvanR> there is usually a way to refactor it so you don't have an import loop
2023-12-08 00:45:37 +0100 <DerDummNemetzkii> But this is mandatory. I have, say, Car module which imports Engine and Engine needs a reference back to the parent called "car_owner"
2023-12-08 00:45:38 +0100mechap(~mechap@user/mechap)
2023-12-08 00:45:59 +0100mmhat(~mmh@p200300f1c7269374ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.1.2)
2023-12-08 00:46:11 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 245 seconds)
2023-12-08 00:46:37 +0100alexherbo2(~alexherbo@2a02-8440-3341-7ea2-2192-55be-5512-22f8.rev.sfr.net) (Remote host closed the connection)
2023-12-08 00:46:54 +0100 <DerDummNemetzkii> So that the engine knows what car it belongs to.
2023-12-08 00:47:39 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 256 seconds)
2023-12-08 00:53:45 +0100tremon(~tremon@83.80.159.219) (Quit: getting boxed in)
2023-12-08 00:56:21 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-12-08 00:57:21 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2023-12-08 00:58:41 +0100jargon(~jargon@174-22-221-51.phnx.qwest.net)
2023-12-08 01:02:24 +0100 <monochrom> I don't think you should split hair to the point that Engine and Car are split into two modules.
2023-12-08 01:03:24 +0100 <monochrom> Especially since, for example, Engine refers to Car, it is not like Engine is "resuable for other things like Ships" anyway.
2023-12-08 01:04:10 +0100idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1)
2023-12-08 01:04:44 +0100 <EvanR> yeah you can easily put the mutually recursive type definitions in 1 module and have modules for the operations elsewhere that import that
2023-12-08 01:05:13 +0100 <EvanR> one type per file is ... probably not a good hill to die on in haskell
2023-12-08 01:08:32 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
2023-12-08 01:09:25 +0100Square2(~Square4@user/square)
2023-12-08 01:10:18 +0100 <int-e> maybe if GHC was smarter about cyclic imports
2023-12-08 01:10:47 +0100 <int-e> (though even then, do you really want to split your syntax tree into several files? for example.)
2023-12-08 01:12:01 +0100Square(~Square@user/square) (Ping timeout: 256 seconds)
2023-12-08 01:22:30 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net)
2023-12-08 01:23:12 +0100steew_(~steew@user/steew)
2023-12-08 01:23:50 +0100steew_steew
2023-12-08 01:23:59 +0100 <geekosaur> henning does…
2023-12-08 01:25:40 +0100 <Axman6> DerDummNemetzkii: an alternative solution is to make the reference to car in the engine a type variable, data Engine' car = Engine {...}, then elsewhere you can have type Engine = Engine' Car
2023-12-08 01:27:11 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2023-12-08 01:31:54 +0100 <monochrom> The fundamental theorem of modules: mutual import, separate compilation,100% type inference: Pick two.
2023-12-08 01:32:22 +0100 <glguy> That's pretty good that we get to pick 2
2023-12-08 01:32:45 +0100 <c_wraith> I'm really not all that wedded to separate compilation.
2023-12-08 01:33:08 +0100 <geekosaur> I am, I have no intention of waiting for text or aeson to compile every time
2023-12-08 01:33:21 +0100 <monochrom> For example, in *ML, they gave up the 3rd one. In fact, their best practice is that whether you have mutual imports or not, you still handwrite module signatures (we call them "hs-boot"s).
2023-12-08 01:33:22 +0100 <geekosaur> (or more to the point, all the dependencies of dbus for my xmonad config…)
2023-12-08 01:33:31 +0100 <glguy> doctor, it hurts when I use aeson
2023-12-08 01:34:25 +0100 <c_wraith> I mean, javac has done mutual imports with pretty good dependency tracking to avoid unnecessary recompiler for 20 years
2023-12-08 01:34:32 +0100 <c_wraith> *recompiles
2023-12-08 01:35:05 +0100 <monochrom> Therefore, I don't understand why Haskellers complain so bitterly about having to write hs-boots for mutual imports and praise how "easy" it is in other languages.
2023-12-08 01:35:42 +0100 <monochrom> c_wraith, javac did not do any type inference for 20 years.
2023-12-08 01:35:52 +0100juri_(~juri@79.140.117.153)
2023-12-08 01:36:14 +0100 <monochrom> And probably still do little or none today.
2023-12-08 01:37:15 +0100 <c_wraith> well, for one, hs-boot files are not documented in a readable way. I've looked into using them before, and the conclusion I got was "it's better to use a worse module structure that doesn't need this"
2023-12-08 01:37:27 +0100 <monochrom> But perhaps you can cite dynamically typed languages such as shell, tcl, and python.
2023-12-08 01:38:39 +0100 <glguy> if backpack had found more adoption, maybe we'd be used to it more
2023-12-08 01:39:14 +0100 <c_wraith> amusingly, I've used one portion of backpack repeatedly. It was documented well.
2023-12-08 01:39:25 +0100flebron(~flebron@2a00:79e1:abc:1208:c9ca:d32c:f1ea:8834)
2023-12-08 01:43:55 +0100juri_(~juri@79.140.117.153) (Ping timeout: 276 seconds)
2023-12-08 01:45:27 +0100 <flebron> Hi folks :) I'm implementing an idea by Oleg Kiselyov in his paper https://arxiv.org/pdf/1109.0784.pdf "Implementing Explicit and Finding Implicit Sharing in Embedded DSLs". I have this sort of structure:
2023-12-08 01:45:28 +0100 <flebron> ```
2023-12-08 01:45:28 +0100 <flebron> data ExprF rep where
2023-12-08 01:45:29 +0100 <flebron>   ParamF :: Int -> ExprF rep
2023-12-08 01:45:29 +0100 <flebron>   ConstantF :: SomeArray -> ExprF rep
2023-12-08 01:45:30 +0100 <flebron>   AddF :: rep -> rep -> ExprF rep
2023-12-08 01:45:30 +0100 <flebron>   SubF :: rep -> rep -> ExprF rep
2023-12-08 01:45:31 +0100 <flebron>   ...
2023-12-08 01:45:31 +0100 <flebron>  deriving (Traversable, Foldable, Show, Functor, Ord, Eq)
2023-12-08 01:45:32 +0100 <flebron> type Shaxpr = Fix ShaxprF
2023-12-08 01:45:32 +0100 <flebron> ```
2023-12-08 01:45:33 +0100 <flebron> Now suppose I have some heavily nested expression tree, `tree :: Expr`. There are repeated subtrees here, and I'd like to dedup them. I thus create this function:
2023-12-08 01:45:33 +0100 <flebron> ```
2023-12-08 01:45:34 +0100 <flebron> type LabelState = BiMap (ExprF Int)
2023-12-08 01:45:34 +0100 <flebron> labeler :: ExprF Int -> State LabelState Int
2023-12-08 01:45:35 +0100 <flebron> labeler expr = do
2023-12-08 01:45:35 +0100 <flebron>   m <- get
2023-12-08 01:45:36 +0100 <flebron>   let (k, m') = insert expr m
2023-12-08 01:47:10 +0100sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 276 seconds)
2023-12-08 01:47:26 +0100 <monochrom> What is ShaxprF?
2023-12-08 01:48:35 +0100 <flebron> Just ExprF that I forgot to rename for this :)
2023-12-08 01:48:47 +0100 <flebron> (I thought I gottem all...)
2023-12-08 01:51:00 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-12-08 01:54:23 +0100juri_(~juri@faikvm.com)
2023-12-08 02:02:23 +0100califax(~califax@user/califx) (Remote host closed the connection)
2023-12-08 02:03:55 +0100califax(~califax@user/califx)
2023-12-08 02:11:41 +0100thegeekinside(~thegeekin@189.217.90.224) ()
2023-12-08 02:13:06 +0100thegeekinside(~thegeekin@189.217.90.224)
2023-12-08 02:15:27 +0100carcif^(~carcif@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
2023-12-08 02:19:23 +0100emmanuelux_(~emmanuelu@user/emmanuelux)
2023-12-08 02:21:11 +0100emmanuelux(~emmanuelu@user/emmanuelux) (Ping timeout: 260 seconds)
2023-12-08 02:35:56 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-12-08 02:35:56 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-12-08 02:35:56 +0100wroathe(~wroathe@user/wroathe)
2023-12-08 02:36:24 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2023-12-08 02:44:49 +0100mixfix41(~plaguedog@user/mixfix41) (Ping timeout: 256 seconds)
2023-12-08 02:57:26 +0100machinedgod(~machinedg@93-138-62-133.adsl.net.t-com.hr) (Ping timeout: 245 seconds)
2023-12-08 02:59:21 +0100machinedgod(~machinedg@93-136-199-108.adsl.net.t-com.hr)
2023-12-08 03:00:38 +0100wroathe(~wroathe@user/wroathe) (Quit: leaving)
2023-12-08 03:05:21 +0100machinedgod(~machinedg@93-136-199-108.adsl.net.t-com.hr) (Ping timeout: 256 seconds)
2023-12-08 03:06:43 +0100flebron(~flebron@2a00:79e1:abc:1208:c9ca:d32c:f1ea:8834) (Quit: Client closed)
2023-12-08 03:15:10 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2023-12-08 03:20:48 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Quit: peterbecich)
2023-12-08 03:21:20 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2023-12-08 03:23:18 +0100Guest67(~Guest67@ec2-52-221-159-193.ap-southeast-1.compute.amazonaws.com)
2023-12-08 03:23:31 +0100Guest67(~Guest67@ec2-52-221-159-193.ap-southeast-1.compute.amazonaws.com) (Client Quit)
2023-12-08 03:30:36 +0100flebron(~flebron@2a00:79e1:abc:1208:c9ca:d32c:f1ea:8834)
2023-12-08 03:31:16 +0100flebron(~flebron@2a00:79e1:abc:1208:c9ca:d32c:f1ea:8834) (Client Quit)
2023-12-08 03:39:35 +0100thegeekinside(~thegeekin@189.217.90.224) (Remote host closed the connection)
2023-12-08 03:39:55 +0100ddellacosta(~ddellacos@ool-44c73d16.dyn.optonline.net)
2023-12-08 03:43:07 +0100jargon(~jargon@174-22-221-51.phnx.qwest.net) (Remote host closed the connection)
2023-12-08 03:43:22 +0100xff0x(~xff0x@ai096045.d.east.v6connect.net) (Ping timeout: 255 seconds)
2023-12-08 03:55:01 +0100tomith(tomith@user/tomith) (Quit: tomith)
2023-12-08 03:57:40 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds)
2023-12-08 04:00:04 +0100Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
2023-12-08 04:08:15 +0100qqq(~qqq@92.43.167.61) (Remote host closed the connection)
2023-12-08 04:08:15 +0100Igloo(~ian@2001:8b0:645c::210) (Ping timeout: 256 seconds)
2023-12-08 04:17:00 +0100 <iqubic> I have a GHCI question. If I load a local file with ":l Foo" to load the definitions from "Foo.hs", is there a way to unload the definitions without killing GHCI and restarting it?
2023-12-08 04:19:11 +0100 <int-e> apparently you can use ':l' without arguments
2023-12-08 04:19:45 +0100 <iqubic> I see... That's cool.
2023-12-08 04:20:11 +0100Igloo(~ian@2001:8b0:645c::210)
2023-12-08 04:27:08 +0100 <ddellacosta> TIL
2023-12-08 04:27:32 +0100 <ddellacosta> I assumed that would reload Main
2023-12-08 04:27:52 +0100 <ddellacosta> "Ok, no modules loaded."
2023-12-08 04:28:57 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2023-12-08 04:35:42 +0100Igloo(~ian@2001:8b0:645c::210) (Ping timeout: 260 seconds)
2023-12-08 04:36:49 +0100Igloo(~ian@matrix.chaos.earth.li)
2023-12-08 04:36:52 +0100 <int-e> ddellacosta: there's a dedicated :r for reloading
2023-12-08 04:40:39 +0100edr(~edr@user/edr) (Quit: Leaving)
2023-12-08 04:42:05 +0100Igloo(~ian@matrix.chaos.earth.li) (Ping timeout: 240 seconds)
2023-12-08 04:42:36 +0100terrorjack(~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
2023-12-08 04:44:06 +0100Igloo(~ian@matrix.chaos.earth.li)
2023-12-08 04:44:31 +0100td_(~td@i53870937.versanet.de) (Ping timeout: 245 seconds)
2023-12-08 04:45:26 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net)
2023-12-08 04:45:54 +0100terrorjack(~terrorjac@2a01:4f8:c17:87f8::)
2023-12-08 04:46:28 +0100td_(~td@i5387090D.versanet.de)
2023-12-08 04:47:49 +0100 <ddellacosta> int-e: I guess I was conflating the two
2023-12-08 04:47:54 +0100 <ddellacosta> thanks!
2023-12-08 04:52:54 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-12-08 04:52:54 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-12-08 04:52:54 +0100finn_elijaFinnElija
2023-12-08 04:53:08 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a11c:b194:25be:95ba) (Remote host closed the connection)
2023-12-08 04:53:23 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-12-08 05:02:34 +0100ddellacosta(~ddellacos@ool-44c73d16.dyn.optonline.net) (Ping timeout: 256 seconds)
2023-12-08 05:04:08 +0100ddellacosta(~ddellacos@ool-44c73d16.dyn.optonline.net)
2023-12-08 05:10:21 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
2023-12-08 05:11:00 +0100oneeyedalien(~oneeyedal@user/oneeyedalien)
2023-12-08 05:11:48 +0100mosul(~mosul@user/vilya)
2023-12-08 05:12:14 +0100mosul(~mosul@user/vilya) (Client Quit)
2023-12-08 05:12:50 +0100mosul(~mosul@user/mosul)
2023-12-08 05:16:14 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2023-12-08 05:17:53 +0100Nixkernal_(~Nixkernal@115.16.194.178.dynamic.wline.res.cust.swisscom.ch)
2023-12-08 05:19:11 +0100Nixkernal(~Nixkernal@115.16.194.178.dynamic.wline.res.cust.swisscom.ch) (Ping timeout: 264 seconds)
2023-12-08 05:43:25 +0100aforemny(~aforemny@i59F516CC.versanet.de)
2023-12-08 05:44:06 +0100aforemny_(~aforemny@i59F516C0.versanet.de) (Ping timeout: 245 seconds)
2023-12-08 05:45:00 +0100mosul(~mosul@user/mosul) (Quit: Lost terminal)
2023-12-08 05:46:41 +0100oneeyedalien(~oneeyedal@user/oneeyedalien) (Quit: Leaving)
2023-12-08 05:47:17 +0100Square2(~Square4@user/square) (Ping timeout: 256 seconds)
2023-12-08 05:48:45 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 252 seconds)
2023-12-08 05:49:06 +0100YuutaW(~YuutaW@mail.yuuta.moe) (Ping timeout: 245 seconds)
2023-12-08 05:53:10 +0100YuutaW(~YuutaW@mail.yuuta.moe)
2023-12-08 06:04:07 +0100ksqsf(~user@2409:8a70:3c11:f3f0:f1d1:e7f:6014:caf7)
2023-12-08 06:13:42 +0100lane(~lane@pool-98-113-180-17.nycmny.fios.verizon.net)
2023-12-08 06:16:04 +0100ksqsf(~user@2409:8a70:3c11:f3f0:f1d1:e7f:6014:caf7) (ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.1.90))
2023-12-08 06:43:33 +0100misterfish(~misterfis@84-53-85-146.bbserv.nl)
2023-12-08 06:47:57 +0100lg188(~lg188@82.18.98.230) (Quit: Ping timeout (120 seconds))
2023-12-08 06:48:17 +0100lg188(~lg188@82.18.98.230)
2023-12-08 06:49:47 +0100lane1(~lane@pool-98-113-180-17.nycmny.fios.verizon.net)
2023-12-08 06:52:43 +0100lane(~lane@pool-98-113-180-17.nycmny.fios.verizon.net) (Ping timeout: 255 seconds)
2023-12-08 06:56:54 +0100rosco(~rosco@175.136.158.171)
2023-12-08 06:59:49 +0100misterfish(~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 276 seconds)
2023-12-08 07:01:09 +0100misterfish(~misterfis@84-53-85-146.bbserv.nl)
2023-12-08 07:02:00 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-12-08 07:03:31 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
2023-12-08 07:03:49 +0100euleritian(~euleritia@dynamic-046-114-201-163.46.114.pool.telefonica.de)
2023-12-08 07:07:58 +0100euleritian(~euleritia@dynamic-046-114-201-163.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-12-08 07:08:15 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-08 07:08:46 +0100trev(~trev@user/trev)
2023-12-08 07:14:14 +0100 <EvanR> that's the second day I got the star but did not understand why
2023-12-08 07:16:49 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 256 seconds)
2023-12-08 07:17:55 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2023-12-08 07:20:01 +0100 <iqubic> Heh... Yeah... today's puzzle is interesting.
2023-12-08 07:20:22 +0100tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving)
2023-12-08 07:20:38 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Read error: Connection reset by peer)
2023-12-08 07:21:16 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2023-12-08 07:22:32 +0100tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2023-12-08 07:23:13 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2023-12-08 07:23:52 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-08 07:25:56 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2023-12-08 07:26:50 +0100chomwitt(~chomwitt@2a02:587:7a09:c300:1ac0:4dff:fedb:a3f1)
2023-12-08 07:26:56 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-08 07:27:49 +0100echoreply(~echoreply@45.32.163.16) (Quit: WeeChat 2.8)
2023-12-08 07:27:50 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2023-12-08 07:29:08 +0100echoreply(~echoreply@45.32.163.16)
2023-12-08 07:29:19 +0100euleritian(~euleritia@dynamic-046-114-201-163.46.114.pool.telefonica.de)
2023-12-08 07:32:15 +0100euleritian(~euleritia@dynamic-046-114-201-163.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-12-08 07:32:34 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-08 07:33:31 +0100qqq(~qqq@92.43.167.61)
2023-12-08 07:34:17 +0100igemnace(~ian@user/igemnace)
2023-12-08 07:40:23 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2023-12-08 07:40:46 +0100 <int-e> Yeah, solving the stated problem properly is quite a bit of effort.
2023-12-08 07:41:28 +0100euleritian(~euleritia@dynamic-046-114-201-163.46.114.pool.telefonica.de)
2023-12-08 07:46:04 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net)
2023-12-08 07:47:59 +0100misterfish(~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 264 seconds)
2023-12-08 07:48:49 +0100mc47(~mc47@xmonad/TheMC47)
2023-12-08 07:51:49 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 276 seconds)
2023-12-08 07:58:25 +0100acidjnk_new(~acidjnk@p200300d6e72b93646479aa555f408eaf.dip0.t-ipconnect.de)
2023-12-08 08:14:38 +0100EvanR(~EvanR@user/evanr) (Remote host closed the connection)
2023-12-08 08:14:57 +0100EvanR(~EvanR@user/evanr)
2023-12-08 08:14:58 +0100 <c_wraith> I solved it properly
2023-12-08 08:15:23 +0100 <int-e> I did too but not initially.
2023-12-08 08:15:45 +0100 <c_wraith> It helped that I had code for <magical math function> lying around already
2023-12-08 08:16:08 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 268 seconds)
2023-12-08 08:17:40 +0100 <int-e> hmm I think that's not the hard part though
2023-12-08 08:17:51 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2023-12-08 08:18:20 +0100 <int-e> but whatever, it's probably still too early to discuss details
2023-12-08 08:21:15 +0100 <c_wraith> oh. I didn't anticipate the input would make that unnecessary
2023-12-08 08:21:25 +0100 <c_wraith> So I just threw the industrial strength math at it.
2023-12-08 08:21:58 +0100 <c_wraith> No thinking about whether I'm on a special case, just throw the stuff that handles all cases
2023-12-08 08:33:58 +0100 <probie> I don't think there's anything wrong with "check for special case, and if so use fast algorithm", especially when the problem text and example both hint at it being the special case
2023-12-08 08:37:07 +0100lane1(~lane@pool-98-113-180-17.nycmny.fios.verizon.net) (Ping timeout: 255 seconds)
2023-12-08 08:38:40 +0100nitrix(~nitrix@user/nitrix) (Quit: ZNC 1.8.2 - https://znc.in)
2023-12-08 08:39:28 +0100nitrix(~nitrix@user/nitrix)
2023-12-08 08:39:45 +0100 <int-e> well since there's only one input we're closer to "don't even implement the general case" territory
2023-12-08 08:40:43 +0100 <Hooloovoo> if there's only one input you're probably in "don't even bother with special case" territory
2023-12-08 08:40:47 +0100 <Hooloovoo> just print the answer
2023-12-08 08:41:05 +0100 <int-e> Hooloovoo: well... how do you find the answer?
2023-12-08 08:41:47 +0100 <Hooloovoo> (I don't even know the question, I assume it's some sort of programming challenge thing?)
2023-12-08 08:42:35 +0100 <Hooloovoo> (but yeah, you're right)
2023-12-08 08:43:45 +0100drdo5(~drdo@bl14-14-49.dsl.telepac.pt)
2023-12-08 08:45:43 +0100drdo(~drdo@bl14-14-49.dsl.telepac.pt) (Ping timeout: 260 seconds)
2023-12-08 08:45:43 +0100drdo5drdo
2023-12-08 08:47:18 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-12-08 08:47:55 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
2023-12-08 08:48:28 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-12-08 08:48:44 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2023-12-08 08:49:21 +0100 <int-e> Hooloovoo: I mean, sometimes you can find an answer with pen and paper and without writing any code. That's, of course, fine for challenges that only check the answer rather than testing a program on various inputs. But most of the time the computations are too unwieldy.
2023-12-08 08:49:58 +0100 <int-e> The concrete context is Advent of Code (today, part 2).
2023-12-08 08:50:08 +0100 <int-e> (Which you won't see without solving part 1.)
2023-12-08 08:50:30 +0100euleritian(~euleritia@dynamic-046-114-201-163.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-12-08 08:50:48 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-08 08:51:25 +0100econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2023-12-08 08:53:56 +0100 <Hooloovoo> I assume part 2 is just part 1 with way the heck more pairs?
2023-12-08 08:54:52 +0100 <probie> Nah, advent of code almost always uses the same input data for both part 1 and part 2
2023-12-08 08:55:34 +0100 <int-e> "heck more pairs" - kind of correct though ;)
2023-12-08 08:55:44 +0100 <int-e> just have to find the right pairs
2023-12-08 08:56:34 +0100 <int-e> (this comment is not supposed to be helpful)
2023-12-08 08:58:25 +0100Hooloovoodidn't auth to find the actual input... just doesn't look like the tuple list is... especially interesting
2023-12-08 08:58:52 +0100 <int-e> indeed part 1 isn't too interesting
2023-12-08 09:04:07 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
2023-12-08 09:04:33 +0100euleritian(~euleritia@dynamic-046-114-201-163.46.114.pool.telefonica.de)
2023-12-08 09:05:09 +0100misterfish(~misterfis@87.215.131.102)
2023-12-08 09:05:09 +0100euleritian(~euleritia@dynamic-046-114-201-163.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-12-08 09:05:27 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-08 09:08:53 +0100cods(~fred@tuxee.net) (Ping timeout: 240 seconds)
2023-12-08 09:10:20 +0100alp_(~alp@2001:861:e3d6:8f80:98df:4b4d:4787:7761)
2023-12-08 09:13:00 +0100gmg(~user@user/gehmehgeh)
2023-12-08 09:14:16 +0100oo_miguel(~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
2023-12-08 09:17:49 +0100fendor(~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c)
2023-12-08 09:23:25 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:11bf:d345:9651:e652)
2023-12-08 09:28:08 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2023-12-08 09:28:33 +0100machinedgod(~machinedg@93-136-199-108.adsl.net.t-com.hr)
2023-12-08 09:33:13 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-12-08 09:37:47 +0100actioninja(~actioninj@user/actioninja)
2023-12-08 09:45:55 +0100Buggys(Buggys@shelltalk.net)
2023-12-08 09:46:44 +0100vpan(~vpan@mail.elitnet.lt)
2023-12-08 09:48:48 +0100qqq(~qqq@92.43.167.61) (Remote host closed the connection)
2023-12-08 09:53:45 +0100tzh(~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
2023-12-08 09:54:29 +0100coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-12-08 09:58:52 +0100ft(~ft@p3e9bc784.dip0.t-ipconnect.de) (Quit: leaving)
2023-12-08 10:03:17 +0100mechap(~mechap@user/mechap) (Quit: WeeChat 4.1.2)
2023-12-08 10:03:45 +0100chele(~chele@user/chele)
2023-12-08 10:04:06 +0100qqq(~qqq@92.43.167.61)
2023-12-08 10:21:22 +0100qqq(~qqq@92.43.167.61) (Quit: leaving)
2023-12-08 10:23:40 +0100notzmv(~zmv@user/notzmv)
2023-12-08 10:25:22 +0100cfricke(~cfricke@user/cfricke)
2023-12-08 10:25:43 +0100CiaoSen(~Jura@2a05:5800:283:ec00:ca4b:d6ff:fec1:99da)
2023-12-08 10:32:07 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2023-12-08 10:35:06 +0100bilegeek(~bilegeek@2600:1008:b042:9b48:fb5c:1866:504a:bda4) (Quit: Leaving)
2023-12-08 10:40:44 +0100idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-12-08 10:47:52 +0100dhil(~dhil@2001:8e0:2014:3100:7b3d:f8f2:337f:eb5a)
2023-12-08 10:49:25 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2023-12-08 10:57:39 +0100mmhat(~mmh@p200300f1c7269374ee086bfffe095315.dip0.t-ipconnect.de)
2023-12-08 10:57:43 +0100Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
2023-12-08 11:02:49 +0100 <trev> does anyone know any blogs that write up details about solutions? i vaguely remember a haskell one but can't seem to find it
2023-12-08 11:04:44 +0100 <trev> nevermind, it was mmhaskell but it looks like they aren't doing it this year (yet?)
2023-12-08 11:09:47 +0100aliosablack(~chomwitt@2a02:587:7a09:c300:1ac0:4dff:fedb:a3f1)
2023-12-08 11:12:03 +0100wib_jonas(~wib_jonas@business-37-191-60-209.business.broadband.hu)
2023-12-08 11:12:22 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 255 seconds)
2023-12-08 11:17:46 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
2023-12-08 11:17:49 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2023-12-08 11:18:25 +0100rosco(~rosco@175.136.158.171) (Quit: Lost terminal)
2023-12-08 11:20:48 +0100Lord_of_Life_Lord_of_Life
2023-12-08 11:22:07 +0100mmhat(~mmh@p200300f1c7269374ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.1.2)
2023-12-08 11:23:27 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 260 seconds)
2023-12-08 11:24:33 +0100aliosablack(~chomwitt@2a02:587:7a09:c300:1ac0:4dff:fedb:a3f1) (Quit: Leaving)
2023-12-08 11:30:32 +0100anpad(~pandeyan@user/anpad) (Quit: ZNC 1.8.2 - https://znc.in)
2023-12-08 11:32:01 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2023-12-08 11:32:37 +0100anpad(~pandeyan@user/anpad)
2023-12-08 11:35:36 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-12-08 11:39:36 +0100phma(~phma@2001:5b0:211b:f698:7c9e:ca7b:e453:391) (Read error: Connection reset by peer)
2023-12-08 11:40:25 +0100phma(~phma@host-67-44-208-50.hnremote.net)
2023-12-08 11:40:57 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-12-08 11:53:22 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-12-08 11:58:50 +0100danza(~francesco@rm-19-49-89.service.infuturo.it)
2023-12-08 12:05:04 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 4.0.5)
2023-12-08 12:08:40 +0100swamp_(~zmt00@user/zmt00) (Ping timeout: 246 seconds)
2023-12-08 12:09:45 +0100krei-se(~krei-se@p5085dea2.dip0.t-ipconnect.de) (Quit: ZNC 1.8.2 - https://znc.in)
2023-12-08 12:10:17 +0100cfricke(~cfricke@user/cfricke)
2023-12-08 12:10:21 +0100alexherbo2(~alexherbo@2a02-8440-b214-7d9d-0c9c-4724-3c34-5adb.rev.sfr.net)
2023-12-08 12:14:19 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
2023-12-08 12:14:43 +0100alexherbo2(~alexherbo@2a02-8440-b214-7d9d-0c9c-4724-3c34-5adb.rev.sfr.net) (Remote host closed the connection)
2023-12-08 12:15:10 +0100euleritian(~euleritia@77.22.252.56)
2023-12-08 12:16:35 +0100akegalj(~akegalj@78-1-90-118.adsl.net.t-com.hr)
2023-12-08 12:19:00 +0100krei-se(~krei-se@p5085dea2.dip0.t-ipconnect.de)
2023-12-08 12:23:24 +0100 <akegalj> I am solving day8 advent of code atm and I am confused why this leaks https://github.com/akegalj/algorithms_playground/blob/master/advent-of-code/2023/Day8.hs#L16 ? I didn't yet profile it or dumped core to see details but my intuition says this shouldn't leak. Its basically `findIndex (..) . scanl (..) . cycle` . My intuition is that this should compile to efficient lazy stream
2023-12-08 12:23:33 +0100alexherbo2(~alexherbo@2a02-8440-b214-7d9d-2de4-00d5-d93d-0252.rev.sfr.net)
2023-12-08 12:28:31 +0100 <hippoid> is there a way to index into Text values, like give me the 5th element? or do you have to context Text to [Char]?
2023-12-08 12:28:47 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 260 seconds)
2023-12-08 12:29:15 +0100 <akegalj> hippoid: https://hackage.haskell.org/package/text-2.1/docs/Data-Text.html#v:index
2023-12-08 12:30:04 +0100 <danza> thanks akegalj
2023-12-08 12:30:56 +0100 <hippoid> thanks akegalj!
2023-12-08 12:31:00 +0100 <akegalj> note that it is O(n)
2023-12-08 12:32:56 +0100 <hippoid> yeah, thats a clue there's a better way to do what i want
2023-12-08 12:35:02 +0100 <dminuoso_> hippoid: What does "5th element" even mean to you?
2023-12-08 12:35:11 +0100 <dminuoso_> What is an "element"?
2023-12-08 12:35:36 +0100 <dminuoso_> Are you talking byte? If yes, which encoding? Are you talking unicode code point? Are you talking glyphs? What about ligatures?
2023-12-08 12:36:31 +0100machinedgod(~machinedg@93-136-199-108.adsl.net.t-com.hr) (Ping timeout: 255 seconds)
2023-12-08 12:36:33 +0100 <danza> that interface returns a Char though
2023-12-08 12:38:41 +0100 <akegalj> danza: if you are using ascii then bytestring might be better as it has O(1) indexing (https://hackage.haskell.org/package/bytestring-0.12.0.2/docs/Data-ByteString.html#v:index)
2023-12-08 12:39:26 +0100 <danza> makes sense, not sure what hippoid is using
2023-12-08 12:40:44 +0100 <danza> Char does not have to be ASCII though, or does it?
2023-12-08 12:40:55 +0100 <dminuoso_> Char represents unicode codepoints.
2023-12-08 12:41:02 +0100 <danza> cheers
2023-12-08 12:41:56 +0100 <akegalj> danza: Word8 from bytestring can canpture ascii, Char is unicode
2023-12-08 12:44:05 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-12-08 12:44:05 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-12-08 12:44:05 +0100finn_elijaFinnElija
2023-12-08 12:44:22 +0100 <hippoid> it's all ascii, i think i can just switch to bytestring
2023-12-08 12:44:43 +0100 <dminuoso_> That's going to be a lot faster, then.
2023-12-08 12:45:18 +0100 <dminuoso_> Sometimes Im a bit sad about the state of text in Haskell.
2023-12-08 12:45:31 +0100 <danza> text or Text?
2023-12-08 12:45:47 +0100 <dminuoso_> Yes.
2023-12-08 12:45:56 +0100sawilagar(~sawilagar@user/sawilagar)
2023-12-08 12:46:00 +0100 <dminuoso_> Everything text related.
2023-12-08 12:46:15 +0100 <dminuoso_> Show, Read, parsing, pretty printing, Text, String, ByteString.
2023-12-08 12:46:57 +0100 <dminuoso_> (And yes, I realize ByteString is a general binary buffers interface - it pops up often when interfacing with text native libraries)
2023-12-08 12:47:12 +0100 <danza> wow, parsing even
2023-12-08 12:48:39 +0100 <danza> what is wrong with Show and Read?
2023-12-08 12:48:45 +0100 <dminuoso_> Literally everything.
2023-12-08 12:49:01 +0100 <dminuoso_> They dont do what most users think it does.
2023-12-08 12:49:25 +0100 <dminuoso_> Show is a debugging crutsh, and read is.. well a poor mans eval.
2023-12-08 12:50:12 +0100 <dminuoso_> Read/Show both go through String - which if you ever use Text imposes a T.unpack/T.pack onto every all site.
2023-12-08 12:50:39 +0100 <danza> i can live with that. I like Show, at least. I think there is work in progress to give Read a better interface. Its partiality is not the best
2023-12-08 12:50:57 +0100 <dminuoso_> The partiality is honestly the one thing I could somewhat live with.
2023-12-08 12:51:52 +0100 <dminuoso_> The thing with Show is that the deriving generated interface must yield a valid haskell expression that evaluates back to the "same" (whatever that even means) value.
2023-12-08 12:52:08 +0100 <dminuoso_> You have no format control
2023-12-08 12:52:10 +0100 <dminuoso_> It produces String.
2023-12-08 12:53:22 +0100 <dminuoso_> Say you have `data IPv4 = IPv4 Word32`
2023-12-08 12:53:39 +0100 <dminuoso_> And you do `show (myIP :: IPv4)` you would really expect it to print something like "127.0.0.1", right?
2023-12-08 12:54:01 +0100 <danza> depends
2023-12-08 12:54:58 +0100 <danza> > data I = I String; show I "127.0.0.0"
2023-12-08 12:55:00 +0100 <lambdabot> <hint>:1:1: error: parse error on input ‘data’
2023-12-08 12:55:02 +0100[_](~itchyjunk@user/itchyjunk/x-7353470)
2023-12-08 12:56:31 +0100 <danza> % data I = I String; show $ I "127.0.0.1"
2023-12-08 12:56:31 +0100 <yahb2> <interactive>:95:20: error: ; Parse error: module header, import declaration ; or top-level declaration expected.
2023-12-08 12:57:25 +0100 <danza> hmm i thought i had seen ; used there before, but maybe it had been defined
2023-12-08 12:57:33 +0100 <danza> % data I = I String
2023-12-08 12:57:33 +0100 <yahb2> <no output>
2023-12-08 12:57:37 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2023-12-08 12:57:57 +0100 <danza> % show $ I "127.0.0.1"
2023-12-08 12:57:57 +0100 <yahb2> <interactive>:99:1: error: ; • No instance for (Show I) arising from a use of ‘show’ ; • In the first argument of ‘($)’, namely ‘show’ ; In the expression: show $ I "127.0.0.1" ; ...
2023-12-08 12:58:06 +0100 <danza> % data I = I String deriving Show
2023-12-08 12:58:06 +0100 <yahb2> <no output>
2023-12-08 12:58:08 +0100 <danza> % show $ I "127.0.0.1"
2023-12-08 12:58:08 +0100 <yahb2> "I \"127.0.0.1\""
2023-12-08 12:58:29 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
2023-12-08 12:58:47 +0100 <danza> the type prefix? Is that annoying you?
2023-12-08 13:01:18 +0100 <tromp> i tried (a->b,a->c) -> a -> (b,c) in hoogle and was surprised to get no results
2023-12-08 13:01:36 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 252 seconds)
2023-12-08 13:01:59 +0100 <danza> did you try with (a->b) -> (a->c) and the rest the same?
2023-12-08 13:02:33 +0100 <danza> :t uncurry
2023-12-08 13:02:34 +0100 <lambdabot> (a -> b -> c) -> (a, b) -> c
2023-12-08 13:02:41 +0100 <anon1123> hi! im having difficulty finding the correct way to indent. i wish to know how to place the expression after the `do` in multiple lines in the exampolary 3 lines i will paste:
2023-12-08 13:02:44 +0100 <anon1123> f i
2023-12-08 13:02:46 +0100 <anon1123> | i > 0 = do i <- 1 + 1; i
2023-12-08 13:02:48 +0100 <anon1123> | otherwise = 2
2023-12-08 13:02:50 +0100 <anon1123> ---
2023-12-08 13:03:59 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2023-12-08 13:04:00 +0100 <tromp> @danza ah thx, that works
2023-12-08 13:04:00 +0100 <lambdabot> Unknown command, try @list
2023-12-08 13:04:37 +0100 <danza> oh was not familiar with do without {}, that must be where i have seen the floating ; here, without noticing the `do`
2023-12-08 13:05:23 +0100 <ncf> is anything mathematically interesting known about haskell's First and Last monoids? are they free functors into some interesting subcategory of monoids?
2023-12-08 13:07:44 +0100 <anon1123> 3> {}s
2023-12-08 13:07:48 +0100 <anon1123> ^ thanks, danza
2023-12-08 13:08:06 +0100 <danza> that was it? Alright then XD
2023-12-08 13:11:44 +0100Lears(~Leary]@user/Leary/x-0910699)
2023-12-08 13:14:03 +0100yaroot(~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c) (Ping timeout: 260 seconds)
2023-12-08 13:14:10 +0100[Leary](~Leary]@user/Leary/x-0910699) (Ping timeout: 260 seconds)
2023-12-08 13:17:25 +0100tremon(~tremon@83.80.159.219)
2023-12-08 13:17:26 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 245 seconds)
2023-12-08 13:20:51 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2023-12-08 13:23:03 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2023-12-08 13:23:57 +0100xff0x(~xff0x@2405:6580:b080:900:9024:2952:42f7:bdd9)
2023-12-08 13:26:43 +0100misterfish(~misterfis@87.215.131.102) (Ping timeout: 246 seconds)
2023-12-08 13:26:54 +0100danza(~francesco@rm-19-49-89.service.infuturo.it) (Ping timeout: 252 seconds)
2023-12-08 13:27:02 +0100alexherbo2(~alexherbo@2a02-8440-b214-7d9d-2de4-00d5-d93d-0252.rev.sfr.net) (Remote host closed the connection)
2023-12-08 13:27:22 +0100yaroot(~yaroot@p3152107-ipngn5801souka.saitama.ocn.ne.jp)
2023-12-08 13:28:09 +0100wib_jonas(~wib_jonas@business-37-191-60-209.business.broadband.hu) (Quit: Client closed)
2023-12-08 13:40:19 +0100cods(~fred@tuxee.net)
2023-12-08 13:44:26 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 4.0.5)
2023-12-08 13:54:00 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-12-08 14:01:08 +0100 <ncf> answering my own question: Data.Semigroup.First (resp. Last) is the free left zero (resp. right zero) semigroup on a set (this is even an equivalence rather than just an adjunction), and Data.Monoid.First (resp. Last) is the free monoid on that semigroup
2023-12-08 14:01:35 +0100 <ncf> (i.e. Monoid.First a has the same Monoid instance as Maybe (Semigroup.First a))
2023-12-08 14:09:58 +0100xff0x(~xff0x@2405:6580:b080:900:9024:2952:42f7:bdd9) (Ping timeout: 256 seconds)
2023-12-08 14:10:13 +0100danza(~francesco@151.47.82.6)
2023-12-08 14:11:51 +0100xff0x(~xff0x@2405:6580:b080:900:9024:2952:42f7:bdd9)
2023-12-08 14:13:44 +0100 <danza> that sounds interesting ncf although i only have a very vague understanding of what it means...
2023-12-08 14:22:16 +0100danza(~francesco@151.47.82.6) (Quit: Leaving)
2023-12-08 14:22:33 +0100danza(~francesco@151.47.82.6)
2023-12-08 14:22:43 +0100rncwnd(~quassel@2a01:4f8:221:27c6::1) (Quit: Later)
2023-12-08 14:23:32 +0100rncwnd(~quassel@2a01:4f8:221:27c6::1)
2023-12-08 14:24:10 +0100Lycurgus(~georg@user/Lycurgus) (Quit: leaving)
2023-12-08 14:24:27 +0100Lycurgus(~georg@user/Lycurgus)
2023-12-08 14:25:47 +0100danza(~francesco@151.47.82.6) (Client Quit)
2023-12-08 14:26:04 +0100danza(~danza@151.47.82.6)
2023-12-08 14:26:57 +0100rncwnd(~quassel@2a01:4f8:221:27c6::1) (Client Quit)
2023-12-08 14:27:23 +0100rncwnd(~quassel@2a01:4f8:221:27c6::1)
2023-12-08 14:31:14 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.1.1)
2023-12-08 14:35:37 +0100 <sshine> I wonder when that is useful. I don't think I ever was aware that I worked with a monoid that only had left or right zeros, or worked with code where it was beneficial to constrain it to only need a left or a right zero.
2023-12-08 14:36:00 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2023-12-08 14:44:20 +0100euleritian(~euleritia@77.22.252.56) (Read error: Connection reset by peer)
2023-12-08 14:45:37 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-08 14:48:58 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2023-12-08 14:49:33 +0100 <akegalj> `findIndex (const False) $ iterate id 0` leaks memory. Why is that? I would expect this to loop forever but not to leak
2023-12-08 14:50:21 +0100Square(~Square@user/square)
2023-12-08 14:51:50 +0100 <danza> @source findIndex
2023-12-08 14:51:50 +0100 <lambdabot> Unknown command, try @list
2023-12-08 14:52:39 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
2023-12-08 14:52:39 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
2023-12-08 14:53:16 +0100 <akegalj> danza: from Data.List.findIndex
2023-12-08 14:53:24 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2023-12-08 14:53:25 +0100euleritian(~euleritia@dynamic-046-114-201-059.46.114.pool.telefonica.de)
2023-12-08 14:53:45 +0100 <danza> i think there is a command to show the source here
2023-12-08 14:56:49 +0100 <danza> @src findIndex
2023-12-08 14:56:49 +0100 <lambdabot> findIndex p = listToMaybe . findIndices p
2023-12-08 14:57:02 +0100 <danza> @src findIndices
2023-12-08 14:57:02 +0100 <lambdabot> findIndices p xs = [ i | (x,i) <- zip xs [0..], p x]
2023-12-08 14:59:03 +0100 <danza> akegalj... `const False` will go through the whole list
2023-12-08 14:59:47 +0100 <ncf> well yes it diverges, but it could diverge in constant space
2023-12-08 15:00:24 +0100 <akegalj> ncf: yes I would expect to do it in constant space
2023-12-08 15:01:00 +0100 <danza> there is not discarding of evaluating items until the function finishes and memory is freed, i think
2023-12-08 15:01:06 +0100 <danza> *evaluated
2023-12-08 15:02:25 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2023-12-08 15:02:33 +0100zer0bitz_zer0bitz
2023-12-08 15:02:36 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2023-12-08 15:03:18 +0100 <danza> but i would not consider this a "leak", it is expected
2023-12-08 15:03:29 +0100 <ncf> what
2023-12-08 15:03:43 +0100 <akegalj> danza: that seems so strange. Why would findIndex retain element
2023-12-08 15:03:46 +0100 <ncf> akegalj: repeat 0 doesn't leak, so maybe it has to do with the inlining annotations?
2023-12-08 15:04:18 +0100 <danza> is my analysis wrong ncf ?
2023-12-08 15:04:21 +0100 <akegalj> ncf: yes, `findIndex (const False) $ repeat 0` dosn't leak
2023-12-08 15:04:44 +0100 <danza> then i guess the answer is "yes"
2023-12-08 15:04:44 +0100 <akegalj> this also doesn't leak `findIndex (==1) $ iterate id 0`
2023-12-08 15:05:09 +0100 <ncf> fascinating
2023-12-08 15:06:01 +0100jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 276 seconds)
2023-12-08 15:07:01 +0100misterfish(~misterfis@87.215.131.102)
2023-12-08 15:07:40 +0100p3n(~p3n@217.198.124.246) (Quit: ZNC 1.8.2 - https://znc.in)
2023-12-08 15:07:57 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-12-08 15:09:42 +0100p3n(~p3n@217.198.124.246)
2023-12-08 15:13:40 +0100 <akegalj> ncf: I think I found problem. findIndex is defined as via findIndices findIndices p xs = [ i | (x,i) <- zip xs [0..], p x] . When I tried to implement findIndex as ` findIndices p xs = head [ i | (x,i) <- zip xs [0..], p x]` it leaked. When I made it strict in field then it was constant space ` findIndices p xs = head [ i | (!x,i) <- zip xs [0..], p x]`
2023-12-08 15:14:06 +0100 <akegalj> So i guess we should maybe add findIndex' that forces evaluation
2023-12-08 15:16:14 +0100 <ncf> that doesn't tell me why the unevaluated thunks survive after going through const False
2023-12-08 15:17:41 +0100 <akegalj> ncf: no, sorry... ignore last message. It still leaks. I was testing something else
2023-12-08 15:18:21 +0100igemnace(~ian@user/igemnace) (Read error: Connection reset by peer)
2023-12-08 15:19:20 +0100 <ncf> doesn't leak for me
2023-12-08 15:19:29 +0100 <akegalj> ncf: which ghc?
2023-12-08 15:20:01 +0100 <akegalj> ncf: ps, which version doesn't leak? Original findIndex right?
2023-12-08 15:20:02 +0100 <ncf> 9.4.7
2023-12-08 15:20:10 +0100 <ncf> your strict one
2023-12-08 15:20:25 +0100 <ncf> let f p xs = head [i | (!x, i) <- zip xs [0..], p x] in f (const False) (iterate id 0)
2023-12-08 15:20:38 +0100pastly(~pastly@gateway/tor-sasl/pastly) (Remote host closed the connection)
2023-12-08 15:21:01 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2023-12-08 15:21:03 +0100pastly(~pastly@gateway/tor-sasl/pastly)
2023-12-08 15:21:47 +0100 <akegalj> ncf: yes I thought it didn't leak for me as well but last time i checked it did. I was switching versions so maybe I tested on different ghc. Let me check 9.4.7 and report back
2023-12-08 15:22:36 +0100 <ncf> i'm testing in ghci btw. with -O the leak goes away
2023-12-08 15:22:56 +0100 <akegalj> ncf: I was testing with ghc -=2
2023-12-08 15:23:02 +0100 <akegalj> ghc -O2
2023-12-08 15:23:27 +0100 <akegalj> ncf: you are right, in ghci it doesn't leak
2023-12-08 15:23:40 +0100sm[i](~user@plaintextaccounting/sm) (ERC 5.4.1 (IRC client for GNU Emacs 29.0.50))
2023-12-08 15:23:51 +0100sm[i](~user@plaintextaccounting/sm)
2023-12-08 15:28:29 +0100 <sm[i]> @where stack
2023-12-08 15:28:30 +0100 <lambdabot> All-in-one haskell installer/reproducible build tool for all platforms: https://www.fpcomplete.com/haskell/get-started
2023-12-08 15:29:23 +0100 <sm[i]> @where+ stack https://haskellstack.org all-in-one haskell installer/reproducible build tool, an alternative to cabal-install
2023-12-08 15:29:23 +0100 <lambdabot> Good to know.
2023-12-08 15:29:57 +0100edr(~edr@user/edr)
2023-12-08 15:30:03 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2023-12-08 15:31:34 +0100 <sm[i]> @where cabal
2023-12-08 15:31:34 +0100 <lambdabot> Flexible haskell build tool for all platforms: http://www.haskell.org/cabal
2023-12-08 15:32:07 +0100 <sm[i]> @where+ cabal https://cabal.readthedocs.io flexible haskell build tool
2023-12-08 15:32:07 +0100 <lambdabot> Nice!
2023-12-08 15:32:53 +0100 <sm[i]> (FP complete's getting started page is gone and https://www.haskell.org/cabal/ is rather cobwebby)
2023-12-08 15:33:11 +0100 <danza> @where cabal
2023-12-08 15:33:11 +0100 <lambdabot> https://cabal.readthedocs.io flexible haskell build tool
2023-12-08 15:33:23 +0100 <danza> overwriting +
2023-12-08 15:34:43 +0100 <danza> oh i see why
2023-12-08 15:35:34 +0100igemnace(~ian@user/igemnace)
2023-12-08 15:35:58 +0100 <sm[i]> reminder, you can look these up at https://haskell-links.org/?q=cabal or https://haskell-links.org/cabal
2023-12-08 15:36:10 +0100CiaoSen(~Jura@2a05:5800:283:ec00:ca4b:d6ff:fec1:99da) (Ping timeout: 255 seconds)
2023-12-08 15:36:41 +0100 <danza> oh nice
2023-12-08 15:38:05 +0100lane(~lane@pool-98-113-180-17.nycmny.fios.verizon.net)
2023-12-08 15:38:39 +0100sm[i]has these configured as browser shortcuts
2023-12-08 15:40:05 +0100 <danza> it does not look like it can be added to custom engines. What do you mean by that? Keyboard shortcuts?
2023-12-08 15:41:40 +0100 <sm[i]> browsers have builtin (firefox) or as an extension (safari) a feature were you can type CMD ARG into the address bar and CMD and ARG are converted to a url
2023-12-08 15:42:06 +0100 <sm[i]> saves a lot of time
2023-12-08 15:43:21 +0100 <danza> handy
2023-12-08 15:45:25 +0100sm[i]has "ha PKG" (hackage), "hal PKG" (haskell-links search), "halj PKG" (haskell-links jump), "ho func" (hoogle) etc.
2023-12-08 15:48:32 +0100 <danza> is that saved in code? Could share the settings that way
2023-12-08 15:50:02 +0100 <sm[i]> I can't easily export them from safari KeywordSearch extension but eg you configure them like ha = https://hackage.haskell.org/package/@@@
2023-12-08 15:50:15 +0100 <sm[i]> just take a working url and templatise it
2023-12-08 15:50:43 +0100 <danza> guessed the syntax was easy. Just a shame it cannot be shared
2023-12-08 15:50:57 +0100 <sm[i]> I see.. yes you're right
2023-12-08 15:51:27 +0100 <sm[i]> I'll try harder
2023-12-08 15:51:49 +0100 <danza> oh are you the extension author?
2023-12-08 15:52:29 +0100 <sm[i]> no, but it must have a data file somewhere
2023-12-08 15:53:01 +0100alp_(~alp@2001:861:e3d6:8f80:98df:4b4d:4787:7761) (Remote host closed the connection)
2023-12-08 15:53:24 +0100Square(~Square@user/square) (Ping timeout: 268 seconds)
2023-12-08 15:55:51 +0100 <danza> huh i do not even find how to add that template to firefox, it just leads me to a web with add-ons. Awful
2023-12-08 15:56:31 +0100akegalj(~akegalj@78-1-90-118.adsl.net.t-com.hr) (Quit: leaving)
2023-12-08 15:56:37 +0100 <sm[i]> ok here's my haskell ones: https://termbin.com/fow0
2023-12-08 15:57:00 +0100flebron(~flebron@2600:1010:a000:e1ef:19e5:1a07:7fe4:8b87)
2023-12-08 15:57:06 +0100 <sm[i]> in Firefox it's a "keyword" field inside the bookmark manager
2023-12-08 15:58:00 +0100 <danza> cool, why don't you put them on a repo?
2023-12-08 15:58:36 +0100 <sm[i]> readable version: https://termbin.com/lqxs
2023-12-08 16:02:45 +0100 <danza> "hal" =D
2023-12-08 16:04:04 +0100 <sm[i]> @where+ browser-keywords https://gist.github.com/simonmichael/6f95f7d72048649a9ba05c7b31e44968 time-saving Haskell-related url macros
2023-12-08 16:04:04 +0100 <lambdabot> It is forever etched in my memory.
2023-12-08 16:04:07 +0100 <sm[i]> for a start
2023-12-08 16:04:45 +0100 <danza> great! \o/
2023-12-08 16:06:59 +0100 <danza> my bookmarks manager only shows a "keyword" field in each bookmark card, does not look like the stuff you are mentioning...
2023-12-08 16:07:57 +0100akegalj(~akegalj@89-164-101-220.dsl.iskon.hr)
2023-12-08 16:09:05 +0100 <akegalj> ncf: `findIndex (\x -> x `seq` False) $ iterate id 0` works fine also
2023-12-08 16:09:39 +0100 <danza> interesting
2023-12-08 16:09:50 +0100flebron(~flebron@2600:1010:a000:e1ef:19e5:1a07:7fe4:8b87) (Quit: Client closed)
2023-12-08 16:10:25 +0100 <sm[i]> danza: if it's firefox, that's the one. The placeholder is probably something other than @@@
2023-12-08 16:11:07 +0100 <danza> oh so the format on github is for safari
2023-12-08 16:11:33 +0100 <danza> yeah that was in the doc -facepalm-
2023-12-08 16:12:51 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2023-12-08 16:21:25 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-12-08 16:25:06 +0100 <probie> Are there any good constraint solver libraries in Haskell (either pure Haskell, or more likely wrapping something else)?
2023-12-08 16:25:07 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 255 seconds)
2023-12-08 16:26:01 +0100 <kuribas> what kind of constraints?
2023-12-08 16:28:29 +0100nadja(~dequbed@banana-new.kilobyte22.de) (Ping timeout: 240 seconds)
2023-12-08 16:29:51 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2023-12-08 16:30:48 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2023-12-08 16:32:04 +0100potato44(uid421314@id-421314.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-12-08 16:36:38 +0100nadja(~dequbed@banana-new.kilobyte22.de)
2023-12-08 16:40:24 +0100__monty__(~toonn@user/toonn)
2023-12-08 16:41:22 +0100misterfish(~misterfis@87.215.131.102) (Ping timeout: 260 seconds)
2023-12-08 16:41:23 +0100 <probie> Just boolean propositions and integer inequalities, although with a very large number of constraints, ideally with a solver that can handle optimisation problems as well as just satisfaction problems
2023-12-08 16:43:21 +0100 <probie> For context, I'm currently arguing with gecode (which is C++) and wishing I could do this in Haskell
2023-12-08 16:44:28 +0100 <danza> i have seen `constraints` mentioned in haskell cafe https://hackage.haskell.org/package/constraints
2023-12-08 16:44:59 +0100xff0x(~xff0x@2405:6580:b080:900:9024:2952:42f7:bdd9) (Ping timeout: 260 seconds)
2023-12-08 16:46:59 +0100xff0x(~xff0x@ai096045.d.east.v6connect.net)
2023-12-08 16:47:06 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:11bf:d345:9651:e652) (Remote host closed the connection)
2023-12-08 16:47:21 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:11bf:d345:9651:e652)
2023-12-08 16:51:25 +0100myxos(~myxos@065-028-251-121.inf.spectrum.com) (Quit: myxos)
2023-12-08 16:53:23 +0100 <lortabac> @hackage holmes -- probie
2023-12-08 16:53:23 +0100 <lambdabot> https://hackage.haskell.org/package/holmes -- probie
2023-12-08 16:54:16 +0100 <danza> neat
2023-12-08 16:54:27 +0100 <lortabac> last time I tried it I wasn't able to use backtracking, IIRC the search didn't terminate
2023-12-08 16:56:03 +0100 <lortabac> my advice would be to call a Prolog program via HTTP or pipes
2023-12-08 16:57:04 +0100sabino(~sabino@user/sabino)
2023-12-08 16:57:22 +0100 <lortabac> or some specialized language like Minizinc or Conjure
2023-12-08 16:57:44 +0100 <exarkun> in https://serokell.io/blog/introduction-to-free-monads what do the notations "(fancy S)(regular S)" and "(italic M),(regular M)" mean?
2023-12-08 17:01:14 +0100tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection)
2023-12-08 17:03:32 +0100 <probie> Gecode is the default solver for minizinc. Perhaps writing some Haskell to generate flatzinc and then feeding that to gecode would work
2023-12-08 17:04:27 +0100haskellbridge(~haskellbr@069-135-003-034.biz.spectrum.com) (Remote host closed the connection)
2023-12-08 17:04:49 +0100 <sshine> exarkun, I can't say. looks like almost a rendering error, I think.
2023-12-08 17:05:48 +0100 <sshine> exarkun, yea, I think that's what it is. if you inspect the source code, you'll get one <math> tag and one <span class="katex-html"> tag.
2023-12-08 17:06:39 +0100 <sshine> exarkun, so I think something went wrong hiding one of those two representations, assuming the first one worked. maybe you're a firefox user like me, and this is just a case of Firefox dying?
2023-12-08 17:07:10 +0100haskellbridge(~haskellbr@069-135-003-034.biz.spectrum.com)
2023-12-08 17:07:10 +0100ChanServ+v haskellbridge
2023-12-08 17:07:43 +0100 <sshine> exarkun, it would really surprise me that they put such effort into introducing foundations, and then completely overlook that someone with basic math wouldn't know what this double notation means. :-D
2023-12-08 17:08:22 +0100 <sshine> (as in, I also don't know what to make of it, except for the speculation that it's a rendering error.)
2023-12-08 17:09:23 +0100 <exarkun> Oof, okay, fun stuff. I guess they did also say the theory part isn't necessary, I guess I'll stop trying to make sense of it and read the rest, and then maybe look for theory elsewhere. Thanks :)
2023-12-08 17:10:53 +0100 <danza> "not necessary"? Certification?
2023-12-08 17:14:06 +0100 <exarkun> what they actually say is "This part is a bit theory-heavy, so if it is not your cup of tea, feel free to skim over it." :)
2023-12-08 17:15:03 +0100 <danza> just curious whether this is a certification path or just you got hired or changed project or something
2023-12-08 17:16:37 +0100 <exarkun> just continuing my personal random walk through haskell-related ideas
2023-12-08 17:16:55 +0100nilradical(~nilradica@user/naso)
2023-12-08 17:16:59 +0100nilradical(~nilradica@user/naso) (Remote host closed the connection)
2023-12-08 17:17:10 +0100 <danza> i see, enjoy
2023-12-08 17:19:15 +0100 <exarkun> thanks :)
2023-12-08 17:22:43 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2023-12-08 17:23:11 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2023-12-08 17:24:14 +0100kuribas`(~user@ip-188-118-57-242.reverse.destiny.be)
2023-12-08 17:24:27 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Read error: Connection reset by peer)
2023-12-08 17:24:50 +0100euleritian(~euleritia@dynamic-046-114-201-059.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-12-08 17:25:09 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-08 17:25:42 +0100econo_(uid147250@id-147250.tinside.irccloud.com)
2023-12-08 17:31:39 +0100ft(~ft@p3e9bc784.dip0.t-ipconnect.de)
2023-12-08 17:50:33 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2023-12-08 17:50:43 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-08 17:53:50 +0100akegalj(~akegalj@89-164-101-220.dsl.iskon.hr) (Quit: leaving)
2023-12-08 17:57:37 +0100kuribas`(~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
2023-12-08 17:58:09 +0100Guest23(~Guest37@2402:3a80:46d1:8496:33bd:67c1:c3d6:b116)
2023-12-08 17:58:31 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2023-12-08 17:58:35 +0100Guest23(~Guest37@2402:3a80:46d1:8496:33bd:67c1:c3d6:b116) (Client Quit)
2023-12-08 18:04:05 +0100danza(~danza@151.47.82.6) (Ping timeout: 240 seconds)
2023-12-08 18:05:34 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 255 seconds)
2023-12-08 18:10:04 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
2023-12-08 18:10:39 +0100euleritian(~euleritia@dynamic-046-114-201-059.46.114.pool.telefonica.de)
2023-12-08 18:11:52 +0100tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2023-12-08 18:15:29 +0100erty(~user@user/aeroplane)
2023-12-08 18:16:40 +0100danza(~danza@151.47.94.187)
2023-12-08 18:18:33 +0100euleritian(~euleritia@dynamic-046-114-201-059.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-12-08 18:18:50 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-08 18:20:17 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2023-12-08 18:21:27 +0100 <erty> Hello everyone, I was looking for a package for AI and found "neural" on hackage. Now, when I added it to extra-deps in stack.yaml list
2023-12-08 18:22:07 +0100 <erty> and dependencies: in package.yaml it shows error [/myproj/neural: getDirectoryContents:openDirStream: does not exist (No such file or directory)]
2023-12-08 18:22:46 +0100 <erty> how can I resolve it?Thanks!
2023-12-08 18:22:57 +0100 <haskellbridge> 06<s​m> check your syntax for each yaml file
2023-12-08 18:23:17 +0100 <haskellbridge> 06<s​m> (they are different)
2023-12-08 18:25:01 +0100 <erty> haskellbridge: This is a new project which I generated using "stack new myproj" and simply added these dependency in a new line "- neural"
2023-12-08 18:25:18 +0100 <haskellbridge> 06<s​m> package.yaml dependencies syntax: https://github.com/sol/hpack#dependencies
2023-12-08 18:27:20 +0100 <haskellbridge> 06<s​m> show us your whole package.yaml file and whole output in a pastebin if you like
2023-12-08 18:27:34 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2023-12-08 18:28:13 +0100 <haskellbridge> 06<s​m> and stack.yaml file
2023-12-08 18:29:18 +0100 <haskellbridge> 06<s​m> here's the stack.yaml syntax: https://docs.haskellstack.org/en/stable/yaml_configuration/#extra-deps
2023-12-08 18:29:21 +0100 <erty> haskellbridge: thanks, this package.yaml [https://paste.rs/0UMiS] and stack.yaml [https://paste.rs/Yv3vF]
2023-12-08 18:30:35 +0100 <haskellbridge> 06<s​m> you need to write the package version number in stack.yaml
2023-12-08 18:32:13 +0100 <haskellbridge> 06<s​m> (in extra-deps:)
2023-12-08 18:34:10 +0100potato44(uid421314@id-421314.lymington.irccloud.com)
2023-12-08 18:35:16 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 268 seconds)
2023-12-08 18:37:20 +0100 <erty> haskellbridge: I did that and I think its working. Since the package I need to add hask multiple dependencies, do I need to add all those dependencies as well? https://paste.rs/tQTK2
2023-12-08 18:37:51 +0100 <erty> I need the package "neural" https://hackage.haskell.org/package/neural
2023-12-08 18:38:40 +0100 <glguy> erty: stack.yaml is a list of *all* the things in one workspace you happen to be using. A resolver is a set of packages. Anything you want to use not in that set you have to add to your workspace via extra-deps
2023-12-08 18:38:41 +0100chomwitt(~chomwitt@2a02:587:7a09:c300:1ac0:4dff:fedb:a3f1) (Ping timeout: 245 seconds)
2023-12-08 18:38:45 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:11bf:d345:9651:e652) (Remote host closed the connection)
2023-12-08 18:39:27 +0100 <glguy> erty: package.yaml is an old way to make your project's .cabal file. That lists the direct dependencies of the package you're developing and specifies the range of versions you support
2023-12-08 18:41:33 +0100 <erty> glguy: Is there a better way, since I dont want to add all those dependencies by myself.
2023-12-08 18:42:12 +0100 <glguy> The stack model is that you specify exactly the versions of everything you're using in your current workspace
2023-12-08 18:42:13 +0100 <erty> can I somehow bypass those extra steps
2023-12-08 18:42:54 +0100 <glguy> you can copy/paste from the error message stack is giving you into your stack.yaml
2023-12-08 18:44:12 +0100m1dnight(~christoph@78-22-4-67.access.telenet.be) (Quit: WeeChat 4.1.0)
2023-12-08 18:46:56 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:11bf:d345:9651:e652)
2023-12-08 18:48:24 +0100 <erty> Well guess everything seems to be working, one last extra step need was to add "allow-newer: true" in /home/.stack/config.yaml
2023-12-08 18:48:41 +0100m1dnight(~christoph@78-22-4-67.access.telenet.be)
2023-12-08 18:49:05 +0100 <glguy> erty: remember that you did that. It's going to break something down the road and be hard to find
2023-12-08 18:50:17 +0100Sgeo(~Sgeo@user/sgeo)
2023-12-08 18:50:29 +0100 <c_wraith> can't you give allow-newer a package name instead of true?
2023-12-08 18:50:32 +0100 <haskellbridge> 06<s​m> erty: no real shortcut to listing all those things explicitly - except use cabal, which figures out the stack.yaml's resolver and extra-deps on its own (but les reliably)
2023-12-08 18:51:00 +0100elevenkb(elevenkb@2607:5300:203:b92b::185)
2023-12-08 18:51:01 +0100 <haskellbridge> 06<s​m> I don't think you got it to actually build neural, did you ?
2023-12-08 18:51:03 +0100 <glguy> putting allow-newer in your ~/.stack means it'll affect all your workspaces, and allow-newer in general will just cause build failures
2023-12-08 18:52:27 +0100 <haskellbridge> 06<s​m> neural was released in 2017 and requires a version of GHC older than I can install on this machine
2023-12-08 18:53:51 +0100 <erty> I am sorry, I am new to building stack and stuff. I needed to add "allow-newer: true" since one of the packages complained that it neede base to be something between 4.17 and 4.18 (dont know exact numbers)
2023-12-08 18:54:55 +0100 <erty> and now its installing and install command has crossed over 3000 lines
2023-12-08 18:55:56 +0100 <haskellbridge> 06<s​m> no problem, yes it's complicated. Adding allow-newer: true allowed it to find a "compatible looking" build plan, so it's installing a hundred deps. But when it gets to the neural package it will fail, because that package requires a 2017-era GHC version and its bounds don't declare that
2023-12-08 18:56:18 +0100 <haskellbridge> 06<s​m> I'm a few steps ahead, since I figured you'd be asking about that
2023-12-08 18:56:29 +0100Square(~Square@user/square)
2023-12-08 18:56:58 +0100tzh(~tzh@c-71-193-181-0.hsd1.or.comcast.net)
2023-12-08 18:57:08 +0100vpan(~vpan@mail.elitnet.lt) (Quit: Leaving.)
2023-12-08 18:57:21 +0100 <haskellbridge> 06<s​m> it was last tested with ghc 8.0, so stack --resolver lts-9.21 build neural pipes-zlib typelits-witnesses might work better
2023-12-08 18:57:57 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:11bf:d345:9651:e652) (Remote host closed the connection)
2023-12-08 18:58:27 +0100 <erty> haskellbridge: I am sorry, I only want to try implementing AI in haskel. So I looked around and found this package. I don't know whats the best way to build a simple neural nework i Haskell
2023-12-08 18:59:18 +0100 <haskellbridge> 06<s​m> installing things from hackage isn't always easy - it's best to check their upload date first, and try to find one that's less than a year or two old
2023-12-08 18:59:49 +0100 <haskellbridge> 06<s​m> for older packages like this, it usually requires installing an old GHC version
2023-12-08 19:01:18 +0100 <haskellbridge> 06<s​m> you can sort hackage's search results by upload date
2023-12-08 19:02:50 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2023-12-08 19:06:39 +0100 <erty> haskellbridge: Thanks for help, I think support for AI in haskell is not that good. As, If browse hackage, I can not find latest packages
2023-12-08 19:06:44 +0100 <erty> https://hackage.haskell.org/packages/browse?terms=%28tag%3Aai%29
2023-12-08 19:07:38 +0100 <[exa]> erty: there are good NN packages around, haskell people are usually just reasonably reluctant to label these as AI
2023-12-08 19:07:50 +0100 <[exa]> https://hackage.haskell.org/package/grenade etc
2023-12-08 19:09:46 +0100 <glguy> I didn't find a build plan for grenade using any GHC back to 9.2
2023-12-08 19:09:53 +0100 <erty> [exa]: yes, but still, it was last updated on 2017-04-12 and probably need only ghc version to run
2023-12-08 19:10:10 +0100myxos(~myxos@065-028-251-121.inf.spectrum.com)
2023-12-08 19:10:15 +0100 <erty> *old
2023-12-08 19:11:31 +0100qqq(~qqq@92.43.167.61)
2023-12-08 19:13:40 +0100 <erty> Also its sad to see that none of the packages have more than 40 downloads
2023-12-08 19:14:08 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:11bf:d345:9651:e652)
2023-12-08 19:15:38 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2023-12-08 19:21:33 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2023-12-08 19:22:30 +0100 <haskellbridge> 06<s​m> erty: so, that stack command I showed above is an easy way to use older GHC versions. It's pretty common (though obviously not ideal) to do that when working with old packages.
2023-12-08 19:28:31 +0100 <haskellbridge> 12<C​elestial> How exactly do cross-platform / platform dependent packages work? I was using `vty` on my linux desktop which worked fine, and on windows under wsl I had to use `vty-crossplatform` but now back on linux its giving me `unknown package: vty-crossplatform`?
2023-12-08 19:29:17 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-12-08 19:30:06 +0100 <geekosaur> how recently have you run `cabal update`?
2023-12-08 19:30:16 +0100 <haskellbridge> 06<s​m> glguy: I see what you mean about grenade.. I could try cloning the repo and building from there, but I have lost the will
2023-12-08 19:30:58 +0100 <haskellbridge> 12<C​elestial> geekosaur: thanks that was it ... my bad
2023-12-08 19:31:00 +0100 <haskellbridge> 06<s​m> erty might be right
2023-12-08 19:31:10 +0100 <haskellbridge> 06<s​m> silly cabal
2023-12-08 19:31:46 +0100 <geekosaur> I puled it up in hackage and saw it was only about a month old
2023-12-08 19:32:28 +0100 <haskellbridge> 12<C​elestial> (I should probably run `cabal update` more frequently)
2023-12-08 19:36:56 +0100Hooloovoo(~Hooloovoo@hax0rbana.org) (Ping timeout: 256 seconds)
2023-12-08 19:38:02 +0100Hooloovoo(~Hooloovoo@hax0rbana.org)
2023-12-08 19:38:51 +0100 <geekosaur> erty, apparently the download count is broken and hasn't been updated in a while
2023-12-08 19:39:19 +0100 <geekosaur> come to think of it, that was mentioned on haskell-cafe but I'm not sure anyone told #haskell-infrastructure
2023-12-08 19:41:48 +0100target_i(~target_i@217.175.14.39)
2023-12-08 19:41:58 +0100 <erty> haskellbridge: I ran your command and it still tells me to add "allow-newer: true" in my home dir. I think best thing to do is to go and read stack doc for now
2023-12-08 19:44:28 +0100 <erty> For AI I think, one should only use python as its used industry wide
2023-12-08 19:45:15 +0100 <erty> but I will still try to train a single neuron in Haskell
2023-12-08 19:45:47 +0100mosul(~mosul@user/mosul)
2023-12-08 19:47:58 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-12-08 19:52:09 +0100 <haskellbridge> 06<s​m> 👍️ somewhere out there is a NN project for Haskell that builds
2023-12-08 19:53:54 +0100danza(~danza@151.47.94.187) (Ping timeout: 268 seconds)
2023-12-08 19:55:29 +0100chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2023-12-08 19:56:04 +0100 <erty> :-|
2023-12-08 19:57:30 +0100 <haskellbridge> 06<s​m> what about https://hackage.haskell.org/package/hnn
2023-12-08 20:01:01 +0100chiselfuse(~chiselfus@user/chiselfuse)
2023-12-08 20:01:25 +0100 <srk> aargh, I have a patch for grenade
2023-12-08 20:01:41 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2023-12-08 20:02:12 +0100 <haskellbridge> 06<s​m> stack build hnn --resolver lts-18.28 mwc-random-0.14.0.0 random-1.1 maybe
2023-12-08 20:02:29 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-08 20:03:09 +0100 <glguy> cabal repl -w ghc-9.6 --build-dep hnn # worked here
2023-12-08 20:03:58 +0100 <erty> haskellbridge: hnn does have a nice tutorial https://hackage.haskell.org/package/hnn-0.3/docs/AI-HNN-FF-Network.html I'll look into that
2023-12-08 20:08:05 +0100 <haskellbridge> 06<s​m> glguy nice one. cabal repl hnn should be made to do the same (like stack)
2023-12-08 20:08:53 +0100 <haskellbridge> 06<s​m> Another satisfied customer! NEXT!
2023-12-08 20:18:05 +0100misterfish(~misterfis@84-53-85-146.bbserv.nl)
2023-12-08 20:18:35 +0100Guest97(~Guest97@134.117.247.129)
2023-12-08 20:18:53 +0100fendor(~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c) (Remote host closed the connection)
2023-12-08 20:24:55 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
2023-12-08 20:25:24 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-12-08 20:25:50 +0100chomwitt(~chomwitt@2a02:587:7a09:c300:1ac0:4dff:fedb:a3f1)
2023-12-08 20:30:21 +0100 <srk> glguy: this works https://github.com/HuwCampbell/grenade/pull/107
2023-12-08 20:30:50 +0100 <srk> sm[i]: ^
2023-12-08 20:31:25 +0100 <haskellbridge> 06<s​m> 👍️
2023-12-08 20:31:59 +0100 <srk> I've had a port to singletons-base that I forgot to PR and someone beat me to it hah
2023-12-08 20:32:04 +0100chele(~chele@user/chele) (Remote host closed the connection)
2023-12-08 20:33:09 +0100 <srk> seems like the bridge has trouble with emoji :D
2023-12-08 20:34:09 +0100 <glguy> srk: https://ibb.co/BV0f5yf that's what I saw
2023-12-08 20:34:11 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 264 seconds)
2023-12-08 20:34:40 +0100 <telser_> I've been meaning to ask about this.. With PatternSynonyms, when you create a record pattern, it would seem that you can't export it using the usual record syntax like MyRecord(..). Anyone know if there is a hard reason for that?
2023-12-08 20:35:02 +0100 <srk> glguy: hmm, interesting. I've recently fixed some of them in urxvt by adding xft:Symbola because Noto emoji didn't handle many but this one is borken
2023-12-08 20:35:15 +0100 <geekosaur> I think patterns require `ExplicitNamespaces` and `pattern …`
2023-12-08 20:35:46 +0100 <telser_> They do, but as far as I can tell you still don't get the ability to export all the fields in it.
2023-12-08 20:35:57 +0100 <telser_> Without manually listing them
2023-12-08 20:36:27 +0100 <geekosaur> hm. I'd report that
2023-12-08 20:37:00 +0100 <srk> 👍 seems to work
2023-12-08 20:38:03 +0100 <telser_> geekosaur: Okay, I'll get together a small example and open an issue, thanks!
2023-12-08 20:39:48 +0100 <glguy> srk: you fixed it?
2023-12-08 20:40:15 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-12-08 20:40:35 +0100 <srk> no, when I copy it from web and paste to term it just works, but not the one via bridge
2023-12-08 20:40:46 +0100 <glguy> srk: the UTF-8 representation for the two is identital
2023-12-08 20:40:54 +0100 <glguy> The bridge message was "\x0306<s\xe2\x80\x8bm> \x0f\xf0\x9f\x91\x8d\xef\xb8\x8f somewhere out there is a NN project for Haskell that builds"
2023-12-08 20:41:09 +0100 <glguy> yours was "\xf0\x9f\x91\x8d seems to work"
2023-12-08 20:41:27 +0100 <srk> interesting, was wondering how someone debugs such a thing :)
2023-12-08 20:41:34 +0100 <glguy> it's possible your client didn't like the formatting reset code just before the emoji
2023-12-08 20:42:09 +0100 <srk> so it's probably irssi bug?
2023-12-08 20:42:25 +0100 <g> replay for test case 06<s​m> 👍️ somewhere out there is a NN project for Haskell that builds
2023-12-08 20:42:54 +0100 <srk> fail.
2023-12-08 20:43:06 +0100srkshould try glirc
2023-12-08 20:43:14 +0100 <g> replay for test case 👍 seems to work
2023-12-08 20:43:35 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-12-08 20:43:39 +0100 <g> just the leading formatting thing 👍 breaks it?
2023-12-08 20:43:48 +0100 <glguy> did that last message break it?
2023-12-08 20:44:07 +0100 <srk> nope, only the orig. one from sm breaks
2023-12-08 20:44:38 +0100 <geekosaur> thta makes me wonder if it's the invisible code inserted into the relayed nick that is breaking it
2023-12-08 20:44:53 +0100 <geekosaur> (I have relaying configured with "NOPINGNICK")
2023-12-08 20:46:44 +0100lane1(~lane@pool-98-113-180-17.nycmny.fios.verizon.net)
2023-12-08 20:47:26 +0100 <haskellbridge> 14<geekosaur> does this break? 👍
2023-12-08 20:47:44 +0100 <glguy> srk: I'm debugging this with my second client called "snowcone" that's more of an automation platform than a normal console. In that one I can click on arbitrary messages to see exactly how they were composed and can then run the commands to replay those string literals for testing
2023-12-08 20:48:13 +0100 <srk> cool! last one from geekosaur is fine
2023-12-08 20:48:54 +0100 <haskellbridge> 06<sm> glguy are you wearing Matrix shades ? you must be wearing Matrix shades
2023-12-08 20:49:03 +0100 <geekosaur> okay, so it doesn't like the no-ping character. unfortunately I Nsuspect those of us on both sides of the bridge won't like being pinged all the time
2023-12-08 20:49:22 +0100lane(~lane@pool-98-113-180-17.nycmny.fios.verizon.net) (Ping timeout: 255 seconds)
2023-12-08 20:49:36 +0100 <glguy> I bet when it sees that character it thinks that thing is latin1 or cp1251 or something and not utf-8
2023-12-08 20:49:59 +0100 <srk> https://ibb.co/nzG2gxt
2023-12-08 20:50:51 +0100haskellbridge06<s​m> refrains from spamming a matrix shades image just in time
2023-12-08 20:54:01 +0100 <monochrom> telser_: For now, I have found a work around: "pattern Y{b,n} = ..." can be exported as "(pattern Y, b, n)". To be sure, this is unsatisfactory, I want my "pattern Y(...)"!
2023-12-08 20:54:48 +0100gdown(~gavin@h69-11-149-109.kndrid.broadband.dynamic.tds.net)
2023-12-08 20:54:53 +0100 <monochrom> Or even just "pattern Y" should already export the whole thing because like what's the point
2023-12-08 20:55:30 +0100 <telser_> monochrom: Right, you can explictly list them all out, but when you have a big record.. I won't be able to convince people to use it.
2023-12-08 20:55:45 +0100 <telser_> s/it/PatternSynonyms/
2023-12-08 21:01:25 +0100trev(~trev@user/trev) (Quit: trev)
2023-12-08 21:06:55 +0100Guest97(~Guest97@134.117.247.129) (Quit: Client closed)
2023-12-08 21:09:16 +0100cheater_(~Username@user/cheater)
2023-12-08 21:10:09 +0100 <EvanR> big records are all the rage in web world
2023-12-08 21:10:29 +0100cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2023-12-08 21:10:32 +0100 <EvanR> haskell has some features to make them wieldy
2023-12-08 21:10:33 +0100cheater_cheater
2023-12-08 21:11:01 +0100 <haskellbridge> 06<s​m> DUAL WIELD
2023-12-08 21:17:02 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2023-12-08 21:17:21 +0100ec(~ec@gateway/tor-sasl/ec)
2023-12-08 21:17:48 +0100 <EvanR> big record as main weapon, unboxed int in offhand
2023-12-08 21:20:29 +0100 <ski> "the invisible code inserted into the relayed nick" -- imho, the bridge ought not to insert that, at least not if there's no user with that nick joined to the channel that the bridge is relaying into
2023-12-08 21:20:57 +0100 <geekosaur> sadly it doesn't have that option, it's all or nothing
2023-12-08 21:21:27 +0100 <ski> (i can understand not wanting to be pinged by yourself all the time, if you're on both sides, with the same nick)
2023-12-08 21:22:33 +0100 <ski> (for me, the inserted character looks like a dotted box, overlayed over the previous glyph (first character of the nickname))
2023-12-08 21:22:33 +0100 <geekosaur> discord bridges do the same thing, again all or nothing
2023-12-08 21:27:00 +0100 <slideshow6052> hi
2023-12-08 21:27:55 +0100 <slideshow6052> i am struggling with monad i want to use state to keep track of an int
2023-12-08 21:28:05 +0100 <slideshow6052> https://www.irccloud.com/pastebin/8ne3txlx/
2023-12-08 21:28:19 +0100 <slideshow6052> but i can't use this modify inside the inner do, how do i get that to work?
2023-12-08 21:28:43 +0100 <ski> exarkun : "in https://serokell.io/blog/introduction-to-free-monads what do the notations "(fancy S)(regular S)" and "(italic M),(regular M)" mean?" -- looks to me that there's some fancy (TeX ? MathML ?) rendering, and a fallback to simpler symbols, and for some reason both are being shown
2023-12-08 21:30:02 +0100 <EvanR> slideshow6052, where you have let (cs', gs') =, but you want the right side to be more State action code, use (cs', gs') <-... instead
2023-12-08 21:30:11 +0100 <ski> slideshow6052 : instead of .. what EvanR just said :p
2023-12-08 21:30:35 +0100 <ski> you also need to wrap the first two branches in `pure'/`return'
2023-12-08 21:30:36 +0100 <EvanR> on line 13 where you have just x, that would need to be return x
2023-12-08 21:30:57 +0100 <EvanR> same on 7 and 8
2023-12-08 21:31:20 +0100 <ski> slideshow6052 : also, `(Goal ctx expr ty)' can be just `Goal ctx expr ty', and `(Lam x m)' can be just `Lam x m'
2023-12-08 21:32:28 +0100 <slideshow6052> ah i see
2023-12-08 21:32:36 +0100 <slideshow6052> thank you both, it works now :)
2023-12-08 21:32:38 +0100 <ski> slideshow6052 : also, your gs' is always the empty list, so far
2023-12-08 21:33:04 +0100 <slideshow6052> yes atm i am slowly figuring it all out haha
2023-12-08 21:33:04 +0100 <int-e> ski: it looks like there's supposed to be something that hides one of those alternatives (one is in a <semantics> element and the other is in an <annotation> element, MathML stuff)
2023-12-08 21:33:22 +0100 <ski> int-e : right
2023-12-08 21:34:01 +0100akegalj(~akegalj@89-164-101-220.dsl.iskon.hr)
2023-12-08 21:34:23 +0100 <slideshow6052> also is there some cool way to do modify(+1) and n <- get in one line?
2023-12-08 21:35:02 +0100 <tomsmeding> ski: exarkun: looks like they're using katex but forgot to add the katex.css stylesheet
2023-12-08 21:35:21 +0100 <Rembane> slideshow6052: get << modify (+1)
2023-12-08 21:35:32 +0100 <tomsmeding> that's also why the "fancy S" isn't all that fancy
2023-12-08 21:35:34 +0100 <monochrom> slideshow6052: The library doesn't have it. But yeah it is a much overlooked nicety.
2023-12-08 21:35:36 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2023-12-08 21:36:33 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2023-12-08 21:37:06 +0100 <slideshow6052> do i need to import << or something? it doesn't work for me
2023-12-08 21:37:12 +0100 <akegalj> Hm. Program `main = print $ filter (const False) [0..]` leaks when compiled with -O2 . Doesn't leak when compiled with -O0 (tested on ghc-9.4.8 and ghc-9.8.1) . Should this be considered a bug?
2023-12-08 21:37:15 +0100 <Rembane> slideshow6052: Yeah, it's in Control.Monad I think
2023-12-08 21:37:25 +0100 <ski> slideshow6052,monochrom : i guess one could imagine `preModify,postModify :: State s m => (s -> s) -> m s', or somesuch
2023-12-08 21:37:31 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
2023-12-08 21:37:49 +0100 <slideshow6052> oh hi monochrom
2023-12-08 21:38:17 +0100 <ski> there is `state :: State s m => (s -> (a,s)) -> s a', but it's not as nice to type `n <- state (join (,) . (1 +))' i guess
2023-12-08 21:38:24 +0100 <slideshow6052> i remember i was on here about a year ago (different account i lost that one) and you helped me out
2023-12-08 21:38:28 +0100 <slideshow6052> :)
2023-12-08 21:38:37 +0100euleritian(~euleritia@dynamic-046-114-201-059.46.114.pool.telefonica.de)
2023-12-08 21:38:56 +0100 <slideshow6052> ah i see. it's okay ill stik to what i had. was asking just in case because you never know with haskell, sometimes it has cool stuff like that
2023-12-08 21:38:58 +0100 <EvanR> state (\i -> (i, i + 1))
2023-12-08 21:39:13 +0100 <EvanR> I might have that backwards
2023-12-08 21:39:24 +0100 <ski> no, it's right
2023-12-08 21:40:04 +0100 <ski> (that's the postincrement. the `join (,)' was preincrement)
2023-12-08 21:40:10 +0100 <EvanR> doing get then modify on another line wins the one-thing-per-line award popular in oop
2023-12-08 21:40:31 +0100 <slideshow6052> yep i think ill stick to that
2023-12-08 21:40:42 +0100 <ski> .. i gusess `n <- state (id &&& (1 +))' or `n <- state (graph (1 +))' is preincrement
2023-12-08 21:40:55 +0100 <EvanR> :t graph
2023-12-08 21:40:56 +0100 <lambdabot> error: Variable not in scope: graph
2023-12-08 21:41:49 +0100 <ski> @let graph :: Arrow ar => ar a b -> ar a (a,b); graph = (arr id &&&); cograph :: ArrowChoice ar => ar a b -> ar (Either a b) b; cograph = (||| arr id)
2023-12-08 21:41:50 +0100 <lambdabot> Defined.
2023-12-08 21:41:58 +0100 <ski> EvanR ^
2023-12-08 21:41:58 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2023-12-08 21:43:46 +0100 <ski> the `ar a (a,b)' is a subobject of `(a,b)' expressing the graph of the morphism `ar a b' as a relation. the `ar (Either a b) b' is a quotient object of `Either a b' (essentially a table of inputs-outputs, putting inputs that map to the same output in the same equivalence class as the output), "expressing the cograph of the morphism"
2023-12-08 21:45:03 +0100 <ski> (i'd use `Category' instead of `Arrow' (to avoid the `arr'), except i also need access to subclasses for categorical product and categorical coproduct)
2023-12-08 21:45:05 +0100misterfish(~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 256 seconds)
2023-12-08 21:45:34 +0100 <EvanR> *so you want to increment your variable, let me first introduce you to some category theory xD*
2023-12-08 21:45:57 +0100 <slideshow6052> haha this is how i feel every time i come on here xd
2023-12-08 21:46:03 +0100 <ski> makes perfect sense, right ?
2023-12-08 21:48:34 +0100 <ski> bwe : hm, not sure what you mean by "how can I inspect `author` and depend a control flow on it?"
2023-12-08 21:49:38 +0100 <ski> slideshow6052 : anyway, something like `preModify' and `postModify' would be neat to use here. in the absence of that, just go for `get' and `modify', or else `get' and `put'
2023-12-08 21:50:41 +0100target_i(~target_i@217.175.14.39) (Quit: leaving)
2023-12-08 21:52:40 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.1.1)
2023-12-08 21:57:44 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2023-12-08 22:00:34 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2023-12-08 22:00:59 +0100ec(~ec@gateway/tor-sasl/ec)
2023-12-08 22:01:19 +0100akegalj(~akegalj@89-164-101-220.dsl.iskon.hr) (Quit: leaving)
2023-12-08 22:01:58 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 256 seconds)
2023-12-08 22:07:56 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-12-08 22:11:34 +0100euleritian(~euleritia@dynamic-046-114-201-059.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-12-08 22:11:53 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-08 22:15:09 +0100lg188(~lg188@82.18.98.230) (Quit: Ping timeout (120 seconds))
2023-12-08 22:15:31 +0100lg188(~lg188@82.18.98.230)
2023-12-08 22:19:09 +0100alexherbo2(~alexherbo@2a02-8440-b214-7d9d-8410-795e-9151-6da8.rev.sfr.net)
2023-12-08 22:21:10 +0100jargon(~jargon@32.sub-174-238-226.myvzw.com)
2023-12-08 22:21:30 +0100benjaminl(~benjaminl@user/benjaminl) (Remote host closed the connection)
2023-12-08 22:22:16 +0100benjaminl(~benjaminl@user/benjaminl)
2023-12-08 22:22:16 +0100benjaminl(~benjaminl@user/benjaminl) (Remote host closed the connection)
2023-12-08 22:23:27 +0100benjaminl(~benjaminl@user/benjaminl)
2023-12-08 22:24:34 +0100coot(~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
2023-12-08 22:27:00 +0100petrichor(~znc-user@user/petrichor)
2023-12-08 22:29:46 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-12-08 22:33:31 +0100Guest27(~Guest29@86-82-248-239.fixed.kpn.net)
2023-12-08 22:34:19 +0100coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-12-08 22:35:38 +0100Guest27(~Guest29@86-82-248-239.fixed.kpn.net) (Client Quit)
2023-12-08 22:40:28 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
2023-12-08 22:41:58 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2023-12-08 22:53:29 +0100mosul(~mosul@user/mosul) (Quit: Lost terminal)
2023-12-08 22:56:37 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds)
2023-12-08 22:56:55 +0100YoungFrog(~youngfrog@2a02:a03f:ca07:f900:1f5c:a3c6:297:feeb) (Ping timeout: 256 seconds)
2023-12-08 22:59:21 +0100YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be)
2023-12-08 23:00:45 +0100 <petrichor> hi folks o/
2023-12-08 23:01:07 +0100 <[exa]> o/
2023-12-08 23:01:11 +0100 <Rembane>
2023-12-08 23:01:33 +0100cimento(CO2@gateway/vpn/protonvpn/cimento)
2023-12-08 23:01:54 +0100 <ski> ehlo petrichor
2023-12-08 23:04:55 +0100 <petrichor> thought it was about time joined here as i'm doing advent of code in haskell ^^
2023-12-08 23:05:42 +0100 <EvanR> get the leaderboard code in the topic (if there's room)
2023-12-08 23:06:28 +0100 <petrichor> EvanR: cool, thanks
2023-12-08 23:06:43 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:11bf:d345:9651:e652) (Remote host closed the connection)
2023-12-08 23:11:49 +0100 <petrichor> i am not going to be high up that leaderboard >_<
2023-12-08 23:13:33 +0100 <EvanR> technically you can still catch up
2023-12-08 23:13:55 +0100 <EvanR> I am regularly pushed down by people finishing after me xD
2023-12-08 23:14:46 +0100 <glguy> petrichor: There's a wide range of people on the leaderboard. It's more about doing it in Haskell than doing it fast
2023-12-08 23:15:31 +0100igemnace(~ian@user/igemnace) (Read error: Connection reset by peer)
2023-12-08 23:15:56 +0100igemnace(~ian@user/igemnace)
2023-12-08 23:18:46 +0100 <petrichor> <3
2023-12-08 23:18:55 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2023-12-08 23:20:15 +0100 <petrichor> sounds good to me, i've only managed to complete it on christmas day and that wasn't in haskell
2023-12-08 23:20:41 +0100 <petrichor> *on christmas day *once*
2023-12-08 23:26:59 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Ping timeout: 264 seconds)
2023-12-08 23:29:18 +0100 <EvanR> I could only complete it once, and it was mid january by that point
2023-12-08 23:29:26 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-12-08 23:29:45 +0100 <EvanR> the last five days of that aoc were brain melting
2023-12-08 23:30:09 +0100 <EvanR> I'm not sure how I could've done it without haskell xD
2023-12-08 23:30:39 +0100zetef(~quassel@2a02:2f00:530a:a300:54fc:7521:3870:34b2)
2023-12-08 23:41:23 +0100chomwitt(~chomwitt@2a02:587:7a09:c300:1ac0:4dff:fedb:a3f1) (Remote host closed the connection)
2023-12-08 23:43:01 +0100 <int-e> . o O ( You can write Haskell in any language, it's just more code and you need to do your own type checking. )
2023-12-08 23:44:26 +0100zetef(~quassel@2a02:2f00:530a:a300:54fc:7521:3870:34b2) (Remote host closed the connection)
2023-12-08 23:46:39 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-12-08 23:49:08 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2023-12-08 23:49:22 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:11bf:d345:9651:e652)
2023-12-08 23:52:02 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-12-08 23:54:16 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2023-12-08 23:58:24 +0100jle`(~jle`@2603-8001-3b02-84d4-cc77-9348-89d2-92f3.res6.spectrum.com) (Ping timeout: 268 seconds)