Home liberachat/#haskell: Logs Calendar

Logs on 2023-12-08 (liberachat/#haskell)

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

All times are in UTC on 2023-12-08.