2024/03/21

2024-03-21 00:16:41 +0100tolt_tolt
2024-03-21 00:18:54 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com)
2024-03-21 00:24:26 +0100euleritian(~euleritia@77.22.252.56) (Read error: Connection reset by peer)
2024-03-21 00:25:06 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-03-21 00:33:33 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
2024-03-21 00:34:22 +0100peterbecich(~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds)
2024-03-21 00:35:04 +0100berberman(~berberman@user/berberman)
2024-03-21 00:35:48 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-03-21 00:41:22 +0100waldo(~waldo@user/waldo)
2024-03-21 00:42:22 +0100gmg(~user@user/gehmehgeh) (Quit: Leaving)
2024-03-21 00:48:28 +0100chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2024-03-21 00:49:14 +0100chiselfuse(~chiselfus@user/chiselfuse)
2024-03-21 00:50:50 +0100yin_(~yin@user/zero) (Ping timeout: 264 seconds)
2024-03-21 00:54:18 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-03-21 00:56:37 +0100hgolden(~hgolden@2603-8000-9d00-3ed1-2678-8497-aa5c-7fa9.res6.spectrum.com)
2024-03-21 01:07:57 +0100destituion(~destituio@2a02:2121:655:c95b:dfe:63c3:c9bc:b707)
2024-03-21 01:08:51 +0100waldo(~waldo@user/waldo) (Ping timeout: 252 seconds)
2024-03-21 01:10:00 +0100waldo(~waldo@user/waldo)
2024-03-21 01:18:11 +0100waldo(~waldo@user/waldo) (Quit: waldo)
2024-03-21 01:20:51 +0100oo_miguel(~Thunderbi@78-11-181-16.static.ip.netia.com.pl) (Ping timeout: 260 seconds)
2024-03-21 01:27:51 +0100rvalue(~rvalue@user/rvalue) (Ping timeout: 260 seconds)
2024-03-21 01:28:00 +0100pavonia(~user@user/siracusa)
2024-03-21 01:28:09 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2024-03-21 01:37:19 +0100rvalue(~rvalue@user/rvalue)
2024-03-21 01:39:28 +0100ddellacosta(~ddellacos@ool-44c73d16.dyn.optonline.net)
2024-03-21 01:54:48 +0100pdw(~user@215.156.62.185.bridgefibre.net)
2024-03-21 02:01:58 +0100califax(~califax@user/califx) (Remote host closed the connection)
2024-03-21 02:04:51 +0100califax(~califax@user/califx)
2024-03-21 02:08:56 +0100yin_(~yin@user/zero)
2024-03-21 02:09:21 +0100mei(~mei@user/mei) (Ping timeout: 252 seconds)
2024-03-21 02:10:19 +0100telser(~quassel@user/telser) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2024-03-21 02:11:48 +0100arthurvl(~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net) (Ping timeout: 256 seconds)
2024-03-21 02:13:12 +0100mei(~mei@user/mei)
2024-03-21 02:18:15 +0100xff0x(~xff0x@ai082039.d.east.v6connect.net) (Ping timeout: 272 seconds)
2024-03-21 02:24:50 +0100arthurvl(~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net)
2024-03-21 02:44:42 +0100shapr`(~user@c-24-218-186-89.hsd1.ma.comcast.net)
2024-03-21 02:45:18 +0100yin_(~yin@user/zero) (Ping timeout: 255 seconds)
2024-03-21 02:46:05 +0100shapr(~user@c-24-218-186-89.hsd1.ma.comcast.net) (Ping timeout: 240 seconds)
2024-03-21 02:55:43 +0100yin_(~yin@user/zero)
2024-03-21 03:04:38 +0100yin_(~yin@user/zero) (Ping timeout: 264 seconds)
2024-03-21 03:05:14 +0100rosco(~rosco@2001:e68:5411:27c5:d75:19eb:3de6:e4c6) (Ping timeout: 264 seconds)
2024-03-21 03:07:10 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2024-03-21 03:15:55 +0100yin_(~yin@user/zero)
2024-03-21 03:19:09 +0100bilegeek(~bilegeek@2600:1008:b018:dea:b059:b098:5fdb:bddc)
2024-03-21 03:24:26 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 264 seconds)
2024-03-21 03:26:58 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 260 seconds)
2024-03-21 03:28:18 +0100 <pie_> https://news.ycombinator.com/item?id=30777849 " Agree Bluespec is great. In college we went from 0 to a Bluespec multicore RISC-V processor running Linux on an FPGA in a single undergrad semester, every step along the way felt intuitive. "
2024-03-21 03:28:31 +0100 <pie_> Id love to see those course materials :/ I can barely get people to write a compiler here...
2024-03-21 03:29:09 +0100ec(~ec@gateway/tor-sasl/ec)
2024-03-21 03:29:23 +0100otto_s(~user@p5de2f64e.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2024-03-21 03:29:59 +0100 <pie_> myself included. last semesters compilers elective I sat in on only cared about parsing algorithms, this semester the lecturer brought in ANTLR and I finally wrote a very bad but at least working simple compiler
2024-03-21 03:30:16 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2024-03-21 03:30:28 +0100 <pie_> (once the parsing was handled; just a simple tree-walking thing that directly emits assembly)
2024-03-21 03:30:52 +0100ec(~ec@gateway/tor-sasl/ec)
2024-03-21 03:30:58 +0100 <pie_> (yes, this is tangential; the thread is about hardware)
2024-03-21 03:31:07 +0100otto_s(~user@p5de2faee.dip0.t-ipconnect.de)
2024-03-21 03:35:46 +0100 <probie> I had a similar undergrad experience; although we had the choice between lex/yacc and alex/happy (i.e syntax-directed compilation, with back-patching to handle jumps)
2024-03-21 03:43:36 +0100 <pie_> my compiler is super shitty. I may or may not make time later to do some other things related to it that Ive never done before
2024-03-21 03:44:32 +0100 <pie_> but yeah, if anyone has any idea what course material this could be referring to, im interested
2024-03-21 03:47:07 +0100 <monochrom> At my university we have one course going through everything from lexing-parsing to unoptimized code generation. There is another course on just code optimization in terms of LLVM (or SUIF a long time ago).
2024-03-21 03:48:17 +0100 <monochrom> The former course may target just a stack machine to sidestep all complications about having limited registers. :)
2024-03-21 03:50:33 +0100 <jackdk> I would have loved to take a course on runtimes and optimised codegen, but the languages course I did get was a great deal of fun and very well taught. (a mix of recursive descent and shift-reduce generators on the parsing front, lambda calculus interpreter, syntax-directed compilation with backpatching to compile a toy turtle-ish language to a stack VM, etc)
2024-03-21 03:51:07 +0100oneeyedalien(~oneeyedal@user/oneeyedalien)
2024-03-21 03:52:29 +0100shapr`(~user@c-24-218-186-89.hsd1.ma.comcast.net) (Ping timeout: 240 seconds)
2024-03-21 03:53:03 +0100 <monochrom> Oh, [principles of] languages is a completely different course. (About programming styles (people say "paradigms" but I follow Shriram Krishnamurthi in refusing to say that) and possibly semantics.)
2024-03-21 03:54:56 +0100 <probie> jackdk: out of curiosity, was Clem the course convener back in your day? I think your iteration of the course was almost identical to mine
2024-03-21 03:55:33 +0100 <jackdk> probie: yeah but Ben L did the bulk of the teaching. He was finishing up his PhD, IIRC, and working on DDC stuff.
2024-03-21 03:55:58 +0100 <pie_> (I am not happy with my university)
2024-03-21 03:56:29 +0100dpren(uid175126@id-175126.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2024-03-21 04:06:52 +0100Inst(~Inst@120.244.192.27)
2024-03-21 04:12:26 +0100machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 264 seconds)
2024-03-21 04:13:30 +0100yin(~yin@user/zero) (Ping timeout: 255 seconds)
2024-03-21 04:16:03 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 272 seconds)
2024-03-21 04:29:26 +0100mmhat(~mmh@p200300f1c706a29eee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.2.1)
2024-03-21 04:33:15 +0100cheater_(~Username@user/cheater)
2024-03-21 04:35:17 +0100cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2024-03-21 04:35:22 +0100cheater_cheater
2024-03-21 04:47:03 +0100td_(~td@i53870939.versanet.de) (Ping timeout: 268 seconds)
2024-03-21 04:48:19 +0100td_(~td@i53870901.versanet.de)
2024-03-21 05:10:13 +0100aforemny_(~aforemny@2001:9e8:6cc4:b700:b374:8656:8acd:5fb8)
2024-03-21 05:11:31 +0100aforemny(~aforemny@2001:9e8:6ce0:5000:e5b7:1d33:c47c:a7a8) (Ping timeout: 256 seconds)
2024-03-21 05:38:09 +0100igemnace(~ian@user/igemnace)
2024-03-21 05:53:28 +0100michalz(~michalz@185.246.207.205)
2024-03-21 06:06:43 +0100 <Axman6> pie_: There's a pipelin es risc-v core written in Clash too, which IIRC is formally verified (and the implementation is honestly quite beautiful)
2024-03-21 06:07:53 +0100 <Axman6> pipelined*
2024-03-21 06:07:54 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2024-03-21 06:12:14 +0100 <Axman6> https://github.com/standardsemiconductor/lion with https://github.com/standardsemiconductor/lion/blob/main/src/Lion/Pipe.hs#L194 being the main implementation of the pipelined core. There's obviously a hell of a lot of other stuff going on, but making it so clear that there are 5 stages in each clock cycle is pretty cute
2024-03-21 06:16:00 +0100 <Axman6> And then looking at the implementation of each stage and how it updates the appropriate rvfi along with each action makes the execution of everything really clear
2024-03-21 06:18:13 +0100rosco(~rosco@175.136.155.53)
2024-03-21 06:34:14 +0100germ(~quassel@user/mipsel3) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2024-03-21 06:35:25 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2024-03-21 06:36:33 +0100germ(~quassel@50.39.179.7)
2024-03-21 06:36:53 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2024-03-21 06:37:49 +0100euleritian(~euleritia@dynamic-176-001-001-217.176.1.pool.telefonica.de)
2024-03-21 06:39:19 +0100rosco(~rosco@175.136.155.53) (Quit: Lost terminal)
2024-03-21 06:40:14 +0100rosco(~rosco@175.136.155.53)
2024-03-21 06:41:15 +0100euleritian(~euleritia@dynamic-176-001-001-217.176.1.pool.telefonica.de) (Read error: Connection reset by peer)
2024-03-21 06:41:32 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-03-21 06:42:56 +0100germ(~quassel@50.39.179.7) (Changing host)
2024-03-21 06:42:56 +0100germ(~quassel@user/mipsel3)
2024-03-21 06:45:26 +0100Square2(~Square4@user/square) (Ping timeout: 264 seconds)
2024-03-21 06:48:02 +0100ell(~ellie@user/ellie) (Quit: Ping timeout (120 seconds))
2024-03-21 07:07:31 +0100bilegeek(~bilegeek@2600:1008:b018:dea:b059:b098:5fdb:bddc) (Quit: Leaving)
2024-03-21 07:14:26 +0100stiell_(~stiell@gateway/tor-sasl/stiell)
2024-03-21 07:20:25 +0100rosco(~rosco@175.136.155.53) (Read error: Connection reset by peer)
2024-03-21 07:24:58 +0100echoreply(~echoreply@45.32.163.16) (Quit: WeeChat 2.8)
2024-03-21 07:25:54 +0100echoreply(~echoreply@45.32.163.16)
2024-03-21 07:27:27 +0100tv(~tv@user/tv) (Ping timeout: 255 seconds)
2024-03-21 07:31:57 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
2024-03-21 07:32:43 +0100euleritian(~euleritia@dynamic-046-114-088-029.46.114.pool.telefonica.de)
2024-03-21 07:35:36 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
2024-03-21 07:40:49 +0100tv(~tv@user/tv)
2024-03-21 07:48:59 +0100bliminse_(~bliminse@user/bliminse) (Quit: leaving)
2024-03-21 07:55:20 +0100lisbeths(uid135845@id-135845.lymington.irccloud.com)
2024-03-21 07:59:04 +0100CiaoSen(~Jura@2a05:5800:29e:b00:e6b9:7aff:fe80:3d03)
2024-03-21 08:00:37 +0100acidjnk(~acidjnk@p200300d6e70d3f0395d202079165b1b5.dip0.t-ipconnect.de)
2024-03-21 08:02:27 +0100mei(~mei@user/mei) (Ping timeout: 252 seconds)
2024-03-21 08:06:24 +0100zetef(~quassel@95.77.17.251)
2024-03-21 08:06:26 +0100mei(~mei@user/mei)
2024-03-21 08:13:25 +0100bliminse(~bliminse@user/bliminse)
2024-03-21 08:21:24 +0100oneeyedalien(~oneeyedal@user/oneeyedalien) (Remote host closed the connection)
2024-03-21 08:21:47 +0100oneeyedalien(~oneeyedal@user/oneeyedalien)
2024-03-21 08:27:43 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2024-03-21 08:34:13 +0100chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2024-03-21 08:35:14 +0100chiselfuse(~chiselfus@user/chiselfuse)
2024-03-21 08:35:59 +0100rosco(~rosco@175.136.155.53)
2024-03-21 08:37:02 +0100vpan(~vpan@212.117.1.172)
2024-03-21 08:37:44 +0100jargon(~jargon@154.sub-174-205-226.myvzw.com) (Remote host closed the connection)
2024-03-21 08:41:40 +0100econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2024-03-21 08:47:07 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-03-21 08:47:13 +0100euleritian(~euleritia@dynamic-046-114-088-029.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2024-03-21 08:47:31 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-03-21 08:48:39 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-03-21 08:53:22 +0100machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-03-21 09:01:34 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-03-21 09:03:47 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-03-21 09:03:53 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-03-21 09:04:08 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-03-21 09:13:37 +0100jargon(~jargon@154.sub-174-205-226.myvzw.com)
2024-03-21 09:14:24 +0100tzh(~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: zzz)
2024-03-21 09:15:54 +0100jargon(~jargon@154.sub-174-205-226.myvzw.com) (Remote host closed the connection)
2024-03-21 09:32:58 +0100monochrom(trebla@216.138.220.146) (Quit: ZNC 1.8.2+deb3.1 - https://znc.in)
2024-03-21 09:35:21 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-03-21 09:36:33 +0100oo_miguel(~Thunderbi@78-11-181-16.static.ip.netia.com.pl)
2024-03-21 09:37:30 +0100notzmv(~daniel@user/notzmv) (Ping timeout: 268 seconds)
2024-03-21 09:37:35 +0100sayola(~sayola@ip-109-42-241-236.web.vodafone.de) (Read error: Connection reset by peer)
2024-03-21 09:38:25 +0100monochrom(trebla@216.138.220.146)
2024-03-21 09:39:41 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 272 seconds)
2024-03-21 09:48:43 +0100gmg(~user@user/gehmehgeh)
2024-03-21 09:48:53 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2024-03-21 09:49:34 +0100euleritian(~euleritia@dynamic-046-114-088-029.46.114.pool.telefonica.de)
2024-03-21 10:01:43 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2024-03-21 10:02:59 +0100euleritian(~euleritia@dynamic-046-114-088-029.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2024-03-21 10:03:17 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-03-21 10:03:18 +0100img(~img@user/img)
2024-03-21 10:07:34 +0100oneeyedalien(~oneeyedal@user/oneeyedalien) (Quit: Leaving)
2024-03-21 10:10:11 +0100elkcl(~elkcl@broadband-178-140-136-65.ip.moscow.rt.ru) (Ping timeout: 268 seconds)
2024-03-21 10:10:19 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-03-21 10:10:57 +0100euleritian(~euleritia@77.22.252.56)
2024-03-21 10:14:54 +0100lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-03-21 10:16:49 +0100elkcl(~elkcl@broadband-178-140-136-65.ip.moscow.rt.ru)
2024-03-21 10:18:26 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2024-03-21 10:19:23 +0100zetef(~quassel@95.77.17.251) (Ping timeout: 260 seconds)
2024-03-21 10:23:23 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
2024-03-21 10:23:32 +0100 <absence> Is there something like sequenceA for a subset of monad transformers, similar to how the mmorph library provides analogies to fmap and join?
2024-03-21 10:24:37 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-03-21 10:26:55 +0100chele(~chele@user/chele)
2024-03-21 10:38:19 +0100 <tomsmeding> absence: what would its type signature be?
2024-03-21 10:39:19 +0100igemnace(~ian@user/igemnace) (Read error: Connection reset by peer)
2024-03-21 10:41:10 +0100 <absence> tomsmeding: Probably something like "t1 (t2 m) x -> t2 (t1 m) x".
2024-03-21 10:42:05 +0100 <tomsmeding> https://en.wikipedia.org/wiki/Monad_transformer has the note that "monad transformations are usually not commutative"
2024-03-21 10:43:39 +0100 <tomsmeding> @unmtl StateT s Maybe a
2024-03-21 10:43:40 +0100 <lambdabot> s -> Maybe (a, s)
2024-03-21 10:43:46 +0100 <tomsmeding> @unmtl MaybeT (State s) a
2024-03-21 10:43:46 +0100 <lambdabot> s -> (Maybe a, s)
2024-03-21 10:43:57 +0100 <tomsmeding> @djinn (s -> Maybe (a, s)) -> s -> (Maybe a, s)
2024-03-21 10:43:57 +0100 <lambdabot> f a b =
2024-03-21 10:43:58 +0100 <lambdabot> case a b of
2024-03-21 10:43:58 +0100 <lambdabot> Nothing -> (Nothing, b)
2024-03-21 10:43:58 +0100 <lambdabot> Just (c, d) -> (Just c, d)
2024-03-21 10:44:09 +0100 <tomsmeding> @djinn (s -> (Maybe a, s)) -> s -> Maybe (a, s)
2024-03-21 10:44:10 +0100 <lambdabot> f a b =
2024-03-21 10:44:10 +0100 <lambdabot> case a b of
2024-03-21 10:44:10 +0100 <lambdabot> (c, d) -> case c of
2024-03-21 10:44:10 +0100 <lambdabot> Nothing -> Nothing
2024-03-21 10:44:10 +0100 <lambdabot> Just e -> Just (e, d)
2024-03-21 10:44:40 +0100 <ncf> you may have lax commutation in certain cases though
2024-03-21 10:44:45 +0100 <tomsmeding> hm yeah
2024-03-21 10:44:58 +0100 <absence> tomsmeding: Would it have to be, though? Are things you can sequenceA always commutative?
2024-03-21 10:45:01 +0100tomsmedingdoesn't know what "lax" means but replaces it with the intuitive notion of "almost" mentally
2024-03-21 10:45:06 +0100 <tomsmeding> yeah good point
2024-03-21 10:45:27 +0100 <ncf> lax is when you only have a map instead of an isomorphism
2024-03-21 10:45:40 +0100 <tomsmeding> I see
2024-03-21 10:45:43 +0100 <ncf> i.e. something like a distributive law
2024-03-21 10:45:45 +0100 <absence> I fully expect the "meaning" to change after such a hypotyhetical transformer analogy of sequenceA.
2024-03-21 10:46:44 +0100zetef(~quassel@95.77.17.251)
2024-03-21 10:46:48 +0100pandeyan(~pandeyan@135-180-55-126.fiber.dynamic.sonic.net) (Quit: ZNC 1.8.2 - https://znc.in)
2024-03-21 10:47:14 +0100anpad(~pandeyan@user/anpad)
2024-03-21 10:47:15 +0100 <ncf> i guess this isn't quite what you asked for https://hackage.haskell.org/package/MonadCompose-0.8.2.0/docs/Control-Monad-Distributive.html
2024-03-21 10:48:46 +0100 <absence> ncf: That one did show up in my web search. Note that the entire module has been removed in the current version of the library.
2024-03-21 10:50:53 +0100 <ncf> do you have a use case in mind?
2024-03-21 10:51:41 +0100anpad(~pandeyan@user/anpad) (Ping timeout: 240 seconds)
2024-03-21 10:52:58 +0100anpad(~pandeyan@user/anpad)
2024-03-21 10:55:44 +0100danse-nr3(~danse@fi-19-201-172.service.infuturo.it)
2024-03-21 10:56:10 +0100ft(~ft@p508db238.dip0.t-ipconnect.de) (Quit: leaving)
2024-03-21 10:57:30 +0100igemnace(~ian@user/igemnace)
2024-03-21 11:01:02 +0100danse-nr3(~danse@fi-19-201-172.service.infuturo.it) (Remote host closed the connection)
2024-03-21 11:01:26 +0100danse-nr3(~danse@fi-19-201-172.service.infuturo.it)
2024-03-21 11:10:58 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2024-03-21 11:11:22 +0100 <absence> ncf: Nothing specifically, just rearrange transformer stacks so they can be used together.
2024-03-21 11:20:23 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds)
2024-03-21 11:21:11 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2024-03-21 11:21:58 +0100ubert(~Thunderbi@2a02:8109:ab8a:5a00:ab32:1f38:1875:b1fb)
2024-03-21 11:25:10 +0100sayola(~sayola@ip-109-42-241-236.web.vodafone.de)
2024-03-21 11:25:39 +0100CiaoSen(~Jura@2a05:5800:29e:b00:e6b9:7aff:fe80:3d03) (Ping timeout: 260 seconds)
2024-03-21 11:32:19 +0100JamesMowery8(~JamesMowe@ip98-171-80-211.ph.ph.cox.net)
2024-03-21 11:33:34 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2024-03-21 11:34:02 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2024-03-21 11:34:11 +0100JamesMowery(~JamesMowe@ip98-171-80-211.ph.ph.cox.net) (Ping timeout: 264 seconds)
2024-03-21 11:34:11 +0100JamesMowery8JamesMowery
2024-03-21 11:36:07 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-03-21 11:41:27 +0100euleritian(~euleritia@77.22.252.56) (Ping timeout: 268 seconds)
2024-03-21 11:42:29 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-03-21 11:46:48 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2024-03-21 11:47:00 +0100Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 268 seconds)
2024-03-21 11:47:10 +0100notzmv(~daniel@user/notzmv)
2024-03-21 11:47:16 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2024-03-21 11:51:58 +0100kuribas(~user@2a02:1808:2:45fc:fed1:b8fe:efb5:8951)
2024-03-21 11:59:16 +0100zetef(~quassel@95.77.17.251) (Ping timeout: 255 seconds)
2024-03-21 12:02:53 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 240 seconds)
2024-03-21 12:08:34 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
2024-03-21 12:14:53 +0100mei(~mei@user/mei) (Remote host closed the connection)
2024-03-21 12:18:16 +0100mmhat(~mmh@p200300f1c706a29eee086bfffe095315.dip0.t-ipconnect.de)
2024-03-21 12:20:48 +0100mei(~mei@user/mei)
2024-03-21 12:22:00 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-03-21 12:22:20 +0100tv(~tv@user/tv) (Ping timeout: 260 seconds)
2024-03-21 12:32:32 +0100Feuermagier(~Feuermagi@user/feuermagier)
2024-03-21 12:32:49 +0100__monty__(~toonn@user/toonn)
2024-03-21 12:34:29 +0100destituion(~destituio@2a02:2121:655:c95b:dfe:63c3:c9bc:b707) (Ping timeout: 272 seconds)
2024-03-21 12:35:32 +0100destituion(~destituio@85.221.111.174)
2024-03-21 12:35:40 +0100tv(~tv@user/tv)
2024-03-21 12:36:57 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 268 seconds)
2024-03-21 12:42:24 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2024-03-21 12:43:57 +0100euleritian(~euleritia@dynamic-046-114-088-029.46.114.pool.telefonica.de)
2024-03-21 12:48:46 +0100kuribas(~user@2a02:1808:2:45fc:fed1:b8fe:efb5:8951) (Ping timeout: 255 seconds)
2024-03-21 12:48:58 +0100rosco(~rosco@175.136.155.53) (Quit: Lost terminal)
2024-03-21 12:50:45 +0100euleritian(~euleritia@dynamic-046-114-088-029.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2024-03-21 12:51:03 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-03-21 12:55:02 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-03-21 12:57:47 +0100zetef(~quassel@95.77.17.251)
2024-03-21 13:01:05 +0100rosco(~rosco@175.136.155.53)
2024-03-21 13:03:51 +0100ddellacosta(~ddellacos@ool-44c73d16.dyn.optonline.net) (Ping timeout: 252 seconds)
2024-03-21 13:07:47 +0100Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 264 seconds)
2024-03-21 13:11:34 +0100zetef(~quassel@95.77.17.251) (Remote host closed the connection)
2024-03-21 13:13:20 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2024-03-21 13:20:45 +0100xff0x(~xff0x@ai082039.d.east.v6connect.net)
2024-03-21 13:22:49 +0100danse-nr3(~danse@fi-19-201-172.service.infuturo.it) (Ping timeout: 256 seconds)
2024-03-21 13:30:23 +0100ph88(~ph88@2a02:8109:9e26:c800:c8f0:ad84:e72a:2ac6)
2024-03-21 13:33:49 +0100shapr(~user@2603:3005:b31:e100:ec5e:5cee:2493:7f78)
2024-03-21 13:57:23 +0100CiaoSen(~Jura@2a05:5800:29e:b00:e6b9:7aff:fe80:3d03)
2024-03-21 13:57:25 +0100danse-nr3(~danse@151.47.194.94)
2024-03-21 13:57:43 +0100danse-nr3(~danse@151.47.194.94) (Remote host closed the connection)
2024-03-21 13:58:06 +0100danse-nr3(~danse@151.47.194.94)
2024-03-21 13:58:39 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2024-03-21 14:00:40 +0100mc47(~mc47@xmonad/TheMC47)
2024-03-21 14:02:00 +0100rosco(~rosco@175.136.155.53) (Quit: Lost terminal)
2024-03-21 14:12:55 +0100shapr(~user@2603:3005:b31:e100:ec5e:5cee:2493:7f78) (Quit: reboot)
2024-03-21 14:15:11 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds)
2024-03-21 14:16:45 +0100euleritian(~euleritia@dynamic-046-114-088-029.46.114.pool.telefonica.de)
2024-03-21 14:22:38 +0100__monty__(~toonn@user/toonn) (Ping timeout: 264 seconds)
2024-03-21 14:30:44 +0100mmhat(~mmh@p200300f1c706a29eee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2024-03-21 14:31:08 +0100mmhat(~mmh@p200300f1c706a2c7ee086bfffe095315.dip0.t-ipconnect.de)
2024-03-21 14:31:36 +0100notzmv(~daniel@user/notzmv) (Ping timeout: 260 seconds)
2024-03-21 14:37:26 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2024-03-21 14:38:00 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2024-03-21 14:40:12 +0100mei(~mei@user/mei) (Remote host closed the connection)
2024-03-21 14:42:39 +0100mei(~mei@user/mei)
2024-03-21 14:47:14 +0100mc47(~mc47@xmonad/TheMC47) (Ping timeout: 264 seconds)
2024-03-21 14:50:11 +0100mc47(~mc47@xmonad/TheMC47)
2024-03-21 14:57:14 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2024-03-21 14:57:38 +0100mc47(~mc47@xmonad/TheMC47)
2024-03-21 15:06:09 +0100euleritian(~euleritia@dynamic-046-114-088-029.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2024-03-21 15:06:29 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-03-21 15:10:39 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-03-21 15:10:51 +0100turlando(~turlando@user/turlando) (Remote host closed the connection)
2024-03-21 15:12:06 +0100turlando(~turlando@user/turlando)
2024-03-21 15:12:41 +0100mxs(~mxs@user/mxs)
2024-03-21 15:16:17 +0100Square2(~Square4@user/square)
2024-03-21 15:17:02 +0100vpan(~vpan@212.117.1.172) (Quit: Leaving.)
2024-03-21 15:17:14 +0100destituion(~destituio@85.221.111.174) (Ping timeout: 264 seconds)
2024-03-21 15:20:23 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2024-03-21 15:23:19 +0100euleritian(~euleritia@dynamic-046-114-088-029.46.114.pool.telefonica.de)
2024-03-21 15:25:09 +0100destituion(~destituio@2a02:2121:655:c95b:4730:b7f0:4100:2e91)
2024-03-21 15:38:08 +0100Sgeo(~Sgeo@user/sgeo)
2024-03-21 15:41:35 +0100danse-nr3(~danse@151.47.194.94) (Ping timeout: 255 seconds)
2024-03-21 15:48:37 +0100danse-nr3(~danse@151.47.194.94)
2024-03-21 15:48:45 +0100acidjnk(~acidjnk@p200300d6e70d3f0395d202079165b1b5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2024-03-21 15:51:58 +0100AlexNoo_(~AlexNoo@178.34.161.9)
2024-03-21 15:55:02 +0100AlexZenon(~alzenon@178.34.160.143) (Ping timeout: 264 seconds)
2024-03-21 15:55:49 +0100AlexNoo(~AlexNoo@178.34.160.143) (Ping timeout: 256 seconds)
2024-03-21 15:57:14 +0100yin(~yin@user/zero)
2024-03-21 15:57:38 +0100leungbk(~user@104-032-221-175.res.spectrum.com) (Ping timeout: 252 seconds)
2024-03-21 15:57:53 +0100zetef(~quassel@5.2.182.99)
2024-03-21 15:59:00 +0100mei(~mei@user/mei) (Remote host closed the connection)
2024-03-21 16:01:35 +0100mei(~mei@user/mei)
2024-03-21 16:05:04 +0100AlexZenon(~alzenon@178.34.161.9)
2024-03-21 16:11:14 +0100CiaoSen(~Jura@2a05:5800:29e:b00:e6b9:7aff:fe80:3d03) (Ping timeout: 264 seconds)
2024-03-21 16:12:39 +0100euleritian(~euleritia@dynamic-046-114-088-029.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2024-03-21 16:12:58 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-03-21 16:13:36 +0100yin(~yin@user/zero) (Ping timeout: 252 seconds)
2024-03-21 16:30:04 +0100econo_(uid147250@id-147250.tinside.irccloud.com)
2024-03-21 16:36:21 +0100leungbk(~user@104-032-221-175.res.spectrum.com)
2024-03-21 16:37:02 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 264 seconds)
2024-03-21 16:37:21 +0100justsomeguy(~justsomeg@user/justsomeguy)
2024-03-21 16:44:50 +0100leungbk(~user@104-032-221-175.res.spectrum.com) (Ping timeout: 264 seconds)
2024-03-21 16:51:26 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
2024-03-21 16:52:26 +0100euleritian(~euleritia@dynamic-046-114-088-029.46.114.pool.telefonica.de)
2024-03-21 16:55:27 +0100tzh(~tzh@c-73-164-206-160.hsd1.or.comcast.net)
2024-03-21 16:59:17 +0100myme(~myme@2a01:799:d5c:5f00:4bbe:1e12:b409:f6da) (Ping timeout: 256 seconds)
2024-03-21 16:59:58 +0100myme(~myme@2a01:799:d5c:5f00:bb0e:9829:92b0:ed75)
2024-03-21 17:01:34 +0100a51(a51@gateway/vpn/protonvpn/a51)
2024-03-21 17:05:04 +0100oneeyedalien(~oneeyedal@user/oneeyedalien)
2024-03-21 17:05:10 +0100oneeyedalien(~oneeyedal@user/oneeyedalien) (Max SendQ exceeded)
2024-03-21 17:06:39 +0100oneeyedalien(~oneeyedal@user/oneeyedalien)
2024-03-21 17:07:23 +0100mei(~mei@user/mei) (Remote host closed the connection)
2024-03-21 17:09:22 +0100oneeyedalien(~oneeyedal@user/oneeyedalien) (Max SendQ exceeded)
2024-03-21 17:09:48 +0100mei(~mei@user/mei)
2024-03-21 17:10:23 +0100euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-03-21 17:10:40 +0100oneeyedalien(~oneeyedal@user/oneeyedalien)
2024-03-21 17:14:06 +0100yin_(~yin@user/zero) (Ping timeout: 252 seconds)
2024-03-21 17:15:04 +0100igemnace(~ian@user/igemnace) (Quit: WeeChat 4.2.1)
2024-03-21 17:19:23 +0100euphores(~SASL_euph@user/euphores)
2024-03-21 17:20:51 +0100yin(~yin@user/zero)
2024-03-21 17:20:55 +0100__monty__(~toonn@user/toonn)
2024-03-21 17:22:47 +0100machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 268 seconds)
2024-03-21 17:25:45 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.1.1)
2024-03-21 17:28:03 +0100 <pounce> i just saw the new release! congrats
2024-03-21 17:28:16 +0100 <pounce> since there are config changes: i hope it's alright if i propose a feature
2024-03-21 17:28:40 +0100 <pounce> it would be nice if you could specify password in the config file by a command, instead of by a string. This way secrets won't be stored inside your configuration file, and you can store it publically
2024-03-21 17:28:48 +0100 <pounce> crap
2024-03-21 17:28:57 +0100 <pounce> sorry i clicked one buffer down this isn't haskell related
2024-03-21 17:34:59 +0100acidjnk(~acidjnk@p200300d6e70d3f0395d202079165b1b5.dip0.t-ipconnect.de)
2024-03-21 17:41:50 +0100nickhs(~nickhs@2602:fb65:0:100:8ea7:48ef:4186:4caa)
2024-03-21 17:43:04 +0100 <nickhs> hiya, I'm trying to refactor some code into typeclasses. I have my little RPC handler at https://play.haskell.org/saved/zYvAhohq but I can't figure out how to solve the type error at myRoutes - also interested in style advice since this feels like a translation of how i'd do it in java. I tried changing routehandler too to `data RouteHolder =
2024-03-21 17:43:05 +0100 <nickhs> forall a. Route a => RouteHolder a` but that seemed to create even more problems
2024-03-21 17:46:40 +0100danse-nr3(~danse@151.47.194.94) (Ping timeout: 260 seconds)
2024-03-21 17:47:19 +0100yin(~yin@user/zero) (Ping timeout: 256 seconds)
2024-03-21 17:47:20 +0100mc47(~mc47@xmonad/TheMC47) (Read error: Connection reset by peer)
2024-03-21 17:49:06 +0100 <geekosaur> HList is a thing, but often not worth the complexity
2024-03-21 17:49:32 +0100 <geekosaur> if you really want to go this route (pun not intended), you might want to look at how Servant does it
2024-03-21 17:50:29 +0100 <ski> (hm, could you paste that on a paste site that doesn't require Javascript to read the source ?)
2024-03-21 17:50:48 +0100 <mxs> nickhs: I would just make a data MyRoutes = InitRoute | InitRequest, and specialize based on the route instead of ignoring the argument in instance Route MyRoutes like you're doing it now
2024-03-21 17:51:25 +0100 <nickhs> servant is a good idea! let me see what they're doing. I managed to get something going like this https://play.haskell.org/saved/c0iDvGJK
2024-03-21 17:51:42 +0100 <nickhs> ski whats your preferred site? I took play.haskell.org from the topic
2024-03-21 17:52:15 +0100 <ski> @where paste
2024-03-21 17:52:15 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2024-03-21 17:52:19 +0100 <ski> should be fine
2024-03-21 17:52:51 +0100 <nickhs> ski https://paste.tomsmeding.com/qXlomfhi
2024-03-21 17:53:52 +0100adanwan_(~adanwan@gateway/tor-sasl/adanwan)
2024-03-21 17:53:55 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2024-03-21 17:54:27 +0100mc47(~mc47@xmonad/TheMC47)
2024-03-21 17:54:32 +0100 <nickhs> mxs I want to avoid doing that since the list of routes isn't known at compile time, but only at runtime based on configuration of the server
2024-03-21 17:54:58 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 260 seconds)
2024-03-21 17:55:54 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 260 seconds)
2024-03-21 17:56:54 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2024-03-21 17:58:41 +0100 <mxs> nickhs: construct a suitable [MyRoutes] then?
2024-03-21 18:00:06 +0100chiselfuse(~chiselfus@user/chiselfuse) (Ping timeout: 260 seconds)
2024-03-21 18:00:37 +0100jmdaemon(~jmdaemon@user/jmdaemon)
2024-03-21 18:01:09 +0100 <probie> nickhs: Perhaps using a gadt and doing something like https://play.haskell.org/saved/GHGpm6DD ?
2024-03-21 18:01:45 +0100chiselfuse(~chiselfus@user/chiselfuse)
2024-03-21 18:01:58 +0100vnogueira(~vnogueira@user/vnogueira) (Ping timeout: 260 seconds)
2024-03-21 18:01:59 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2024-03-21 18:02:52 +0100vnogueira(~vnogueira@user/vnogueira)
2024-03-21 18:03:23 +0100 <nickhs> probie: oh I'm not familiar with GADTs or this syntax but this looks clean - lemme read
2024-03-21 18:03:25 +0100danse-nr3(~danse@151.47.135.74)
2024-03-21 18:04:11 +0100 <mxs> I was trying to understand the relationship between nondeterminism and Alternative -- it seems effect systems (freer-simple, fused-effects) claim that nondet. operations are encapsulated by the Alternative class
2024-03-21 18:04:24 +0100 <mxs> but in "the essence of MonadPlus and Alternative" Schrijvers et al claim that Alternative is left-biased disjunction semantics rather than non-determinism, and what we really want is MonadPlus
2024-03-21 18:04:28 +0100 <ski> nickhs : there's no instances for `GetContext' ? `requestKey = requestKey',`requestParse = requestParse',`handle = handle',`responseSerialize = responseSerialize' will loop, perhaps you meant like `requestKey (RouteHolder route) = requestKey route',&c. ? (also you have no instances of `GetRequest',`GetResponse',`GetContext' for `Routeholder')
2024-03-21 18:04:28 +0100ubert(~Thunderbi@2a02:8109:ab8a:5a00:ab32:1f38:1875:b1fb) (Quit: ubert)
2024-03-21 18:04:38 +0100chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2024-03-21 18:04:39 +0100vnogueira(~vnogueira@user/vnogueira) (Remote host closed the connection)
2024-03-21 18:04:40 +0100 <mxs> they give Maybe as an example of something that's not a MonadPlus, but I don't understand why Alternative is a wrong model for nondeterminism
2024-03-21 18:04:58 +0100vnogueira(~vnogueira@user/vnogueira)
2024-03-21 18:05:04 +0100 <mxs> any ideas? I also came up with this Applicative instance to model nondeterminism:
2024-03-21 18:05:12 +0100 <mxs> data NonDet a = Certainly a | Possibly [NonDet a]
2024-03-21 18:05:17 +0100danse-nr3(~danse@151.47.135.74) (Remote host closed the connection)
2024-03-21 18:05:22 +0100 <mxs> turns out this is the "Forest" type from that paper
2024-03-21 18:05:41 +0100 <mxs> and they say this is isomorphic to the free nondeterminism monad (which is similar to the free alternative from Kmett's free, but apparently a different representation) _on the identitiy functor_
2024-03-21 18:05:42 +0100danse-nr3(~danse@151.47.135.74)
2024-03-21 18:05:42 +0100 <ski> nickhs : "the list of routes isn't known at compile time, but only at runtime based on configuration of the server" -- is the possible form of each route known statically ? perhaps recursively ?
2024-03-21 18:05:57 +0100 <mxs> what is the significance of the identity functor here? how can I bridge the intuition gap between Alt f a and my NonDet a type?
2024-03-21 18:06:11 +0100danse-nr3(~danse@151.47.135.74) (Remote host closed the connection)
2024-03-21 18:06:46 +0100chiselfuse(~chiselfus@user/chiselfuse)
2024-03-21 18:06:49 +0100 <nickhs> ski that is a good point it will loop - I didn't actually run the code but I can see that. GetContext is for me to figure out later thats why its missing
2024-03-21 18:07:11 +0100 <nickhs> @ski not sure what you mean by form here?
2024-03-21 18:07:11 +0100 <lambdabot> Maybe you meant: wiki src ask
2024-03-21 18:08:21 +0100 <ski> nickhs : it's not clear to me why you need *types* `InitRoute',`InitRequest',`InitResponse',`ReadRoute',`ReadRequest',`ReadResponse',&c. .. also it's not clear to me that you want to use type classes
2024-03-21 18:11:22 +0100chele(~chele@user/chele) (Remote host closed the connection)
2024-03-21 18:11:23 +0100 <ski> would something like `data Route = forall request response. MkRoute { requestKey :: String,requestParse :: String -> request,handle :: request -> response,responseSerialize :: response -> String }' work ?
2024-03-21 18:11:25 +0100jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 255 seconds)
2024-03-21 18:12:51 +0100nickhs(~nickhs@2602:fb65:0:100:8ea7:48ef:4186:4caa) (Quit: Client closed)
2024-03-21 18:13:05 +0100nickhs(~nickhs@2602:fb65:0:100:8ea7:48ef:4186:4caa)
2024-03-21 18:13:20 +0100 <ski> are there going to be other operations which need to interact with `GetRequest',`GetResponse' (and `GetContext'), specifically depending on the particular `type instance's (and not just on the `type family's themselves) ?
2024-03-21 18:13:28 +0100 <Inst> btw, there is no way to declare implementations within a typeclass, right?
2024-03-21 18:13:49 +0100 <Inst> i just found the hack with type families that allows you to close a typeclass
2024-03-21 18:14:30 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
2024-03-21 18:14:34 +0100pastly(~pastly@gateway/tor-sasl/pastly) (Ping timeout: 260 seconds)
2024-03-21 18:14:38 +0100 <geekosaur> you mean, provide specific instances within a class declaration? no
2024-03-21 18:15:06 +0100 <nickhs> ski potentially, such as logging, if I lock them in the MkRoute I guess I can't access them since they will be opaque?
2024-03-21 18:15:23 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2024-03-21 18:15:24 +0100pastly(~pastly@gateway/tor-sasl/pastly)
2024-03-21 18:16:46 +0100 <ski> "them" being ?
2024-03-21 18:17:05 +0100 <Inst> actually, you can do it by using superclasses alone
2024-03-21 18:17:18 +0100 <nickhs>  ski them being the request and response object (ie InitRequest, InitResponse)
2024-03-21 18:17:39 +0100 <Inst> i think you should be able to do it, i.e, hide the superclass, expose the subclass
2024-03-21 18:18:28 +0100 <ski> well, `InitRequest',`InitResponse' doesn't contain any information, and ditto for `ReadRequest' and `ReadResponse' .. but perhaps they will later, and you're just mocking them for the time being
2024-03-21 18:18:52 +0100ht_(~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
2024-03-21 18:20:14 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Ping timeout: 264 seconds)
2024-03-21 18:20:14 +0100ht__ht
2024-03-21 18:20:16 +0100shapr(~user@c-24-218-186-89.hsd1.ma.comcast.net)
2024-03-21 18:21:21 +0100 <ski> but yes, with existential, they would be inaccessible from outside (and hence the `Route' type i suggested would be equivalent to just `data Route = MkRoute { requestKey :: String,requestParseHandleSerialize :: String -> String }', which was why i asked about whether you were going to access those `type instance's ("non-opaquely"))
2024-03-21 18:23:11 +0100AlexNoo_AlexNoo
2024-03-21 18:23:12 +0100nickhs(~nickhs@2602:fb65:0:100:8ea7:48ef:4186:4caa) (Quit: Client closed)
2024-03-21 18:23:23 +0100nickhs(~nickhs@2602:fb65:0:100:8ea7:48ef:4186:4caa)
2024-03-21 18:27:30 +0100 <probie> Perhaps my understanding is off, but I assume in the intended use case, the person defining routes may not be the library author
2024-03-21 18:29:02 +0100 <ski> i would try to go for a "record of methods" approach, probably, unless i needed something else
2024-03-21 18:29:36 +0100 <ski> (so the kinds of routes would be open, not fixed statically)
2024-03-21 18:30:33 +0100rvalue(~rvalue@user/rvalue) (Ping timeout: 252 seconds)
2024-03-21 18:30:43 +0100jmdaemon(~jmdaemon@user/jmdaemon)
2024-03-21 18:39:07 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2024-03-21 18:39:10 +0100 <nickhs> probie your understanding is correct, also I love your answer. It's weird to me that if I try create an `unwrap :: RouteHolder -> r` function that doesn't work but using the destructing in the case statement does (using a `let` or anything else makes the compiler unhappy too)
2024-03-21 18:40:07 +0100 <nickhs> ski I think that will work let me try refactoring, I do recall trying something similar and hitting a roadblock - it was to do with the relationship between InitRequest and InitResponse which made me reach for type families but I don't exactly recall
2024-03-21 18:40:20 +0100zetef(~quassel@5.2.182.99) (Remote host closed the connection)
2024-03-21 18:40:52 +0100rvalue(~rvalue@user/rvalue)
2024-03-21 18:41:35 +0100nickhs(~nickhs@2602:fb65:0:100:8ea7:48ef:4186:4caa) (Quit: Client closed)
2024-03-21 18:42:15 +0100 <ski> nickhs : i guess you wanted `unwrap :: RouteHolder -> (exists r. Route r *> r)' .. but there's no `exists' (or `*>') in Haskell. `withRoute :: RouteHolder -> (forall r. Route r => r -> o) -> o' would work, though
2024-03-21 18:43:19 +0100 <ski> @where existential-antipattern
2024-03-21 18:43:19 +0100 <lambdabot> "Haskell Antipattern: Existential Typeclass" by Luke Palmer at <https://web.archive.org/web/20220121105027/https://lukepalmer.wordpress.com/2010/01/24/haskell-ant…>
2024-03-21 18:43:24 +0100 <ski> might apply in your case
2024-03-21 18:43:36 +0100 <ski> (or, simply, overusing type classes)
2024-03-21 18:44:30 +0100 <ski> oh .. they left
2024-03-21 18:47:50 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 264 seconds)
2024-03-21 18:48:07 +0100Joao[3](~Joao003@190.108.99.67)
2024-03-21 18:48:38 +0100ph88(~ph88@2a02:8109:9e26:c800:c8f0:ad84:e72a:2ac6) (Remote host closed the connection)
2024-03-21 18:48:44 +0100nickhs(~nickhs@2602:fb65:0:100:8ea7:48ef:4186:4caa)
2024-03-21 18:50:36 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
2024-03-21 18:55:41 +0100briandaed(~root@185.234.210.211.r.toneticgroup.pl)
2024-03-21 18:56:54 +0100euleritian(~euleritia@dynamic-046-114-088-029.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
2024-03-21 18:58:46 +0100mei(~mei@user/mei) (Remote host closed the connection)
2024-03-21 19:01:12 +0100mei(~mei@user/mei)
2024-03-21 19:01:32 +0100 <probie> personally, I think for what they wanted, they'd have been better off with a `Map String (String -> Either ReqParseError (IO String))` (assuming that the router handlers aren't all going to be pure functions)
2024-03-21 19:01:46 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-03-21 19:02:09 +0100 <probie> but the best way to learn is to make mistakes
2024-03-21 19:03:38 +0100mima(~mmh@aftr-62-216-211-224.dynamic.mnet-online.de)
2024-03-21 19:04:00 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2024-03-21 19:04:43 +0100justsomeguy(~justsomeg@user/justsomeguy)
2024-03-21 19:06:10 +0100 <probie> nickhs: whilst you were gone, ski suggested that you look at
2024-03-21 19:06:12 +0100 <probie> @where existential-antipattern
2024-03-21 19:06:12 +0100 <lambdabot> "Haskell Antipattern: Existential Typeclass" by Luke Palmer at <https://web.archive.org/web/20220121105027/https://lukepalmer.wordpress.com/2010/01/24/haskell-ant…>
2024-03-21 19:08:08 +0100 <nickhs> ah thank you, and yeah probie that's likely the type I wanted since it's effectively capturing all the failure modes in each "step" of the route pipeline
2024-03-21 19:09:43 +0100 <ski> nickhs : anyway, you mention "either" in relation to `requestParse', and have a commented out version of `handle' that also threads a context through .. so it's a bit hard to know what the more full-fledged, non-mocked, system, is supposed to look like
2024-03-21 19:12:54 +0100 <ski> nickhs : in OO, you'll often reach for defining a new class. in Haskell, that wouldn't necessarily correspond to defining a new data type, and probably even less a new type class. and existentials shouldn't really be reached for, unless you actually need them, since they bring complications
2024-03-21 19:14:02 +0100 <nickhs> I agree, I'm going to refactor using the MkRoute pattern you showed above and see where I get stuck - I like how it's open rather than creating a sum type
2024-03-21 19:14:54 +0100 <nickhs> but its nice to know that existentials exist, and thank you probie and ski for showing me the moves to unwrap the inner route from the RouteHolder (no let or where clauses, use case destructure or withRoute)
2024-03-21 19:17:30 +0100 <ski> (btw, i tend to dislike naming a data constructor the same as its associated type constructor. that's why i went with `MkRoute')
2024-03-21 19:17:30 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-03-21 19:17:52 +0100 <ski> (another similar option would be `RouteOf')
2024-03-21 19:18:00 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-03-21 19:18:51 +0100 <monochrom> @quote monochrom river
2024-03-21 19:18:51 +0100 <lambdabot> monochrom says: You are to send a boolean, a character, and an integer across the river. The list for transporting across the river can hold 3 items, in fact any number of items you like, but they
2024-03-21 19:18:51 +0100 <lambdabot> must all be of the same type. On the bright side, after crossing the river, the boolean, the character, and the integer need only be put on show. How many trips do you need? Solution: one trip, [
2024-03-21 19:18:51 +0100 <lambdabot> show the_boolean, show the_character, show the_integer]
2024-03-21 19:22:23 +0100target_i(~target_i@user/target-i/x-6023099)
2024-03-21 19:23:09 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-03-21 19:23:54 +0100foul_owl(~kerry@157.97.134.168) (Ping timeout: 252 seconds)
2024-03-21 19:23:54 +0100euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-03-21 19:25:31 +0100jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 272 seconds)
2024-03-21 19:26:48 +0100nickhs(~nickhs@2602:fb65:0:100:8ea7:48ef:4186:4caa) (Ping timeout: 250 seconds)
2024-03-21 19:29:19 +0100mik3d(~mik3d@pool-173-61-131-199.cmdnnj.fios.verizon.net)
2024-03-21 19:31:57 +0100Achylles(~Achylles_@45.182.57.126)
2024-03-21 19:33:07 +0100mechap(~mechap@user/mechap)
2024-03-21 19:33:13 +0100jmdaemon(~jmdaemon@user/jmdaemon)
2024-03-21 19:34:12 +0100raym(~ray@user/raym) (Ping timeout: 255 seconds)
2024-03-21 19:35:27 +0100waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-03-21 19:37:49 +0100foul_owl(~kerry@185.219.141.162)
2024-03-21 19:41:07 +0100raym(~ray@user/raym)
2024-03-21 19:47:14 +0100Square2(~Square4@user/square) (Ping timeout: 264 seconds)
2024-03-21 19:52:14 +0100Achylles(~Achylles_@45.182.57.126) (Remote host closed the connection)
2024-03-21 19:52:18 +0100Square(~Square@user/square)
2024-03-21 19:52:22 +0100Joao[3](~Joao003@190.108.99.67) (Quit: Bye!)
2024-03-21 19:59:25 +0100raym(~ray@user/raym) (Ping timeout: 255 seconds)
2024-03-21 19:59:44 +0100 <probie> are there any good libraries for generating typescript (or just regular javascript if that's the only option)?
2024-03-21 20:00:49 +0100 <haskellbridge> <s​m> jsaddle ?
2024-03-21 20:00:58 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds)
2024-03-21 20:02:26 +0100 <probie> I'm not executing it, it's a compilation target
2024-03-21 20:03:28 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2024-03-21 20:05:35 +0100raym(~ray@user/raym)
2024-03-21 20:07:18 +0100nickhs(~nickhs@23.136.216.2)
2024-03-21 20:16:56 +0100jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds)
2024-03-21 20:21:17 +0100 <shapr> @quote haskellbridge
2024-03-21 20:21:18 +0100 <lambdabot> No quotes match. Just what do you think you're doing Dave?
2024-03-21 20:21:19 +0100 <shapr> aw
2024-03-21 20:21:26 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-03-21 20:24:51 +0100 <tomsmeding> I guess if people want to quote something from across the bridge, they register it using the person's nick directly
2024-03-21 20:27:06 +0100 <geekosaur> it's kinda silly to attribute quotes to the bridge, and we don't have @grab only @remember
2024-03-21 20:30:34 +0100jmdaemon(~jmdaemon@user/jmdaemon)
2024-03-21 20:38:30 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2024-03-21 20:38:33 +0100Ashkan(~Ashkan@147.161.173.72)
2024-03-21 20:43:51 +0100 <Noinia> is anyone using the hls-eval plugin with eglot in emacs? basic completion using hls+eglot is working fine here, but if I add some -- >>> someCodeToEvaluate here and ask for code actions eglot does not give me a way to evaluate the function.
2024-03-21 20:43:51 +0100Ashkan(~Ashkan@147.161.173.72) (Quit: Client closed)
2024-03-21 20:44:08 +0100 <Noinia> and the documentation on how to configure hls plugins with eglot is rather sparse
2024-03-21 20:45:22 +0100 <Noinia> (and from what I gather from the HLS docs, the eval plugin should be on by default)
2024-03-21 20:45:43 +0100 <Noinia> so in theory there should not be anything to configure to begin with.
2024-03-21 21:11:45 +0100ft(~ft@p508db238.dip0.t-ipconnect.de)
2024-03-21 21:12:07 +0100mmhat(~mmh@p200300f1c706a2c7ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.2.1)
2024-03-21 21:12:28 +0100briandaed(~root@185.234.210.211.r.toneticgroup.pl) (Remote host closed the connection)
2024-03-21 21:13:59 +0100anfelor(~anfelor@131.111.5.246)
2024-03-21 21:14:32 +0100 <jle`> is there any general way to reflect from the type rep in Type.Reflection? ie reflect :: TypeRep (a :: k) -> k ... like reflect (typeRep @'True) = True. based on the name of the module i sort of assumed there would be
2024-03-21 21:15:33 +0100dcoutts_(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Remote host closed the connection)
2024-03-21 21:15:56 +0100dcoutts_(~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
2024-03-21 21:16:07 +0100 <jle`> for any enumerable type you can do something silly like reflectBool :: TypeRep (a :: Bool) -> Bool, reflectBoo x = isJust . eqTypeRep (typeRep @'True)
2024-03-21 21:16:29 +0100 <jle`> er, reflectBool = isJust . eqTypeRep (typeRep @'True)
2024-03-21 21:16:48 +0100 <jle`> but i feel like there's an obvious general way that i'm missing
2024-03-21 21:17:56 +0100benjaminl(~benjaminl@user/benjaminl) (Read error: Connection reset by peer)
2024-03-21 21:18:11 +0100benjaminl(~benjaminl@user/benjaminl)
2024-03-21 21:18:36 +0100nickhs(~nickhs@23.136.216.2) (Ping timeout: 250 seconds)
2024-03-21 21:19:59 +0100 <jle`> the reflection library doesn't really help us here either
2024-03-21 21:20:47 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2024-03-21 21:21:53 +0100 <jle`> you could use template haskell with the singletons library and use Sing instead but it'd be cool to be able to do it in base only
2024-03-21 21:22:29 +0100 <jle`> i guess maybe TypeRep just doesn't have all the information in it necessary for this
2024-03-21 21:22:44 +0100 <jle`> how is everyone doing today
2024-03-21 21:24:21 +0100mik3d(~mik3d@pool-173-61-131-199.cmdnnj.fios.verizon.net) (Read error: Connection reset by peer)
2024-03-21 21:27:42 +0100 <tomsmeding> Noinia: quickly checking, it seems that hls-eval exposes the evaluate functionality via a _code lens_
2024-03-21 21:27:53 +0100 <tomsmeding> as distinct from e.g. a _code action_
2024-03-21 21:28:02 +0100 <tomsmeding> eglot seems to not support code lenses yet https://github.com/joaotavora/eglot/pull/71
2024-03-21 21:29:50 +0100jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 264 seconds)
2024-03-21 21:31:43 +0100jargon(~jargon@70.sub-174-205-226.myvzw.com)
2024-03-21 21:43:40 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2024-03-21 21:50:49 +0100zetef(~quassel@5.2.182.98)
2024-03-21 21:54:33 +0100Lears(~Leary]@user/Leary/x-0910699) (Remote host closed the connection)
2024-03-21 21:58:36 +0100 <Noinia> hmm that is a bit annoying :(. It seems that this gist allows me to somehow run these lenses https://gist.github.com/Gavinok/fa23bbea7f44725eb633c002a8aa803a but admittedly it does not really work all that smooth :(
2024-03-21 22:00:20 +0100 <Noinia> I wonder how easy it would be to expose the eval business as a code action rather than a code-lens.
2024-03-21 22:05:45 +0100 <tomsmeding> https://github.com/haskell/haskell-language-server/blob/master/plugins/hls-eval-plugin/src/Ide/Plu… :p
2024-03-21 22:06:15 +0100 <Noinia> yes, I was scanning through that currently :P
2024-03-21 22:10:00 +0100pavonia(~user@user/siracusa)
2024-03-21 22:12:04 +0100_ht(~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
2024-03-21 22:18:00 +0100Benzi-Junior(~BenziJuni@232-148-209-31.dynamic.hringdu.is) (Ping timeout: 255 seconds)
2024-03-21 22:19:51 +0100ph88(~ph88@2a02:8109:9e26:c800:d1f0:3a71:f873:943f)
2024-03-21 22:23:34 +0100Benzi-Junior(~BenziJuni@232-148-209-31.dynamic.hringdu.is)
2024-03-21 22:37:39 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2024-03-21 22:45:25 +0100target_i(~target_i@user/target-i/x-6023099) (Quit: leaving)
2024-03-21 22:49:03 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2024-03-21 22:49:27 +0100oo_miguel(~Thunderbi@78-11-181-16.static.ip.netia.com.pl) (Quit: oo_miguel)
2024-03-21 23:01:36 +0100zetef(~quassel@5.2.182.98) (Remote host closed the connection)
2024-03-21 23:02:34 +0100mik3d(~mik3d@pool-173-61-131-199.cmdnnj.fios.verizon.net)
2024-03-21 23:14:08 +0100mei(~mei@user/mei) (Remote host closed the connection)
2024-03-21 23:16:33 +0100mei(~mei@user/mei)
2024-03-21 23:19:32 +0100mik3d(~mik3d@pool-173-61-131-199.cmdnnj.fios.verizon.net) (Read error: Connection reset by peer)
2024-03-21 23:20:39 +0100hueso(~root@user/hueso) (Ping timeout: 256 seconds)
2024-03-21 23:24:12 +0100hueso(~root@user/hueso)
2024-03-21 23:29:17 +0100Feuermagier(~Feuermagi@user/feuermagier)
2024-03-21 23:36:37 +0100anfelor(~anfelor@131.111.5.246) (Quit: Client closed)
2024-03-21 23:39:56 +0100anfelor(~anfelor@131.111.5.246)
2024-03-21 23:39:58 +0100Feuermagier_(~Feuermagi@user/feuermagier)
2024-03-21 23:39:58 +0100FeuermagierGuest6864
2024-03-21 23:39:58 +0100Feuermagier_Feuermagier
2024-03-21 23:40:07 +0100anfelor(~anfelor@131.111.5.246) (Client Quit)
2024-03-21 23:42:24 +0100Guest6864(~Feuermagi@user/feuermagier) (Ping timeout: 252 seconds)
2024-03-21 23:54:24 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2024-03-21 23:59:37 +0100Square2(~Square4@user/square)