2023/12/12

2023-12-12 00:04:27 +0100not_reserved(~not_reser@185.202.220.251)
2023-12-12 00:11:58 +0100idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1)
2023-12-12 00:12:31 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2023-12-12 00:13:44 +0100acidjnk_new(~acidjnk@p200300d6e72b9326b4dc018a2c6658c2.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2023-12-12 00:23:17 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2023-12-12 00:26:40 +0100Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
2023-12-12 00:29:47 +0100jargon(~jargon@32.sub-174-238-226.myvzw.com) (Read error: Connection reset by peer)
2023-12-12 00:32:20 +0100Joao003_(~Joao003@190.108.99.230)
2023-12-12 00:35:23 +0100Joao003(~Joao003@190.108.99.207) (Ping timeout: 252 seconds)
2023-12-12 00:35:35 +0100emmanuelux(~emmanuelu@user/emmanuelux)
2023-12-12 00:35:35 +0100emmanuelux(~emmanuelu@user/emmanuelux) (Client Quit)
2023-12-12 00:41:58 +0100Joao003_(~Joao003@190.108.99.230) (Quit: Bye!)
2023-12-12 00:42:16 +0100Joao003(~Joao003@190.108.99.230)
2023-12-12 00:44:08 +0100jargon(~jargon@32.sub-174-238-226.myvzw.com)
2023-12-12 00:47:06 +0100 <monochrom> In general, (->)r is very a very underrated functor in programming. It is behind "representable functors" in category theory, and there is a little piece of theory that actually helps a lot with programming, it keeps showing up if you know how to recognize it.
2023-12-12 00:47:53 +0100 <monochrom> s/behind/under the topic of/
2023-12-12 00:48:46 +0100 <ncf> whenever you need a lemma...
2023-12-12 00:48:57 +0100 <monochrom> Yeah, that. :)
2023-12-12 00:51:15 +0100 <monochrom> So my recent discovery is from learning more about algebraic effects (especially why it's "algebraic"). (And I was interested because Plotkin came to U of Toronto to give a talk on monads and algebraic effects.) (The talk was very dense, but it just means now I really have to read the papers.)
2023-12-12 00:52:02 +0100 <Joao003> monochrom: I mainly use (->) r as a functor in situations involving (>>=) or liftA2 (again, I mainly code pointlessly)
2023-12-12 00:52:42 +0100 <monochrom> The talk and the papers mentioned: for example, if your algebraic effect goes like "choose :: (M a, M a) -> M a", then the "generic" version goes like "() -> M Bool".
2023-12-12 00:53:16 +0100 <monochrom> So I wondered: How is "generic" defined to give that conclusion?
2023-12-12 00:54:01 +0100 <monochrom> After a while, I guessed "Oh! Is it because (X, X) can be represented by Bool -> X?"
2023-12-12 00:54:38 +0100 <monochrom> So I checked the papers and it is like "Theorem: ... Yoneda embedding ..." OK so YES I guessed right!
2023-12-12 00:54:53 +0100 <ncf> should be (a, a) -> M a, probably
2023-12-12 00:55:47 +0100 <ncf> (Bool -> M a) -> M a would be Codensity M Bool
2023-12-12 00:55:58 +0100 <monochrom> Alright here is why it's (M a, M a) -> M a. If you write the free-monad version, you write "data M a = U a | G (M a) (M a)". So G :: M a -> M a -> M a.
2023-12-12 00:56:38 +0100 <monochrom> Err I should have s/G/C/ but meh.
2023-12-12 00:57:57 +0100 <monochrom> And then the generic version will be the actual interface you provide to end users, you provide "c :: MonadChoose m => m Bool"
2023-12-12 01:04:01 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-12 01:06:04 +0100mosul(~mosul@user/mosul) (Quit: leaving)
2023-12-12 01:13:18 +0100mosul(mosul@user/mosul)
2023-12-12 01:15:07 +0100johnw_johnw
2023-12-12 01:16:12 +0100RedFlamingos(~RedFlamin@user/RedFlamingos)
2023-12-12 01:27:27 +0100 <monochrom> Here may be a clearer example. You have a correspondence between "data Foo a = Unit a | Foo Req (Rsp -> Foo a)" (so Foo :: (Rsp -> Foo a) -> (Req -> Foo a)) and "class MonadFoo f where foo :: Req -> f Rsp".
2023-12-12 01:35:45 +0100 <monochrom> Joao003: You may like: https://link.springer.com/chapter/10.1007/978-3-662-54434-1_21 "APLicative Programming with Naperian Functors" (it explains APL by (->)r and Traversable). It also has a PDF version.
2023-12-12 01:37:03 +0100 <Joao003> i was just contemplating the usefulness of (->)r as a monad
2023-12-12 01:37:15 +0100juri__(~juri@79.140.117.100)
2023-12-12 01:39:10 +0100 <monochrom> Well yeah, APL is the epitome of pointfree programming, so it is quite deep that APL can be explained by (->)r and a Traversable assumption. That will cover your pointfree interest for a long way.
2023-12-12 01:40:18 +0100 <Joao003> (->) r is the function type, right?
2023-12-12 01:40:30 +0100 <monochrom> Yes.
2023-12-12 01:40:41 +0100 <glguy> If you're in the market for a current language in this space I came upon someone solving AoC in Uiua https://aoc2023.jonathanperret.net/
2023-12-12 01:40:50 +0100juri_(~juri@79.140.117.38) (Ping timeout: 268 seconds)
2023-12-12 01:42:14 +0100 <monochrom> Ugh that's Egyptian :D
2023-12-12 01:43:05 +0100 <monochrom> One might say: Ra himself writes like this for functional programming :)
2023-12-12 01:43:49 +0100mud(~mud@user/kadoban)
2023-12-12 01:44:28 +0100 <Joao003> CURSE OF RA *hieroglyph spam*
2023-12-12 01:47:07 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2023-12-12 01:55:12 +0100alexherbo2(~alexherbo@2a02-8440-3341-aec3-39e5-e6a4-25fc-cb4b.rev.sfr.net) (Remote host closed the connection)
2023-12-12 01:56:59 +0100alexherbo2(~alexherbo@2a02-8440-3341-aec3-bd61-c6f5-4a7d-43f0.rev.sfr.net)
2023-12-12 02:01:11 +0100gmg(~user@user/gehmehgeh) (Quit: Leaving)
2023-12-12 02:05:29 +0100mud(~mud@user/kadoban) (Quit: quit)
2023-12-12 02:08:36 +0100emmanuelux(~emmanuelu@user/emmanuelux)
2023-12-12 02:16:06 +0100not_reserved(~not_reser@185.202.220.251) (Quit: Client closed)
2023-12-12 02:19:35 +0100emmanuelux_(~emmanuelu@user/emmanuelux)
2023-12-12 02:21:14 +0100emmanuelux(~emmanuelu@user/emmanuelux) (Ping timeout: 256 seconds)
2023-12-12 02:30:22 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
2023-12-12 02:36:35 +0100leungbk(~user@2603-8000-1201-2dd2-4813-9b76-6ca8-e97f.res6.spectrum.com)
2023-12-12 02:37:46 +0100alexherbo2(~alexherbo@2a02-8440-3341-aec3-bd61-c6f5-4a7d-43f0.rev.sfr.net) (Remote host closed the connection)
2023-12-12 02:42:12 +0100machinedgod(~machinedg@93-136-135-211.adsl.net.t-com.hr) (Ping timeout: 256 seconds)
2023-12-12 02:47:13 +0100trev(~trev@user/trev)
2023-12-12 02:51:49 +0100trev(~trev@user/trev) (Client Quit)
2023-12-12 02:52:04 +0100xff0x(~xff0x@ai085147.d.east.v6connect.net) (Ping timeout: 255 seconds)
2023-12-12 02:55:24 +0100leungbk(~user@2603-8000-1201-2dd2-4813-9b76-6ca8-e97f.res6.spectrum.com) (Quit: ERC 5.6-git (IRC client for GNU Emacs 30.0.50))
2023-12-12 02:55:48 +0100sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 256 seconds)
2023-12-12 03:00:21 +0100Joao003(~Joao003@190.108.99.230) (Quit: Bye!)
2023-12-12 03:03:02 +0100not_reserved(~not_reser@185.202.220.251)
2023-12-12 03:12:23 +0100tornato(uid197568@id-197568.tinside.irccloud.com)
2023-12-12 03:21:43 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
2023-12-12 03:22:20 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-12-12 03:23:23 +0100jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 264 seconds)
2023-12-12 03:26:37 +0100 <EvanR> monochrom, (->) r, aka the dependency injection functor!
2023-12-12 03:27:44 +0100leungbk(~user@2603-8000-1201-2dd2-4813-9b76-6ca8-e97f.res6.spectrum.com)
2023-12-12 03:27:47 +0100jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
2023-12-12 03:33:15 +0100not_reserved(~not_reser@185.202.220.251) (Quit: Client closed)
2023-12-12 03:33:56 +0100not_reserved(~not_reser@185.202.220.251)
2023-12-12 03:37:21 +0100fryguybob(~fryguybob@cpe-24-94-50-22.stny.res.rr.com) (Quit: leaving)
2023-12-12 03:39:34 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2023-12-12 03:40:58 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-12-12 03:41:29 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2023-12-12 03:41:39 +0100leungbk(~user@2603-8000-1201-2dd2-4813-9b76-6ca8-e97f.res6.spectrum.com) (Quit: ERC 5.6-git (IRC client for GNU Emacs 30.0.50))
2023-12-12 03:41:41 +0100 <brettgilio> :)
2023-12-12 03:42:01 +0100 <brettgilio> test
2023-12-12 03:42:39 +0100 <brettgilio> test
2023-12-12 03:42:58 +0100 <geekosaur> hello
2023-12-12 03:43:01 +0100 <brettgilio> sorry
2023-12-12 03:43:07 +0100 <brettgilio> my irssi client frame was being unusual
2023-12-12 03:43:39 +0100leungbk(~user@2603-8000-1201-2dd2-4813-9b76-6ca8-e97f.res6.spectrum.com)
2023-12-12 03:44:12 +0100leungbk(~user@2603-8000-1201-2dd2-4813-9b76-6ca8-e97f.res6.spectrum.com) (Remote host closed the connection)
2023-12-12 03:45:36 +0100tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Quit: Leaving)
2023-12-12 03:45:55 +0100 <monochrom> EvanR: Haha that's a great name
2023-12-12 03:46:37 +0100leungbk(~user@2603-8000-1201-2dd2-4813-9b76-6ca8-e97f.res6.spectrum.com)
2023-12-12 03:46:47 +0100trev(~trev@user/trev)
2023-12-12 03:47:43 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
2023-12-12 03:48:07 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2023-12-12 03:50:37 +0100 <albet70> rrtype :: !TYPE what this ! mean?
2023-12-12 03:52:47 +0100 <monochrom> Strict fields in a record. https://www.vex.net/~trebla/haskell/strict-field.xhtml
2023-12-12 03:53:12 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net)
2023-12-12 03:56:59 +0100tabemann(~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
2023-12-12 03:57:36 +0100 <albet70> rrtype :: ResourceRecord -> !TYPE from Network.DNS.Types, how I can construct a TYPE? since 'pattern' isn't defined
2023-12-12 03:58:00 +0100 <monochrom> Oh that, then sorry, I don't know.
2023-12-12 03:58:47 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2023-12-12 03:59:43 +0100 <int-e> EvanR: would that make Const the dependency rejection functor?
2023-12-12 04:00:08 +0100 <geekosaur> albet70, "pattern" there means it's a pattern synonym
2023-12-12 04:01:26 +0100 <albet70> this one https://hackage.haskell.org/package/dns-4.2.0/docs/Network-DNS-Types.html#t:TYPE
2023-12-12 04:01:28 +0100 <geekosaur> so there are pattern synonyms for the most common RR types, and toTYPE can be used to construct others given the RR number
2023-12-12 04:01:30 +0100 <geekosaur> yes
2023-12-12 04:02:45 +0100 <albet70> geekosaur , I want to use ‘rrtype’ to get the record type, like CNAME, A, AAAA, how I can filter AAAA?
2023-12-12 04:04:13 +0100 <geekosaur> presumably a field pattern match (foo ResourceRecord{rrtype = AAAA} = …)
2023-12-12 04:05:27 +0100 <albet70> AAAA is normal vaule in haskell?
2023-12-12 04:05:41 +0100 <geekosaur> the patterns act as values, so you can refer to AAAA in your code instead of having to use 28
2023-12-12 04:05:50 +0100 <geekosaur> it's a pattern synonym
2023-12-12 04:06:05 +0100 <geekosaur> so it behaves as a normal value
2023-12-12 04:07:09 +0100 <geekosaur> (bidirectional pattern synonym)
2023-12-12 04:08:21 +0100 <monochrom> You read find pattern synonyms in the GHC User's Guide. It has examples.
2023-12-12 04:08:32 +0100 <geekosaur> https://downloads.haskell.org/ghc/9.6.1/docs/users_guide/exts/pattern_synonyms.html
2023-12-12 04:09:40 +0100dwt__(~dwt_@2601:2c6:8381:e5c:186c:2b2e:4114:8cc0)
2023-12-12 04:11:11 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 245 seconds)
2023-12-12 04:12:37 +0100dwt_(~dwt_@2601:2c6:8381:e5c:c917:e876:d8ba:f05f) (Ping timeout: 246 seconds)
2023-12-12 04:13:08 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2023-12-12 04:24:11 +0100 <albet70> difference with ‘type’?
2023-12-12 04:24:26 +0100Sgeo(~Sgeo@user/sgeo)
2023-12-12 04:28:38 +0100 <albet70> sorry, I still don’t get it, why it doesn’t use a number? like 1 for CNAME, 2 for A, 3 for AAAA etc
2023-12-12 04:29:14 +0100 <albet70> so I know it’s a Int, so I can use == to check it’s a A or AAAA
2023-12-12 04:29:23 +0100td_(~td@i5387090E.versanet.de) (Ping timeout: 264 seconds)
2023-12-12 04:30:42 +0100td_(~td@i53870905.versanet.de)
2023-12-12 04:35:55 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2023-12-12 04:36:02 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2023-12-12 04:36:48 +0100 <geekosaur> it's not a number, it's a `data` with a smart constructor (toTYPE) for numbers and pattern synonyms for the most common rrtypes
2023-12-12 04:37:12 +0100edr(~edr@user/edr) (Quit: Leaving)
2023-12-12 04:38:21 +0100 <geekosaur> (in fact the haddock says it's a GADT: "data TYPE where")
2023-12-12 04:38:33 +0100 <geekosaur> sadly it doesn't have links to the source
2023-12-12 04:38:55 +0100 <albet70> yes,no links on the hackage
2023-12-12 04:39:15 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:444f:4a45:c596:a200) (Remote host closed the connection)
2023-12-12 04:39:30 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-12-12 04:40:01 +0100 <geekosaur> and the reason it doesn't simply use a number is you can't have uppercase variables for the common ones like A
2023-12-12 04:40:18 +0100 <geekosaur> it'd have to be something like `rr_A = 1`
2023-12-12 04:41:22 +0100 <geekosaur> pattern synonyms let you make custom "constructors"
2023-12-12 04:41:46 +0100 <EvanR> pattern matching is cooler than if number ==... else if... else if ...
2023-12-12 04:41:50 +0100terrorjack(~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
2023-12-12 04:42:16 +0100 <geekosaur> and who wants to use 28 instead of AAAA?
2023-12-12 04:42:47 +0100 <EvanR> even C avoids it by using defined constants and switch
2023-12-12 04:43:04 +0100 <geekosaur> or enums
2023-12-12 04:43:38 +0100 <geekosaur> but with C enums you can specify values and skip them when needed; Haskell Enum isn't quite that flexible
2023-12-12 04:44:38 +0100terrorjack(~terrorjac@2a01:4f8:c17:87f8::)
2023-12-12 04:44:40 +0100 <geekosaur> also you can add your own patterns (note "Bundled Patterns") for rrtypes they don't provide; you can't extend either a C or Haskell enum that way
2023-12-12 04:45:36 +0100 <EvanR> you can customize the numeric mapping with Enum but it's a pain in the ass
2023-12-12 04:46:01 +0100 <albet70> can I think “pattern synonym “ as “data alias”?
2023-12-12 04:46:40 +0100 <geekosaur> sort of
2023-12-12 04:46:46 +0100 <c_wraith> they can be, but they can be a lot more sophisticated.
2023-12-12 04:47:20 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2023-12-12 04:52:18 +0100rosco(~rosco@175.136.152.56)
2023-12-12 04:57:28 +0100 <albet70> pattern synonym is like C’s macro?
2023-12-12 04:58:22 +0100 <geekosaur> mm, I wouldn't really say that, since (a) it is typesafe (b) it can do more than a macro can
2023-12-12 04:58:31 +0100 <geekosaur> not that its power is really being used here
2023-12-12 04:59:09 +0100 <albet70> geekosaur , do more than lisp’s macro can?
2023-12-12 04:59:17 +0100 <c_wraith> Pattern synonyms can be used *as patterns*
2023-12-12 04:59:51 +0100 <geekosaur> but they can be used to execute arbitrary code (with type safety)
2023-12-12 05:00:03 +0100 <c_wraith> They aren't, as they don't correspond to constructors for the type
2023-12-12 05:00:14 +0100 <int-e> Lisp macros are an entirely different beast. Template Haskell ventures into that territory.
2023-12-12 05:00:27 +0100 <c_wraith> But you can use them to construct values of the type or to pattern-match and extract arguments from a value
2023-12-12 05:00:33 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-12-12 05:00:33 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-12-12 05:00:33 +0100finn_elijaFinnElija
2023-12-12 05:01:04 +0100 <c_wraith> I have made some very silly pattern synonyms just to stretch the system out.
2023-12-12 05:03:48 +0100 <c_wraith> https://paste.tomsmeding.com/D9pR2DBP Very silly. Don't do this.
2023-12-12 05:03:55 +0100cods(~fred@tuxee.net) (Ping timeout: 255 seconds)
2023-12-12 05:04:38 +0100analoq(~yashi@user/dies) (Ping timeout: 268 seconds)
2023-12-12 05:04:54 +0100 <c_wraith> also, this TypeAbstractions thing is new to me...
2023-12-12 05:08:26 +0100 <c_wraith> Ok, I read the docs and that's great, but... couldn't we just shoehorn a few more things into ScopedTypeVariables instead?
2023-12-12 05:18:43 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
2023-12-12 05:18:52 +0100 <albet70> back to the question, how I can filter AAAA in TYPE?
2023-12-12 05:19:24 +0100euleritian(~euleritia@dynamic-046-114-202-232.46.114.pool.telefonica.de)
2023-12-12 05:20:23 +0100 <albet70> data TYPE where pattern A :: TYPE, there’s no pattern A =?
2023-12-12 05:21:03 +0100cods(~fred@tuxee.net)
2023-12-12 05:21:05 +0100analoq(~yashi@user/dies)
2023-12-12 05:26:42 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-12-12 05:36:06 +0100SanchayanMaity(sid478177@id-478177.hampstead.irccloud.com) ()
2023-12-12 05:36:23 +0100SanchayanMaity(sid478177@id-478177.hampstead.irccloud.com)
2023-12-12 05:39:14 +0100aforemny_(~aforemny@2001:9e8:6cdd:be00:6f70:eeee:fde4:e2c7) (Ping timeout: 260 seconds)
2023-12-12 05:39:14 +0100aforemny(~aforemny@2001:9e8:6cc3:3a00:a23:6c46:4b53:30b)
2023-12-12 05:39:25 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds)
2023-12-12 05:41:57 +0100thegeekinside(~thegeekin@189.217.90.224) (Read error: Connection reset by peer)
2023-12-12 05:47:37 +0100trev(~trev@user/trev) (Quit: trev)
2023-12-12 05:47:57 +0100trev(~trev@user/trev)
2023-12-12 05:52:51 +0100euleritian(~euleritia@dynamic-046-114-202-232.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-12-12 05:53:09 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-12 06:00:10 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-12-12 06:00:52 +0100johnw(~johnw@69.62.242.138) (Quit: ZNC - http://znc.in)
2023-12-12 06:02:09 +0100tornato(uid197568@id-197568.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2023-12-12 06:02:48 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-12-12 06:03:53 +0100[_](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 256 seconds)
2023-12-12 06:06:36 +0100tri_(~tri@ool-18bc2e74.dyn.optonline.net)
2023-12-12 06:09:32 +0100 <tri_> testing from limechat
2023-12-12 06:10:49 +0100thegeekinside(~thegeekin@189.217.90.224)
2023-12-12 06:10:53 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2023-12-12 06:11:23 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-12-12 06:13:29 +0100phma(~phma@host-67-44-208-181.hnremote.net) (Read error: Connection reset by peer)
2023-12-12 06:14:31 +0100phma(~phma@2001:5b0:215d:e438:647:90bc:42bc:c98)
2023-12-12 06:19:05 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2023-12-12 06:32:13 +0100arkoinad(~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2023-12-12 06:40:11 +0100rosco(~rosco@175.136.152.56) (Quit: Lost terminal)
2023-12-12 06:43:38 +0100thegeekinside(~thegeekin@189.217.90.224) (Remote host closed the connection)
2023-12-12 06:44:12 +0100alp_(~alp@2001:861:e3d6:8f80:873a:e9b8:5ec5:8a14)
2023-12-12 06:47:01 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds)
2023-12-12 06:47:44 +0100mikess(~sam@user/mikess) (Quit: leaving)
2023-12-12 06:47:58 +0100euleritian(~euleritia@dynamic-089-015-236-089.89.15.236.pool.telefonica.de)
2023-12-12 06:48:01 +0100mikess(~sam@user/mikess)
2023-12-12 06:50:24 +0100igemnace(~ian@user/igemnace) (Read error: Connection reset by peer)
2023-12-12 06:54:20 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-12-12 06:59:13 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2023-12-12 06:59:13 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2023-12-12 06:59:13 +0100chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2023-12-12 06:59:13 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2023-12-12 06:59:13 +0100pastly(~pastly@gateway/tor-sasl/pastly) (Remote host closed the connection)
2023-12-12 06:59:13 +0100califax(~califax@user/califx) (Remote host closed the connection)
2023-12-12 06:59:38 +0100pastly(~pastly@gateway/tor-sasl/pastly)
2023-12-12 06:59:40 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2023-12-12 06:59:41 +0100califax(~califax@user/califx)
2023-12-12 06:59:49 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2023-12-12 06:59:52 +0100chiselfuse(~chiselfus@user/chiselfuse)
2023-12-12 07:00:16 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-12-12 07:01:15 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2023-12-12 07:01:40 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2023-12-12 07:02:04 +0100td_(~td@i53870905.versanet.de) (Ping timeout: 276 seconds)
2023-12-12 07:03:03 +0100echoreply(~echoreply@45.32.163.16) (Quit: WeeChat 2.8)
2023-12-12 07:03:20 +0100td_(~td@i53870924.versanet.de)
2023-12-12 07:03:51 +0100zetef(~quassel@95.77.17.251)
2023-12-12 07:03:55 +0100zetef(~quassel@95.77.17.251) (Remote host closed the connection)
2023-12-12 07:03:56 +0100echoreply(~echoreply@45.32.163.16)
2023-12-12 07:04:36 +0100zetef(~quassel@95.77.17.251)
2023-12-12 07:05:31 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2023-12-12 07:05:36 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-12-12 07:07:03 +0100igemnace(~ian@user/igemnace)
2023-12-12 07:08:00 +0100 <iqubic> tri_: I can see that message.
2023-12-12 07:09:52 +0100rosco(~rosco@175.136.152.56)
2023-12-12 07:11:03 +0100johnw(~johnw@69.62.242.138)
2023-12-12 07:16:33 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 256 seconds)
2023-12-12 07:17:44 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2023-12-12 07:34:34 +0100bilegeek(~bilegeek@2600:1008:b08b:7355:7869:26c7:cf9e:bac4) (Quit: Leaving)
2023-12-12 07:36:32 +0100Maeda(~Maeda@91-161-10-149.subs.proxad.net)
2023-12-12 07:36:47 +0100chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2023-12-12 07:37:20 +0100chiselfuse(~chiselfus@user/chiselfuse)
2023-12-12 07:38:44 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
2023-12-12 07:44:59 +0100araujo(~araujo@45.146.54.110)
2023-12-12 07:48:47 +0100iqubic(~avi@2601:602:9502:c70:5de0:aac0:2bec:3df) (Read error: Connection reset by peer)
2023-12-12 07:54:58 +0100arkoinad(~abhinav@c-67-169-139-16.hsd1.ca.comcast.net)
2023-12-12 07:56:03 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net)
2023-12-12 07:56:40 +0100analoq(~yashi@user/dies) (Ping timeout: 276 seconds)
2023-12-12 07:57:48 +0100analoq(~yashi@user/dies)
2023-12-12 07:59:37 +0100tri_(~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
2023-12-12 08:00:47 +0100tri_(~tri@ool-18bc2e74.dyn.optonline.net)
2023-12-12 08:01:06 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2023-12-12 08:02:07 +0100tri_(~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
2023-12-12 08:02:19 +0100tri_(~tri@ool-18bc2e74.dyn.optonline.net)
2023-12-12 08:03:16 +0100iqubic(~avi@2601:602:9502:c70:589:c039:227d:3881)
2023-12-12 08:04:31 +0100bliminse(~bliminse@user/bliminse) (Quit: leaving)
2023-12-12 08:15:30 +0100tri_(~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
2023-12-12 08:16:14 +0100 <ski> @remember EvanR <EvanR> (->) r, aka the dependency injection functor! <int-e> EvanR: would that make Const the dependency rejection functor?
2023-12-12 08:16:14 +0100 <lambdabot> Nice!
2023-12-12 08:16:22 +0100 <ski> c_wraith : hah !
2023-12-12 08:16:24 +0100 <ski> c_wraith : "couldn't we just shoehorn a few more things into ScopedTypeVariables instead?" -- how ?
2023-12-12 08:16:51 +0100 <ski> albet70 : filter how ? from a list of `TYPE's ?
2023-12-12 08:17:23 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2023-12-12 08:18:21 +0100bliminse(~bliminse@user/bliminse)
2023-12-12 08:20:04 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 276 seconds)
2023-12-12 08:21:15 +0100skyres_(~skyres@176.254.244.83) (Ping timeout: 252 seconds)
2023-12-12 08:25:22 +0100farn_(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Ping timeout: 268 seconds)
2023-12-12 08:34:47 +0100zetef(~quassel@95.77.17.251) (Ping timeout: 264 seconds)
2023-12-12 08:36:04 +0100hsw_(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net)
2023-12-12 08:36:27 +0100Sgeo_(~Sgeo@user/sgeo)
2023-12-12 08:37:44 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-12-12 08:37:45 +0100hsw(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Read error: Connection reset by peer)
2023-12-12 08:38:04 +0100farn_(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
2023-12-12 08:42:05 +0100arkoinad(~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2023-12-12 08:43:40 +0100yeiskomp(~yeiskomp@176.254.244.83)
2023-12-12 08:47:15 +0100acidjnk_new(~acidjnk@p200300d6e72b9347b4dc018a2c6658c2.dip0.t-ipconnect.de)
2023-12-12 08:48:18 +0100euleritian(~euleritia@dynamic-089-015-236-089.89.15.236.pool.telefonica.de) (Read error: Connection reset by peer)
2023-12-12 08:48:36 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-12 08:50:53 +0100akegalj(~akegalj@78-0-45-228.adsl.net.t-com.hr)
2023-12-12 08:51:33 +0100falafel(~falafel@76.red-79-153-68.dynamicip.rima-tde.net)
2023-12-12 08:51:52 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2023-12-12 08:57:07 +0100falafel(~falafel@76.red-79-153-68.dynamicip.rima-tde.net) (Ping timeout: 276 seconds)
2023-12-12 09:01:02 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-12-12 09:04:57 +0100zetef(~quassel@95.77.17.251)
2023-12-12 09:08:04 +0100fendor(~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c)
2023-12-12 09:10:28 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2023-12-12 09:10:44 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan)
2023-12-12 09:20:31 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
2023-12-12 09:22:02 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2023-12-12 09:24:12 +0100zetef_(~quassel@95.77.17.251)
2023-12-12 09:26:23 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2023-12-12 09:26:51 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2023-12-12 09:26:53 +0100zetef(~quassel@95.77.17.251) (Ping timeout: 256 seconds)
2023-12-12 09:30:37 +0100chele(~chele@user/chele)
2023-12-12 09:31:13 +0100Square2(~Square4@user/square) (Ping timeout: 255 seconds)
2023-12-12 09:35:08 +0100danza(~danza@151.43.125.100)
2023-12-12 09:36:10 +0100idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-12-12 09:37:34 +0100mc47(~mc47@xmonad/TheMC47)
2023-12-12 09:41:16 +0100rosco(~rosco@175.136.152.56) (Quit: Lost terminal)
2023-12-12 09:45:24 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2023-12-12 09:49:51 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 268 seconds)
2023-12-12 09:56:34 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-12-12 09:58:42 +0100akegalj(~akegalj@78-0-45-228.adsl.net.t-com.hr) (Ping timeout: 260 seconds)
2023-12-12 10:00:01 +0100danza(~danza@151.43.125.100) (Ping timeout: 268 seconds)
2023-12-12 10:11:52 +0100not_reserved(~not_reser@185.202.220.251) (Quit: Client closed)
2023-12-12 10:12:42 +0100shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 260 seconds)
2023-12-12 10:13:48 +0100econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2023-12-12 10:14:58 +0100dhil(~dhil@2001:8e0:2014:3100:a3e7:9e7e:94ec:9684)
2023-12-12 10:16:44 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2023-12-12 10:19:01 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2023-12-12 10:20:06 +0100Sgeo_(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-12-12 10:20:11 +0100 <albet70> ski , I use fromTYPE turn TYPE into word16 and filter it
2023-12-12 10:21:11 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 245 seconds)
2023-12-12 10:21:18 +0100gehmehgeh(~user@user/gehmehgeh)
2023-12-12 10:22:58 +0100 <ski> filter, how ?
2023-12-12 10:24:14 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-12-12 10:25:05 +0100jargon(~jargon@32.sub-174-238-226.myvzw.com) (Remote host closed the connection)
2023-12-12 10:25:07 +0100 <albet70> let rrtn = fmap (\a -> fromTYPE $ rrtype a) $ answer (_r :: DNSMessage)
2023-12-12 10:25:14 +0100 <albet70> if elem (28 :: Word16) rrtn then
2023-12-12 10:28:06 +0100 <ski> what about AAAA `elem` rrtn if you skip the `fromTYPE' part ?
2023-12-12 10:29:55 +0100 <albet70> AAAA isn't defined? I haven't tried that, but in ghci, AAAA is not defined
2023-12-12 10:33:21 +0100danse-nr3(~danse@an-19-163-233.service.infuturo.it)
2023-12-12 10:33:47 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds)
2023-12-12 10:35:04 +0100CiaoSen(~Jura@2a05:5800:283:9300:ca4b:d6ff:fec1:99da)
2023-12-12 10:35:04 +0100 <albet70> ski , yes, you're right, A can be A elem rrtn
2023-12-12 10:38:03 +0100tzh(~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
2023-12-12 10:38:09 +0100qqq(~qqq@92.43.167.61) (Ping timeout: 256 seconds)
2023-12-12 10:42:06 +0100ft(~ft@p3e9bc784.dip0.t-ipconnect.de) (Quit: leaving)
2023-12-12 10:45:06 +0100coot(~coot@89-69-206-216.dynamic.chello.pl)
2023-12-12 10:47:35 +0100 <ski> albet70 : surround with backticks, to use it as an infix operator
2023-12-12 10:50:34 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:444f:4a45:c596:a200)
2023-12-12 10:50:40 +0100qqq(~qqq@92.43.167.61)
2023-12-12 10:51:05 +0100idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1)
2023-12-12 10:52:03 +0100cfricke(~cfricke@user/cfricke)
2023-12-12 10:55:03 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:444f:4a45:c596:a200) (Ping timeout: 260 seconds)
2023-12-12 11:00:14 +0100phma(~phma@2001:5b0:215d:e438:647:90bc:42bc:c98) (Read error: Connection reset by peer)
2023-12-12 11:01:07 +0100phma(phma@2001:5b0:211c:d228:5342:e754:aa9:bcd5)
2023-12-12 11:01:23 +0100td_(~td@i53870924.versanet.de) (Ping timeout: 256 seconds)
2023-12-12 11:01:27 +0100 <ski> "AAAA isn't defined? I haven't tried that, but in ghci, AAAA is not defined" -- oh, missed this. i guess you didn't import `Network.DNS.Types' in the interactor ?
2023-12-12 11:03:13 +0100califax(~califax@user/califx) (Remote host closed the connection)
2023-12-12 11:03:23 +0100td_(~td@i5387090E.versanet.de)
2023-12-12 11:03:47 +0100alp_(~alp@2001:861:e3d6:8f80:873a:e9b8:5ec5:8a14) (Remote host closed the connection)
2023-12-12 11:04:34 +0100zetef_(~quassel@95.77.17.251) (Ping timeout: 260 seconds)
2023-12-12 11:06:21 +0100alp_(~alp@2001:861:e3d6:8f80:b08a:7a72:bc6f:b2a9)
2023-12-12 11:12:17 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2023-12-12 11:13:55 +0100califax(~califax@user/califx)
2023-12-12 11:14:07 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
2023-12-12 11:19:14 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2023-12-12 11:19:56 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 245 seconds)
2023-12-12 11:20:17 +0100zetef(~quassel@95.77.17.251)
2023-12-12 11:22:11 +0100Lord_of_Life_Lord_of_Life
2023-12-12 11:27:36 +0100califax(~califax@user/califx) (Remote host closed the connection)
2023-12-12 11:33:10 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 255 seconds)
2023-12-12 11:35:16 +0100 <albet70> yes, I didn't
2023-12-12 11:38:31 +0100califax(~califax@user/califx)
2023-12-12 11:40:08 +0100__monty__(~toonn@user/toonn)
2023-12-12 11:40:26 +0100akegalj(~akegalj@89-164-125-9.dsl.iskon.hr)
2023-12-12 11:40:28 +0100 <ski> (you could always reexport that module from your module, i guess)
2023-12-12 11:44:35 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-12-12 11:45:03 +0100califax(~califax@user/califx) (Remote host closed the connection)
2023-12-12 11:45:34 +0100CiaoSen(~Jura@2a05:5800:283:9300:ca4b:d6ff:fec1:99da) (Ping timeout: 260 seconds)
2023-12-12 11:46:11 +0100califax(~califax@user/califx)
2023-12-12 11:47:13 +0100ubert(~Thunderbi@2a02:8109:ab8a:5a00:6831:b374:3227:de58)
2023-12-12 11:51:21 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:444f:4a45:c596:a200)
2023-12-12 11:54:47 +0100califax(~califax@user/califx) (Remote host closed the connection)
2023-12-12 11:55:50 +0100califax(~califax@user/califx)
2023-12-12 11:57:18 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2023-12-12 11:57:35 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net)
2023-12-12 11:58:01 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2023-12-12 12:03:01 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 276 seconds)
2023-12-12 12:05:10 +0100 <ski> @botslack
2023-12-12 12:05:11 +0100 <lambdabot> :)
2023-12-12 12:05:26 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2023-12-12 12:05:38 +0100skilooks at tri
2023-12-12 12:06:12 +0100zetef(~quassel@95.77.17.251) (Ping timeout: 252 seconds)
2023-12-12 12:09:17 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2023-12-12 12:10:03 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 252 seconds)
2023-12-12 12:10:49 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 276 seconds)
2023-12-12 12:18:16 +0100mikess(~sam@user/mikess) (Ping timeout: 245 seconds)
2023-12-12 12:36:30 +0100alp_(~alp@2001:861:e3d6:8f80:b08a:7a72:bc6f:b2a9) (Ping timeout: 260 seconds)
2023-12-12 12:36:31 +0100pastly(~pastly@gateway/tor-sasl/pastly) (Ping timeout: 240 seconds)
2023-12-12 12:37:27 +0100pastly(~pastly@gateway/tor-sasl/pastly)
2023-12-12 12:39:09 +0100mzg(mzg@lazy.unconscious.biz) (Quit: leaving)
2023-12-12 12:41:22 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds)
2023-12-12 12:50:54 +0100dhil(~dhil@2001:8e0:2014:3100:a3e7:9e7e:94ec:9684) (Ping timeout: 260 seconds)
2023-12-12 12:52:14 +0100arahael_(~arahael@103.246.103.99)
2023-12-12 12:52:18 +0100euleritian(~euleritia@dynamic-046-114-192-005.46.114.pool.telefonica.de)
2023-12-12 12:54:01 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2023-12-12 13:01:08 +0100euleritian(~euleritia@dynamic-046-114-192-005.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-12-12 13:01:26 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-12 13:06:43 +0100mzg(mzg@lazy.unconscious.biz)
2023-12-12 13:08:43 +0100Joao003(~Joao003@190.108.99.230)
2023-12-12 13:16:35 +0100danse-nr3(~danse@an-19-163-233.service.infuturo.it) (Read error: Connection reset by peer)
2023-12-12 13:19:53 +0100sawilagar(~sawilagar@user/sawilagar)
2023-12-12 13:21:46 +0100sawilagar(~sawilagar@user/sawilagar) (Read error: Connection reset by peer)
2023-12-12 13:23:02 +0100sawilagar(~sawilagar@user/sawilagar)
2023-12-12 13:25:52 +0100machinedgod(~machinedg@93-138-57-84.adsl.net.t-com.hr)
2023-12-12 13:25:55 +0100sawilagar(~sawilagar@user/sawilagar) (Client Quit)
2023-12-12 13:30:46 +0100arahael_(~arahael@103.246.103.99) (Ping timeout: 245 seconds)
2023-12-12 13:33:02 +0100danse-nr3(~danse@151.57.235.147)
2023-12-12 13:42:54 +0100alp_(~alp@2001:861:e3d6:8f80:5f2a:e7a9:cfa0:1d79)
2023-12-12 13:48:01 +0100CiaoSen(~Jura@2a05:5800:283:9300:ca4b:d6ff:fec1:99da)
2023-12-12 13:48:26 +0100abrantesasf(~abrantesa@177.154.20.2)
2023-12-12 13:49:19 +0100abrantesasf(~abrantesa@177.154.20.2) (Remote host closed the connection)
2023-12-12 13:51:39 +0100abrantesasf(~abrantesa@177.154.20.2)
2023-12-12 13:54:37 +0100idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-12-12 13:56:16 +0100machinedgod(~machinedg@93-138-57-84.adsl.net.t-com.hr) (Ping timeout: 255 seconds)
2023-12-12 13:57:19 +0100trev(~trev@user/trev) (Read error: Connection reset by peer)
2023-12-12 13:57:26 +0100tr_ev(~trev@user/trev)
2023-12-12 14:02:47 +0100tr_evtrev
2023-12-12 14:07:47 +0100pointlessslippe1(~pointless@212.82.82.3) (Ping timeout: 264 seconds)
2023-12-12 14:10:11 +0100 <albet70> ski , I saw that about pattern synonym link, but I still don't get it, what's the benefit?
2023-12-12 14:11:11 +0100 <ski> benefit is that you don't have to remember magic numbers (and you can't use an incorrect one by mistake/intent)
2023-12-12 14:11:46 +0100 <albet70> ski , but that C's macro do the same thing
2023-12-12 14:12:07 +0100edr(~edr@user/edr)
2023-12-12 14:12:28 +0100 <albet70> like #define PI 3.1415
2023-12-12 14:14:03 +0100zetef(~quassel@95.77.17.251)
2023-12-12 14:15:02 +0100 <ski> yes, but that's not an abstract data type
2023-12-12 14:17:31 +0100 <ski> (not even a separate data type at all, as `enum TYPE {A = 1,NS,MD,...};' would be)
2023-12-12 14:18:35 +0100 <albet70> do you have a good example?
2023-12-12 14:18:36 +0100skiidly imagines a pragma for setting individual constructors values for `deriving Enum'
2023-12-12 14:21:15 +0100alexherbo2(~alexherbo@2a02-8440-3240-ce99-dd22-abb7-bd07-cd6f.rev.sfr.net)
2023-12-12 14:21:31 +0100 <ski> well, e.g. <https://en.wikipedia.org/wiki/List_of_DNS_record_types#Obsolete_record_types> says `MD' is obsolete. and <https://hackage.haskell.org/package/dns-4.2.0/docs/Network-DNS-Types.html#t:TYPE> does not list it. so you can't use `3' in your code (for `MD'), because `TYPE' is not a synonym for a numeric type (nor is it an instance of `Num', so no implicit `fromInteger' being used)
2023-12-12 14:25:31 +0100xff0x(~xff0x@ai085147.d.east.v6connect.net)
2023-12-12 14:27:53 +0100 <albet70> ski , data TYPE where pattern A :: TYPE; f :: TYPE -> TYPE f A is ok?
2023-12-12 14:29:00 +0100 <ski> (hm, come to think of it, i guess a numeric literal like `0' acts more or less as if `pattern 0 :: (Num a,Eq a) => a; pattern 0 <- ((fromInteger 0 ==) -> True) where 0 = fromInteger 0' .. except when used as an expression, there's no `Eq a' constraint .. i sometimes would like to be able to specify some extra constraints for the pattern form of a pattern synonym, without having them on the expression form.
2023-12-12 14:29:06 +0100 <ski> probably would be nice to also be able to have some on the expression form that're not in the pattern form)
2023-12-12 14:29:32 +0100 <ski> albet70 : where did this `f' come from ?
2023-12-12 14:29:52 +0100 <ski> is it just any function on `TYPE's ?
2023-12-12 14:30:22 +0100 <ski> if so, then yes (but you'd not write `pattern' there, in a GADT-style (`GADGTSyntax') `data' type definition)
2023-12-12 14:30:51 +0100 <albet70> I like ADT,
2023-12-12 14:31:00 +0100 <albet70> GADT make me confused sometimes
2023-12-12 14:31:07 +0100 <ski> (Algebraic Data Types or Abstract Data Types ?)
2023-12-12 14:31:21 +0100 <albet70> Algebraic Data Types
2023-12-12 14:31:22 +0100 <ski> well, in this case, it's not really using any actual extra GADT powers
2023-12-12 14:31:36 +0100 <albet70> it uses "where"
2023-12-12 14:31:46 +0100 <ski> (well, perhaps the implementation in the library is .. haven't seen the source)
2023-12-12 14:31:57 +0100 <albet70> yes, no source
2023-12-12 14:32:00 +0100 <ski> maybe that's just an artefact of the Haddock
2023-12-12 14:34:35 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2023-12-12 14:37:01 +0100darchitect(~darchitec@2a00:23c6:3584:df01:4cbc:8ff2:73ae:d845) (Ping timeout: 246 seconds)
2023-12-12 14:39:12 +0100darchitect(~darchitec@2a00:23c6:3584:df01:fea4:c282:f8d:5ecc)
2023-12-12 14:40:33 +0100 <albet70> ski , where I can find the data TYPE's source code since it's not on hackage?
2023-12-12 14:40:55 +0100 <albet70> I install that package on cabal, where cabal install it?
2023-12-12 14:41:18 +0100 <ski> <https://hackage.haskell.org/package/dns-4.2.0/dns-4.2.0.tar.gz>, linked from <https://hackage.haskell.org/package/dns>, i suppose
2023-12-12 14:41:45 +0100 <albet70> do you know where cabal install the package on ? I mean local path on linux
2023-12-12 14:41:51 +0100 <ski> oh, it has <https://hackage.haskell.org/package/dns-4.2.0/src/>, too
2023-12-12 14:42:34 +0100 <ski> <https://hackage.haskell.org/package/dns-4.2.0/src/internal/Network/DNS/Types/Internal.hs> has `TYPE', and it's implemented as a `newtype' (not GADT)
2023-12-12 14:43:21 +0100 <albet70> newtype TYPE = TYPE { -- | From type to number.fromTYPE :: Word16 } deriving (E
2023-12-12 14:43:22 +0100 <ski> .. and i notice the `Show TYPE' instance is (slightly) incorrect
2023-12-12 14:44:15 +0100 <ski> (it doesn't matter for the first cases, but the last case ought to be defined using `showsPrec', which would force the previous ones to use that as well)
2023-12-12 14:44:20 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net)
2023-12-12 14:45:09 +0100 <albet70> newtype TYPE = TYPE { fromTYPE :: Word16 }
2023-12-12 14:45:19 +0100 <albet70> pattern A :: TYPE
2023-12-12 14:45:22 +0100 <ski> (because it ought to say `showsPrec p x = showParen (p > 10) $ showString "TYPE " . showsPrec 11 (fromTYPE x)')
2023-12-12 14:45:30 +0100 <albet70> pattern A = TYPE 1
2023-12-12 14:45:34 +0100 <ski> (.. also missing a space, apparently)
2023-12-12 14:46:13 +0100 <albet70> where you use A , actually it's TYPE 1, still C's macro to me
2023-12-12 14:46:34 +0100 <ski> yes, but `TYPE' is exported abstractly, so you can't reach into the innards from outside
2023-12-12 14:48:09 +0100igemnace(~ian@user/igemnace) (Read error: Connection reset by peer)
2023-12-12 14:48:10 +0100araujo(~araujo@45.146.54.110) (Read error: Connection reset by peer)
2023-12-12 14:48:37 +0100darchitect(~darchitec@2a00:23c6:3584:df01:fea4:c282:f8d:5ecc) (Ping timeout: 256 seconds)
2023-12-12 14:48:51 +0100 <ski> well, i guess `fromType' and `toType' are exported
2023-12-12 14:49:22 +0100 <ski> albet70 : still, you get additional type safety, by not being able to screw up the magic numbers by mistake
2023-12-12 14:49:25 +0100tri(~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 276 seconds)
2023-12-12 14:49:39 +0100araujo(~araujo@216.73.163.162)
2023-12-12 14:49:56 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds)
2023-12-12 14:50:17 +0100euleritian(~euleritia@dynamic-046-114-192-005.46.114.pool.telefonica.de)
2023-12-12 14:50:25 +0100 <albet70> how "define PI 3.1415" would screw up the magic numbers by mistake?
2023-12-12 14:50:25 +0100 <ski> (so, i guess that `showsPrec' defining equation ought to say `toTYPE' instead of `TYPE' in that `String's, then)
2023-12-12 14:50:33 +0100califax(~califax@user/califx) (Remote host closed the connection)
2023-12-12 14:51:03 +0100califax(~califax@user/califx)
2023-12-12 14:51:14 +0100 <ski> albet70 : because now wherever you could type `PI', you could just as well type `3.1415' or `3.1415926' or `3.1416' or `2.718281828' or `496' or ..
2023-12-12 14:51:52 +0100 <ski> with a `newtype', that doesn't happen (since there is no `Num' instance)
2023-12-12 14:52:50 +0100darchitect(~darchitec@host86-191-124-92.range86-191.btcentralplus.com)
2023-12-12 15:03:41 +0100abrantesasf(~abrantesa@177.154.20.2) (Remote host closed the connection)
2023-12-12 15:03:43 +0100CiaoSen(~Jura@2a05:5800:283:9300:ca4b:d6ff:fec1:99da) (Ping timeout: 276 seconds)
2023-12-12 15:04:55 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2023-12-12 15:05:24 +0100igemnace(~ian@user/igemnace)
2023-12-12 15:07:13 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2023-12-12 15:08:00 +0100shriekingnoise(~shrieking@186.137.175.87)
2023-12-12 15:20:23 +0100__monty__(~toonn@user/toonn) (Ping timeout: 264 seconds)
2023-12-12 15:25:56 +0100rosco_(~rosco@175.136.152.56)
2023-12-12 15:26:50 +0100rosco_(~rosco@175.136.152.56) (Client Quit)
2023-12-12 15:27:53 +0100rosco_(~rosco@175.136.152.56)
2023-12-12 15:32:07 +0100danse-nr3(~danse@151.57.235.147) (Ping timeout: 255 seconds)
2023-12-12 15:34:52 +0100rosco_(~rosco@175.136.152.56) (Quit: Lost terminal)
2023-12-12 15:36:04 +0100rosco_(~rosco@175.136.152.56)
2023-12-12 15:36:14 +0100rosco_(~rosco@175.136.152.56) (Client Quit)
2023-12-12 15:40:45 +0100rosco(~rosco@2001:e68:5411:21b:709e:ff04:8b05:a76c)
2023-12-12 15:42:29 +0100danza(~danza@151.57.235.147)
2023-12-12 15:51:03 +0100rosco(~rosco@2001:e68:5411:21b:709e:ff04:8b05:a76c) (Remote host closed the connection)
2023-12-12 15:51:40 +0100koolazer(~koo@user/koolazer) (Read error: Connection reset by peer)
2023-12-12 15:54:58 +0100danza(~danza@151.57.235.147) (Ping timeout: 256 seconds)
2023-12-12 15:59:10 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net)
2023-12-12 16:03:27 +0100tri(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 16:03:28 +0100tri_(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 16:03:51 +0100araujo(~araujo@216.73.163.162) (Quit: Leaving)
2023-12-12 16:04:04 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
2023-12-12 16:05:16 +0100araujo(~araujo@216.73.163.162)
2023-12-12 16:10:55 +0100danse-nr3(~danse@151.57.235.147)
2023-12-12 16:12:39 +0100tri_(~tri@ool-18bbef1a.static.optonline.net) (Remote host closed the connection)
2023-12-12 16:19:22 +0100tri_(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 16:19:42 +0100euleritian(~euleritia@dynamic-046-114-192-005.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2023-12-12 16:19:59 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-12 16:24:35 +0100tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 264 seconds)
2023-12-12 16:24:58 +0100tri_(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 276 seconds)
2023-12-12 16:26:22 +0100 <mosul> 7
2023-12-12 16:28:57 +0100 <danse-nr3> 6
2023-12-12 16:29:22 +0100leungbk(~user@2603-8000-1201-2dd2-4813-9b76-6ca8-e97f.res6.spectrum.com) (Ping timeout: 246 seconds)
2023-12-12 16:29:48 +0100 <mauke> /3
2023-12-12 16:31:58 +0100akegalj(~akegalj@89-164-125-9.dsl.iskon.hr) (Quit: leaving)
2023-12-12 16:32:13 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
2023-12-12 16:32:31 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-12 16:32:47 +0100Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
2023-12-12 16:36:06 +0100Joao003(~Joao003@190.108.99.230) (Quit: Bye!)
2023-12-12 16:36:06 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2023-12-12 16:37:18 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-12 16:40:41 +0100dwt__(~dwt_@2601:2c6:8381:e5c:186c:2b2e:4114:8cc0) (Read error: Connection reset by peer)
2023-12-12 16:41:05 +0100dwt__(~dwt_@2601:2c6:8381:e5c:186c:2b2e:4114:8cc0)
2023-12-12 16:42:26 +0100Pixi__(~Pixi@user/pixi)
2023-12-12 16:43:21 +0100idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1)
2023-12-12 16:45:38 +0100Pixi`(~Pixi@user/pixi) (Ping timeout: 260 seconds)
2023-12-12 16:45:50 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2023-12-12 16:50:48 +0100tri(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 16:52:51 +0100danse-nr3(~danse@151.57.235.147) (Ping timeout: 245 seconds)
2023-12-12 16:55:27 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 4.0.5)
2023-12-12 16:55:31 +0100tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 276 seconds)
2023-12-12 16:56:24 +0100leungbk(~user@142-129-149-172.res.spectrum.com)
2023-12-12 16:56:42 +0100alexherbo2(~alexherbo@2a02-8440-3240-ce99-dd22-abb7-bd07-cd6f.rev.sfr.net) (Remote host closed the connection)
2023-12-12 17:01:17 +0100qqq(~qqq@92.43.167.61) (Remote host closed the connection)
2023-12-12 17:01:52 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.1.1)
2023-12-12 17:03:36 +0100tri(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 17:06:20 +0100Joao003(~Joao003@190.108.99.230)
2023-12-12 17:08:23 +0100tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 260 seconds)
2023-12-12 17:20:17 +0100zetef(~quassel@95.77.17.251) (Remote host closed the connection)
2023-12-12 17:20:49 +0100alp_(~alp@2001:861:e3d6:8f80:5f2a:e7a9:cfa0:1d79) (Ping timeout: 246 seconds)
2023-12-12 17:27:11 +0100Square2(~Square4@user/square)
2023-12-12 17:27:13 +0100tri(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 17:27:23 +0100tri_(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 17:29:14 +0100 <kaol> I know more about JWA now than I ever wanted. JOSE is missing JWE support and I'm implementing that.
2023-12-12 17:29:28 +0100tri53(~tri@4133220a.cst.lightpath.net)
2023-12-12 17:29:37 +0100tri53_tri
2023-12-12 17:34:20 +0100 <_tri> Hi folks, im looking into rewriting an OOP logic that keeps track of the rate of events going into a system into functional in F# (I know this is Haskell group, but the fundamental is the same). The logic is, say, maximum 3 events per 10 seconds, and will alert if the rule is breached.
2023-12-12 17:34:54 +0100 <_tri> my problem is, this logic inherent has internal state, that is it must know at any given time the number of events for the last 10 seconds
2023-12-12 17:35:08 +0100 <_tri> (a sliding window)
2023-12-12 17:35:23 +0100tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 264 seconds)
2023-12-12 17:35:44 +0100 <_tri> i can think natively in OOP because object can maintain state
2023-12-12 17:35:44 +0100tri_(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 268 seconds)
2023-12-12 17:36:30 +0100 <_tri> but im not sure how to achieve this in FP paradigm, because the state is only changed at the edges, i.e. input and output, not kept track in the internal system, if that makes any sense
2023-12-12 17:38:39 +0100ystael(~ystael@user/ystael) (Read error: Connection reset by peer)
2023-12-12 17:39:15 +0100 <Rembane> _tri: Hi! That's an interesting problem. I think I would solve it by storing a list of timestamps, and every time another timestamp is added, the ones that are too old are removed. This makes it possible to test this subsystem without having to take time into account.
2023-12-12 17:39:47 +0100 <kaol> https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/values/ mutable variables are a thing in F# (and in Haskell too).
2023-12-12 17:39:52 +0100 <Franciman> Seems like a foldl' over a stream where the accumulator keeps the last timestamp as Rembane suggests
2023-12-12 17:40:38 +0100 <Franciman> wait, a question
2023-12-12 17:40:55 +0100 <_tri> kaol: Im kinda hesitant to dip into mutating state, that's the reason im trying to rewrite from OOP to FP :\
2023-12-12 17:40:55 +0100 <Franciman> do you want to alert in real time? Or at the end of the analysis?
2023-12-12 17:41:17 +0100 <_tri> Franciman: yes, in realtime, this is to make sure thing doesn't spin out of control
2023-12-12 17:42:20 +0100tri(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 17:42:38 +0100 <_tri> Rembane: do you mean something similar to fold and scan? I thought about it, because these are the only constructs that can maintain state in FP, but im asking to see if there is any other
2023-12-12 17:42:53 +0100tri_(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 17:43:03 +0100 <Franciman> imho a fold can do it
2023-12-12 17:43:12 +0100 <Franciman> and internally you print stuff, which is not pure but he
2023-12-12 17:43:15 +0100 <Rembane> _tri: To be totally honest, I'm thinking in terms of a GenServer that has a list of timestamps as internal state, because I've done Elixir for too long. :)
2023-12-12 17:43:51 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:444f:4a45:c596:a200) (Remote host closed the connection)
2023-12-12 17:44:07 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:21a7:e3e2:1963:5573)
2023-12-12 17:44:18 +0100 <kaol> FRP is one option. Something like https://fsharpforfunandprofit.com/posts/concurrency-reactive/ (old and I have no way of telling if it's still relevant to current F#).
2023-12-12 17:44:29 +0100 <Franciman> i would do it with conduit or pipes
2023-12-12 17:44:31 +0100 <Franciman> in haskell
2023-12-12 17:44:38 +0100 <Rembane> _tri: So I'm having an actor that single threadedly handles the state, and the rest of the system communicates with that actor.
2023-12-12 17:45:35 +0100 <_tri> kaol: yes that's the route im going into too, but again, that FRP only has fold and scan to keep track of the internal state, as far as i know, so that's why im picking your brain
2023-12-12 17:45:46 +0100 <kaol> Or maybe something like https://medium.com/@dzoukr/event-sourcing-step-by-step-in-f-be808aa0ca18
2023-12-12 17:46:00 +0100L29Ah(~L29Ah@wikipedia/L29Ah) ()
2023-12-12 17:46:14 +0100kimiamania46(~65804703@user/kimiamania) (Quit: PegeLinux)
2023-12-12 17:47:35 +0100kimiamania464(~65804703@user/kimiamania)
2023-12-12 17:48:39 +0100 <_tri> kaol: that's interesting, event sourcing never occur to me. I will take a read of that. But before I read, can you check if this statement is correct? (because i only know vaguely about event sourcing). The statement is: I would use ES to write all the events coming into my system, and read them out, separately, to check the rate? If so, then it's
2023-12-12 17:48:39 +0100 <_tri> not really real-time due to read/write IO right? a few seconds or a minute delay is not a problem to me btw
2023-12-12 17:49:30 +0100 <kaol> Pure FP pretty much takes one or more values and gives you a value and it has no concept of time. You'll pretty much need to use something else to cover the 10 seconds of events part.
2023-12-12 17:49:34 +0100zetef(~quassel@95.77.17.251)
2023-12-12 17:50:07 +0100 <_tri> Franciman: conduit and pipes sound like Reactive programming right
2023-12-12 17:50:28 +0100 <Joao003> % System.Cmd.system "sleep 10"
2023-12-12 17:50:30 +0100 <yahb2> <timeout>
2023-12-12 17:50:31 +0100slideshow6052(uid629799@id-629799.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2023-12-12 17:50:41 +0100 <Franciman> in a way yes
2023-12-12 17:50:42 +0100 <Joao003> at least for linux
2023-12-12 17:51:12 +0100 <_tri> Rembane: yea, I totally admire the actor model, just that it's not native in FP to have something keep track of the state, and so i can't do it easily in F#
2023-12-12 17:51:25 +0100 <Rembane> _tri: Got it!
2023-12-12 17:51:52 +0100Square(~Square@user/square)
2023-12-12 17:52:35 +0100 <_tri> alright thank you everyone. You are very helpful
2023-12-12 17:52:38 +0100 <Joao003> _tri: yeah, like in fp you don't have variables and stuff so you need a workaround
2023-12-12 17:52:40 +0100leungbk(~user@142-129-149-172.res.spectrum.com) (Ping timeout: 246 seconds)
2023-12-12 17:52:50 +0100 <_tri> Joao003: gotcha
2023-12-12 17:54:34 +0100zetef(~quassel@95.77.17.251) (Remote host closed the connection)
2023-12-12 17:55:00 +0100 <Joao003> _tri: like, every function which wants to update that variable has to return it and then get it used later, or just use multi-threading
2023-12-12 17:55:38 +0100 <telser> Surely F# has something similar to a TVar?
2023-12-12 17:56:05 +0100Square2(~Square4@user/square) (Ping timeout: 268 seconds)
2023-12-12 17:57:10 +0100 <[exa]> telser: does F# have threads or so
2023-12-12 17:57:36 +0100 <Joao003> telser: you just got me into f#
2023-12-12 17:58:07 +0100 <telser> Just as an alternate to something like conduit/pipes.
2023-12-12 17:59:11 +0100 <_tri> F# have mutable variable (which i guess is tvar) and threads
2023-12-12 17:59:57 +0100 <int-e> The "T" is for "transactional"
2023-12-12 17:59:59 +0100ystael(~ystael@user/ystael)
2023-12-12 18:00:10 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:21a7:e3e2:1963:5573) (Remote host closed the connection)
2023-12-12 18:00:46 +0100 <int-e> There is https://fsprojects.github.io/FSharpx.Extras/reference/fsharpx-stm-core.html (which may or may not have poor performance... there's an old blog post that found it to be slow at the time: https://vaskir.blogspot.com/2013/09/stm-f-vs-haskell.html )
2023-12-12 18:03:19 +0100pastly(~pastly@gateway/tor-sasl/pastly) (Ping timeout: 240 seconds)
2023-12-12 18:06:53 +0100pastly(~pastly@gateway/tor-sasl/pastly)
2023-12-12 18:07:42 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2023-12-12 18:10:13 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:21a7:e3e2:1963:5573)
2023-12-12 18:11:00 +0100ubert(~Thunderbi@2a02:8109:ab8a:5a00:6831:b374:3227:de58) (Quit: ubert)
2023-12-12 18:16:14 +0100dhil(~dhil@2001:8e0:2014:3100:fe62:84ae:2b90:5200)
2023-12-12 18:16:40 +0100econo_(uid147250@id-147250.tinside.irccloud.com)
2023-12-12 18:26:58 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2023-12-12 18:27:38 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-12-12 18:29:02 +0100igemnace(~ian@user/igemnace) (Remote host closed the connection)
2023-12-12 18:39:10 +0100tzh(~tzh@c-71-193-181-0.hsd1.or.comcast.net)
2023-12-12 18:39:37 +0100Guest16(~Guest16@ec2-13-232-74-226.ap-south-1.compute.amazonaws.com)
2023-12-12 18:39:49 +0100son0p(~ff@181.136.122.143) (Ping timeout: 256 seconds)
2023-12-12 18:40:12 +0100Guest16(~Guest16@ec2-13-232-74-226.ap-south-1.compute.amazonaws.com) (Client Quit)
2023-12-12 18:46:10 +0100fendor(~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c) (Remote host closed the connection)
2023-12-12 18:46:38 +0100_tri(~tri@4133220a.cst.lightpath.net) (Quit: Client closed)
2023-12-12 18:47:11 +0100alp_(~alp@2001:861:e3d6:8f80:afc2:f59:afac:cc18)
2023-12-12 18:55:09 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:21a7:e3e2:1963:5573) (Remote host closed the connection)
2023-12-12 19:09:43 +0100idgaen(~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-12-12 19:11:15 +0100machinedgod(~machinedg@93-138-57-84.adsl.net.t-com.hr)
2023-12-12 19:11:23 +0100danse-nr3(~danse@151.37.238.206)
2023-12-12 19:11:38 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
2023-12-12 19:12:10 +0100euleritian(~euleritia@dynamic-089-204-154-086.89.204.154.pool.telefonica.de)
2023-12-12 19:17:54 +0100chele(~chele@user/chele) (Remote host closed the connection)
2023-12-12 19:19:21 +0100aruns(~aruns@user/aruns)
2023-12-12 19:20:35 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2023-12-12 19:20:42 +0100Natch(~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Remote host closed the connection)
2023-12-12 19:20:46 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2023-12-12 19:22:46 +0100euleritian(~euleritia@dynamic-089-204-154-086.89.204.154.pool.telefonica.de) (Read error: Connection reset by peer)
2023-12-12 19:23:05 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-12 19:25:04 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-12-12 19:26:56 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:21a7:e3e2:1963:5573)
2023-12-12 19:26:57 +0100alp_(~alp@2001:861:e3d6:8f80:afc2:f59:afac:cc18) (Remote host closed the connection)
2023-12-12 19:27:42 +0100tri_(~tri@ool-18bbef1a.static.optonline.net) (Remote host closed the connection)
2023-12-12 19:28:59 +0100tri_(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 19:31:02 +0100ft(~ft@p3e9bc784.dip0.t-ipconnect.de)
2023-12-12 19:32:49 +0100mikess(~sam@user/mikess)
2023-12-12 19:33:13 +0100tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 268 seconds)
2023-12-12 19:33:42 +0100tri_(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 256 seconds)
2023-12-12 19:33:53 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2023-12-12 19:34:00 +0100euleritian(~euleritia@dynamic-089-204-154-086.89.204.154.pool.telefonica.de)
2023-12-12 19:38:31 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2023-12-12 19:38:58 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:21a7:e3e2:1963:5573) (Remote host closed the connection)
2023-12-12 19:48:29 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2023-12-12 19:49:15 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:21a7:e3e2:1963:5573)
2023-12-12 19:51:25 +0100td_(~td@i5387090E.versanet.de) (Ping timeout: 260 seconds)
2023-12-12 19:53:03 +0100alexherbo2(~alexherbo@2a02-8440-3240-ce99-a4f7-9aab-90ab-68ff.rev.sfr.net)
2023-12-12 19:53:12 +0100td_(~td@i53870913.versanet.de)
2023-12-12 19:53:22 +0100euleritian(~euleritia@dynamic-089-204-154-086.89.204.154.pool.telefonica.de) (Read error: Connection reset by peer)
2023-12-12 19:53:40 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2023-12-12 19:54:22 +0100__monty__(~toonn@user/toonn)
2023-12-12 19:55:06 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
2023-12-12 20:00:41 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net)
2023-12-12 20:02:49 +0100tri(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 20:03:23 +0100tri_(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 20:05:58 +0100nate4(~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 276 seconds)
2023-12-12 20:06:29 +0100danse-nr3(~danse@151.37.238.206) (Ping timeout: 240 seconds)
2023-12-12 20:06:35 +0100RedFlamingos(~RedFlamin@user/RedFlamingos) (Quit: RedFlamingos)
2023-12-12 20:07:14 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:21a7:e3e2:1963:5573) (Remote host closed the connection)
2023-12-12 20:07:26 +0100analoq(~yashi@user/dies) (Ping timeout: 268 seconds)
2023-12-12 20:09:18 +0100danza(~danza@151.47.233.72)
2023-12-12 20:14:24 +0100danse-nr3(~danse@151.47.233.72)
2023-12-12 20:17:36 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:21a7:e3e2:1963:5573)
2023-12-12 20:17:54 +0100danza(~danza@151.47.233.72) (Ping timeout: 252 seconds)
2023-12-12 20:20:08 +0100Natch(~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
2023-12-12 20:21:43 +0100tri_(~tri@ool-18bbef1a.static.optonline.net) (Remote host closed the connection)
2023-12-12 20:21:55 +0100tri_(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 20:25:36 +0100alexherbo2(~alexherbo@2a02-8440-3240-ce99-a4f7-9aab-90ab-68ff.rev.sfr.net) (Ping timeout: 250 seconds)
2023-12-12 20:28:33 +0100alexherbo2(~alexherbo@2a02-8440-3240-ce99-a4f7-9aab-90ab-68ff.rev.sfr.net)
2023-12-12 20:29:19 +0100taupiqueur(~taupiqueu@2a02:8440:3240:ce99:a4f7:9aab:90ab:68ff)
2023-12-12 20:38:51 +0100bradparker(sid262931@id-262931.uxbridge.irccloud.com) (Ping timeout: 260 seconds)
2023-12-12 20:38:51 +0100edm(sid147314@id-147314.hampstead.irccloud.com) (Ping timeout: 260 seconds)
2023-12-12 20:39:00 +0100bradparker(sid262931@id-262931.uxbridge.irccloud.com)
2023-12-12 20:39:19 +0100iqubic(~avi@2601:602:9502:c70:589:c039:227d:3881) (Ping timeout: 260 seconds)
2023-12-12 20:39:19 +0100haasn(sid579015@id-579015.hampstead.irccloud.com) (Ping timeout: 260 seconds)
2023-12-12 20:39:19 +0100flukiluke(~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962) (Ping timeout: 260 seconds)
2023-12-12 20:39:23 +0100glguy_(g@libera/staff/glguy)
2023-12-12 20:39:28 +0100berberman_(~berberman@user/berberman)
2023-12-12 20:39:35 +0100iqubic(~avi@2601:602:9502:c70:589:c039:227d:3881)
2023-12-12 20:39:38 +0100flukiluke(~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962)
2023-12-12 20:39:47 +0100b20n(sid115913@id-115913.uxbridge.irccloud.com) (Ping timeout: 260 seconds)
2023-12-12 20:39:47 +0100joel135(sid136450@id-136450.hampstead.irccloud.com) (Ping timeout: 260 seconds)
2023-12-12 20:39:55 +0100Reinhilde(~Ellenor@callbox.trd.is) (Remote host closed the connection)
2023-12-12 20:40:15 +0100gmc(sid58314@id-58314.ilkley.irccloud.com) (Ping timeout: 260 seconds)
2023-12-12 20:40:15 +0100berberman(~berberman@user/berberman) (Ping timeout: 260 seconds)
2023-12-12 20:40:15 +0100liyang(sid322268@id-322268.uxbridge.irccloud.com) (Ping timeout: 260 seconds)
2023-12-12 20:40:44 +0100glguy(glguy@libera/staff/glguy) (Read error: Connection reset by peer)
2023-12-12 20:42:51 +0100joel135(sid136450@id-136450.hampstead.irccloud.com)
2023-12-12 20:42:52 +0100liyang(sid322268@id-322268.uxbridge.irccloud.com)
2023-12-12 20:42:56 +0100haasn(sid579015@id-579015.hampstead.irccloud.com)
2023-12-12 20:43:04 +0100edm(sid147314@id-147314.hampstead.irccloud.com)
2023-12-12 20:43:14 +0100gmc(sid58314@id-58314.ilkley.irccloud.com)
2023-12-12 20:46:01 +0100danse-nr3(~danse@151.47.233.72) (Remote host closed the connection)
2023-12-12 20:46:25 +0100danse-nr3(~danse@151.47.233.72)
2023-12-12 20:48:38 +0100iqubic(~avi@2601:602:9502:c70:589:c039:227d:3881) (Remote host closed the connection)
2023-12-12 20:48:54 +0100iqubic(~avi@2601:602:9502:c70:589:c039:227d:3881)
2023-12-12 20:51:19 +0100alexherbo2(~alexherbo@2a02-8440-3240-ce99-a4f7-9aab-90ab-68ff.rev.sfr.net) (Remote host closed the connection)
2023-12-12 20:52:40 +0100tri_(~tri@ool-18bbef1a.static.optonline.net) (Remote host closed the connection)
2023-12-12 20:53:16 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:21a7:e3e2:1963:5573) (Remote host closed the connection)
2023-12-12 20:53:40 +0100tri_(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 20:56:28 +0100b20n(sid115913@id-115913.uxbridge.irccloud.com)
2023-12-12 21:02:31 +0100tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 276 seconds)
2023-12-12 21:03:07 +0100 <EvanR> tri, by using forkIO threads or async you can pretty easily set up "the actor model"
2023-12-12 21:03:30 +0100 <EvanR> also you might want to fix your connection / client somehow
2023-12-12 21:04:10 +0100tri_(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 260 seconds)
2023-12-12 21:04:11 +0100danse-nr3(~danse@151.47.233.72) (Ping timeout: 264 seconds)
2023-12-12 21:04:47 +0100mikess(~sam@user/mikess) (Ping timeout: 268 seconds)
2023-12-12 21:05:34 +0100Ellenor(ellenor@callbox.trd.is)
2023-12-12 21:05:36 +0100tri(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 21:05:52 +0100 <Joao003> If `Integer's have infinite range, then how are they stored?
2023-12-12 21:06:05 +0100 <monochrom> One byte at a time?
2023-12-12 21:06:26 +0100 <Joao003> You need a length variable for that.
2023-12-12 21:06:33 +0100 <monochrom> Sure.
2023-12-12 21:06:36 +0100 <int-e> ...maybe revisit your premise
2023-12-12 21:07:01 +0100 <c_wraith> they don't have infinite range, fwiw
2023-12-12 21:07:07 +0100 <dminuoso_> Joao003: https://hackage.haskell.org/package/ghc-bignum-1.3/docs/src/GHC.Num.Integer.html#Integer
2023-12-12 21:07:15 +0100 <c_wraith> they have a maximum of 2^64 limbs, IIRC
2023-12-12 21:07:20 +0100 <int-e> "arbitrary precision" is subject to available memory.
2023-12-12 21:07:22 +0100 <dminuoso_> https://hackage.haskell.org/package/ghc-bignum-1.3/docs/GHC-Num-BigNat.html#t:BigNat-35-
2023-12-12 21:08:17 +0100 <exarkun> Joao003: Supposing they really did have infinite range, are you sure you need a length variable?
2023-12-12 21:08:23 +0100tri_(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 21:08:23 +0100 <int-e> And yeah that limb thing puts a hard bound of 2^(2^70) on things on a 64 bit architecture.
2023-12-12 21:08:39 +0100 <Joao003> Hackage's documentation of Prelude documents them as infinite range, which under my assumption, is dependent on implementation
2023-12-12 21:08:52 +0100 <dminuoso_> Well, infinite range by specification, limited by reality.
2023-12-12 21:08:59 +0100 <Joao003> Yes
2023-12-12 21:09:26 +0100 <dminuoso_> Our observable universe has a finite number of atoms/energy, which means there is a physical limit to how much information you could physically store.
2023-12-12 21:09:32 +0100 <dminuoso_> Regardless of how large you scale your implementation.
2023-12-12 21:09:39 +0100 <Joao003> dminuoso_: The Haskell world almost never cares about reality
2023-12-12 21:09:53 +0100 <int-e> If you wonder about a theoretical answer, https://en.wikipedia.org/wiki/Elias_omega_coding encodes natural numbers as self-delimiting bit strings (so it's a prefix code).
2023-12-12 21:10:01 +0100 <monochrom> Well that escalated quickly.
2023-12-12 21:10:23 +0100 <int-e> There is an encoding of length in their but the length of the length is itself variable.
2023-12-12 21:10:51 +0100 <dminuoso_> Joao003: See https://iohk.io/en/blog/posts/2020/07/28/improving-haskells-big-numbers-support/ for some details on how ghc-bignum works.
2023-12-12 21:11:06 +0100 <Joao003> If `Integer's are precise, then `Float's are the opposite, right?
2023-12-12 21:11:17 +0100mikess(~sam@user/mikess)
2023-12-12 21:11:24 +0100 <dminuoso_> Joao003: Well they are also precise, depending on what you mean by it.
2023-12-12 21:11:28 +0100 <monochrom> I don't think anyone knows what that means.
2023-12-12 21:11:29 +0100 <dminuoso_> That is, we dont store them analog.
2023-12-12 21:11:39 +0100 <dminuoso_> We use IEEE 754.
2023-12-12 21:11:45 +0100 <monochrom> Anyone. Including the author. Perhaps especially the author.
2023-12-12 21:11:45 +0100juri__(~juri@79.140.117.100) (Read error: Connection reset by peer)
2023-12-12 21:12:05 +0100 <Joao003> dminuoso_: If we mean accuracy, then IEEE 754 is imprecise
2023-12-12 21:12:07 +0100tri25(~tri@4133220a.cst.lightpath.net)
2023-12-12 21:12:11 +0100tri25_tri
2023-12-12 21:12:12 +0100 <dminuoso_> Define accuracy.
2023-12-12 21:12:15 +0100 <exarkun> does the Haskell report require IEEE 754? Or could I build a computer with analog an Float representation and make a conforming Haskell implementation for it?
2023-12-12 21:12:22 +0100 <int-e> Floats aren't inexact by themselves. Arithmetic on floats tends to round a lot.
2023-12-12 21:12:24 +0100 <dminuoso_> Conforming IEEE 754 implementations will agree in their answers, Joao003.
2023-12-12 21:12:37 +0100 <Joao003> > 0.1 + 0.2 --dminuoso_
2023-12-12 21:12:39 +0100 <lambdabot> 0.30000000000000004
2023-12-12 21:12:48 +0100 <dminuoso_> Joao003: Yes, and any IEEE 754 conforming implementation will agree with that result.
2023-12-12 21:12:55 +0100 <dminuoso_> Is that imprecise? It depends on your perspective and expectation.
2023-12-12 21:12:55 +0100 <exarkun> Joao003: This is a 100% accurate IEEE 754 result.
2023-12-12 21:13:01 +0100 <Joao003> Yes.
2023-12-12 21:13:23 +0100 <Joao003> But it quickly becomes inaccurate when we do this:
2023-12-12 21:13:29 +0100 <Joao003> > (0.1 + 0.2) == 0.3
2023-12-12 21:13:31 +0100 <lambdabot> False
2023-12-12 21:13:34 +0100 <dminuoso_> IEEE 754 is an imprecise approximation of rational arithmatic, if thats what you mean.
2023-12-12 21:13:39 +0100 <Joao003> Yes
2023-12-12 21:13:42 +0100 <dminuoso_> Then sure.
2023-12-12 21:14:00 +0100 <dminuoso_> Joao003: The primary fault here is programmers tend to think of 0.1 as a rational number.
2023-12-12 21:14:08 +0100 <dminuoso_> (In this context) its not.
2023-12-12 21:14:12 +0100 <Joao003> This discussion escalated quickly from discussing `Integer's to discussing IEEE 754
2023-12-12 21:14:17 +0100 <int-e> > toRational 0.1
2023-12-12 21:14:19 +0100 <lambdabot> 3602879701896397 % 36028797018963968
2023-12-12 21:14:21 +0100 <int-e> :-)
2023-12-12 21:14:25 +0100 <Joao003> XD
2023-12-12 21:14:46 +0100 <Joao003> int-e: Goddammit, I hate emoticons with noses
2023-12-12 21:15:05 +0100 <dminuoso_> Joao003: So really, dont think of literals (monomorphized to Float/Double) as rational numbers. If you dont, you dont have any expectations with regards to their "accuracy" or "precision"
2023-12-12 21:15:06 +0100 <int-e> > toRational 0.1 + toRational 0.2 == toRational (0.1 + 0.2) -- I wonder
2023-12-12 21:15:08 +0100 <lambdabot> False
2023-12-12 21:15:12 +0100 <dminuoso_> It then all boils down to IEEE 754 semantics.
2023-12-12 21:15:26 +0100 <Joao003> dminuoso_: I don't.
2023-12-12 21:15:39 +0100 <int-e> Joao003: :-/
2023-12-12 21:16:04 +0100 <Joao003> int-e: THAT NOSE EMOTICON :(
2023-12-12 21:16:27 +0100 <yushyin> :-)
2023-12-12 21:16:33 +0100 <Joao003> ò_ó
2023-12-12 21:16:42 +0100 <int-e> Joao003: Let me just say that you did this to yourself.
2023-12-12 21:16:44 +0100 <int-e> :-P
2023-12-12 21:16:51 +0100 <exarkun> Have some tolerance for differences. It's a good thing.
2023-12-12 21:17:06 +0100 <Joao003> ‍♂️
2023-12-12 21:17:09 +0100 <Joao003> lol
2023-12-12 21:17:34 +0100 <monochrom> I wonder if that is a pun on floating point arithmetic.
2023-12-12 21:17:46 +0100 <Joao003> If :-D is a smiley, then tell me what's this: 8=D
2023-12-12 21:17:46 +0100juri_(~juri@implicitcad.org)
2023-12-12 21:18:01 +0100 <exarkun> More escalation. Why?
2023-12-12 21:18:05 +0100 <int-e> dminuoso_: I honestly didn't know whether that would round or not.
2023-12-12 21:18:18 +0100 <dminuoso_> :t toRational
2023-12-12 21:18:19 +0100 <lambdabot> Real a => a -> Rational
2023-12-12 21:18:26 +0100 <Joao003> :t (%)
2023-12-12 21:18:27 +0100 <lambdabot> Integral a => a -> a -> Ratio a
2023-12-12 21:18:35 +0100 <Joao003> haha get ratio'd
2023-12-12 21:18:48 +0100 <dminuoso_> int-e: Luckily we have a strongly typed system where implicit coercion using magical hidden rules dont occur!
2023-12-12 21:18:50 +0100 <int-e> > map toRational [1/0, 0/0]
2023-12-12 21:18:51 +0100 <lambdabot> [179769313486231590772930519078902473361797697894230657273430081157732675805...
2023-12-12 21:18:58 +0100 <Joao003> lol
2023-12-12 21:19:06 +0100 <int-e> oh right, it would be too long for that.
2023-12-12 21:19:15 +0100 <Joao003> > map toRational [0.01]
2023-12-12 21:19:16 +0100 <lambdabot> [5764607523034235 % 576460752303423488]
2023-12-12 21:19:26 +0100 <Joao003> > map toRational [0.00000000001]
2023-12-12 21:19:27 +0100 <lambdabot> [6189700196426901 % 618970019642690137449562112]
2023-12-12 21:19:39 +0100 <int-e> (try that in ghci, "proof" that infinity is an integer, but so is NaN)
2023-12-12 21:19:42 +0100 <[exa]> ieee floats never disappoint
2023-12-12 21:19:44 +0100 <dminuoso_> Also I really like that Real typeclass.
2023-12-12 21:19:46 +0100 <dminuoso_> "Real numbers. The Haskell report defines no laws for Real"
2023-12-12 21:19:53 +0100 <Joao003> [exa]: To me they do
2023-12-12 21:19:54 +0100taupiqueur(~taupiqueu@2a02:8440:3240:ce99:a4f7:9aab:90ab:68ff) (Quit: WeeChat 4.1.2)
2023-12-12 21:20:04 +0100 <Joao003> dminuoso_: LOL
2023-12-12 21:20:08 +0100 <int-e> The Real world is a cruel and unforgiving place.
2023-12-12 21:20:16 +0100 <Joao003> XD
2023-12-12 21:20:37 +0100 <dminuoso_> > toRational (0.1 :: _)
2023-12-12 21:20:37 +0100 <[exa]> even if you look into actual GHC.Prim.RealWorld..........it's empty!!!11
2023-12-12 21:20:38 +0100 <lambdabot> 3602879701896397 % 36028797018963968
2023-12-12 21:20:41 +0100 <Joao003> I also like how `Integer's have the typeclass `Fractional'
2023-12-12 21:20:45 +0100 <dminuoso_> Huh, why doesnt lambdabot error out here?
2023-12-12 21:20:55 +0100 <dminuoso_> % () :: _
2023-12-12 21:20:55 +0100 <yahb2> <interactive>:5:7: error: ; • Found type wildcard ‘_’ standing for ‘()’ ; To use the inferred type, enable PartialTypeSignatures ; • In an expression type signature: _ ; In the ...
2023-12-12 21:21:01 +0100 <dminuoso_> % toRational (0.1 :: _)
2023-12-12 21:21:01 +0100 <yahb2> <interactive>:7:20: error: ; • Found type wildcard ‘_’ standing for ‘Double’ ; To use the inferred type, enable PartialTypeSignatures ; • In an expression type signature: _ ; In...
2023-12-12 21:21:14 +0100 <dminuoso_> Okay, so Real a defaults to Double?
2023-12-12 21:21:23 +0100 <Joao003> lol
2023-12-12 21:21:31 +0100 <Maxdamantus> in the case of `0.1 + 0.2`, the arithmetic is precise. the problem is that binary floats can't represent 0.1, 0.2 or 0.3.
2023-12-12 21:21:39 +0100 <Joao003> Yes
2023-12-12 21:21:40 +0100 <monochrom> I think Haskell 2010 defaults Real to Double.
2023-12-12 21:21:54 +0100 <geekosaur> `default (Integer, Double)`
2023-12-12 21:22:06 +0100 <Joao003> % iterate (/10) 1
2023-12-12 21:22:06 +0100 <yahb2> [1.0,0.1,1.0e-2,1.0e-3,1.0e-4,1.0e-5,1.0000000000000002e-6,1.0000000000000002e-7,1.0000000000000002e-8,1.0000000000000003e-9,1.0000000000000003e-10,1.0000000000000003e-11,1.0000000000000002e-12,1.0...
2023-12-12 21:22:07 +0100 <dminuoso_> monochrom: Like I said, good think we have a strongly typed system without implicit coercions using magical hidden and unknown rules.
2023-12-12 21:22:07 +0100 <geekosaur> since 0.1 can't be Integer, it becomes Double
2023-12-12 21:22:09 +0100 <dminuoso_> :-)
2023-12-12 21:22:28 +0100 <Joao003> > (1 % 10) % 10
2023-12-12 21:22:29 +0100 <lambdabot> error:
2023-12-12 21:22:29 +0100 <lambdabot> • No instance for (Integral (Ratio Integer))
2023-12-12 21:22:29 +0100 <lambdabot> arising from a use of ‘e_111010’
2023-12-12 21:22:31 +0100 <Maxdamantus> in particular, because there's no solution for integers `m` and `e` where `m*2^e = 0.1`
2023-12-12 21:22:37 +0100 <Joao003> yes
2023-12-12 21:22:53 +0100 <monochrom> I may weasel out from that with "defaulting is not implicit coercions"... :)
2023-12-12 21:23:11 +0100 <dminuoso_> What does `0.3 :: Double` even mean? Does IEEE 754 give some definition on how to map rationals to IEEE 754?
2023-12-12 21:23:22 +0100 <Joao003> Lesson: Do not use floats unless the inaccuracies do not bother you
2023-12-12 21:23:29 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2023-12-12 21:24:04 +0100 <int-e> Maxdamantus: No, I tested above: If you take the Double representation of 0.1 and 0.2 and add them, the result isn't exact but gets rounded.
2023-12-12 21:24:54 +0100 <monochrom> I have not read IEEE 754. I go out on a limb to guess that it specifies relations with decimal notation.
2023-12-12 21:25:00 +0100 <Maxdamantus> int-e: the result is exactly the sum of the IEEE-754 values corresponding to the strings 0.1 and 0.2.
2023-12-12 21:25:05 +0100 <Joao003> > (2147483647 :: Int) + 1
2023-12-12 21:25:06 +0100 <lambdabot> 2147483648
2023-12-12 21:25:19 +0100 <Maxdamantus> dminuoso_: yes. it defines the relationship with decimal notation.
2023-12-12 21:25:26 +0100 <int-e> > 0.1 + 0.2 - 0.2 == 0.1
2023-12-12 21:25:27 +0100 <lambdabot> False
2023-12-12 21:25:30 +0100 <Joao003> > (2147483647+ 1) :: Int
2023-12-12 21:25:31 +0100 <lambdabot> 2147483648
2023-12-12 21:25:46 +0100 <geekosaur> > maxBound :: Int
2023-12-12 21:25:47 +0100 <lambdabot> 9223372036854775807
2023-12-12 21:25:50 +0100 <Joao003> Oh ok
2023-12-12 21:25:56 +0100 <Joao003> x_x
2023-12-12 21:25:59 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:21a7:e3e2:1963:5573)
2023-12-12 21:26:13 +0100 <int-e> (0.1 + 0.2 get rounded; the subtraction is actually exact)
2023-12-12 21:26:17 +0100 <int-e> > let a = 0.1 + 0.2; b = 0.2 in toRational a - toRational b == toRational (a-b)
2023-12-12 21:26:19 +0100 <lambdabot> True
2023-12-12 21:26:26 +0100 <Joao003> > ((maxBound :: Int) + 1) :: Int
2023-12-12 21:26:28 +0100 <lambdabot> -9223372036854775808
2023-12-12 21:26:31 +0100 <int-e> > let a = 0.1; b = 0.2 in toRational a + toRational b == toRational (a + b)
2023-12-12 21:26:32 +0100 <lambdabot> False
2023-12-12 21:26:33 +0100 <Joao003> Overflow
2023-12-12 21:26:33 +0100 <Maxdamantus> dminuoso_: it defines it in both directions too, such that the value of computing 1/10 has "0.1" as its "canonical representation", even though that value is not exactly 0.1
2023-12-12 21:27:52 +0100 <int-e> > toRational 0.1 - 1/10
2023-12-12 21:27:53 +0100 <lambdabot> 1 % 180143985094819840
2023-12-12 21:28:25 +0100 <int-e> toRational is a pretty good tool for working out examples for this
2023-12-12 21:28:49 +0100 <int-e> > toRational 0.1 - 0.1 -- not sure why I didn't write it like this
2023-12-12 21:28:50 +0100 <lambdabot> 1 % 180143985094819840
2023-12-12 21:28:52 +0100 <monochrom> This is why "define 'precise'", "define 'accurate'" are right on. "precise" "accurate" under whose prejudice?
2023-12-12 21:29:04 +0100 <Maxdamantus> int-e: ah right, I guess in this case the arithmetic is indeed imprecise, because it has to increase the exponent.
2023-12-12 21:29:11 +0100 <monochrom> And that's right, it's always someone's prejudice. It's always personal.
2023-12-12 21:29:28 +0100 <Joao003> > 0.999999999999999999999999999999999999999999999999999999999999 == 1
2023-12-12 21:29:30 +0100 <lambdabot> True
2023-12-12 21:31:03 +0100 <Joao003> TIL: Complex exists
2023-12-12 21:31:07 +0100 <Joao003> > 0 +: 1
2023-12-12 21:31:09 +0100 <lambdabot> error:
2023-12-12 21:31:09 +0100 <lambdabot> • Variable not in scope: (+:) :: t0 -> t1 -> t
2023-12-12 21:31:09 +0100 <lambdabot> • Perhaps you meant one of these:
2023-12-12 21:31:12 +0100 <Joao003> > 0 :+ 1
2023-12-12 21:31:14 +0100 <lambdabot> 0 :+ 1
2023-12-12 21:31:22 +0100 <Joao003> :t 0 :+ 1
2023-12-12 21:31:23 +0100 <lambdabot> Num a => Complex a
2023-12-12 21:31:30 +0100 <monochrom> Did you know: Complex is a Monad too.
2023-12-12 21:31:39 +0100 <Joao003> Nice
2023-12-12 21:31:43 +0100 <Joao003> @src Complex
2023-12-12 21:31:43 +0100 <lambdabot> data (RealFloat a) => Complex a = !a :+ !a
2023-12-12 21:32:14 +0100 <geekosaur> someone should update that to Haskell2010 someday
2023-12-12 21:32:38 +0100 <monochrom> It's also Traversable haha.
2023-12-12 21:32:47 +0100 <monochrom> "My life is complete."
2023-12-12 21:33:25 +0100todi(~todi@p5dca55c4.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in)
2023-12-12 21:33:28 +0100 <monochrom> It is also a representable functor. OK I'll stop. (Really complete now.)
2023-12-12 21:35:36 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2023-12-12 21:41:07 +0100araujo(~araujo@216.73.163.162) (Ping timeout: 255 seconds)
2023-12-12 21:42:55 +0100gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 240 seconds)
2023-12-12 21:45:19 +0100gmg(~user@user/gehmehgeh)
2023-12-12 21:45:43 +0100 <juri_> using floats can be done right.
2023-12-12 21:46:18 +0100 <juri_> but unless you have an idea of "what is close enough" in your algebra, you're probably in a cursed land.
2023-12-12 21:46:51 +0100 <int-e> monochrom: most people's understanding of floating point numbers is pretty vague, or should I say imprecise?
2023-12-12 21:48:40 +0100 <EvanR> many people believe that floats don't have a definite value. They are confused. But you can impose an interval arithmetic on them as an additional protocol, interpreting their value to be an interval
2023-12-12 21:48:58 +0100 <EvanR> but the fact remains they have only 1 value at a time
2023-12-12 21:49:27 +0100 <EvanR> an exact known value
2023-12-12 21:49:35 +0100 <int-e> . o O ( NaN )
2023-12-12 21:50:01 +0100 <EvanR> Nan = not a number, not Not A Value xD
2023-12-12 21:50:19 +0100 <EvanR> bottom is not a value
2023-12-12 21:50:42 +0100 <int-e> EvanR: you're not wrong
2023-12-12 21:52:14 +0100 <juri_> units of least precision, and more importantly, how to interpret the accumulated error... these are important in floating point systems.
2023-12-12 21:52:45 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2023-12-12 21:53:03 +0100 <EvanR> unfortunately accumulated error isn't tracked anywhere, it's up to your application
2023-12-12 21:53:28 +0100 <EvanR> and in a given application it might not even be necessary because you only do exact math
2023-12-12 21:53:36 +0100malte(~malte@mal.tc) (Remote host closed the connection)
2023-12-12 21:54:53 +0100malte(~malte@mal.tc)
2023-12-12 21:56:43 +0100 <EvanR> > 0.999999999999999999999999999999999999999999999999999999999999 :: CReal == 1
2023-12-12 21:56:45 +0100 <lambdabot> error:
2023-12-12 21:56:45 +0100 <lambdabot> Not in scope: type constructor or class ‘==’
2023-12-12 21:56:53 +0100 <EvanR> > (0.999999999999999999999999999999999999999999999999999999999999 :: CReal) == 1
2023-12-12 21:56:54 +0100 <lambdabot> True
2023-12-12 21:57:00 +0100trev(~trev@user/trev) (Quit: trev)
2023-12-12 21:57:06 +0100_tri(~tri@4133220a.cst.lightpath.net) (Quit: Client closed)
2023-12-12 21:58:23 +0100 <EvanR> the same high school student who would object to that also has a good chance of saying 0.9999... forever doesn't equal 1 either xD
2023-12-12 21:59:35 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
2023-12-12 21:59:54 +0100aruns(~aruns@user/aruns) (Ping timeout: 256 seconds)
2023-12-12 22:01:48 +0100glguy_glguy
2023-12-12 22:07:25 +0100 <int-e> EvanR: there's a valid question in there... because high school students never see a definition of a real number either
2023-12-12 22:09:45 +0100 <EvanR> teacher who is trying to be clever "ok what would you say is 1 minus 0.999 repeating"
2023-12-12 22:09:57 +0100 <EvanR> student "zero point zero zero zero forever with 1 at the end"
2023-12-12 22:10:36 +0100 <EvanR> xD
2023-12-12 22:10:48 +0100 <int-e> and you can kind of construct numbers that work that way
2023-12-12 22:10:58 +0100 <EvanR> yeah I was thinking about that earlier
2023-12-12 22:11:06 +0100 <int-e> (surreal numbers are an appealing example)
2023-12-12 22:11:42 +0100 <EvanR> it might work if the posed question was, what is 1 minute 0.999... forever with 9 at the end xD
2023-12-12 22:11:45 +0100 <int-e> so the right answer to 0.999... = 1 is that it's a property of the real numbers and that's the only thing high school students are going to see.
2023-12-12 22:12:10 +0100 <int-e> and you should probably make 0.999... formal as a limit somewhere while explaining all that
2023-12-12 22:12:16 +0100 <int-e> you'll be there for a while
2023-12-12 22:12:49 +0100 <probie> I think "high school" students is a much too vague category
2023-12-12 22:13:19 +0100 <int-e> probie: average, not best of the best
2023-12-12 22:13:25 +0100infinity0_(~infinity0@pwned.gg)
2023-12-12 22:13:25 +0100infinity0Guest6319
2023-12-12 22:13:25 +0100infinity0_infinity0
2023-12-12 22:14:38 +0100Guest6319(~infinity0@pwned.gg) (Ping timeout: 260 seconds)
2023-12-12 22:15:11 +0100DigitalKiwi(~kiwi@137.184.156.191) (Quit: quite.)
2023-12-12 22:15:16 +0100 <EvanR> high "school students"
2023-12-12 22:15:32 +0100 <EvanR> very different category
2023-12-12 22:15:44 +0100DigitalKiwi(~kiwi@137.184.156.191)
2023-12-12 22:18:16 +0100EllenorReinhilde
2023-12-12 22:18:37 +0100 <probie> Quite a few of the mathematically inclined high school students in my city also start doing the first year university maths courses whilst still in high school. They get the course credit for it (assuming they go to a university that recognises it), and it improves their university entrance score
2023-12-12 22:22:38 +0100tri_(~tri@ool-18bbef1a.static.optonline.net) (Remote host closed the connection)
2023-12-12 22:23:15 +0100tri_(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 22:28:10 +0100tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 260 seconds)
2023-12-12 22:28:19 +0100tri_(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 276 seconds)
2023-12-12 22:35:02 +0100ft(~ft@p3e9bc784.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2023-12-12 22:36:42 +0100ft(~ft@p508db0fa.dip0.t-ipconnect.de)
2023-12-12 22:40:22 +0100 <jjhoo> 1 / 9 = 0.111... high school, arithmetic series
2023-12-12 22:40:56 +0100 <int-e> geometric series
2023-12-12 22:41:10 +0100tri(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 22:44:47 +0100wryish(~wryish@216.246.119.62) (Read error: Connection reset by peer)
2023-12-12 22:45:55 +0100tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 268 seconds)
2023-12-12 22:47:00 +0100tri(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 22:47:02 +0100tri_(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 22:48:03 +0100wryish(~wryish@216.246.119.62)
2023-12-12 22:49:53 +0100 <EvanR> 0.1 + 1 + 1 + 1 + 1 + ... xD
2023-12-12 22:50:06 +0100 <EvanR> 0.11111...
2023-12-12 22:51:54 +0100Eoco(~ian@128.101.131.218) (Quit: WeeChat 4.1.1)
2023-12-12 22:52:07 +0100__monty__(~toonn@user/toonn) (Ping timeout: 256 seconds)
2023-12-12 22:52:33 +0100Eoco(~ian@128.101.131.218)
2023-12-12 22:52:36 +0100tri_(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 256 seconds)
2023-12-12 22:53:56 +0100tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 268 seconds)
2023-12-12 22:56:54 +0100__monty__(~toonn@user/toonn)
2023-12-12 22:58:47 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2023-12-12 23:01:03 +0100dhil(~dhil@2001:8e0:2014:3100:fe62:84ae:2b90:5200) (Ping timeout: 256 seconds)
2023-12-12 23:01:06 +0100 <ncf> edwardk: is there any reason that `divide` and `choose` are not yoneda-ified to get rid of the first argument?
2023-12-12 23:01:12 +0100tri(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 23:01:20 +0100 <ncf> and lose
2023-12-12 23:05:46 +0100tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 245 seconds)
2023-12-12 23:14:58 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2023-12-12 23:16:56 +0100tri(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 23:17:13 +0100tri_(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 23:19:40 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2023-12-12 23:20:31 +0100machinedgod(~machinedg@93-138-57-84.adsl.net.t-com.hr) (Remote host closed the connection)
2023-12-12 23:23:08 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-12-12 23:25:23 +0100pavonia(~user@user/siracusa)
2023-12-12 23:25:47 +0100tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 264 seconds)
2023-12-12 23:26:23 +0100tri_(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 264 seconds)
2023-12-12 23:32:20 +0100wryish(~wryish@216.246.119.62) (Quit: %blank%)
2023-12-12 23:32:37 +0100wryish(~wryish@216.246.119.62)
2023-12-12 23:35:21 +0100tri(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 23:35:42 +0100tri_(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 23:42:28 +0100tri_(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 256 seconds)
2023-12-12 23:43:11 +0100tri(~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 260 seconds)
2023-12-12 23:47:07 +0100tri(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 23:48:11 +0100tri_(~tri@ool-18bbef1a.static.optonline.net)
2023-12-12 23:50:13 +0100ft(~ft@p508db0fa.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2023-12-12 23:50:43 +0100johnw(~johnw@69.62.242.138) (Quit: ZNC - http://znc.in)
2023-12-12 23:51:34 +0100ft(~ft@p4fc2ae2b.dip0.t-ipconnect.de)
2023-12-12 23:53:06 +0100emmanuelux_(~emmanuelu@user/emmanuelux) (Quit: au revoir)