Home liberachat/#haskell: Logs Calendar

Logs on 2024-02-10 (liberachat/#haskell)

00:01:42 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
00:01:55 × k_hachig quits (~k_hachig@138-51-84-217-lsn-2.nat.utoronto.ca) (Ping timeout: 276 seconds)
00:09:00 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 268 seconds)
00:12:51 <energizer> i guess that's a no
00:13:22 eso joins (a0662dfd5e@2a03:6000:1812:100::1266)
00:13:23 rselim joins (ce261f06ff@user/milesrout)
00:13:25 cpli joins (77fc530071@2a03:6000:1812:100::252)
00:13:38 akspecs joins (00cc8321af@sourcehut/user/akspecs)
00:13:43 b0o joins (0e4a0bf4c9@2a03:6000:1812:100::1bf)
00:13:51 ggb joins (a62ffbaf4f@2a03:6000:1812:100::3ac)
00:13:54 probie joins (cc0b34050a@user/probie)
00:13:55 shreyasminocha joins (51fdc93eda@user/shreyasminocha)
00:13:58 whereiseveryone joins (206ba86c98@2a03:6000:1812:100::2e4)
00:14:00 <energizer> cuz that returns an IntOrFloat, not an int or a float
00:14:05 brettgilio joins (a35ba67324@2a03:6000:1812:100::260)
00:14:15 bsima1 joins (9d7e39c8ad@2a03:6000:1812:100::dd)
00:14:25 lane joins (809450f172@2a03:6000:1812:100::1300)
00:14:37 <ski> what would the type of the operation be ?
00:15:05 jkoshy joins (99b9359beb@user/jkoshy)
00:15:53 <ski> you can have it produce a `Dynamic', if you want to ..
00:16:20 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
00:16:50 <energizer> does Dynamic know that it can only be an int or a float, or does it think the result could be anything?
00:17:29 <ski> > fromDynamic (toDyn (1 :: Int)) :: Maybe Int
00:17:31 <lambdabot> Just 1
00:17:43 <ski> > fromDynamic (toDyn False) :: Maybe Bool
00:17:45 <lambdabot> Just False
00:18:19 <ski> but you don't know that, statically, in Python, either
00:18:45 <energizer> depends which type system you're using
00:18:46 rvalue joins (~rvalue@user/rvalue)
00:19:13 <ski> if you want guarantee to only have an `Int' or `Float', then `Either' seems reasonable to me
00:19:36 <ski> (or `IntOrFloat')
00:20:45 <ski> there is no "check type of result", in Haskell. you must already know which type the result is, to be able to get information out of it
00:21:55 <ski> ("types don't exist at run-time", is the usual way to express this)
00:22:19 × Tuplanolla quits (~Tuplanoll@91-159-68-95.elisa-laajakaista.fi) (Quit: Leaving.)
00:22:28 <haskellbridge> <m​agic_rb> Id ask, when would, the python ecample you gave, be useful? Having a variable be either a float or int randomly sounds like a nightmare (even in python)
00:24:19 × mikoto-chan quits (~mikoto-ch@85-76-79-5-nat.elisa-mobile.fi) (Ping timeout: 255 seconds)
00:25:09 <energizer> that is of course just a minimal proof of concept demo
00:26:25 <ski> (there is no guarantee that the machine representation for `Int' is disjoint, non-overlapping, from the one for `Float'. iow, there could conceivably be a value of type `Int', and a value of type `Float', which would be represented exactly the same, at the machine level. in that case, it would, even thinking at the level of what's possible in machine code, be impossible to tell those two apart)
00:26:52 <ski> it's unclear what you want to express, really
00:27:10 <ski> (including how to use it, in that)
00:27:21 k_hachig joins (~k_hachig@38.147.245.17)
00:31:41 × k_hachig quits (~k_hachig@38.147.245.17) (Ping timeout: 256 seconds)
00:33:17 L29Ah joins (~L29Ah@wikipedia/L29Ah)
00:36:15 × pounce quits (~pounce@user/cute/pounce) (Remote host closed the connection)
00:36:33 pounce joins (~pounce@user/cute/pounce)
00:40:53 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 240 seconds)
00:40:54 azimut joins (~azimut@gateway/tor-sasl/azimut)
00:49:48 × akegalj quits (~akegalj@93.139.213.76) (Quit: leaving)
01:08:43 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 260 seconds)
01:10:41 bilegeek joins (~bilegeek@2600:1008:b095:d28b:f78d:21a3:76eb:796a)
01:24:37 Erutuon joins (~Erutuon@user/erutuon)
01:29:05 average joins (uid473595@user/average)
01:29:12 JordiGH joins (~jordi@user/jordigh)
01:35:45 k_hachig joins (~k_hachig@38.147.245.17)
01:40:10 × k_hachig quits (~k_hachig@38.147.245.17) (Ping timeout: 256 seconds)
01:42:16 mikoto-chan joins (~mikoto-ch@85-76-79-5-nat.elisa-mobile.fi)
01:44:21 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
01:44:42 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
01:45:43 Lord_of_Life_ is now known as Lord_of_Life
01:48:30 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Quit: o/)
01:49:01 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 264 seconds)
01:50:08 × Square quits (~Square@user/square) (Ping timeout: 268 seconds)
01:51:07 × puke quits (~puke@user/puke) (Ping timeout: 276 seconds)
01:51:17 Sciencentistguy joins (~sciencent@hacksoc/ordinary-member)
01:53:32 jmdaemon joins (~jmdaemon@user/jmdaemon)
02:01:11 × arahael quits (~arahael@119-18-0-146.771200.syd.nbn.aussiebb.net) (Ping timeout: 264 seconds)
02:09:25 × tabemann quits (~tabemann@2600:1700:7990:24e0:2256:a66a:95f3:ce25) (Quit: Leaving)
02:09:33 tabemann joins (~tabemann@2600:1700:7990:24e0:5d57:406e:8f63:35e6)
02:14:54 <meejah> energizer: at some point, you have to "use the thing" -- that's presumably when you care whether it's a Float or Int, right? (So, at that point you decide ... whether haskell or python)
02:19:21 × otto_s quits (~user@p4ff27c46.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
02:21:13 otto_s joins (~user@p5b04400d.dip0.t-ipconnect.de)
02:22:54 k_hachig joins (~k_hachig@38.147.245.17)
02:25:03 × boukenshaou quits (~Boukensha@223.178.86.127) (Remote host closed the connection)
02:27:35 × k_hachig quits (~k_hachig@38.147.245.17) (Ping timeout: 264 seconds)
02:32:07 × tessier quits (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 255 seconds)
02:33:53 tessier joins (~treed@ec2-184-72-149-67.compute-1.amazonaws.com)
02:37:53 <energizer> meejah: do i? print(x) works either way
02:41:47 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
02:49:01 × mikoto-chan quits (~mikoto-ch@85-76-79-5-nat.elisa-mobile.fi) (Ping timeout: 264 seconds)
02:53:32 k_hachig joins (~k_hachig@38.147.245.17)
02:55:18 <monochrom> That is why when my university decided to switch from Python to C for a 1st-year course, I supported it.
02:56:19 <monochrom> Python simply has too many of these magics that you can take for granted and stop needing critical thinking and become anti-ready for the rest of CS.
02:56:24 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
02:58:11 × k_hachig quits (~k_hachig@38.147.245.17) (Ping timeout: 264 seconds)
02:58:42 <meejah> energizer: well, so would print in haskell .. but what's the point of the example if you don't care about the type?
02:59:19 <energizer> and so would printf in C
03:02:09 JordiGH joins (~jordi@user/jordigh)
03:04:27 × Achylles_ quits (~Achylles_@45.182.57.103) (Ping timeout: 260 seconds)
03:04:29 <energizer> meejah: the example shows a function that returns an instance of either of two types, and continues the program without me having to branch like i would have to for a discriminated union
03:04:34 <geekosaur> printf in C very much cares
03:08:13 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds)
03:09:50 derpyxdhs joins (~Thunderbi@user/derpyxdhs)
03:10:42 × derpyxdhs quits (~Thunderbi@user/derpyxdhs) (Client Quit)
03:11:05 derpyxdhs joins (~Thunderbi@user/derpyxdhs)
03:11:43 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 276 seconds)
03:12:10 <monochrom> On the dark side, I recently made an assignment question that said "return true if condition foo, otherwise return a pair of numbers". >:)
03:13:02 <monochrom> The question asked for pseudocode only, so I felt that we could be lax about that.
03:13:21 <monochrom> But we had good students who asked "what madness is that????!!!" :)
03:13:50 <int-e> data DarkerBool = True | False | Pair
03:13:51 <monochrom> (So I felt like I brought up "C has union types..." haha)
03:14:22 <int-e> . o O ( Or should I name the last one APair )
03:14:54 <monochrom> Since there is no BPair, you don't need APair, just Pair. :)
03:15:50 <int-e> But you wanted to return *a* pair.
03:16:51 <energizer> i guess TAPL doesnt have union types
03:16:54 × derpyxdhs quits (~Thunderbi@user/derpyxdhs) (Quit: derpyxdhs)
03:18:15 × TonyStone quits (~TonyStone@074-076-057-186.res.spectrum.com) (Quit: Leaving)
03:27:08 Lycurgus joins (~georg@user/Lycurgus)
03:35:17 × td_ quits (~td@i53870913.versanet.de) (Ping timeout: 268 seconds)
03:36:33 td_ joins (~td@i53870917.versanet.de)
03:39:25 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 264 seconds)
03:42:43 JordiGH joins (~jordi@user/jordigh)
03:46:49 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 255 seconds)
03:48:35 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 264 seconds)
03:58:48 igemnace joins (~ian@user/igemnace)
03:59:31 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 256 seconds)
04:03:57 × EvanR quits (~EvanR@user/evanr) (Ping timeout: 268 seconds)
04:06:44 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
04:07:58 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
04:12:02 × igemnace quits (~ian@user/igemnace) (Quit: WeeChat 4.2.1)
04:12:49 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
04:20:29 × sudden quits (~cat@user/sudden) (Ping timeout: 256 seconds)
04:23:24 <haskellbridge> <m​aerwald> sm: I agree, why 'cabal install --lib' hasn't been killed with fire yet is beyond my understanding
04:24:01 <haskellbridge> <m​aerwald> In general I find a lot of design decisions questionable. XDG was a disaster too.
04:24:26 <haskellbridge> <m​aerwald> stackage support is half baked
04:24:55 <haskellbridge> <m​aerwald> There's no clean replacement for cabal sandbox workflow
04:25:03 <haskellbridge> <m​aerwald> There's no GC
04:27:05 <haskellbridge> <m​aerwald> Installing libraries is one of the main use cases. But people keep saying "create a project and write a cabal.project file". Now you have to know about 'cabal install --lib --package-env=.' to avoid that unnecessary foo
04:28:23 mima joins (~mmh@aftr-62-216-211-201.dynamic.mnet-online.de)
04:28:36 <haskellbridge> <m​aerwald> cabal.project format doesn't even have a specification. It's ad-hoc
04:30:45 <sclv> we should improve env support until it is a clean sandbox replacement
04:31:04 sudden joins (~cat@user/sudden)
04:32:11 × benjaminl quits (~benjaminl@user/benjaminl) (Remote host closed the connection)
04:33:01 benjaminl joins (~benjaminl@user/benjaminl)
04:34:44 <haskellbridge> <s​m> should we though
04:34:56 <haskellbridge> <m​aerwald> Since cabal is becoming more modular, I think it might make sense to write an alternative cli interface
04:35:51 × ell15 quits (~ellie@user/ellie) (Quit: Leaving)
04:36:36 <haskellbridge> <s​m> or port the good bits (solver..) to stack ?
04:36:52 <haskellbridge> <m​aerwald> That's something I thought about too
04:37:14 <haskellbridge> <m​aerwald> But I don't like stacks defaults
04:37:32 <haskellbridge> <s​m> well, that's two of us. It seems to be gaining ground :)
04:38:10 <haskellbridge> <s​m> (the idea)
04:38:15 <haskellbridge> <m​aerwald> In a sense, ghcup integrates better with stack now than with cabal ;)
04:38:30 <haskellbridge> <m​aerwald> cabal still doesn't have any shell hooks
04:38:41 <sclv> well my view is the lib approach is 90 percent there so lets make tickets enumerating the issues and fix them
04:39:08 <sclv> and if you want a shell hook make a ticket for it, but i don’t know what we would want for it
04:39:15 <sclv> or want it for
04:39:37 <haskellbridge> <m​aerwald> There's already a ticket for it
04:39:48 ell15 joins (~ellie@user/ellie)
04:39:49 <haskellbridge> <m​aerwald> People have been asking about it many times
04:39:57 <haskellbridge> <s​m> I realise you (both) know cabal much better than I, but do you think that's really possible ? It seems like people have been trying to get there for many years
04:40:34 <haskellbridge> <m​aerwald> https://github.com/haskell/cabal/issues/7394
04:41:20 <sclv> just saw that. i bet with the new cabal custom setup redesign they’re working on we can implement shell hooks as a library!
04:43:23 <haskellbridge> <m​aerwald> sm: the thing is... I find contributing to stack easier, but cabal overall has more development traction
04:44:27 <haskellbridge> <s​m> but is it reaching the goal of a clean inner & outer design and UX that makes users happy do you think
04:45:07 <haskellbridge> <s​m> is tech debt going down or is it keeping pace
04:45:21 <haskellbridge> <m​aerwald> The other problem is the disconnection between stack and Cabal (the library) development, leading to frequent issues
04:45:56 <sclv> the tech debt is going down
04:46:28 <sclv> its just that every fix has three knock on consequences to obscure use cases so its slow and painful
04:46:58 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
04:47:14 <sclv> eg someone just did a super nice cleanup to a feature that seemed weird and unused and it turned out there was a single user — but it was hls! so it had to be reverted
04:47:16 <haskellbridge> <m​aerwald> stack codebase is magnitudes cleaner than cabal-install imo. Most of the dragons are in pantry.
04:47:27 <haskellbridge> <m​aerwald> I don't understand why they designed it at all
04:47:31 <haskellbridge> <m​aerwald> It's overengineered
04:47:52 <haskellbridge> <m​aerwald> cabal just uses files and that works well
04:47:55 <sclv> pantry? yeh. there was a period where lots of people just fell in love with content addressable stores
04:48:16 <sclv> they’re such a fun idea that people just want to put em everywhere
04:48:29 <haskellbridge> <m​aerwald> That shit is really hard to understand how it interacts with Cabal
04:48:49 <haskellbridge> <s​m> wasn't the point of that to improve caching and reuse of installed deps
04:49:15 <haskellbridge> <m​aerwald> I'm not aware it actually made anything faster lol
04:49:28 <sclv> pantry? it doesn’t do that. its just another store. it reinvents the filesystem
04:49:30 aforemny joins (~aforemny@2001:9e8:6cfa:c300:ed38:1b4d:cf6e:9f22)
04:49:41 × aforemny_ quits (~aforemny@i59F516EA.versanet.de) (Ping timeout: 240 seconds)
04:49:42 <sclv> people don’t appreciate how well engineered filesystems are
04:49:57 <haskellbridge> <m​aerwald> Agreed
04:50:17 <haskellbridge> <s​m> I remember first experiencing proper reuse of deps with stack
04:50:19 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
04:50:50 <haskellbridge> <s​m> so it did something right
04:51:03 <sclv> stack existed without pantry for years. the cutover didn’t bring new features for end users
04:51:18 <haskellbridge> <m​aerwald> They implemented nix style store earlier than cabal, that's all
04:51:49 <sclv> its not nix style because its a single fixed set
04:51:50 <haskellbridge> <s​m> when you say nix style.. this is shorthand for content-addressable style right
04:52:13 <sclv> pantry actually postdates cabal v2
04:52:34 <sclv> the store in cabal is for installed packages. pantry is a design for the package repo — the source
04:53:25 × mima quits (~mmh@aftr-62-216-211-201.dynamic.mnet-online.de) (Ping timeout: 255 seconds)
04:53:36 <haskellbridge> <m​aerwald> You can have different versions of one library installed with stack
04:54:35 <haskellbridge> <m​aerwald> They even used to support the cabal sover via cli or something, but it was removed
04:55:14 <haskellbridge> <s​m> yes, that was a pity but understandable at the time. Someone should add it back
04:55:55 <sclv> right but the different versions are just.. different versions. not nix hashed as far as i know, just like a classic packagedb
04:55:56 <haskellbridge> <m​aerwald> I'm guessing the API is mostly stable of cabal-install-solver sclv?
04:56:23 <sclv> oh yeah solver api very stable and now its a standalone lib even
04:57:02 <haskellbridge> <m​aerwald> I might take a look at it when I fall sick again and have too much free time 😂
04:57:31 hehelego joins (~hehelego@185.101.92.208)
04:58:41 Guest12 joins (~Guest12@185.101.92.208)
04:59:24 <haskellbridge> <s​m> hope you fall healthy and get a burst of energy instead!
04:59:24 <haskellbridge> <m​aerwald> It's just the feature surface is so big of those tools. I wish it was more unix style pipeline of many small interfaces.
05:00:14 <haskellbridge> <s​m> re cabal success.. if inner tech debt is going down that's good, but outer UX debt seems to change at glacial pace. From the outside cabal doesn't seem to take that seriously.
05:00:26 × Guest12 quits (~Guest12@185.101.92.208) (Client Quit)
05:00:43 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 256 seconds)
05:00:46 <haskellbridge> <m​aerwald> E.g. one executable to create an install plan, another to consume and execute it, etc
05:00:56 TheCoffeMaker_ joins (~TheCoffeM@186.137.141.113)
05:00:58 <sclv> we need good ux proposals and designs. we mainly get under designed wish lists
05:01:16 <haskellbridge> <m​aerwald> More like FreeBSD does things, but that also has difficult sides
05:01:31 <sclv> and we have engineers as devs, not enough ux contributers
05:02:22 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds)
05:04:50 <haskellbridge> <m​aerwald> sm: it's hard to change UX fundamentally for something that's in wide use... v1 vs v2 was such an attempt and it did indeed cause a lot of churn
05:07:00 <haskellbridge> <m​aerwald> That's why I like the idea of alternative projects doing different interfaces. If it doesn't work, the project just dies, if it works, we can deprecate the other or just keep both
05:07:25 <haskellbridge> <s​m> indeed, more experiments is good! faster evolution
05:07:51 <haskellbridge> <m​aerwald> Trying to retrofit all sorts of ideas onto existing cabal-install UX is just hard
05:07:57 <haskellbridge> <s​m> modularity++
05:08:05 <haskellbridge> <m​aerwald> Yeah
05:08:09 k_hachig joins (~k_hachig@38.147.245.17)
05:10:29 × phma quits (phma@2001:5b0:212a:9908:9016:d26e:e7d5:a1b0) (Read error: Connection reset by peer)
05:11:24 phma joins (phma@2001:5b0:210d:fe68:e240:a279:f60d:a263)
05:13:01 × k_hachig quits (~k_hachig@38.147.245.17) (Ping timeout: 264 seconds)
05:13:29 haskellbridge <s​m> wonders if Cabal and cabal-install manuals should be split
05:13:51 <sclv> i would love that
05:24:27 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
05:25:22 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 255 seconds)
05:25:35 rosco joins (~rosco@175.136.156.77)
05:26:22 chexum joins (~quassel@gateway/tor-sasl/chexum)
05:26:54 <haskellbridge> <s​m> I would enjoy doing that, if it were my job. Too big for free work I think
05:27:41 × rosco quits (~rosco@175.136.156.77) (Client Quit)
05:50:07 k_hachig joins (~k_hachig@38.147.245.17)
05:51:21 danza joins (~danza@151.46.176.186)
05:57:31 × k_hachig quits (~k_hachig@38.147.245.17) (Ping timeout: 256 seconds)
06:02:23 × mulk quits (~mulk@pd9514714.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
06:05:22 mulk joins (~mulk@p5b2dc431.dip0.t-ipconnect.de)
06:10:09 takuan joins (~takuan@178.116.218.225)
06:21:54 mima joins (~mmh@89.207.171.141)
06:28:22 × mima quits (~mmh@89.207.171.141) (Ping timeout: 255 seconds)
06:29:24 mima joins (~mmh@89.207.171.141)
06:36:57 × mima quits (~mmh@89.207.171.141) (Ping timeout: 260 seconds)
06:37:13 × finsternis quits (~X@23.226.237.192) (Remote host closed the connection)
06:37:53 mima joins (~mmh@89.207.171.141)
06:44:49 × mima quits (~mmh@89.207.171.141) (Ping timeout: 264 seconds)
06:45:05 Raspbelly joins (~Raspbelly@host-213-235-142-6.ip.topnet.cz)
06:45:27 mima joins (~mmh@89.207.171.141)
06:48:57 × bilegeek quits (~bilegeek@2600:1008:b095:d28b:f78d:21a3:76eb:796a) (Quit: Leaving)
06:54:11 k_hachig joins (~k_hachig@38.147.245.17)
06:55:45 × mima quits (~mmh@89.207.171.141) (Ping timeout: 256 seconds)
06:58:43 × k_hachig quits (~k_hachig@38.147.245.17) (Ping timeout: 256 seconds)
07:21:23 mima joins (~mmh@89.207.171.141)
07:27:12 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
07:31:15 × kimiamania4648 quits (~65804703@user/kimiamania) (Quit: PegeLinux)
07:31:25 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
07:32:53 kimiamania4648 joins (~65804703@user/kimiamania)
07:33:52 arahael joins (~arahael@119.18.0.146)
07:34:19 img joins (~img@user/img)
07:34:58 × mima quits (~mmh@89.207.171.141) (Ping timeout: 276 seconds)
07:35:18 mima joins (~mmh@89.207.171.141)
07:36:39 kimiamania46483 joins (~65804703@user/kimiamania)
07:40:24 × kimiamania4648 quits (~65804703@user/kimiamania) (Ping timeout: 268 seconds)
07:40:24 kimiamania46483 is now known as kimiamania4648
07:43:25 harveypwca joins (~harveypwc@2601:246:c201:d680:59a0:7761:1557:ead5)
07:43:58 × mima quits (~mmh@89.207.171.141) (Ping timeout: 256 seconds)
07:44:54 mima joins (~mmh@89.207.171.141)
07:47:12 × chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection)
07:48:29 chiselfuse joins (~chiselfus@user/chiselfuse)
07:51:13 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:52:29 × mima quits (~mmh@89.207.171.141) (Ping timeout: 240 seconds)
07:53:27 RaspbellySwirl joins (~Raspbelly@host-213-235-142-6.ip.topnet.cz)
07:53:28 mima joins (~mmh@89.207.171.141)
07:57:04 × Raspbelly quits (~Raspbelly@host-213-235-142-6.ip.topnet.cz) (Ping timeout: 276 seconds)
07:59:14 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
08:00:58 × mulk quits (~mulk@p5b2dc431.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
08:01:02 benkard joins (~mulk@p5b2dc3b4.dip0.t-ipconnect.de)
08:01:26 benkard is now known as mulk
08:02:05 × mima quits (~mmh@89.207.171.141) (Ping timeout: 240 seconds)
08:03:16 mima joins (~mmh@89.207.171.141)
08:06:52 acidjnk_new joins (~acidjnk@p200300d6e737e7742d33f4d70f70ba9d.dip0.t-ipconnect.de)
08:11:53 × mima quits (~mmh@89.207.171.141) (Ping timeout: 252 seconds)
08:12:30 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
08:12:44 mima joins (~mmh@89.207.171.141)
08:18:03 × mima quits (~mmh@89.207.171.141) (Ping timeout: 256 seconds)
08:29:08 × danza quits (~danza@151.46.176.186) (Read error: Connection reset by peer)
08:29:18 bilegeek joins (~bilegeek@2600:1008:b095:d28b:f78d:21a3:76eb:796a)
08:34:24 gmg joins (~user@user/gehmehgeh)
08:35:38 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:39:44 mima joins (~mmh@89.207.171.141)
08:44:27 danza joins (~danza@151.46.217.222)
08:45:36 × harveypwca quits (~harveypwc@2601:246:c201:d680:59a0:7761:1557:ead5) (Quit: Leaving)
08:50:07 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
08:50:56 × mima quits (~mmh@89.207.171.141) (Ping timeout: 252 seconds)
08:51:41 mima joins (~mmh@89.207.171.141)
08:56:52 × _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Ping timeout: 255 seconds)
08:59:45 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
09:00:08 Tuplanolla joins (~Tuplanoll@91-159-68-95.elisa-laajakaista.fi)
09:02:00 × mima quits (~mmh@89.207.171.141) (Remote host closed the connection)
09:02:17 mima joins (~mmh@89.207.171.141)
09:02:55 _d0t joins (~{-d0t-}@user/-d0t-/x-7915216)
09:04:16 × danza quits (~danza@151.46.217.222) (Ping timeout: 268 seconds)
09:09:25 × mima quits (~mmh@89.207.171.141) (Ping timeout: 264 seconds)
09:10:02 × AlexZenon quits (~alzenon@94.233.241.194) (Quit: ;-)
09:10:11 mima joins (~mmh@89.207.171.141)
09:11:28 × AlexNoo quits (~AlexNoo@94.233.241.194) (Quit: Leaving)
09:16:48 × kimiamania4648 quits (~65804703@user/kimiamania) (Quit: PegeLinux)
09:16:51 × mima quits (~mmh@89.207.171.141) (Ping timeout: 256 seconds)
09:17:22 kimiamania46483 joins (~65804703@user/kimiamania)
09:17:40 mima joins (~mmh@89.207.171.141)
09:21:49 Katarushisu16 joins (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net)
09:22:59 × Katarushisu1 quits (~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Ping timeout: 272 seconds)
09:22:59 Katarushisu16 is now known as Katarushisu1
09:24:22 AlexNoo joins (~AlexNoo@94.233.241.194)
09:26:17 AlexZenon joins (~alzenon@94.233.241.194)
09:26:41 × mima quits (~mmh@89.207.171.141) (Ping timeout: 252 seconds)
09:27:17 mima joins (~mmh@89.207.171.141)
09:33:50 × mima quits (~mmh@89.207.171.141) (Ping timeout: 252 seconds)
09:37:18 × hehelego quits (~hehelego@185.101.92.208) (Ping timeout: 256 seconds)
09:37:55 hehelego joins (~hehelego@185.101.92.208)
09:39:55 mima joins (~mmh@89.207.171.141)
09:46:54 × mima quits (~mmh@89.207.171.141) (Ping timeout: 260 seconds)
09:47:39 mima joins (~mmh@89.207.171.141)
09:50:40 × mima quits (~mmh@89.207.171.141) (Client Quit)
09:51:14 <tomsmeding> okay apparently one cannot unsafeCoerce# between Word# and Double#
09:51:34 <tomsmeding> I'm getting ASSEMBLER errors from GHC, that it can't type-check the assembly it's generating
09:52:03 <tomsmeding> er, not from GHC, from the assembler, I guess
09:52:45 <tomsmeding> how _do_ I safely do this, though? I want to reinterpret the bits in a Double as a Word, and vice-versa
09:53:01 <tomsmeding> must I alloca and write and read from a Ptr?
09:56:19 <tomsmeding> look at this error and savor it https://paste.tomsmeding.com/AofqoE4E
09:56:27 <c_wraith> stgWord64ToDouble ?
09:56:42 <c_wraith> check out stuff in GHC.Float
09:57:32 <tomsmeding> c_wraith: what's the difference between castWord64ToDouble and stgWord64ToDouble
09:57:39 <tomsmeding> but thanks, seems that's what I was looking for
09:57:40 <c_wraith> the #s
09:57:45 <tomsmeding> _oh_
09:58:01 <tomsmeding> yay
09:58:32 <tomsmeding> it's not every day you fuck up your haskell code so thoroughly that the assembler won't accept ghc's output :p
09:59:07 <c_wraith> IIRC, x86 has different registers for floating-point values. Even when using the modern extensions
09:59:20 <tomsmeding> yes that's true
09:59:25 <tomsmeding> so it makes sense on reflection
10:01:45 × mulk quits (~mulk@p5b2dc3b4.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
10:01:56 <tomsmeding> (it's also visible in the error: %xmm1 is one of the SSE registers, also use for individual floats, and %rbx is an (integer) general-purpose register; 'cmp' is refusing to operate on mixed inputs here)
10:02:18 <tomsmeding> s/cmp/cmpxchg/
10:02:47 mulk joins (~mulk@p5b2dc153.dip0.t-ipconnect.de)
10:02:59 × foul_owl quits (~kerry@157.97.134.164) (Ping timeout: 252 seconds)
10:03:21 × B-J quits (~BenziJuni@232-148-209-31.dynamic.hringdu.is) (Quit: ZNC 1.8.2 - https://znc.in)
10:04:16 <tomsmeding> yay no more asm type errors
10:05:20 danza joins (~danza@151.46.219.119)
10:05:38 Benzi-Junior joins (~BenziJuni@232-148-209-31.dynamic.hringdu.is)
10:06:34 × hehelego quits (~hehelego@185.101.92.208) (Quit: Konversation terminated!)
10:07:29 × xff0x quits (~xff0x@ai099196.d.east.v6connect.net) (Ping timeout: 268 seconds)
10:09:00 xff0x joins (~xff0x@178.255.149.135)
10:17:25 foul_owl joins (~kerry@174-21-148-34.tukw.qwest.net)
10:18:02 <probie> Even without the different register type issue, you can't safely `unsafeCoerce#` from `Word#` to `Double#`, since a `Word#` may only be 32 bits (e.g. on 32-bit x86 or armv7) but a `Double#` is _always_ 64 bits
10:18:19 <tomsmeding> (I did check that sizeOf on Double and Word matches before)
10:18:37 <tomsmeding> I specifically need Word because atomicCasWordAddr# is a Word operation
10:19:42 × tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
10:26:54 × sphynx quits (~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288) (Quit: brb)
10:29:41 sphynx joins (~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288)
10:33:54 × bilegeek quits (~bilegeek@2600:1008:b095:d28b:f78d:21a3:76eb:796a) (Quit: Leaving)
10:37:11 × xff0x quits (~xff0x@178.255.149.135) (Ping timeout: 264 seconds)
10:37:45 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
10:38:39 xff0x joins (~xff0x@ai099196.d.east.v6connect.net)
10:43:11 rscastilho2024 joins (~rscastilh@189.61.140.215)
10:43:15 × mulk quits (~mulk@p5b2dc153.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
10:47:36 mulk joins (~mulk@p5b2dc1d9.dip0.t-ipconnect.de)
10:48:42 × rscastilho2024 quits (~rscastilh@189.61.140.215) (Remote host closed the connection)
10:59:14 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
11:14:51 wootehfoot joins (~wootehfoo@user/wootehfoot)
11:16:30 mmhat joins (~mmh@p200300f1c740afa3ee086bfffe095315.dip0.t-ipconnect.de)
11:20:36 Square joins (~Square@user/square)
11:21:57 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
11:25:14 mesaoptimizer joins (~mesaoptim@user/PapuaHardyNet)
11:25:36 fendor joins (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c)
11:31:43 wootehfoot joins (~wootehfoo@user/wootehfoot)
11:40:20 Achylles joins (~Achylles_@45.182.57.38)
11:40:51 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
11:41:59 × foul_owl quits (~kerry@174-21-148-34.tukw.qwest.net) (Ping timeout: 264 seconds)
11:47:25 × Square quits (~Square@user/square) (Ping timeout: 246 seconds)
11:54:11 foul_owl joins (~kerry@185.219.141.164)
11:59:44 × danza quits (~danza@151.46.219.119) (Read error: Connection reset by peer)
12:02:57 emad joins (~emad@156.214.147.198)
12:10:20 puke joins (~puke@user/puke)
12:19:10 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
12:28:19 × ell15 quits (~ellie@user/ellie) (Read error: Connection reset by peer)
12:29:16 ell15 joins (~ellie@user/ellie)
12:40:46 × fendor quits (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c) (Remote host closed the connection)
12:42:16 mikoto-chan joins (~mikoto-ch@ip-83-134-169-166.dsl.scarlet.be)
12:43:04 <haskellbridge> <J​ade> what are the naming conventions for transformer stacks?
12:43:36 <haskellbridge> <J​ade> I have `type WhatShouldINameThis e m = IputT (ExceptT e m)`
12:43:47 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
12:43:48 <haskellbridge> <J​ade> s/Iput/Input/
12:44:19 × ell15 quits (~ellie@user/ellie) (Read error: Connection reset by peer)
12:45:10 <int-e> Hmm, they tend to be newtypes rather than type aliases; they tend to end in T for "transformer", and the rest is up to you... the name reflects a purpose you're using it for.
12:45:41 ell15 joins (~ellie@user/ellie)
12:48:05 erty joins (~user@122.161.51.171)
12:49:46 erty parts (~user@122.161.51.171) ()
12:50:04 erty joins (~user@user/aeroplane)
12:51:12 alexherbo2 joins (~alexherbo@2a02-8440-3141-cee7-04bb-1e17-4e40-aeda.rev.sfr.net)
12:51:58 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
12:55:25 <tomsmeding> AppT
13:02:00 wootehfoot joins (~wootehfoo@user/wootehfoot)
13:03:51 tremon joins (~tremon@83.80.159.219)
13:15:14 billchenchina joins (~billchenc@103.152.35.21)
13:19:41 × emad quits (~emad@156.214.147.198) (Ping timeout: 260 seconds)
13:22:13 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
13:46:01 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 264 seconds)
14:08:22 Square joins (~Square@user/square)
14:09:29 sprout_ joins (~quassel@2a02-a448-3a80-0-55d5-d61-58e7-1351.fixed6.kpn.net)
14:12:16 × erty quits (~user@user/aeroplane) (Remote host closed the connection)
14:13:16 × sprout quits (~quassel@2a02-a448-3a80-0-345a-4cb5-664-8455.fixed6.kpn.net) (Ping timeout: 256 seconds)
14:14:18 × Natch quits (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Remote host closed the connection)
14:18:21 erty joins (~user@user/aeroplane)
14:18:26 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
14:19:16 × driib quits (~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat)
14:20:38 driib joins (~driib@vmi931078.contaboserver.net)
14:23:21 k_hachig joins (~k_hachig@67.69.41.242)
14:29:03 × mmhat quits (~mmh@p200300f1c740afa3ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
14:29:25 mmhat joins (~mmh@p200300f1c740af4dee086bfffe095315.dip0.t-ipconnect.de)
14:41:36 × k_hachig quits (~k_hachig@67.69.41.242) (Ping timeout: 256 seconds)
14:49:22 JordiGH joins (~jordi@user/jordigh)
14:50:55 Marcel joins (~Midjak@82.66.147.146)
14:53:49 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
14:56:13 k_hachig joins (~k_hachig@67.69.41.242)
15:00:01 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
15:00:41 × Marcel quits (~Midjak@82.66.147.146) (Quit: Leaving)
15:00:57 × k_hachig quits (~k_hachig@67.69.41.242) (Ping timeout: 256 seconds)
15:01:19 MarciZ joins (~Midjak@82.66.147.146)
15:01:41 × MarciZ quits (~Midjak@82.66.147.146) (Client Quit)
15:01:50 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
15:02:21 Midjak joins (~MarciZ@82.66.147.146)
15:02:53 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
15:04:04 k_hachig joins (~k_hachig@67.69.41.242)
15:04:05 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
15:06:37 × Midjak quits (~MarciZ@82.66.147.146) (Client Quit)
15:09:25 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 264 seconds)
15:09:34 × Achylles quits (~Achylles_@45.182.57.38) (Remote host closed the connection)
15:11:47 JordiGH joins (~jordi@user/jordigh)
15:12:35 waleee joins (~waleee@176.10.144.38)
15:22:01 __monty__ joins (~toonn@user/toonn)
15:23:12 × Goodbye_Vincent quits (cyvahl@freakshells.net) (Quit: )
15:24:03 Goodbye_Vincent joins (cyvahl@freakshells.net)
15:24:09 Natch joins (~natch@92.34.7.158)
15:26:35 × alexherbo2 quits (~alexherbo@2a02-8440-3141-cee7-04bb-1e17-4e40-aeda.rev.sfr.net) (Remote host closed the connection)
15:27:54 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
15:28:46 × TheCoffeMaker_ quits (~TheCoffeM@186.137.141.113) (Ping timeout: 268 seconds)
15:29:13 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 264 seconds)
15:35:29 × k_hachig quits (~k_hachig@67.69.41.242) (Ping timeout: 260 seconds)
15:36:16 noumenon joins (~noumenon@113.51-175-156.customer.lyse.net)
15:38:29 × zer0bitz quits (~zer0bitz@user/zer0bitz) (Ping timeout: 240 seconds)
15:40:32 × pastly quits (~pastly@gateway/tor-sasl/pastly) (Ping timeout: 255 seconds)
15:41:14 pastly joins (~pastly@gateway/tor-sasl/pastly)
15:43:26 zer0bitz joins (~zer0bitz@user/zer0bitz)
15:43:52 k_hachig joins (~k_hachig@67.69.41.242)
16:01:10 alexherbo2 joins (~alexherbo@2a02-8440-3141-cee7-04bb-1e17-4e40-aeda.rev.sfr.net)
16:05:16 × k_hachig quits (~k_hachig@67.69.41.242) (Ping timeout: 255 seconds)
16:22:28 × erty quits (~user@user/aeroplane) (Read error: Connection reset by peer)
16:26:27 benkard joins (~mulk@pd95140ae.dip0.t-ipconnect.de)
16:27:00 × mulk quits (~mulk@p5b2dc1d9.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
16:27:00 benkard is now known as mulk
16:33:44 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:41:00 k_hachig joins (~k_hachig@67.69.41.242)
16:45:25 ph88 joins (~ph88@2001:1c05:2427:8300:7bb4:2686:ea1f:c942)
16:49:45 × k_hachig quits (~k_hachig@67.69.41.242) (Ping timeout: 256 seconds)
16:54:10 × masterbuilder quits (~quassel@user/masterbuilder) (Ping timeout: 268 seconds)
16:54:25 masterbuilder joins (~quassel@user/masterbuilder)
16:57:35 erty joins (~user@user/aeroplane)
17:00:21 Erutuon joins (~Erutuon@user/erutuon)
17:00:37 <haskellbridge> <m​agic_rb> AppT seems to be the go to for "application transformer stacks"
17:05:58 yoo joins (~yo0O0o@104.28.226.106)
17:12:31 × yoo quits (~yo0O0o@104.28.226.106) (Changing host)
17:12:31 yoo joins (~yo0O0o@user/mobivme)
17:14:44 k_hachig joins (~k_hachig@67.69.41.242)
17:16:12 zetef joins (~quassel@95.77.17.251)
17:23:07 × k_hachig quits (~k_hachig@67.69.41.242) (Ping timeout: 260 seconds)
17:23:47 × zetef quits (~quassel@95.77.17.251) (Remote host closed the connection)
17:24:14 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
17:33:23 × elkcl quits (~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru) (Ping timeout: 260 seconds)
17:34:21 JordiGH joins (~jordi@user/jordigh)
17:34:31 k_hachig joins (~k_hachig@67.69.41.242)
17:36:11 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
17:37:37 × ph88 quits (~ph88@2001:1c05:2427:8300:7bb4:2686:ea1f:c942) (Ping timeout: 264 seconds)
17:39:29 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 252 seconds)
17:40:27 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
17:46:31 tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net)
17:46:56 TonyStone joins (~TonyStone@074-076-057-186.res.spectrum.com)
17:50:59 × mikoto-chan quits (~mikoto-ch@ip-83-134-169-166.dsl.scarlet.be) (Ping timeout: 264 seconds)
17:51:09 × erty quits (~user@user/aeroplane) (Remote host closed the connection)
17:52:38 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:52:48 azimut joins (~azimut@gateway/tor-sasl/azimut)
17:56:28 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
18:02:17 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
18:04:13 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
18:08:16 a51 joins (a51@gateway/vpn/protonvpn/a51)
18:08:55 bzm3r joins (~bzm3r@d205-250-253-229.bchsia.telus.net)
18:08:59 mikoto-chan joins (~mikoto-ch@ip-83-134-169-166.dsl.scarlet.be)
18:09:38 <bzm3r> What happened to the "Essential Haskell Compiler" project? Almost all of its links seem to be dead, except for a GitHub repoistory
18:12:17 <bzm3r> Are there alternatives you'd recommend if I am interested in learning how to write a Haskell compiler in a sequence of small steps?
18:13:55 <geekosaur> have you looked at https://smunix.github.io/dev.stephendiehl.com/fun/index.html ?
18:13:58 × yoo quits (~yo0O0o@user/mobivme) (Ping timeout: 255 seconds)
18:14:34 elkcl joins (~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru)
18:26:20 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
18:26:20 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
18:27:03 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
18:27:08 gmg joins (~user@user/gehmehgeh)
18:27:32 boukenshaou joins (~Boukensha@223.178.86.127)
18:34:06 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
18:35:05 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
18:35:22 × mikoto-chan quits (~mikoto-ch@ip-83-134-169-166.dsl.scarlet.be) (Ping timeout: 276 seconds)
18:35:44 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:36:08 × k_hachig quits (~k_hachig@67.69.41.242) (Ping timeout: 252 seconds)
18:42:37 × JordiGH quits (~jordi@user/jordigh) (Ping timeout: 260 seconds)
18:43:49 <haasn> is there a way to avoid getting "cannot load module X, it is a member of the hidden package blabla. you can run :set -package bla" without having to manually run "cabal install --lib <nameofpackage>" after every single ghc upgrade?
18:43:50 azimut joins (~azimut@gateway/tor-sasl/azimut)
18:44:03 <haasn> it seems this happens even for packages that should be available system-wide (e.g. managed by system package manager)
18:44:13 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 264 seconds)
18:44:55 <haasn> and it's really rather annoying as I have to do this for 20-30+ packages in order for basic things like xmonad reloading its configuration or even just `ghci` loading my ~/.ghci configuration to work
18:45:14 <haasn> I feel like I'm missing something obvious about how this is *supposed* to work
18:45:47 fun-safe-math joins (~fun-safe-@c-24-21-106-247.hsd1.or.comcast.net)
18:47:10 <geekosaur> xmonad is what's missing it, it really wants cabal v1 semantics but that's a big footgun
18:47:13 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
18:47:36 <haasn> but ghci has the same issue
18:47:45 <geekosaur> prob ably the easiest way around it is to use a stack-based setup b ecause xmonad will see the stack.yaml and use it and stack will do the rest
18:47:48 <haasn> I wish I could do something like echo ":set -package *" >> ~/.ghci
18:50:38 rvalue joins (~rvalue@user/rvalue)
18:51:24 <geekosaur> That said this sounds weird, anything from the system package manager should be in the global package db and always visible
18:52:31 × pastly quits (~pastly@gateway/tor-sasl/pastly) (Remote host closed the connection)
18:52:43 × mulk quits (~mulk@pd95140ae.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
18:53:15 <haskellbridge> <s​m> you probably can do something like that but it will seriously screw up your projects in future when you have forgotten about it
18:53:49 <haskellbridge> <s​m> ghci's eager inheritance of parent .ghci files is a flaw I think
18:54:04 pastly joins (~pastly@gateway/tor-sasl/pastly)
18:54:21 <haskellbridge> <s​m> ghci is too eager to inherit from parent .ghci files I think
18:54:47 <haskellbridge> <s​m> you probably can do something like that but it will seriously waste your time in future when you have forgotten about it
18:55:26 mulk joins (~mulk@p5b112297.dip0.t-ipconnect.de)
18:56:47 <c_wraith> haasn: wait, after every *ghc* version change? Library code isn't shared between different versions of GHC, at all.
18:58:00 <geekosaur> for cabal install --lib? yes, the environment file will only be valid for a particular ghc version since it points into that ghs version's store
18:58:08 <geekosaur> *ghc
18:58:22 <c_wraith> but why would it say anything about a hidden package in that case?
18:58:24 <geekosaur> oh, I misread
18:58:36 <c_wraith> the whole store is going to be for the wrong version of GHC
18:58:39 rscastilho2024 joins (rscastilho@189.61.140.215)
18:58:53 <geekosaur> I'm also thinking that mixing system-installed packages and cabal-installed packages is problematic
18:58:53 pavonia joins (~user@user/siracusa)
18:59:21 <c_wraith> oh. If they meant "system-managed version of GHC updated"... yikes
18:59:52 <geekosaur> (and in fact buggy, per a comment in https://github.com/haskell/cabal/pull/9683)
18:59:56 <c_wraith> system-managed versions of GHC are only for building system-level haskell tools.
19:01:13 × rscastilho2024 quits (rscastilho@189.61.140.215) (Remote host closed the connection)
19:04:23 <haasn> which ghci # /usr/bin/ghci
19:06:51 sprout_ is now known as sprout
19:10:36 × troydm quits (~troydm@user/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
19:11:19 troydm joins (~troydm@user/troydm)
19:17:47 Lycurgus joins (~georg@user/Lycurgus)
19:19:21 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
19:21:29 ph88 joins (~ph88@2001:1c05:2427:8300:6f40:b726:5a18:8483)
19:23:32 mikess joins (~mikess@user/mikess)
19:26:29 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 240 seconds)
19:26:40 barak joins (~barak@2a0d:6fc2:68c1:2600:ba5c:5700:a75b:5c2d)
19:28:55 × barak quits (~barak@2a0d:6fc2:68c1:2600:ba5c:5700:a75b:5c2d) (Remote host closed the connection)
19:29:25 × boukenshaou quits (~Boukensha@223.178.86.127) (Remote host closed the connection)
19:31:54 ld joins (~ld@137.220.68.193)
19:34:42 × ld quits (~ld@137.220.68.193) (Quit: ld)
19:35:38 ld joins (~ld@137.220.68.193)
19:36:12 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
19:37:02 <energizer> is there a function like fmap but that doesn't necessarily preserve the exact type of the container?
19:37:03 × ld quits (~ld@137.220.68.193) (Remote host closed the connection)
19:37:47 drumi joins (~drumi@137.220.68.193)
19:38:26 <tomsmeding> energizer: how would that work
19:38:56 × drumi quits (~drumi@137.220.68.193) (Remote host closed the connection)
19:39:42 drumi joins (~drumi@137.220.68.193)
19:40:03 <bzm3r> geekosaur yeah, i have, although it seems to have burned out too :(
19:40:29 <energizer> like for a unit-step range type (range 1 5) that represents 1,2,3,4,5 and `fleximap \x->x^2 (range 1 5)` that returns [1, 4, 9, 16, 25] because the `range` type can't handle non-uninform steps
19:40:37 × drumi quits (~drumi@137.220.68.193) (Remote host closed the connection)
19:41:22 ld joins (~ld@137.220.68.193)
19:41:31 <tomsmeding> energizer: with the danger of overfitting to the example: in your example it sounds like you really want to first 1. "weaken" the container to one with more inhabitants (range -> list), then 2. do a normal fmap
19:42:02 <geekosaur> stopped being fun for him, I guess
19:42:18 × ld quits (~ld@137.220.68.193) (Remote host closed the connection)
19:43:02 ld joins (~ld@137.220.68.193)
19:43:18 <geekosaur> energizer, note that if the range type has a Foldable instance this would work automatically (since Foldable is basically toList)
19:43:23 <tomsmeding> there is this https://www.microsoft.com/en-us/research/wp-content/uploads/1992/01/student.pdf
19:43:31 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish)
19:43:37 <tomsmeding> right
19:43:39 ski . o O ( `(Foldable f,Unfoldable g) => f a -> g a' )
19:43:47 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
19:43:49 <tomsmeding> :t \f -> fmap f . Data.Foldable.toList
19:43:51 <lambdabot> Foldable t => (a -> b) -> t a -> [b]
19:44:29 × ld quits (~ld@137.220.68.193) (Client Quit)
19:45:16 azr4e1 joins (~azr4e1@137.220.68.193)
19:45:20 target_i joins (~target_i@217.175.14.39)
19:46:08 <energizer> that parses as `(fmap f) . Data.Foldable.toList`, i take it?
19:46:13 <tomsmeding> yes
19:46:17 <tomsmeding> fmap f (toList l)
19:46:35 × azr4e1 quits (~azr4e1@137.220.68.193) (Remote host closed the connection)
19:46:52 JordiGH joins (~jordi@user/jordigh)
19:47:20 azr4e1 joins (~azr4e1@137.220.68.193)
19:51:35 × azr4e1 quits (~azr4e1@137.220.68.193) (Client Quit)
19:52:18 azr4e1 joins (~azr4e1@137.220.68.193)
19:53:14 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
19:54:52 michalz joins (~michalz@185.246.207.221)
19:54:53 Erutuon joins (~Erutuon@user/erutuon)
19:55:23 <monochrom> I would prefer overfitting than overgeneralizing.
19:55:25 yoo joins (~yo0O0o@104.28.226.106)
19:55:36 <monochrom> Ugh English is hard. s/than/to/
19:56:55 <monochrom> In a math channel I saw the ultimate epitome "Hi, how do I solve equations?" (Eventually, we found out that they just needed the likes of 3x+4=1)
19:57:15 <monochrom> I would really rather they just said "3x+4=1" in the first place.
19:58:06 <tomsmeding> well, they probably didn't know there was a world more in the word "equation" then they had seen yet :)
19:58:25 <tomsmeding> *than
20:00:04 <darkling> TBH, I'd probably have started from that point, as most people with more complicated equations to solve probably know enough to ask the more specific question. :)
20:00:19 <monochrom> I can sympathize with that. The corollary is then we answerers never answer the 1st question. We always ask back "what do you really mean? do you have an example?"
20:00:46 <monochrom> And then I would rather provide a solution that overfits that example than rabbit-hole generalize. KISS.
20:00:49 mikoto-chan joins (~mikoto-ch@ip-83-134-169-166.dsl.scarlet.be)
20:00:53 <tomsmeding> is that bad?
20:00:59 <tomsmeding> oh right, you weren't saying it is
20:01:22 <[exa]> there's a very interesting interplay of that rule (very pragmatic!) with "don't ask to ask just ask" (also very pragmatic!)
20:01:29 <tomsmeding> if they were really asking the question in full generality, you'll find out soon enough after asking for an example :p
20:01:55 <monochrom> [exa]: Have you heard my "don't answer to answer, just don't answer"? >:)
20:02:05 monochrom is great at dualities!
20:02:26 tomsmeding is unsure how to apply that one
20:02:31 × billchenchina quits (~billchenc@103.152.35.21) (Remote host closed the connection)
20:03:02 <monochrom> Oh that's easy. If someone asks "hi can I ask a question? ne1 here?", give them absolute silence.
20:03:05 <[exa]> monochrom: lol
20:03:48 tomsmeding needed like 20 seconds to parse 'ne1'
20:04:23 <tomsmeding> my first mental fix was 'en1', but I quickly discarded that as inappropriate
20:04:24 <monochrom> I guess all the kids who once wrote "ne1" are now grown-up and have real lives.
20:04:58 <monochrom> Remember "a/s/l?"? >:)
20:05:12 tomsmeding is probably too young
20:05:38 <monochrom> It meant "hi what's your age? gender? location?"
20:05:39 rscastilho2024 joins (rscastilho@189.61.140.215)
20:05:41 <geekosaur> I'm in a channel where it's still regularly used 🙂
20:05:47 <geekosaur> (ne1, not asl)
20:05:56 ski 's replied "lsr" to that
20:05:57 × rscastilho2024 quits (rscastilho@189.61.140.215) (Remote host closed the connection)
20:06:05 × yoo quits (~yo0O0o@104.28.226.106) (Remote host closed the connection)
20:06:23 <ski> ("arithmetical shift left","logical shift right")
20:06:45 <tomsmeding> I've always seen those as sal and slr though
20:07:03 <ski> 6502
20:07:06 <tomsmeding> not that the acronyms make any sense that way, but who said that ISAs needed to make any sense
20:07:08 <tomsmeding> ah
20:07:39 <mauke> "my other car is a cdr"
20:12:13 mud joins (~mud@user/kadoban)
20:14:23 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds)
20:16:02 yoo joins (~yo0O0o@104.28.194.104)
20:17:46 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
20:20:54 × yoo quits (~yo0O0o@104.28.194.104) (Changing host)
20:20:54 yoo joins (~yo0O0o@user/mobivme)
20:23:15 × michalz quits (~michalz@185.246.207.221) (Quit: ZNC 1.8.2 - https://znc.in)
20:25:57 michalz joins (~michalz@185.246.207.203)
20:28:07 × califax quits (~califax@user/califx) (Remote host closed the connection)
20:29:31 califax joins (~califax@user/califx)
20:29:37 harveypwca joins (~harveypwc@2601:246:c201:d680:59a0:7761:1557:ead5)
20:29:57 × mulk quits (~mulk@p5b112297.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
20:30:11 × mmhat quits (~mmh@p200300f1c740af4dee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.2.1)
20:31:51 mulk joins (~mulk@pd9514242.dip0.t-ipconnect.de)
20:32:14 × sp1ff quits (~user@c-24-21-45-157.hsd1.wa.comcast.net) (Read error: Connection reset by peer)
20:34:24 × yoo quits (~yo0O0o@user/mobivme) (Remote host closed the connection)
20:35:34 <cheater> hello
20:35:46 <cheater> can someone upload some interesting haskell blackboards https://www.reddit.com/r/Blackboards
20:36:07 sp1ff joins (~user@c-24-21-45-157.hsd1.wa.comcast.net)
20:41:59 yoo joins (~yo0O0o@130.105.134.88)
20:42:10 rscastilho2024 joins (rscastilho@189.61.140.215)
20:44:35 × califax quits (~califax@user/califx) (Remote host closed the connection)
20:45:05 × yoo quits (~yo0O0o@130.105.134.88) (Changing host)
20:45:05 yoo joins (~yo0O0o@user/mobivme)
20:46:12 califax joins (~califax@user/califx)
20:46:34 × rscastilho2024 quits (rscastilho@189.61.140.215) (Remote host closed the connection)
20:49:58 × yoo quits (~yo0O0o@user/mobivme) (Quit: ZNC 1.8.2+deb2build5 - https://znc.in)
20:50:34 yoo joins (~yo0O0o@130.105.134.88)
20:50:34 × yoo quits (~yo0O0o@130.105.134.88) (Changing host)
20:50:34 yoo joins (~yo0O0o@user/mobivme)
20:51:27 × gooba quits (~gooba@90-231-13-185-no3430.tbcn.telia.com) (Remote host closed the connection)
20:53:26 × bzm3r quits (~bzm3r@d205-250-253-229.bchsia.telus.net) (Quit: Client closed)
20:53:49 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:55:51 × mikoto-chan quits (~mikoto-ch@ip-83-134-169-166.dsl.scarlet.be) (Ping timeout: 272 seconds)
20:56:43 gooba joins (~gooba@90-231-13-185-no3430.tbcn.telia.com)
21:00:18 × califax quits (~califax@user/califx) (Remote host closed the connection)
21:00:38 califax joins (~califax@user/califx)
21:00:39 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
21:14:17 × RaspbellySwirl quits (~Raspbelly@host-213-235-142-6.ip.topnet.cz) (Ping timeout: 260 seconds)
21:19:50 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
21:20:43 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
21:21:23 × mud quits (~mud@user/kadoban) (Quit: quit)
21:34:15 Achylles joins (~Achylles_@45.182.57.38)
21:34:36 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
21:37:30 azimut joins (~azimut@gateway/tor-sasl/azimut)
21:41:25 × ft quits (~ft@p508dbdf9.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
21:43:13 ft joins (~ft@p508db2e6.dip0.t-ipconnect.de)
21:54:53 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
21:55:44 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:59:55 × Achylles quits (~Achylles_@45.182.57.38) (Quit: Leaving)
22:00:30 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
22:08:13 jmdaemon joins (~jmdaemon@user/jmdaemon)
22:10:33 Sgeo joins (~Sgeo@user/sgeo)
22:13:22 × CrunchyFlakes_ quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Quit: ZNC 1.8.2 - https://znc.in)
22:19:17 <energizer> what are some Functors that arent Foldable
22:22:28 <dsal> IO
22:23:00 × alexherbo2 quits (~alexherbo@2a02-8440-3141-cee7-04bb-1e17-4e40-aeda.rev.sfr.net) (Ping timeout: 250 seconds)
22:23:26 <ski> `(rho ->)',`Cont o',`Coyoneda f',`Codensity f'
22:24:12 <energizer> anything more accessible ski
22:24:25 <int-e> (r ->) is very accessible?
22:25:29 × michalz quits (~michalz@185.246.207.203) (Quit: ZNC 1.8.2 - https://znc.in)
22:26:42 <c_wraith> three of those are essentially the same thing - the type variable only appears in the result of a function stored in the data type
22:27:14 <c_wraith> Coyoneda, on the other hand, is complicated existential nonsense :)
22:27:38 <c_wraith> But that also brings up... State
22:27:49 <c_wraith> And of course, Reader r is the same as (r ->)
22:29:06 <int-e> c_wraith: (a -> r) -> r <-- I wouldn't say that `a` appears in the result here :P
22:29:14 <int-e> (which is Cont r)
22:29:32 <c_wraith> eh. it's positive, but sure.
22:29:41 <ncf> Coyoneda f is Foldable iff f is, innit
22:31:08 <ncf> also this is probably silly but what's wrong with Foldable (Cont o) where toList k = k (:[])
22:32:05 <ncf> what are the Foldable laws again
22:32:13 <int-e> ncf: it doesn't type-check
22:32:26 <int-e> (you don't get to pick o)
22:32:27 <ski> hm, i suppose that works, for `Coyoneda f'
22:32:39 <ncf> oh right
22:32:49 <ncf> what's the version where o is universal called
22:33:32 <int-e> I'm not sure, would that be Codensity Id?
22:33:36 <ncf> ye
22:33:52 <int-e> s/Id/Identity/
22:35:01 <c_wraith> Honestly, I think Reader and State are the best "simple" examples
22:35:17 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:35:25 <ncf> or Yoneda Identity
22:35:41 <ski> something like `Finite rho => Foldable (rho ->)' works, i suppose
22:39:10 <ncf> i guess if Foldable doesn't have any laws then toList _ = [] always works...
22:40:07 <int-e> > length (1,2,3)
22:40:09 <lambdabot> error:
22:40:09 <lambdabot> • No instance for (Foldable ((,,) Integer Integer))
22:40:09 <lambdabot> arising from a use of ‘length’
22:40:19 <int-e> ah.
22:40:22 <int-e> > length (1,2)
22:40:23 <lambdabot> 1
22:40:52 <int-e> I forgot that that particular "madness" is limited.
22:41:56 <ncf> i don't know why people think this is madness. surely you don't expect length ("a", 1) to be 2 if it is to work on a uniform container
22:43:07 <ncf> python brain damage i suppose
22:43:30 <int-e> ncf: I'd still rather have a type error.
22:44:22 <ncf> why?
22:44:42 <geekosaur> because it's pretty much never what I intend
22:44:52 <int-e> Because while I understand how the length becomes 1, I see a pair as having length 2.
22:45:04 <int-e> Or no length at all.
22:45:48 <ncf> so should (e,) just not be Foldable? that's silly
22:47:22 <geekosaur> I would be happier if it weren't, because from a practical as opposed to theoretical POV it's almost always a mistake
22:47:23 <int-e> Well I don't have a use for that instance and it confuses me. YMMV.
22:48:33 <geekosaur> if I want it for some reason I could import it, as with Text.Show.Functions etc.
22:49:07 <int-e> (IIRC people find it useful in the context of lens, but I forgot why, or why they have to use (,) instead of a custom pair type)
22:49:35 <int-e> Anyway. None of this will remove the existing instance... it's just an opinion.
22:51:09 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:52:29 × target_i quits (~target_i@217.175.14.39) (Quit: leaving)
22:52:33 <c_wraith> But I want to be able to traverse over a tuple. That's almost never a bug.
22:53:45 <c_wraith> there's a tension there with no good resolution. Traversable is sufficient to implement Foldable, but it sometimes makes more sense than Foldable
22:56:11 <ncf> no it doesn't
22:57:27 <monochrom> I like the opt-in import-if-you-want idea.
22:57:49 × ph88 quits (~ph88@2001:1c05:2427:8300:6f40:b726:5a18:8483) (Quit: Leaving)
23:10:05 <Axman6> 3/exit
23:10:15 <Axman6> oops... goodbye!
23:10:19 × Axman6 quits (~Axman6@user/axman6) (Remote host closed the connection)
23:24:31 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 268 seconds)
23:26:29 Axman6 joins (~Axman6@user/axman6)
23:27:48 × azr4e1 quits (~azr4e1@137.220.68.193) (Remote host closed the connection)
23:33:30 <energizer> why does length (1,2) give 1?
23:34:55 <c_wraith> Types
23:35:02 <c_wraith> :t length
23:35:03 <lambdabot> Foldable t => t a -> Int
23:35:34 <energizer> so we have a Foldable and length returns an Int. so far so good
23:35:44 <energizer> why is that Int 1
23:35:54 <c_wraith> If you match that `t a` against `(,) b c` you get (t ~ ((,) b) and (a ~ c)
23:36:15 <c_wraith> How many values of type c are there in a (b, c) value?
23:38:14 <c_wraith> err, (t ~ ((,) b)) if I count my closing parens properly
23:40:06 <energizer> oh that's pretty strange
23:40:13 <c_wraith> length in terms of foldable gives the same result as (length . toList) does
23:40:40 <c_wraith> > toList ("foo", False)
23:40:41 <lambdabot> [False]
23:41:08 <energizer> yeah that's just an unusual definition of ,
23:41:59 <c_wraith> It's more or less what you have to end up with if you follow the types and keep things as simple as you can.
23:42:27 × harveypwca quits (~harveypwc@2601:246:c201:d680:59a0:7761:1557:ead5) (Quit: Leaving)
23:45:39 × tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in)
23:46:23 <energizer> > foldr1 (+) (1,2)
23:46:24 <lambdabot> 2
23:48:22 <probie> Is there a law for `Foldable` involving `length`?
23:48:45 × infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 272 seconds)
23:49:19 × acidjnk_new quits (~acidjnk@p200300d6e737e7742d33f4d70f70ba9d.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
23:49:58 <probie> `foldl' (+) 0 (1,2)` is necessarily 1, but given that a `Foldable` can define its own length, what's stopping it from being 2?
23:50:22 <yushyin> "The length method must agree with a foldMap mapping each element to Sum 1" -- https://hackage.haskell.org/package/base-4.19.0.0/docs/Data-Foldable.html#laws
23:50:28 <probie> sadness
23:52:19 <dsal> > foldr1 (+) ('a', 1)
23:52:21 <lambdabot> 1
23:53:03 <dsal> There's not much else that could do other than refuse to compile which would be kind.
23:53:07 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
23:55:42 <[Leary]> Apart from one optional law relating to Functor, the Foldable laws seem to just be coherence conditions ensuring that the secondary methods have the expected semantics relative to `foldMap`; the actual core of Foldable is virtually unconstrained. It would be completely lawful to write `instance Foldable ((,) a) where foldMap f (_, x) = f x <> f x` and obtain `length (1, 2) = 2`.
23:55:47 × ell15 quits (~ellie@user/ellie) (Quit: Leaving)
23:56:53 <c_wraith> Yes, but then that instance would not be consistent with a lawful Traversable instance
23:56:59 <c_wraith> which does in fact have more laws
23:57:20 <c_wraith> and it's sort of expected that if you have a Traversable instance, your Foldable instance is consistent with it
23:58:19 <monochrom> Javascript insists that sum ("1", 1) = 2 >:)
23:58:27 <ncf> c_wraith: oh i guess that's true
23:59:58 <c_wraith> I'm really not sure Traversable should have a Foldable requirement. There are a lot of cases where I want traverse or sequenceA where I think the consistent Foldable instance is sort of silly

All times are in UTC on 2024-02-10.