2022/10/10

2022-10-10 00:00:28 +0200Guest3(~Guest3@dynamic-077-180-146-126.77.180.pool.telefonica.de)
2022-10-10 00:00:56 +0200Guest6(~Guest6@2a01cb0408ee9900a77feef9a14c5040.ipv6.abo.wanadoo.fr)
2022-10-10 00:01:43 +0200 <Guest6> Evening, I recently discovered monad transfomers and especially ReaderT and i'm trying to use it in my WAI application. But i dont understand at all how can i make a WAI application and ReaderT work together.
2022-10-10 00:02:06 +0200 <dminuoso> Guest6: You would unwrap the transformer first.
2022-10-10 00:02:22 +0200 <dminuoso> Do you use WAI directly, or some kind of server library?
2022-10-10 00:03:00 +0200 <Guest6> i use WAI directly, i run it with warp tho
2022-10-10 00:04:08 +0200 <dminuoso> Can you share some rough bits for me to get an idea how to you use this?
2022-10-10 00:04:25 +0200 <Guest6> sure
2022-10-10 00:05:42 +0200 <Guest6> https://gist.github.com/louislebrault/b5ecc9b5fc042a6c7e9bf6b8e2644b04
2022-10-10 00:06:27 +0200 <Guest6> as you see i pass a "Context" parameter everywhere, that i want to pass with ReaderT instead
2022-10-10 00:07:08 +0200 <dminuoso> Guest6: okay, so you would write some `type MyApplication = Request -> (Response -> ReaderT Env IO ResponseReceived) -> ReaderT Env ResponseReceived`
2022-10-10 00:07:49 +0200 <Guest6> exactly
2022-10-10 00:07:52 +0200 <dminuoso> Then, you would need a simple function mkApp :: Env -> MyApplication -> Application`
2022-10-10 00:08:01 +0200 <dminuoso> Which does the necessary runReaderT
2022-10-10 00:08:11 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 00:09:19 +0200 <Guest6> hmm ok
2022-10-10 00:09:20 +0200natechan(~nate@98.45.169.16)
2022-10-10 00:09:39 +0200 <dminuoso> Note, that if you use WAI directly you can *only* ever add ReaderT (or things isomorphic to it) unless you also use MonadBaseControl.
2022-10-10 00:09:58 +0200 <dminuoso> Or well, actually thats not true.
2022-10-10 00:10:09 +0200 <dminuoso> Strictly speaking you only need:
2022-10-10 00:11:17 +0200 <dminuoso> Mm ignore that bit
2022-10-10 00:11:33 +0200ulvarrefr(~user@188.124.56.153) (Ping timeout: 252 seconds)
2022-10-10 00:11:58 +0200 <EvanR> add TardisT to WAI to allow unsending emails
2022-10-10 00:14:25 +0200 <dminuoso> That wont work. You would have to use IOT.
2022-10-10 00:15:25 +0200 <dminuoso> Been fighting for that particular transformer, but nobody knows how to make it, especially since the DMC-12 is no longer being made.
2022-10-10 00:16:17 +0200 <Guest6> i saw a  package that is supposed to do the necessary to transform an application into a ReaderT application and vice-versa : https://hackage.haskell.org/package/wai-transformers-0.1.0/docs/Network-Wai-Trans.html#t:Applicati…
2022-10-10 00:16:23 +0200 <Guest6> but i didnt achieve to make it work
2022-10-10 00:16:37 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 00:16:43 +0200 <dminuoso> Give me a second, let me give you a pointer
2022-10-10 00:16:52 +0200 <Guest6> i wonder if i need more knowledge about the whole transformers things to achieve this
2022-10-10 00:17:10 +0200 <Guest6> because im trying to wire things together without understanding what's going wrong
2022-10-10 00:17:16 +0200 <Guest6> sure
2022-10-10 00:17:57 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-10 00:18:28 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 00:19:15 +0200 <dminuoso> Guest6: https://gist.github.com/dminuoso/0b9db8bcf0c92e8861640f46a6e1b735
2022-10-10 00:22:11 +0200 <dminuoso> You can also use `liftIO` inside there if you prefer
2022-10-10 00:23:33 +0200 <Guest6> ok for the first time since days the code compiles
2022-10-10 00:23:50 +0200 <dminuoso> https://gist.github.com/dminuoso/0b9db8bcf0c92e8861640f46a6e1b735
2022-10-10 00:23:51 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 260 seconds)
2022-10-10 00:23:59 +0200 <EvanR> if it compiles, ship it
2022-10-10 00:24:05 +0200son0p(~ff@181.136.122.143) (Remote host closed the connection)
2022-10-10 00:26:55 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-10 00:27:00 +0200 <Guest6> it woooorks
2022-10-10 00:27:14 +0200 <Guest6> dminuoso thank you so much
2022-10-10 00:29:21 +0200 <Guest6> dunno how much hours i would've need to come up with an equivalent of those few lines of code u shared with me
2022-10-10 00:30:27 +0200 <Guest6> will have to learn how those things are working tho
2022-10-10 00:30:44 +0200 <dminuoso> Well this is just very simple follow-the-types
2022-10-10 00:31:07 +0200 <Guest6> ahah well
2022-10-10 00:31:23 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 265 seconds)
2022-10-10 00:32:05 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-10 00:32:12 +0200 <Guest6> probably once you understood how is it working, i spent time reading type signatures of https://hackage.haskell.org/package/wai-transformers-0.1.0/docs/Network-Wai-Trans.html#t:Applicati… but i had absolutly no clue how to make the compiler happy
2022-10-10 00:33:00 +0200 <dminuoso> Guest6: Honestly with middlewares and arbitrary monad transformers you get into some pretty strange complications
2022-10-10 00:33:18 +0200 <dminuoso> Which is why you see that MonadBaseControl constraint everywhere
2022-10-10 00:34:11 +0200 <EvanR> type MiddlewareT m = ApplicationT m -> ApplicationT m -- ah, so MiddlewareT is actually a transformer transformer
2022-10-10 00:34:15 +0200Alecui(~alecu@2a02:a58:8682:d600:c147:7976:693f:ec2f)
2022-10-10 00:34:16 +0200 <dminuoso> Well, not even just middlewares, but also something like liftApplication :: Application -> MyApplication
2022-10-10 00:35:00 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds)
2022-10-10 00:35:21 +0200 <dminuoso> Guest6: That being said, as long as you stick to ReaderT (and things isomorphic to it like LoggingT) you will not experience these problems.
2022-10-10 00:36:06 +0200 <Guest6> good to hear
2022-10-10 00:43:51 +0200son0p(~ff@181.136.122.143)
2022-10-10 00:45:35 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 00:45:41 +0200natechan(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-10-10 00:45:47 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 00:49:24 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2022-10-10 00:51:51 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-10 00:51:57 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.6)
2022-10-10 00:55:24 +0200Alecui(~alecu@2a02:a58:8682:d600:c147:7976:693f:ec2f) (Remote host closed the connection)
2022-10-10 00:57:38 +0200The_Guest67(~The_Guest@62.231.72.77)
2022-10-10 00:58:31 +0200zns(~zns@user/zns)
2022-10-10 01:00:25 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2022-10-10 01:02:58 +0200The_Guest6785(~The_Guest@62.231.72.77)
2022-10-10 01:03:18 +0200 <The_Guest6785> Hey guys, Dumb question here: I'm following this lecture on haskell but when i compile my code it prints <<loop>>, https://paste.tomsmeding.com/0iK4uIu9 . A bit of digging and i found out that it is an infinite loop so what did i do wrong?
2022-10-10 01:03:35 +0200beteigeuze(~Thunderbi@2001:8a0:61b5:6101:f0c:e4e3:bfdc:91df) (Remote host closed the connection)
2022-10-10 01:04:01 +0200beteigeuze(~Thunderbi@2001:8a0:61b5:6101:9233:19e9:6537:6e73)
2022-10-10 01:04:42 +0200 <geekosaur> reused xs and then tried to reference the original one (line 4_
2022-10-10 01:04:46 +0200 <geekosaur> s/_/)
2022-10-10 01:05:36 +0200 <The_Guest6785> Oh, how didn't i see that! Thanks
2022-10-10 01:06:14 +0200The_Guest67(~The_Guest@62.231.72.77) (Ping timeout: 252 seconds)
2022-10-10 01:07:03 +0200thyriaen(~thyriaen@2a01:aea0:dd4:463c:6245:cbff:fe9f:48b1) (Quit: Leaving)
2022-10-10 01:08:14 +0200dimsuz(~dimsuz@185.17.128.86)
2022-10-10 01:10:01 +0200codaraxis(~codaraxis@user/codaraxis)
2022-10-10 01:10:58 +0200Topsi(~Topsi@dyndsl-095-033-089-091.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-10-10 01:11:30 +0200codaraxis__(~codaraxis@user/codaraxis) (Ping timeout: 265 seconds)
2022-10-10 01:12:50 +0200ec(~ec@gateway/tor-sasl/ec)
2022-10-10 01:13:18 +0200codaraxis__(~codaraxis@user/codaraxis)
2022-10-10 01:16:49 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2022-10-10 01:17:18 +0200codaraxis(~codaraxis@user/codaraxis) (Ping timeout: 265 seconds)
2022-10-10 01:18:16 +0200vorpuni(~pvorp@2001:861:3881:c690:6d4:662c:a06a:ef29) (Remote host closed the connection)
2022-10-10 01:18:20 +0200 <ski> EvanR : hm ? `MiddlewareT :: (* -> *) -> *'
2022-10-10 01:20:06 +0200The_Guest6785(~The_Guest@62.231.72.77) (Quit: Client closed)
2022-10-10 01:20:47 +0200 <dminuoso> ski: I think it was just a humor remark because it had a trailing capital T.
2022-10-10 01:20:50 +0200chomwitt(~chomwitt@2a02:587:dc0c:c200:9b5d:e3:b4f7:170c) (Ping timeout: 268 seconds)
2022-10-10 01:21:30 +0200zns(~zns@user/zns) (Quit: zzz)
2022-10-10 01:21:38 +0200 <ski> oh
2022-10-10 01:21:48 +0200 <ski> ApplicationT m = Request -> Cont (m ResponseReceived) Response
2022-10-10 01:21:56 +0200 <ski> = Request -> ContT ResponseReceived m Response
2022-10-10 01:22:09 +0200 <ski> = ReaderT Request (ContT ResponseReceived m) Response
2022-10-10 01:22:20 +0200 <ski> MiddlewareT m = Cont (ReaderT Request (ContT ResponseReceived m) Response) ()
2022-10-10 01:22:31 +0200 <ski> = ContT Response (ReaderT Request (ContT ResponseReceived m)) ()
2022-10-10 01:22:55 +0200 <ski> = StateT Request (Cont (ContT ResponseReceived m Response)) ()
2022-10-10 01:23:06 +0200 <ski> = StateT Request (ContT Response (ContT ResponseReceived m)) ()
2022-10-10 01:23:10 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-10 01:23:31 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-10-10 01:23:49 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-10-10 01:23:55 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-10 01:27:19 +0200 <ski> hm, i guess `Request' is being forwarded from outer to inner ("backwarded" ?), while `Response' is forwarded in the other direction
2022-10-10 01:28:09 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 01:28:51 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2022-10-10 01:28:54 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 265 seconds)
2022-10-10 01:30:03 +0200edrx(~Eduardo@2804:56c:d2d3:4800:cf7d:b421:4c3a:392e)
2022-10-10 01:30:07 +0200perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-10-10 01:31:57 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 01:33:49 +0200zns(~zns@user/zns)
2022-10-10 01:33:57 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-10-10 01:34:08 +0200gentauro(~gentauro@user/gentauro)
2022-10-10 01:34:25 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-10 01:34:40 +0200 <EvanR> dminuoso, because the type literally says ApplicationT m -> ApplicationT m
2022-10-10 01:35:14 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:50e1:7448:ac98:298f)
2022-10-10 01:35:18 +0200 <dminuoso> That is not a monad transformer conforming type, though.
2022-10-10 01:35:59 +0200 <dminuoso> The type is that of a monad homomorphism.
2022-10-10 01:36:01 +0200 <EvanR> monads shmonads
2022-10-10 01:36:25 +0200 <dminuoso> Monad transformers must be of type (Type -> Type) -> Type -> Type
2022-10-10 01:37:00 +0200son0p(~ff@181.136.122.143) (Killed (NickServ (GHOST command used by son0p-)))
2022-10-10 01:37:29 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-10 01:38:43 +0200 <EvanR> is ApplicationT m even a monad whats going on
2022-10-10 01:39:47 +0200 <dminuoso> As ski has pointed out, its isomorphic to some at least.
2022-10-10 01:40:01 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer)
2022-10-10 01:40:12 +0200 <EvanR> ReaderT Request (ContT ResponseReceived m) Response seems to be a whole action
2022-10-10 01:40:14 +0200 <dminuoso> It's just a convenience type alias to describe an Application with an arbitrary monad layered in there
2022-10-10 01:40:16 +0200 <edrx> hi all! I have just finished this: https://i.ibb.co/Z8H072x/sshot.png
2022-10-10 01:40:18 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-10-10 01:40:19 +0200 <EvanR> like where does the a goes
2022-10-10 01:41:04 +0200 <edrx> and now I can start to play with parsers for arithmetic expressions. question:
2022-10-10 01:42:40 +0200natechan(~nate@98.45.169.16)
2022-10-10 01:42:47 +0200 <ski> `a' is `Response' there. for the latter one, it is `()'
2022-10-10 01:42:58 +0200 <ski> re edrx
2022-10-10 01:44:02 +0200 <EvanR> so the T is not indicating a monad transformer in the first place
2022-10-10 01:44:05 +0200 <ski> @src concatMap
2022-10-10 01:44:05 +0200 <lambdabot> concatMap f = foldr ((++) . f) []
2022-10-10 01:44:10 +0200BusConscious(~martin@ip-046-223-162-236.um13.pools.vodafone-ip.de)
2022-10-10 01:44:39 +0200 <dminuoso> EvanR: Its sort of indicating that, whatever you specify next to it, is likely a monad with transformers applied?
2022-10-10 01:44:47 +0200 <ski> concatMap f xs = concat (map f xs) = f =<< xs = [y | x <- xs,y <- f x]
2022-10-10 01:44:49 +0200jinsunGuest3962
2022-10-10 01:44:49 +0200jinsun__(~jinsun@user/jinsun)
2022-10-10 01:44:49 +0200Guest3962(~jinsun@user/jinsun) (Killed (cadmium.libera.chat (Nickname regained by services)))
2022-10-10 01:44:49 +0200jinsun__jinsun
2022-10-10 01:44:54 +0200 <dminuoso> Dunno. ApplicationM and MiddlewareM might have been more consistent
2022-10-10 01:45:17 +0200Tuplanolla(~Tuplanoll@91-159-69-34.elisa-laajakaista.fi) (Quit: Leaving.)
2022-10-10 01:45:20 +0200 <EvanR> if someone who was complaining about the transformer heavy situations in haskell, they might see that and revolt xD
2022-10-10 01:46:03 +0200Oiyqlk(~rscastilh@191-214-26-24.user.veloxzone.com.br) ()
2022-10-10 01:46:37 +0200 <EvanR> in so far as naming conventions can be used as a guide in unfamiliar circumstances that have familiar things
2022-10-10 01:47:07 +0200geekosaurwonders if *M is a good naming convention given ST vs. STM
2022-10-10 01:47:50 +0200 <geekosaur> edrx, you had a question?
2022-10-10 01:48:03 +0200 <ski> edrx : redundant brackets, `.. ++ (show s) ++ ..' (`luatree0'), `(..):st' (`exec1')
2022-10-10 01:48:13 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 01:48:23 +0200 <edrx> ...question: in one of the next steps I will have to split a string like "( 2 + u- 3 ) * ( 4 + x )" at whitespace, and then transform each word into commands for a stack machine, like OpenParen, Prefix "-" 40, Infix "+" 20 21
2022-10-10 01:48:59 +0200 <dminuoso> Wow. GHC supports unboxed sum types!
2022-10-10 01:49:05 +0200 <dminuoso> How did I miss that memo
2022-10-10 01:49:12 +0200 <EvanR> cool
2022-10-10 01:49:15 +0200gmg(~user@user/gehmehgeh)
2022-10-10 01:49:27 +0200natechan(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2022-10-10 01:49:29 +0200 <dminuoso> That means I can now handroll my own version of IO :>
2022-10-10 01:49:33 +0200 <geekosaur> hm. parens aren't normally used at that level, instead they would be used to structure an AST and the stack machine programmed from that
2022-10-10 01:49:50 +0200 <ski> edrx : `execn' is a `foldl'. i'd probably check for singleton in `exec'
2022-10-10 01:49:55 +0200 <EvanR> omg edrx what is the actual question
2022-10-10 01:50:34 +0200 <edrx> the question is: in Lua using associative tables to translate strings into other objects is trivial, and I used the built-in associative tables to conevrt for example "+" to Infix "+" 20 21. What do you recommend for that in Haskell?
2022-10-10 01:50:43 +0200 <edrx> EvanR: sorry =/
2022-10-10 01:50:56 +0200 <geekosaur> this is parsing
2022-10-10 01:51:01 +0200 <dminuoso> type Res# e a = (# (# State#, a, Addr# #) | (# State# #) | #( State#, e #) #)
2022-10-10 01:51:21 +0200 <ski> `ST' predates the `FooT', iirc
2022-10-10 01:51:22 +0200 <dminuoso> type Res# e a = (# (# State# RealWorld, a, Addr# #) | (# State# RealWorld #) | #( State# RealWorld, e #) #)
2022-10-10 01:51:24 +0200 <dminuoso> That.
2022-10-10 01:51:29 +0200 <EvanR> translating symbols to other symbols one to one with a table is one thing, you could use a Map
2022-10-10 01:51:38 +0200 <EvanR> but you seem to want to do actual parsing in this process
2022-10-10 01:51:51 +0200 <EvanR> dunno how lua manages that with just their table type xD
2022-10-10 01:52:09 +0200 <geekosaur> same way lots of people "parse" with regexes
2022-10-10 01:52:17 +0200 <ski> dminuoso : not what i would call "unboxed sum types", though :/
2022-10-10 01:52:26 +0200 <edrx> ski: thanks! I knew that execn looked like one of the folds, but that is just a very first prototype...
2022-10-10 01:52:30 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-10-10 01:52:30 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-10-10 01:52:30 +0200wroathe(~wroathe@user/wroathe)
2022-10-10 01:53:29 +0200 <edrx> EvanR: yes, I'm try to learn how to do parsing properly.
2022-10-10 01:54:18 +0200 <EvanR> you got your LL parsing and you got your LR parsing and... I don't understand any of it because I use monads
2022-10-10 01:55:38 +0200 <ski> edrx : either `ReadS' (or `ReadP' or `ReadPrec') .. or use a proper "serious" parser combinator library (Parsec,MegaParsec,attoparsec,trifecta,..) .. or use the (`yacc'-like, with `lex'-like) Happy, with Alex .. or possibly something on top of that, like BNFC
2022-10-10 01:55:43 +0200spaced(uid572193@id-572193.ilkley.irccloud.com)
2022-10-10 01:55:53 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds)
2022-10-10 01:56:08 +0200 <EvanR> yeah we have nice libraries to take out the task of parsing lua expressions easily
2022-10-10 01:56:25 +0200 <ski> dminuoso : what're you modelling ?
2022-10-10 01:56:56 +0200 <ski> i mean, that's the middle alternative for ?
2022-10-10 01:57:14 +0200 <EvanR> in megaparsec you could even give it a table of operators, precedences, associativities, and it just does it for you
2022-10-10 01:57:24 +0200skiidly recalls Hugs did `IO' via CPS
2022-10-10 01:57:31 +0200 <EvanR> you don't have to know anything lol
2022-10-10 01:57:36 +0200 <dminuoso> ski: It's ByteString encoder monad that has separate failure/error modes.
2022-10-10 01:57:46 +0200 <dminuoso> The middle alternative models failure
2022-10-10 01:57:54 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2022-10-10 01:58:03 +0200 <ski> hm. what does failure entail ?
2022-10-10 01:58:20 +0200 <dminuoso> Exceeding available buffer length, setting position out of bounds
2022-10-10 01:58:39 +0200 <ski> as opposed to what kind of errors ?
2022-10-10 01:58:53 +0200 <ski> how does the handling (plumbing) differ ?
2022-10-10 01:59:47 +0200 <dminuoso> ski: On a failure you could still <|> to switch to a different mechanism.
2022-10-10 01:59:48 +0200dimsuz(~dimsuz@185.17.128.86) (Quit: Client closed)
2022-10-10 01:59:52 +0200 <ski> @where BNFC
2022-10-10 01:59:52 +0200 <lambdabot> BNF Converter, http://bnfc.digitalgrammars.com/
2022-10-10 02:00:18 +0200 <dminuoso> An error however will, in the absence of recovery primitives, just fail through Alternative/MonadPlus
2022-10-10 02:01:01 +0200 <ski> hm .. not quite seeing why "Exceeding available buffer length, setting position out of bounds" should backtrack to another branch
2022-10-10 02:01:36 +0200 <dminuoso> This is exploratory at the moment
2022-10-10 02:01:48 +0200 <ski> mhm
2022-10-10 02:02:25 +0200Guest6(~Guest6@2a01cb0408ee9900a77feef9a14c5040.ipv6.abo.wanadoo.fr) (Quit: Client closed)
2022-10-10 02:02:45 +0200nate1(~nate@98.45.169.16)
2022-10-10 02:02:56 +0200natechan(~nate@98.45.169.16)
2022-10-10 02:03:16 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-10-10 02:06:58 +0200 <EvanR> do Happy and or Alex outperform the classic monadic parser combinator libs you mentioned
2022-10-10 02:07:59 +0200 <EvanR> i assume this was the case at some point because it was used in GHC
2022-10-10 02:08:03 +0200nate1(~nate@98.45.169.16) (Ping timeout: 265 seconds)
2022-10-10 02:08:28 +0200 <geekosaur> I think someone said it had for them recently in here?
2022-10-10 02:08:39 +0200 <dminuoso> They still are used in GHC
2022-10-10 02:09:12 +0200 <geekosaur> this isn't really that surprising to me, happy is just less convenient than whipping up a quick parser in megaparsec or etc.
2022-10-10 02:09:48 +0200 <dminuoso> megaparsec is quite slow
2022-10-10 02:09:51 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 02:10:02 +0200 <dminuoso> The worst part is that it has essentially every single binding marked with INLINE
2022-10-10 02:10:12 +0200 <dminuoso> Which can even trivial parsers take several minutes to compile
2022-10-10 02:10:18 +0200 <EvanR> 😱
2022-10-10 02:10:37 +0200 <EvanR> actually, that must be what I noticed
2022-10-10 02:10:48 +0200 <EvanR> rebuilding my program if the parser changed is like, whole seconds
2022-10-10 02:11:10 +0200 <dminuoso> Things like asum with a lot of branches are particularly bad
2022-10-10 02:11:35 +0200 <dminuoso> But I guess there's only so much you can do if you rely on GHC to make your parser go fast
2022-10-10 02:12:18 +0200 <EvanR> that's how you know you're doing something high level
2022-10-10 02:12:42 +0200califax(~califax@user/califx)
2022-10-10 02:13:29 +0200 <EvanR> if it takes significant time to compile
2022-10-10 02:13:57 +0200 <EvanR> and it can't be any faster xD
2022-10-10 02:14:08 +0200 <EvanR> (kolmogorov time complexity or something)
2022-10-10 02:15:51 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 252 seconds)
2022-10-10 02:16:20 +0200natechan(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-10-10 02:24:22 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 02:37:07 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 252 seconds)
2022-10-10 02:37:26 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-10 02:38:31 +0200Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Read error: Connection reset by peer)
2022-10-10 02:46:11 +0200mvk(~mvk@2607:fea8:5ce3:8500::a80f) (Ping timeout: 260 seconds)
2022-10-10 02:51:33 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 02:52:36 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
2022-10-10 02:53:32 +0200Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com)
2022-10-10 02:54:00 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-10-10 02:55:49 +0200emmanuelux(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2022-10-10 02:58:45 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 252 seconds)
2022-10-10 03:00:02 +0200beteigeuze(~Thunderbi@2001:8a0:61b5:6101:9233:19e9:6537:6e73) (Ping timeout: 268 seconds)
2022-10-10 03:04:28 +0200shapr(~user@68.54.166.125) (Remote host closed the connection)
2022-10-10 03:05:45 +0200spaced(uid572193@id-572193.ilkley.irccloud.com) (Changing host)
2022-10-10 03:05:45 +0200spaced(uid572193@user/spaced)
2022-10-10 03:06:19 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-10-10 03:08:36 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 03:11:56 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-10-10 03:13:47 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 265 seconds)
2022-10-10 03:21:02 +0200edrx(~Eduardo@2804:56c:d2d3:4800:cf7d:b421:4c3a:392e) (Remote host closed the connection)
2022-10-10 03:23:25 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 03:26:01 +0200zns(~zns@user/zns) (Quit: zzz)
2022-10-10 03:26:29 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 03:30:35 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-10 03:34:02 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-10 03:36:34 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-10-10 03:47:34 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 03:49:42 +0200zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-10-10 03:50:42 +0200zaquest(~notzaques@5.130.79.72)
2022-10-10 04:02:32 +0200ubert1(~Thunderbi@77.119.192.27.wireless.dyn.drei.com)
2022-10-10 04:03:15 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Quit: Lost terminal)
2022-10-10 04:03:29 +0200waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 250 seconds)
2022-10-10 04:04:01 +0200ubert(~Thunderbi@178.115.74.207.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2022-10-10 04:04:02 +0200ubert1ubert
2022-10-10 04:05:46 +0200causal(~user@50.35.83.177) (Quit: WeeChat 3.6)
2022-10-10 04:07:14 +0200ddellacosta(~ddellacos@89.45.224.218) (Ping timeout: 268 seconds)
2022-10-10 04:08:32 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2022-10-10 04:09:02 +0200ddellacosta(~ddellacos@143.244.47.82)
2022-10-10 04:13:14 +0200Guest3(~Guest3@dynamic-077-180-146-126.77.180.pool.telefonica.de) (Ping timeout: 252 seconds)
2022-10-10 04:16:41 +0200hololeap(~quassel@user/hololeap) (Quit: Bye)
2022-10-10 04:17:44 +0200hololeap(~quassel@user/hololeap)
2022-10-10 04:31:31 +0200califax(~califax@user/califx) (Ping timeout: 258 seconds)
2022-10-10 04:34:50 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-10-10 04:34:56 +0200califax(~califax@user/califx)
2022-10-10 04:34:59 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 265 seconds)
2022-10-10 04:37:39 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 258 seconds)
2022-10-10 04:37:58 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-10-10 04:39:56 +0200BusConscious(~martin@ip-046-223-162-236.um13.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
2022-10-10 04:41:54 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 04:42:35 +0200terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2022-10-10 04:43:33 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 04:43:34 +0200terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-10-10 04:43:56 +0200kenran(~user@user/kenran)
2022-10-10 04:44:13 +0200Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Read error: Connection reset by peer)
2022-10-10 04:46:49 +0200ddellacosta(~ddellacos@143.244.47.82) (Ping timeout: 268 seconds)
2022-10-10 04:47:20 +0200frost(~frost@user/frost)
2022-10-10 04:48:46 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 258 seconds)
2022-10-10 04:56:40 +0200mvk(~mvk@2607:fea8:5ce3:8500::a80f)
2022-10-10 04:59:01 +0200td_(~td@94.134.91.56) (Ping timeout: 252 seconds)
2022-10-10 04:59:01 +0200Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com)
2022-10-10 05:00:00 +0200Taneb(~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) (Quit: I seem to have stopped.)
2022-10-10 05:00:32 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-10-10 05:01:01 +0200td_(~td@muedsl-82-207-238-191.citykom.de)
2022-10-10 05:01:13 +0200Taneb(~Taneb@runciman.hacksoc.org)
2022-10-10 05:01:46 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-10-10 05:03:17 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-10-10 05:12:42 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-10 05:13:04 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 05:13:20 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-10 05:14:46 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 05:18:47 +0200nate1(~nate@98.45.169.16)
2022-10-10 05:27:15 +0200nate1(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2022-10-10 05:29:33 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 05:31:30 +0200zns(~zns@user/zns)
2022-10-10 05:34:29 +0200zns(~zns@user/zns) (Client Quit)
2022-10-10 05:34:52 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-10 05:38:34 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 05:40:29 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2022-10-10 05:41:27 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-10-10 05:44:17 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 05:45:34 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 05:47:26 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 05:51:05 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 252 seconds)
2022-10-10 05:52:36 +0200Kath42(~Kath42@174-21-171-250.tukw.qwest.net)
2022-10-10 05:56:48 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 05:58:05 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 05:58:38 +0200user___(~user@2806:104e:1b:4099:398e:7bac:b20e:4f52)
2022-10-10 05:58:58 +0200user___(~user@2806:104e:1b:4099:398e:7bac:b20e:4f52) (Client Quit)
2022-10-10 06:01:30 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Client Quit)
2022-10-10 06:03:38 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 06:06:57 +0200nate1(~nate@98.45.169.16)
2022-10-10 06:11:25 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 246 seconds)
2022-10-10 06:12:50 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 06:16:48 +0200nate1(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-10-10 06:16:58 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 06:21:31 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 252 seconds)
2022-10-10 06:22:02 +0200mbuf(~Shakthi@49.205.87.31)
2022-10-10 06:35:11 +0200kenran(~user@user/kenran) (Remote host closed the connection)
2022-10-10 06:36:10 +0200 <pareto-optimal-d> There was a book or draft on learning Haskell posted to r/haskell in the past 6 months that went a different direction than most learning materials and taught fundamentals/theory stuff first... does anyone recall it's name? I can't seem to find it.
2022-10-10 06:36:41 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 06:36:47 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 265 seconds)
2022-10-10 06:38:47 +0200 <jackdk> https://haskellbook.com/ ?
2022-10-10 06:39:01 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 06:39:25 +0200 <pareto-optimal-d> No, this was just a website and it said "this is just a draft" and wasn't totally complete. I remembered about it today and realized I'd forgotten how to find it again :D
2022-10-10 06:39:36 +0200 <jackdk> hm, don't know then. Sorry.
2022-10-10 06:39:46 +0200 <janus> pareto-optimal-d: https://www.reddit.com/r/haskell/comments/xrd29a/practical_haskell_3rd_edition_is_out/
2022-10-10 06:39:54 +0200 <pareto-optimal-d> No problem, thanks for trying to help.
2022-10-10 06:41:36 +0200 <pareto-optimal-d> janus: No, thanks for throwing it out. That type of book or "get programming with Haskell" is the opposite approach from this one that I read... I know with this few clues it's a longshot but was hoping someone else might remember these characteristics.
2022-10-10 06:48:55 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2022-10-10 06:50:27 +0200 <pareto-optimal-d> Now that I think about it after searching some more, I think it was "teach category theory first then Haskell" if that rings any bells.
2022-10-10 06:51:35 +0200 <jackdk> The closest thing I know of is: https://www.youtube.com/watch?v=Y5YCE_mVjvg&list=PLhgq-BqyZ7i7MTGhUROZy3BOICnVixETS
2022-10-10 06:52:16 +0200 <pareto-optimal-d> Not the one stuck in my memory, but I've added that to my watch later :D
2022-10-10 06:52:34 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 06:53:18 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-10-10 06:53:42 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 06:58:39 +0200 <pareto-optimal-d> Found it! https://leanpub.com/magicalhaskell/read
2022-10-10 06:59:11 +0200jakalx(~jakalx@base.jakalx.net)
2022-10-10 07:00:35 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 07:01:52 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 07:11:25 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 07:14:02 +0200nate1(~nate@98.45.169.16)
2022-10-10 07:14:12 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 07:19:45 +0200nate1(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-10-10 07:21:55 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 07:26:31 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-10 07:29:00 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-10 07:30:29 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 07:32:07 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 07:34:22 +0200califax(~califax@user/califx) (Ping timeout: 258 seconds)
2022-10-10 07:34:50 +0200califax(~califax@user/califx)
2022-10-10 07:37:03 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 07:37:20 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2022-10-10 07:38:01 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-10-10 07:38:27 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 07:39:24 +0200rosalind(rosalind@id-194105.uxbridge.irccloud.com)
2022-10-10 07:40:34 +0200BusConscious(~martin@ip-046-223-162-236.um13.pools.vodafone-ip.de)
2022-10-10 07:40:39 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 07:46:29 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 07:48:29 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 07:53:05 +0200kenran(~user@user/kenran)
2022-10-10 07:58:35 +0200nate1(~nate@98.45.169.16)
2022-10-10 07:58:59 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 08:00:45 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 08:03:04 +0200nate1(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2022-10-10 08:03:53 +0200ec(~ec@gateway/tor-sasl/ec)
2022-10-10 08:08:40 +0200raym(~aritra@user/raym) (Ping timeout: 246 seconds)
2022-10-10 08:09:46 +0200raym(~aritra@user/raym)
2022-10-10 08:11:53 +0200razetime(~quassel@117.193.4.83)
2022-10-10 08:15:49 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 08:16:59 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 08:19:26 +0200kenran(~user@user/kenran) (Remote host closed the connection)
2022-10-10 08:19:40 +0200kenran(~user@user/kenran)
2022-10-10 08:22:01 +0200johnjaye(~pi@173.209.64.74) (Ping timeout: 268 seconds)
2022-10-10 08:22:17 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds)
2022-10-10 08:23:29 +0200johnjaye(~pi@173.209.64.74)
2022-10-10 08:29:56 +0200kenran(~user@user/kenran) (Remote host closed the connection)
2022-10-10 08:30:59 +0200kenran(~user@user/kenran)
2022-10-10 08:31:35 +0200dextaa(~dextaa@user/dextaa)
2022-10-10 08:33:49 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 08:34:25 +0200rockymarine[m](~rockymari@2001:470:69fc:105::2:9a0c)
2022-10-10 08:35:09 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 08:35:29 +0200zeenk(~zeenk@2a02:2f04:a20a:3e00:5712:52b0:ca1d:bc63)
2022-10-10 08:36:04 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2022-10-10 08:36:14 +0200FlaminWalrus(~user@wsip-24-248-9-71.br.br.cox.net)
2022-10-10 08:37:38 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-10 08:42:23 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 268 seconds)
2022-10-10 08:43:43 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:4e96:406f:211e:cbd4)
2022-10-10 08:49:09 +0200BusConscious(~martin@ip-046-223-162-236.um13.pools.vodafone-ip.de) (Ping timeout: 268 seconds)
2022-10-10 08:50:34 +0200titibandit(~titibandi@xdsl-89-0-65-2.nc.de)
2022-10-10 08:51:09 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 265 seconds)
2022-10-10 08:54:22 +0200gmg(~user@user/gehmehgeh)
2022-10-10 08:55:16 +0200Midjak(~Midjak@82.66.147.146)
2022-10-10 08:56:22 +0200acidjnk(~acidjnk@p200300d6e7137a503d80e44891d38f9e.dip0.t-ipconnect.de)
2022-10-10 09:01:36 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 09:02:14 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-10 09:03:11 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 09:08:13 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 09:09:27 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 09:16:37 +0200johnw(~johnw@2600:1700:cf00:db0:c408:2164:6157:6eb5)
2022-10-10 09:20:30 +0200 <dminuoso> How exactly do GHC exceptions work? If I pry an IO open and manually pass the state tokens through, will that preserve the semantics of the exception?
2022-10-10 09:21:42 +0200califax(~califax@user/califx) (Ping timeout: 258 seconds)
2022-10-10 09:24:33 +0200 <johnw> what are the semantics of the exception?
2022-10-10 09:24:43 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 09:25:46 +0200califax(~califax@user/califx)
2022-10-10 09:25:56 +0200 <dminuoso> Well I dont want them to be swallowed for starters
2022-10-10 09:26:12 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 09:30:18 +0200 <johnw> have you already seen http://research.microsoft.com/en-us/um/people/simonpj/papers/imprecise-exn.htm?
2022-10-10 09:33:37 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-10-10 09:35:19 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Remote host closed the connection)
2022-10-10 09:35:36 +0200cafce25(~cafce25@2001:a62:153a:a201:4317:4122:7383:8e29) (Quit: Client closed)
2022-10-10 09:36:38 +0200sammelweis_(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 09:37:39 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 248 seconds)
2022-10-10 09:39:08 +0200 <dminuoso> Im not entirely sure this is relevant, as that paper talks about pure exceptions.
2022-10-10 09:39:34 +0200 <dminuoso> raiseIO# :: a -> State# RealWorld -> (#State# RealWorld, b#)
2022-10-10 09:39:54 +0200 <dminuoso> But that primop's existence suggests it ties this exception throwing semantics regularly into IO
2022-10-10 09:40:11 +0200 <dminuoso> So unIO'ing should not affect them
2022-10-10 09:40:57 +0200 <dminuoso> Otherwise much of GHC.PrimopWrappers would not be usable inside IO
2022-10-10 09:42:23 +0200arahael(~arahael@61.68.183.79) (Ping timeout: 265 seconds)
2022-10-10 09:42:37 +0200sammelweis_(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 09:43:10 +0200titibandit(~titibandi@xdsl-89-0-65-2.nc.de) (Remote host closed the connection)
2022-10-10 09:43:54 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 09:46:02 +0200 <johnw> ok, it was something that turned up when searching for "semantics of GHC exceptions", but I haven't read it thoroughly
2022-10-10 09:46:29 +0200kuribas(~user@ptr-17d51ep16a0mmacta57.18120a2.ip6.access.telenet.be)
2022-10-10 09:47:30 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2022-10-10 09:48:44 +0200gmg(~user@user/gehmehgeh)
2022-10-10 09:50:20 +0200 <kuribas> Are haskellers absolutely insane? Is the only reason I like haskell because I am insane?
2022-10-10 09:50:57 +0200 <kuribas> I just came across the Urbit jobpost, and then I found this: https://wejn.org/2021/02/urbit-good-bad-insane/
2022-10-10 09:52:26 +0200 <kuribas> But it seems like every other haskell job is like this, either a bitcoin scam, a fast financial speculation algorithm, or some loan algorithm to test for rich people.
2022-10-10 09:52:40 +0200 <kuribas> It looks more than 50% even.
2022-10-10 09:52:57 +0200chele(~chele@user/chele)
2022-10-10 09:53:07 +0200 <kuribas> I always somewhat believed in haskell, that you can use equational reasoning and scientific methods to get more correct programs.
2022-10-10 09:54:10 +0200 <kuribas> Haskellers think of themselves as being superior to other languages, but where is the proof? Where are the people building stuff that beats stuff written in other languages?
2022-10-10 09:54:52 +0200arahael(~arahael@210.185.98.153)
2022-10-10 09:55:08 +0200ph88(~ph88@2a02:8109:9e00:71d0:6e37:2605:3bb:94a8) (Ping timeout: 268 seconds)
2022-10-10 09:55:37 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-10-10 09:57:35 +0200fserucas(~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
2022-10-10 09:58:26 +0200 <maerwald[m]> The problem is idealistic people shitposting on every hiring thread
2022-10-10 09:59:21 +0200 <probie> Hasura uses Haskell, and I haven't heard anything particularly bad about them
2022-10-10 09:59:34 +0200tobiasBora(~tobiasBor@109.190.253.14)
2022-10-10 10:00:13 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-10-10 10:00:17 +0200 <dminuoso> .----------`
2022-10-10 10:00:34 +0200 <dminuoso> Oops. Cleaning my keyboard sorry!
2022-10-10 10:01:19 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2022-10-10 10:02:02 +0200cfricke(~cfricke@user/cfricke)
2022-10-10 10:02:57 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 10:03:45 +0200 <dr_merijn> kuribas: Logistics for Target!
2022-10-10 10:04:14 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 10:04:22 +0200 <dminuoso> Mmm, is there actually good reasons to use Data.Map in the presence of unordered-containers?
2022-10-10 10:04:28 +0200 <dr_merijn> Also, (bike)parking facility occupation checking
2022-10-10 10:04:52 +0200 <dr_merijn> dminuoso: Is there a good reason to use unordered-containers in the presence of Data.Map?
2022-10-10 10:04:52 +0200 <dminuoso> Especially with k~String, Data.Map seems like an incredibly dull choice
2022-10-10 10:04:53 +0200tobiasBora(~tobiasBor@109.190.253.14) (Quit: Client closed)
2022-10-10 10:05:13 +0200lucques(~lucques@2a02:3033:41a:a07:fef7:a1b5:b24:6488)
2022-10-10 10:05:19 +0200tobiasBora(~tobiasBor@109.190.253.14)
2022-10-10 10:05:27 +0200 <dr_merijn> Data.Map's complexity is much more predictable then unordered-containers
2022-10-10 10:06:57 +0200 <dminuoso> With String you pay a very dear price on repeated char-per-char comparisons though
2022-10-10 10:07:13 +0200 <dminuoso> If your map is of non-trivial size, this can be a limiting factor
2022-10-10 10:09:07 +0200 <dr_merijn> I guess, but then you gotta hope String's Hashable is cheap and high quality (no clue, but I recall ghcide having problems due to a shitty Hashable instance being derived)
2022-10-10 10:09:10 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 10:10:12 +0200 <kuribas> probie: yeah, but hasura basically amounts to throwing away all FP good practices, and implement a graphql API on the database directly.
2022-10-10 10:10:24 +0200 <dminuoso> Well, due to how String works its a foldl' with some hashing functino over each character, where each characters ord is used as a hash itself
2022-10-10 10:10:26 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 10:10:44 +0200 <dminuoso> (But you *can* use T.Text though)
2022-10-10 10:11:26 +0200lucques(~lucques@2a02:3033:41a:a07:fef7:a1b5:b24:6488) (Quit: Leaving)
2022-10-10 10:11:43 +0200 <dminuoso> And for that its offloaded to https://github.com/haskell-unordered-containers/hashable/blob/master/cbits/fnv.c#L41-L49
2022-10-10 10:12:21 +0200 <dminuoso> So its just FNV1 directly on the bytearray buffer
2022-10-10 10:12:25 +0200lucques(~lucques@2a02:3033:41a:a07:fef7:a1b5:b24:6488)
2022-10-10 10:13:28 +0200 <dminuoso> Extra benefit is that this will compile into an extremely tight loop on - if you have short keys - just as single cache line.
2022-10-10 10:14:17 +0200lucques_(~lucques@2a02:3033:41a:a07:fef7:a1b5:b24:6488)
2022-10-10 10:14:25 +0200lucques(~lucques@2a02:3033:41a:a07:fef7:a1b5:b24:6488) (Client Quit)
2022-10-10 10:15:17 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-10-10 10:15:54 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2022-10-10 10:16:53 +0200ec(~ec@gateway/tor-sasl/ec)
2022-10-10 10:17:34 +0200 <kuribas> dr_merijn: you're not actually writing haskell, are you?
2022-10-10 10:18:55 +0200 <kuribas> (for money)
2022-10-10 10:19:22 +0200dminuosowrites Haskell at his day job and it is not finance
2022-10-10 10:19:44 +0200dminuosois writing a network protocol library right now
2022-10-10 10:20:48 +0200 <opqdonut> can you guarantee the protocol won't be used for finance?-)
2022-10-10 10:21:18 +0200 <dminuoso> Not unless someone decides to run a blockchain using RADIUS as an underlying network protocol. :>
2022-10-10 10:21:26 +0200 <dminuoso> But we've all seen crazy...
2022-10-10 10:21:38 +0200 <dr_merijn> kuribas: It Depends (TM)
2022-10-10 10:22:07 +0200 <dr_merijn> I'm spending non-zero work hours writing Haskell, because no one can stop me :p
2022-10-10 10:22:13 +0200ft(~ft@p3e9bc57b.dip0.t-ipconnect.de) (Quit: leaving)
2022-10-10 10:22:31 +0200 <kuribas> throw away scripts?
2022-10-10 10:23:29 +0200 <dr_merijn> Depends on your definition of throwaway
2022-10-10 10:23:38 +0200 <dr_merijn> And some of my colleagues are working on longer Haskell projects
2022-10-10 10:23:45 +0200 <kuribas> ah cool
2022-10-10 10:24:05 +0200[exa](exa@user/exa/x-3587197)
2022-10-10 10:24:33 +0200 <dr_merijn> but getting funding to take that more seriously is tricky due to the way our budget(s) are allocated
2022-10-10 10:26:22 +0200mc47(~mc47@xmonad/TheMC47)
2022-10-10 10:31:19 +0200Kath42(~Kath42@174-21-171-250.tukw.qwest.net) (Remote host closed the connection)
2022-10-10 10:33:23 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 10:34:24 +0200tobiasBora(~tobiasBor@109.190.253.14) (Quit: Ping timeout (120 seconds))
2022-10-10 10:37:32 +0200MajorBiscuit(~MajorBisc@145.94.167.158)
2022-10-10 10:38:16 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:50e1:7448:ac98:298f) (Remote host closed the connection)
2022-10-10 10:44:04 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-10-10 10:45:08 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-10-10 10:46:52 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 246 seconds)
2022-10-10 10:48:24 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:4e96:406f:211e:cbd4) (Ping timeout: 264 seconds)
2022-10-10 10:49:43 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-10-10 10:49:45 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 10:51:39 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-10-10 10:52:10 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 258 seconds)
2022-10-10 10:54:56 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-10-10 10:56:58 +0200teo(~teo@user/teo)
2022-10-10 10:59:51 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-10 11:01:21 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 11:02:32 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 11:10:00 +0200odnes(~odnes@5-203-217-113.pat.nym.cosmote.net)
2022-10-10 11:11:42 +0200burnsidesLlama(~burnsides@client-8-82.eduroam.oxuni.org.uk)
2022-10-10 11:14:35 +0200beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2022-10-10 11:20:22 +0200nate1(~nate@98.45.169.16)
2022-10-10 11:24:53 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 11:25:17 +0200nate1(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-10-10 11:26:36 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-10-10 11:26:47 +0200adium(adium@user/adium) (Ping timeout: 265 seconds)
2022-10-10 11:29:07 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 248 seconds)
2022-10-10 11:29:39 +0200burnsidesLlama(~burnsides@client-8-82.eduroam.oxuni.org.uk) (Remote host closed the connection)
2022-10-10 11:30:05 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-10-10 11:32:07 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-10-10 11:34:31 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-10-10 11:37:00 +0200lucques_(~lucques@2a02:3033:41a:a07:fef7:a1b5:b24:6488) (Ping timeout: 264 seconds)
2022-10-10 11:38:38 +0200Taneb(~Taneb@runciman.hacksoc.org) (Quit: I seem to have stopped.)
2022-10-10 11:38:44 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9960:b0f8:561f:a74b)
2022-10-10 11:39:44 +0200Taneb(~Taneb@runciman.hacksoc.org)
2022-10-10 11:41:10 +0200burnsidesLlama(~burnsides@client-8-82.eduroam.oxuni.org.uk)
2022-10-10 11:43:26 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9960:b0f8:561f:a74b) (Ping timeout: 260 seconds)
2022-10-10 11:43:38 +0200razetime(~quassel@117.193.4.83) (Ping timeout: 268 seconds)
2022-10-10 11:44:08 +0200razetime(~quassel@117.254.34.90)
2022-10-10 11:47:55 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 11:48:04 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 11:49:09 +0200 <kuribas> Where can you find a haskell job that isn't bullshit blockchain crap?
2022-10-10 11:49:27 +0200 <kuribas> are at least a job where they let me do some haskell, even if it's not the main thing.
2022-10-10 11:49:37 +0200 <dminuoso> Do you have networking experience?
2022-10-10 11:49:43 +0200dminuosoknows a place :>
2022-10-10 11:50:16 +0200 <kuribas> a bit
2022-10-10 11:50:50 +0200 <kuribas> but I can learn :)
2022-10-10 11:52:46 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-10-10 11:53:08 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2022-10-10 11:56:39 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-10-10 11:57:06 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-10-10 11:58:13 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-10-10 12:01:18 +0200kritzefitz(~kritzefit@debian/kritzefitz) (Remote host closed the connection)
2022-10-10 12:01:22 +0200Pickchea(~private@user/pickchea)
2022-10-10 12:01:41 +0200 <kuribas> dminuoso: are you hiring?
2022-10-10 12:02:15 +0200kritzefitz(~kritzefit@debian/kritzefitz)
2022-10-10 12:09:49 +0200 <probie> Bellroy might still be hiring (they're an Australian company that sells wallets and bags, but their software is written Haskell)
2022-10-10 12:13:29 +0200 <vaibhavsagar[m]> kuribas: Mercury (a banking stack for startups) is hiring - https://mercury.com/jobs
2022-10-10 12:13:42 +0200CiaoSen(~Jura@p200300c95700eb002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-10-10 12:14:01 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 246 seconds)
2022-10-10 12:15:27 +0200 <tdammers> kuribas: going to events like zurihac, munihac, haskellxchange, etc., often unveils golden opportunities too
2022-10-10 12:16:10 +0200 <kuribas> tdammers: yeah
2022-10-10 12:16:39 +0200 <tdammers> though in general, it's still a relatively slow moving market, so you need to bring some patience to the table
2022-10-10 12:18:46 +0200yuzhao(~yuzhao@36.112.45.72)
2022-10-10 12:18:59 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 265 seconds)
2022-10-10 12:19:37 +0200 <FlaminWalrus> You can also grow the market yourself, and create jobs you're looking for. If you're struggling to find a job doing something you believe is economically valuable (such as making better, safer, faster, and more extensible software with Haskell), that means existing firms are leaving marginal utility on the table for you utilize.
2022-10-10 12:20:01 +0200yuzhao(~yuzhao@36.112.45.72) (Client Quit)
2022-10-10 12:21:27 +0200 <kuribas> FlaminWalrus: I don't get that. firms only want to use "safe" stacks, like Java or javascript.
2022-10-10 12:21:54 +0200 <FlaminWalrus> Yes. And if they're wrong for doing that, it's an opportunity for you to displace them.
2022-10-10 12:21:56 +0200lucques(~lucques@dynamic-046-114-088-103.46.114.pool.telefonica.de)
2022-10-10 12:22:24 +0200 <kuribas> FlaminWalrus: My impression is that noone care. They all have their own "bubble" that they want to work in.
2022-10-10 12:22:39 +0200 <kuribas> FlaminWalrus: Except if they are already invested in FP and static types.
2022-10-10 12:22:40 +0200 <tdammers> that only works if you're in a position to found a startup, and equipped with the business skills to pull it off
2022-10-10 12:23:54 +0200 <tdammers> I totally agree that in certain problem domains, Haskell can be a startup's secret superweapon, but even then, finding gaps in the market is a bit of a guessing game, and if you guess wrong, you'll have sunk a bunch of savings and a couple years of your life into a hopeless project
2022-10-10 12:24:00 +0200 <razetime> are there any tools for finding fp related conferences nearby
2022-10-10 12:24:04 +0200shriekingnoise(~shrieking@186.137.167.202) (Quit: Quit)
2022-10-10 12:25:17 +0200 <razetime> i only know about functionalconf, which happens once a year here.
2022-10-10 12:28:19 +0200fserucas_(~fserucas@74.47.115.89.rev.vodafone.pt)
2022-10-10 12:29:16 +0200fserucas(~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Read error: Connection reset by peer)
2022-10-10 12:29:58 +0200 <dminuoso> kuribas: Not actively at the moment. If someone already had good networking experience (L2/L3VPN over EVPN, general MP-BGP, that sort of thing) alongside, we would probably consider it. Equipping someone with these bits takes just a lot of time, especially because documentation is extremely sparse and poorly written.
2022-10-10 12:31:04 +0200 <kuribas> dminuoso: yeah, that makes sense
2022-10-10 12:31:47 +0200 <FlaminWalrus> tdammers: the market is a genetic algorithm for solving the problem of efficient production. Being the beneficial mutation isn't trival of course, but neither is finding a Haskell job, apparently. The fact remains that individuals accurately identifying inefficiencies and taking risks to resolve them is the only way any change occurs, full stop; I've found that pointing out to people that the market is 2-sided, with buyers and sellers,
2022-10-10 12:31:47 +0200 <FlaminWalrus> and their woes as a seller (of labor, in this case) imply an opportunity for them to take advantage of a labor surplus as a buyer tends to actually _clarify_ reasoning about their sellers' woes.
2022-10-10 12:32:32 +0200 <tdammers> of course. all I'm saying is that it takes more than just the right idea at the right time to succeed as a startup founder
2022-10-10 12:33:04 +0200adium(adium@user/adium)
2022-10-10 12:33:38 +0200 <tdammers> it's not enough to figure out how to make electric light; you also need the business instincts of a Mr Edison to make it into a viable business
2022-10-10 12:33:58 +0200 <FlaminWalrus> Absolutely. However, the requisite capital and management competence can be bought, provided the parties can be convinced of the soundness of the idea.
2022-10-10 12:34:32 +0200 <FlaminWalrus> E.g. an inventor's retainer-royalty model
2022-10-10 12:34:34 +0200 <tdammers> which means you need to be enough of a salesperson to sell the idea
2022-10-10 12:34:53 +0200__monty__(~toonn@user/toonn)
2022-10-10 12:35:55 +0200 <tdammers> I have literally been in this position, where I had an idea (build a semi-automatic legal reasoning system to enable computer-aided workflows for lawyers and paralegals), but failed to sell it to the right people, and then a couple months later a startup somewhere did exactly that, independently.
2022-10-10 12:36:52 +0200 <FlaminWalrus> Would it have been better had you not tried to sell it?
2022-10-10 12:37:14 +0200 <tdammers> the result would have been the exact same, minus some effort on my side
2022-10-10 12:37:38 +0200kdaishi(~Thunderbi@2a0c:5bc0:40:2e2f:b6bb:664c:380b:dc65)
2022-10-10 12:38:15 +0200 <kuribas> tdammers: yeah, having good salepeople is possible more important than having robust software.
2022-10-10 12:38:21 +0200 <kuribas> sadly
2022-10-10 12:38:58 +0200 <tdammers> I mean, I could have sunk a lot more effort into the "selling" part, you know, find the right lawyer person to team up with, build some kind of POC, and then go door to door with it until someone bites
2022-10-10 12:39:34 +0200 <kuribas> tdammers: s/could/should
2022-10-10 12:40:04 +0200 <tdammers> actually, s/could/couldn't/, because I was not in a position to sink several months' worth of unpaid full-time labor into it
2022-10-10 12:40:38 +0200 <FlaminWalrus> That's the niche venture capital exists to fill
2022-10-10 12:40:54 +0200 <tdammers> nobody is throwing VC at you for just an idea
2022-10-10 12:41:20 +0200 <FlaminWalrus> I believe that is mostly the point, no?
2022-10-10 12:41:39 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.5)
2022-10-10 12:41:53 +0200 <tdammers> you don't have to have a viable business yet, but you still have to have enough to convince them that you're committed, and that there's more to it than a shower thought
2022-10-10 12:42:05 +0200 <FlaminWalrus> You might need some market research, to do the convincing that the spot in the market exists
2022-10-10 12:42:10 +0200frost(~frost@user/frost) (Ping timeout: 252 seconds)
2022-10-10 12:42:25 +0200 <FlaminWalrus> What was the biotech company that was a literal scam and got tens of billions?
2022-10-10 12:42:41 +0200 <FlaminWalrus> The one that promised a machine to do like 10-in-1 blood tests?
2022-10-10 12:43:13 +0200 <FlaminWalrus> The requirements to exhibit an actual technical solution are slimmer than you might think
2022-10-10 12:43:36 +0200 <FlaminWalrus> Theranos, that was it
2022-10-10 12:43:40 +0200 <tdammers> maybe
2022-10-10 12:44:50 +0200 <FlaminWalrus> (raised $400M$, valued at $9B)
2022-10-10 12:45:16 +0200 <tdammers> but even then, you still have to do a lot of work to get anywhere
2022-10-10 12:45:36 +0200 <FlaminWalrus> That's as close to a sociological axiom as anything I've heard
2022-10-10 12:46:37 +0200 <tdammers> point being, you won't get VC on just the idea. you have to actively reach out to a lot of people, you have to prepare something like a business plan, you have to do market research, etc. etc.
2022-10-10 12:46:56 +0200 <tdammers> all that is a gamble, it's not guaranteed at all that anyone will bite
2022-10-10 12:47:33 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 12:48:01 +0200 <FlaminWalrus> You'll have to do a lot of work and take on a lot of risk regardless; being fatalist about the possibility of founding a company is counterproductive. Does one value that work and risk more than the continuation of the status quo or not?
2022-10-10 12:49:05 +0200 <tdammers> Getting a job tends to come with a much smaller risk. Just saying.
2022-10-10 12:49:20 +0200 <dminuoso> Continuation ruins lifes. GHC should emit danger warnings when using them.
2022-10-10 12:49:41 +0200 <__monty__> Yeah, much better to get closure.
2022-10-10 12:49:48 +0200 <dminuoso> I was nearly convinced it would improve the reading style. Turns out, I cant even figure out how to write them right.
2022-10-10 12:50:25 +0200kdaishi(~Thunderbi@2a0c:5bc0:40:2e2f:b6bb:664c:380b:dc65) (Read error: Connection reset by peer)
2022-10-10 12:50:34 +0200kdaishi1(~Thunderbi@2a0c:5bc0:40:2e2f:b6bb:664c:380b:dc65)
2022-10-10 12:52:01 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 252 seconds)
2022-10-10 12:52:53 +0200kdaishi1kdaishi
2022-10-10 12:53:58 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-10-10 12:54:20 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
2022-10-10 12:55:44 +0200burnsidesLlama(~burnsides@client-8-82.eduroam.oxuni.org.uk) (Remote host closed the connection)
2022-10-10 12:56:38 +0200M3g-mentok[m](~M3g-mento@2001:470:69fc:105::2:9a49)
2022-10-10 13:00:51 +0200frost(~frost@user/frost)
2022-10-10 13:01:47 +0200jinsun__(~jinsun@user/jinsun)
2022-10-10 13:01:47 +0200jinsun(~jinsun@user/jinsun) (Killed (iridium.libera.chat (Nickname regained by services)))
2022-10-10 13:01:47 +0200jinsun__jinsun
2022-10-10 13:04:57 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-10-10 13:04:57 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Read error: Connection reset by peer)
2022-10-10 13:09:29 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-10-10 13:14:31 +0200yuzhao(~yuzhao@36.112.45.72)
2022-10-10 13:14:45 +0200qrpnxz(~qrpnxz@fsf/member/qrpnxz) (Ping timeout: 252 seconds)
2022-10-10 13:15:10 +0200qrpnxz(~qrpnxz@fsf/member/qrpnxz)
2022-10-10 13:16:11 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-10-10 13:17:56 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 13:22:05 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 252 seconds)
2022-10-10 13:22:47 +0200chomwitt(~chomwitt@2a02:587:dc0c:c200:b8b0:dc:a578:bfaa)
2022-10-10 13:23:12 +0200yuzhao(~yuzhao@36.112.45.72) (Ping timeout: 264 seconds)
2022-10-10 13:23:42 +0200kenran(~user@user/kenran) (Remote host closed the connection)
2022-10-10 13:24:26 +0200yuzhao(~yuzhao@36.112.45.72)
2022-10-10 13:26:14 +0200kenran(~user@user/kenran)
2022-10-10 13:27:31 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-10-10 13:32:46 +0200kdaishi(~Thunderbi@2a0c:5bc0:40:2e2f:b6bb:664c:380b:dc65) (Ping timeout: 246 seconds)
2022-10-10 13:41:30 +0200 <tomsmeding> dminuoso: as in the Cont monad, or continuations in general?
2022-10-10 13:43:32 +0200dextaa(~dextaa@user/dextaa) (Remote host closed the connection)
2022-10-10 13:44:23 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:9618:2735:ae9e:6c5)
2022-10-10 13:47:12 +0200yuzhao(~yuzhao@36.112.45.72) (Ping timeout: 264 seconds)
2022-10-10 13:50:11 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 13:50:32 +0200nate1(~nate@98.45.169.16)
2022-10-10 13:50:41 +0200yuzhao(~yuzhao@36.112.45.72)
2022-10-10 13:50:56 +0200 <kuribas> OMG, like 90% of the interesting haskell jobs turn out to be "blockchain" solutions.
2022-10-10 13:51:15 +0200 <tdammers> follow the money
2022-10-10 13:51:48 +0200 <dr_merijn> Incorrect
2022-10-10 13:51:58 +0200 <dr_merijn> 90% of publically advertised Haskell jobs are blockchain :p
2022-10-10 13:52:03 +0200 <dr_merijn> That's not the same thing
2022-10-10 13:52:23 +0200 <tdammers> and yeah, that
2022-10-10 13:52:26 +0200 <dr_merijn> The non-quack jobs get filled fast (potentially before being advertised, even)
2022-10-10 13:52:35 +0200 <dr_merijn> So only the quack jobs remain to fill the listings
2022-10-10 13:52:47 +0200 <tdammers> this goes for all programming jobs, really
2022-10-10 13:52:56 +0200 <tdammers> the publicly advertised ones are "leftovers"
2022-10-10 13:52:57 +0200 <dr_merijn> You could move to Alaska, if those guys are still looking? xD
2022-10-10 13:53:48 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2022-10-10 13:55:33 +0200nate1(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-10-10 13:55:45 +0200yuzhao(~yuzhao@36.112.45.72) (Ping timeout: 268 seconds)
2022-10-10 13:55:51 +0200 <tomsmeding> O.o
2022-10-10 13:55:52 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-10-10 13:57:13 +0200 <dr_merijn> I think that was Target too?
2022-10-10 13:57:28 +0200Lycurgus(~juan@user/Lycurgus)
2022-10-10 13:57:38 +0200 <dr_merijn> It was basically "Alaska, no remote, but we're so desperate we'll even take people with no Haskell experience and teach you" :p
2022-10-10 13:58:21 +0200 <tdammers> desperate enough to teach people Haskell, but not so desperate as to teach people video chat and email
2022-10-10 13:59:56 +0200Lycurgus(~juan@user/Lycurgus) (Client Quit)
2022-10-10 14:00:25 +0200 <kuribas> lol
2022-10-10 14:02:29 +0200 <hpc> that's pretty standard
2022-10-10 14:03:00 +0200 <hpc> like being desperate to hire more people, but not desperate enough to leave a job posting open after it's been filled
2022-10-10 14:04:15 +0200frost(~frost@user/frost) (Quit: Client closed)
2022-10-10 14:04:53 +0200 <dr_merijn> My current org stopped posting jobs and applications rounds at all, since the applicant quality was so low, simply moved to "always hiring" and largely through word of mouth
2022-10-10 14:05:00 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Ping timeout: 268 seconds)
2022-10-10 14:05:02 +0200 <tdammers> or "we would really really like to hire you, and we can offer you more money, but you have to come in to work at 9:00 sharp, 9:15 is entirely impossible, no matter how reasonable your reasons"
2022-10-10 14:06:17 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca)
2022-10-10 14:07:46 +0200 <hpc> and not 8:59, excepting that thou proceed directly to 9:00 :P
2022-10-10 14:08:39 +0200 <tdammers> I actually declined the job because they wouldn't budge on that one
2022-10-10 14:09:39 +0200 <hpc> i had something like that for a java job where they used macs exclusively - no linux or windows and you had to use eclipse too
2022-10-10 14:10:02 +0200 <hpc> so i would have been stuck learning to press windows-1 whenever i wanted to autocomplete something :(
2022-10-10 14:10:36 +0200beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 264 seconds)
2022-10-10 14:10:49 +0200 <tdammers> "here's your work computer, no you cannot have root, no you cannot install anything on it, if you need anything, just tell us, and we'll install it for you within 6 work days"
2022-10-10 14:11:07 +0200 <tdammers> (where "tell us" means "file a ticket", and "within 6 work days" means "whenever we feel like it")
2022-10-10 14:11:22 +0200Sciencentistguy(~sciencent@hacksoc/ordinary-member) (Quit: o/)
2022-10-10 14:11:51 +0200 <hpc> 6 to 8 business weeks
2022-10-10 14:12:32 +0200 <tdammers> also the timer doesn't start ticking until you boss has signed off on your request
2022-10-10 14:12:48 +0200 <hpc> s/your boss/the change management team/
2022-10-10 14:15:06 +0200Sciencentistguy(~sciencent@hacksoc/ordinary-member)
2022-10-10 14:15:32 +0200 <tomsmeding> shove in a linux live usb
2022-10-10 14:16:19 +0200 <tomsmeding> the easiest way to get root on your work machine here at my place seems to be to request linux (as opposed to the standard, which is windows)
2022-10-10 14:21:48 +0200mixphix(~mixphix@bras-base-otwaon237cw-grc-11-174-91-129-69.dsl.bell.ca) (Quit: leaving)
2022-10-10 14:23:06 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-10-10 14:24:19 +0200leah2(~leah@vuxu.org) (Ping timeout: 244 seconds)
2022-10-10 14:25:22 +0200leah2(~leah@vuxu.org)
2022-10-10 14:25:41 +0200leah2(~leah@vuxu.org) (Remote host closed the connection)
2022-10-10 14:25:41 +0200yuzhao(~yuzhao@36.112.45.72)
2022-10-10 14:27:56 +0200leah2(~leah@vuxu.org)
2022-10-10 14:29:13 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2022-10-10 14:29:28 +0200ozkutuk(~ozkutuk@176.240.173.153)
2022-10-10 14:35:48 +0200leah2(~leah@vuxu.org) (Ping timeout: 264 seconds)
2022-10-10 14:39:56 +0200 <dminuoso> tomsmeding: manual continuations.
2022-10-10 14:40:12 +0200 <dminuoso> But it turns out writing myself some `newtype ExStateT s e m a = ExStateT { runExStateT :: forall r. s -> (e -> m r) -> (s -> a -> m r) -> m r }` makes me go sane again.
2022-10-10 14:40:21 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-10-10 14:40:50 +0200 <dminuoso> Come to think of it, the `m` is quite useless.
2022-10-10 14:41:30 +0200 <dminuoso> I suppose its just convenient for stacking transformers, but I dont use those.
2022-10-10 14:42:07 +0200 <dminuoso> Continuations are best hidden from code logic, they make most code very incomprehensible.
2022-10-10 14:42:13 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 250 seconds)
2022-10-10 14:44:44 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-10-10 14:46:16 +0200 <tomsmeding> dminuoso: have you ever spoken with JS developers? Callbacks are their breakfast and callbacks = continuations
2022-10-10 14:47:05 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-10-10 14:47:21 +0200 <tomsmeding> I don't find continuations very unreadable but that's mosty in the case where there's exactly one; i.e. where you haven't CPS'ed a sum type
2022-10-10 14:47:25 +0200 <dminuoso> In a strict language they tend to be not as harmful
2022-10-10 14:47:30 +0200 <dr_merijn> tomsmeding: Callbacks are continuations, but worse :p
2022-10-10 14:47:49 +0200leah2(~leah@vuxu.org)
2022-10-10 14:49:19 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-10-10 14:50:32 +0200 <dminuoso> I mean evil constructs like callCC just dont really exist in JavaScript.
2022-10-10 14:53:41 +0200odnes_(~odnes@5-203-217-113.pat.nym.cosmote.net)
2022-10-10 14:55:44 +0200disco-dave[m](~disco-dav@2001:470:69fc:105::2:1892)
2022-10-10 14:55:56 +0200 <kuribas> you need to understand continuations in order to read ghc assembly code.
2022-10-10 14:56:48 +0200odnes(~odnes@5-203-217-113.pat.nym.cosmote.net) (Ping timeout: 264 seconds)
2022-10-10 14:58:23 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-10-10 15:01:23 +0200burnsidesLlama(~burnsides@client-8-82.eduroam.oxuni.org.uk)
2022-10-10 15:02:02 +0200 <dminuoso> Speaking of continuations, say Im using `Data.HashMap.lookup :: (Eq k, Hashable k) => k -> HashMap k v -> Maybe v` - is there some trick to ensure no intermediate Just/Nothing will actually be created?
2022-10-10 15:02:34 +0200 <kuribas> dminuoso: look at core to see if it is actually created?
2022-10-10 15:03:09 +0200 <kuribas> that depends on lookup being inlined though...
2022-10-10 15:03:31 +0200 <dminuoso> Well, Im rather interested in tractable optimizations
2022-10-10 15:03:33 +0200 <kuribas> dminuoso: but then, is this really a bottleneck?
2022-10-10 15:03:42 +0200 <dminuoso> No, this is just exploration
2022-10-10 15:04:01 +0200 <dminuoso> lookup# :: (Eq k, Hashable k) => k -> HashMap k v -> (# (# #) | v #)
2022-10-10 15:04:18 +0200 <dminuoso> Mmm.
2022-10-10 15:04:34 +0200 <kuribas> why even bother then
2022-10-10 15:04:37 +0200 <dminuoso> It's a shame all these libraries do not expose their internals
2022-10-10 15:04:43 +0200 <dminuoso> Because it's fun?
2022-10-10 15:05:41 +0200 <dminuoso> But to be fair, in a high volume situation, this is likely a a problem yes. Im encoding an Int-indexed tree as a recursive HashMap
2022-10-10 15:05:54 +0200 <dminuoso> So to descend the tree, I will do a lot of nested M.lookup
2022-10-10 15:07:17 +0200 <kuribas> hard to say without profiling
2022-10-10 15:07:45 +0200 <dminuoso> Sure, but as I have pointed out the primary reason is not an actual performance concern.
2022-10-10 15:10:34 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-10-10 15:12:52 +0200razetime(~quassel@117.254.34.90) (Ping timeout: 246 seconds)
2022-10-10 15:22:20 +0200 <dr_merijn> dminuoso: How high volume?
2022-10-10 15:22:47 +0200jero98772(~jero98772@2800:484:1d80:d8ce:3490:26c5:1782:da8c)
2022-10-10 15:25:35 +0200lucques(~lucques@dynamic-046-114-088-103.46.114.pool.telefonica.de) (Ping timeout: 268 seconds)
2022-10-10 15:27:10 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-10-10 15:28:47 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2022-10-10 15:31:16 +0200 <ski> dminuoso : do you have left-nested/associated `(>>=)' on `Maybe' ?
2022-10-10 15:34:16 +0200MajorBiscuit(~MajorBisc@145.94.167.158) (Ping timeout: 268 seconds)
2022-10-10 15:34:53 +0200ph88(~ph88@2a02:8109:9e00:71d0:7166:ab0e:b806:c76c)
2022-10-10 15:35:33 +0200tgi(~tgi@189.180.118.117)
2022-10-10 15:35:35 +0200 <lyxia> Are there other examples of lazy data structures with a complexity proof using Okasaki's banker's method besides the queues from his thesis?
2022-10-10 15:40:49 +0200burnsidesLlama(~burnsides@client-8-82.eduroam.oxuni.org.uk) (Read error: Connection reset by peer)
2022-10-10 15:42:27 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9960:b0f8:561f:a74b)
2022-10-10 15:43:42 +0200burnsidesLlama(~burnsides@client-8-82.eduroam.oxuni.org.uk)
2022-10-10 15:46:54 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9960:b0f8:561f:a74b) (Ping timeout: 264 seconds)
2022-10-10 15:47:05 +0200jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-10-10 15:47:17 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 252 seconds)
2022-10-10 15:49:52 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-10-10 15:49:52 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-10-10 15:49:52 +0200wroathe(~wroathe@user/wroathe)
2022-10-10 15:50:01 +0200 <dminuoso> ski: Are you thinking of codensity?
2022-10-10 15:50:10 +0200causal(~user@50.35.83.177)
2022-10-10 15:50:19 +0200 <dminuoso> And yes
2022-10-10 15:52:14 +0200 <ski> yes. and also of "Multi-return function call" by Olin Shivers,David Fisher in 2004-09,2006-0[79] at <https://www.ccs.neu.edu/home/shivers/citations.html#mrlc>
2022-10-10 15:53:04 +0200 <ski> (which is what i think of, cue the term "unboxed sum type" .. not being what `UnboxedSumTypes' give you)
2022-10-10 15:54:30 +0200mc47(~mc47@xmonad/TheMC47)
2022-10-10 15:54:38 +0200mc47(~mc47@xmonad/TheMC47) (Client Quit)
2022-10-10 16:05:37 +0200zaquest(~notzaques@5.130.79.72) (Ping timeout: 252 seconds)
2022-10-10 16:05:47 +0200odnes__(~odnes@5-203-217-113.pat.nym.cosmote.net)
2022-10-10 16:06:19 +0200odnes_(~odnes@5-203-217-113.pat.nym.cosmote.net) (Read error: Connection reset by peer)
2022-10-10 16:08:16 +0200jero98772(~jero98772@2800:484:1d80:d8ce:3490:26c5:1782:da8c) (Ping timeout: 260 seconds)
2022-10-10 16:10:01 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2022-10-10 16:17:49 +0200zaquest(~notzaques@5.130.79.72)
2022-10-10 16:17:54 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:9618:2735:ae9e:6c5) (Quit: WeeChat 2.8)
2022-10-10 16:18:35 +0200zer0bitz(~zer0bitz@2001:2003:f748:2000:bc16:3d64:146f:ea3e)
2022-10-10 16:20:56 +0200jero98772(~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff)
2022-10-10 16:21:17 +0200nshepperd2(nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (Quit: Ping timeout (120 seconds))
2022-10-10 16:21:35 +0200beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2022-10-10 16:24:21 +0200nshepperd2(~nshepperd@li364-218.members.linode.com)
2022-10-10 16:29:52 +0200rosalind(rosalind@id-194105.uxbridge.irccloud.com) (Quit: bbl)
2022-10-10 16:30:27 +0200Sgeo(~Sgeo@user/sgeo)
2022-10-10 16:33:09 +0200jinsunGuest8471
2022-10-10 16:33:09 +0200jinsun__(~jinsun@user/jinsun)
2022-10-10 16:33:10 +0200Guest8471(~jinsun@user/jinsun) (Killed (copper.libera.chat (Nickname regained by services)))
2022-10-10 16:33:10 +0200jinsun__jinsun
2022-10-10 16:38:35 +0200razetime(~quassel@117.254.34.90)
2022-10-10 16:39:25 +0200kenran(~user@user/kenran) (Remote host closed the connection)
2022-10-10 16:42:13 +0200natechan(~nate@98.45.169.16)
2022-10-10 16:43:35 +0200zns(~zns@user/zns)
2022-10-10 16:45:45 +0200dr_merijn(~dr_merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
2022-10-10 16:46:24 +0200lucques(~lucques@dynamic-046-114-088-103.46.114.pool.telefonica.de)
2022-10-10 16:47:19 +0200burnsidesLlama(~burnsides@client-8-82.eduroam.oxuni.org.uk) (Remote host closed the connection)
2022-10-10 16:49:36 +0200mvk(~mvk@2607:fea8:5ce3:8500::a80f) (Ping timeout: 264 seconds)
2022-10-10 16:53:43 +0200rosalind(rosalind@id-194105.uxbridge.irccloud.com)
2022-10-10 16:54:48 +0200jespada(~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (Read error: Connection reset by peer)
2022-10-10 16:55:30 +0200jespada(~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net)
2022-10-10 17:03:12 +0200zns(~zns@user/zns) (Quit: zzz)
2022-10-10 17:03:27 +0200zns(~zns@user/zns)
2022-10-10 17:04:37 +0200zns(~zns@user/zns) (Client Quit)
2022-10-10 17:04:58 +0200Midjak(~Midjak@82.66.147.146) (Ping timeout: 268 seconds)
2022-10-10 17:09:42 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-10-10 17:11:54 +0200dr_merijn(~dr_merijn@86-86-29-250.fixed.kpn.net)
2022-10-10 17:18:37 +0200lucques(~lucques@dynamic-046-114-088-103.46.114.pool.telefonica.de) (Quit: Leaving)
2022-10-10 17:18:58 +0200 <dminuoso> The haddock of unsafeDupablePerformIO mentions "It may even happen that one of the duplicated IO actions is only run partially, and then interrupted in the middle without an exception being raised"
2022-10-10 17:19:20 +0200 <dminuoso> What might cause such an IO action to only run partially?
2022-10-10 17:20:35 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-10-10 17:21:04 +0200nate1(~nate@98.45.169.16)
2022-10-10 17:21:25 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-10-10 17:22:48 +0200zer0bitz_(~zer0bitz@2001:2003:f748:2000:bc16:3d64:146f:ea3e)
2022-10-10 17:22:56 +0200zer0bitz(~zer0bitz@2001:2003:f748:2000:bc16:3d64:146f:ea3e) (Ping timeout: 260 seconds)
2022-10-10 17:23:46 +0200 <EvanR> is there ever a guarantee that a complex IO action runs "all the way"?
2022-10-10 17:24:18 +0200 <EvanR> why transactions exist etc
2022-10-10 17:26:30 +0200nate1(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-10-10 17:27:42 +0200 <EvanR> sorry that doesn't explain any additional inexplicable "ghosting" ghc might do to your actions
2022-10-10 17:31:59 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-10-10 17:32:13 +0200 <c_wraith> I suspect it has to do with two threads both entering the thunk and then one of them getting canceled after the other completes.
2022-10-10 17:32:52 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-10-10 17:33:59 +0200chele(~chele@user/chele) (Remote host closed the connection)
2022-10-10 17:35:04 +0200 <EvanR> treat my IO action as pure, very pure
2022-10-10 17:39:03 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9960:b0f8:561f:a74b)
2022-10-10 17:40:19 +0200odnes__(~odnes@5-203-217-113.pat.nym.cosmote.net) (Quit: Leaving)
2022-10-10 17:40:24 +0200kenran(~user@user/kenran)
2022-10-10 17:43:02 +0200son0p(~ff@181.136.122.143)
2022-10-10 17:43:38 +0200 <dminuoso> c_wraith: Does GHC have some such signalling mechanism?
2022-10-10 17:43:49 +0200 <dminuoso> Or is it just some theoretical construct that, at some point, may be added?
2022-10-10 17:45:15 +0200 <geekosaur> actually IIRC it's a construct that was removed
2022-10-10 17:46:29 +0200 <geekosaur> they decided that racing two identical pure (or "pure" given unsafeDupablePerformIO) actions was cheaper than either locking or canceling one on completion of the other
2022-10-10 17:47:17 +0200 <c_wraith> Pieces for it exist - <<loop>> detection still involves tracking what thunks a blocked thread has entered. But I wouldn't be surprised that it was determined too expensive to clean up the non-deadlock cases
2022-10-10 17:47:21 +0200nate1(~nate@98.45.169.16)
2022-10-10 17:47:51 +0200rosalind(rosalind@id-194105.uxbridge.irccloud.com) (Quit: Yawn)
2022-10-10 17:48:06 +0200 <EvanR> so basically, if evaluating something once is good. Twice might be better
2022-10-10 17:48:12 +0200 <EvanR> two evaluations is better than one
2022-10-10 17:48:23 +0200 <geekosaur> not so much better as irrelevant
2022-10-10 17:48:38 +0200 <geekosaur> and preventing it more expensive than letting it happen
2022-10-10 17:48:44 +0200 <EvanR> interesting
2022-10-10 17:49:27 +0200 <dminuoso> So even the possibility of being aborted (!) has some subtle side effects. This means I have to be super careful how memory allocation occurs.
2022-10-10 17:49:44 +0200 <lyxia> maybe there are also weird exit conditions in FFI
2022-10-10 17:50:02 +0200 <geekosaur> there is such a thing as interruptible FFI
2022-10-10 17:50:26 +0200 <geekosaur> (GHC extension not specified in the standard)
2022-10-10 17:50:45 +0200 <dminuoso> But interruptible is just something with respect to mask right?
2022-10-10 17:50:59 +0200 <geekosaur> but honestly, if you';re doing unsafe*PerformIO, you shouldn't be doing allocation
2022-10-10 17:51:03 +0200 <dminuoso> The mere wording of unsafeDupablePerformIO suggests that if its aborted, the mechanism might not even be an async exception.
2022-10-10 17:51:11 +0200 <dminuoso> (as that would be catchable by bracket)
2022-10-10 17:51:12 +0200mr_mxyzptlk(~Srain@2806:266:48a:240:a579:dfff:fd47:c997)
2022-10-10 17:51:33 +0200 <geekosaur> iirc it's actually a signal, since C calls have no clue about masks or etc.
2022-10-10 17:52:29 +0200 <c_wraith> geekosaur: unsafe IO allocating isn't a big deal unless you're using the evil version from bytestring.
2022-10-10 17:53:04 +0200 <c_wraith> geekosaur: if your code can leak foreign memory on exceptions, it can do that whether you use unsafePerformIO or not
2022-10-10 17:53:41 +0200 <geekosaur> true
2022-10-10 17:53:54 +0200 <dminuoso> c_wraith: If I infer some comments from dfeuer correctly, if you use unsafeDupablePerformIO, allocate unpinned memory and then get cancelled you [have leaked memory]
2022-10-10 17:54:43 +0200 <c_wraith> unpinned.. foreign memory? I might believe that. But normal GHC allocation is also unpinned. :P
2022-10-10 17:54:47 +0200zebra(~zebra@202.91.42.5)
2022-10-10 17:54:58 +0200 <dminuoso> Things like allocaBytes are pinned though.
2022-10-10 17:55:43 +0200kenran(~user@user/kenran) (Remote host closed the connection)
2022-10-10 17:55:46 +0200MajorBiscuit(~MajorBisc@145.94.167.158)
2022-10-10 17:55:54 +0200MajorBiscuit(~MajorBisc@145.94.167.158) (Client Quit)
2022-10-10 17:56:05 +0200 <EvanR> how does one lose unpinned memory
2022-10-10 17:56:13 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-10-10 17:56:28 +0200 <c_wraith> Yeah, but I want to make a point in the other direction. *any* allocation inside bytestring's evil unsafe IO is fragile. Even GHC's own allocation.
2022-10-10 17:56:45 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-10-10 17:57:00 +0200 <dminuoso> Well, Im just talking unsafeDupablePerformIO, but accursedUnutterablePerform. The latter is completely evil for different reasons.
2022-10-10 17:57:06 +0200 <dminuoso> s/but/not/
2022-10-10 17:57:48 +0200 <dminuoso> EvanR: I do not know, honestly. Im tempted to poke dfeuer and see whether he can clarify
2022-10-10 17:58:00 +0200 <dminuoso> https://stackoverflow.com/a/64398915
2022-10-10 17:58:03 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds)
2022-10-10 17:58:05 +0200 <dminuoso> This was his message, for clarity
2022-10-10 17:59:10 +0200 <EvanR> that looks like malloc
2022-10-10 17:59:13 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.6)
2022-10-10 17:59:22 +0200 <EvanR> if you malloc something, then get aborted yeah
2022-10-10 18:00:10 +0200 <dminuoso> His wording strongly suggests its not about malloc, its about pinned or unpinned memory
2022-10-10 18:01:11 +0200 <dminuoso> [...] the instances defined in memory all seem fine—they too allocate pinned memory. But the class does not document this as a requirement [...]
2022-10-10 18:01:15 +0200 <EvanR> no one mentions unpinned memory at any point, as if it's not even a thing xD
2022-10-10 18:01:28 +0200 <dminuoso> Heh
2022-10-10 18:03:00 +0200 <c_wraith> well, foreign buffers are the big deal. and an unpinned foreign buffer is... not something I see a use for offhand
2022-10-10 18:03:46 +0200 <dminuoso> Fair, those make perfecft sense without second thought.
2022-10-10 18:07:54 +0200zns(~zns@user/zns)
2022-10-10 18:08:59 +0200zns(~zns@user/zns) (Client Quit)
2022-10-10 18:09:10 +0200zns(~zns@user/zns)
2022-10-10 18:09:24 +0200CiaoSen(~Jura@p200300c95700eb002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2022-10-10 18:10:12 +0200nschoe(~q@141.101.51.197)
2022-10-10 18:13:16 +0200 <dminuoso> So mallocForeignPtrBtes seems benign inside unsafeDupablePerformIO, since its just newPinnedByteArray# under the hood.
2022-10-10 18:13:27 +0200 <dminuoso> *mallocForeignPtrBytes
2022-10-10 18:13:34 +0200coot(~coot@213.134.171.3)
2022-10-10 18:13:35 +0200zebra(~zebra@202.91.42.5) (Quit: Client closed)
2022-10-10 18:13:57 +0200hochata(~user@user/hochata)
2022-10-10 18:15:32 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9960:b0f8:561f:a74b) (Remote host closed the connection)
2022-10-10 18:18:16 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:6640:d6a5:6547:23ed)
2022-10-10 18:18:36 +0200Tuplanolla(~Tuplanoll@91-159-69-34.elisa-laajakaista.fi)
2022-10-10 18:19:10 +0200coot(~coot@213.134.171.3) (Remote host closed the connection)
2022-10-10 18:19:31 +0200zebra(~zebra@202.91.41.13)
2022-10-10 18:21:00 +0200kuribas(~user@ptr-17d51ep16a0mmacta57.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2022-10-10 18:23:19 +0200Midjak(~Midjak@82.66.147.146)
2022-10-10 18:27:15 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-10-10 18:28:46 +0200Franciman(~Franciman@mx1.fracta.dev) (Read error: Connection reset by peer)
2022-10-10 18:30:48 +0200michalz(~michalz@185.246.207.205)
2022-10-10 18:32:32 +0200jinsun__(~jinsun@user/jinsun)
2022-10-10 18:32:32 +0200jinsunGuest4490
2022-10-10 18:32:32 +0200Guest4490(~jinsun@user/jinsun) (Killed (sodium.libera.chat (Nickname regained by services)))
2022-10-10 18:32:32 +0200jinsun__jinsun
2022-10-10 18:35:46 +0200econo(uid147250@user/econo)
2022-10-10 18:36:35 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:6640:d6a5:6547:23ed) (Quit: WeeChat 2.8)
2022-10-10 18:37:25 +0200teo(~teo@user/teo) (Ping timeout: 268 seconds)
2022-10-10 18:42:17 +0200nschoe(~q@141.101.51.197) (Ping timeout: 268 seconds)
2022-10-10 18:43:17 +0200 <EvanR> hmm, can I not get a `op` b c d to parse as (a `op` b) c d using sufficiently high precedence
2022-10-10 18:43:55 +0200zebra(~zebra@202.91.41.13) (Quit: Client closed)
2022-10-10 18:44:59 +0200fserucas_(~fserucas@74.47.115.89.rev.vodafone.pt) (Quit: Leaving)
2022-10-10 18:47:00 +0200 <pavonia> I don't think so, function application always binds strongest
2022-10-10 18:47:27 +0200 <EvanR> fair
2022-10-10 18:48:06 +0200leah2(~leah@vuxu.org) (Ping timeout: 260 seconds)
2022-10-10 18:48:07 +0200 <geekosaur> right, you can't specify a precedence that matches or beats the built-in stuff
2022-10-10 18:48:18 +0200 <geekosaur> (application, record updates, etc.)
2022-10-10 18:49:08 +0200nate1(~nate@98.45.169.16) (Ping timeout: 268 seconds)
2022-10-10 18:53:23 +0200loras(~bc@c-73-139-125-125.hsd1.fl.comcast.net)
2022-10-10 18:54:00 +0200Franciman(~Franciman@mx1.fracta.dev)
2022-10-10 18:59:41 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-10-10 19:00:44 +0200Midjak(~Midjak@82.66.147.146) (Read error: Connection reset by peer)
2022-10-10 19:01:10 +0200Midjak(~Midjak@82.66.147.146)
2022-10-10 19:01:54 +0200leah2(~leah@vuxu.org)
2022-10-10 19:03:33 +0200tgi(~tgi@189.180.118.117) (Remote host closed the connection)
2022-10-10 19:03:50 +0200tgi(~tgi@189.180.118.117)
2022-10-10 19:05:03 +0200tgithegeekinside
2022-10-10 19:05:12 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 19:05:54 +0200thegeekinside(~tgi@189.180.118.117) (Remote host closed the connection)
2022-10-10 19:06:13 +0200thegeekinside(~thegeekin@189.180.118.117)
2022-10-10 19:07:03 +0200ft(~ft@p3e9bc57b.dip0.t-ipconnect.de)
2022-10-10 19:07:15 +0200thegeekinside(~thegeekin@189.180.118.117) ()
2022-10-10 19:08:37 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-10-10 19:11:19 +0200Midjak(~Midjak@82.66.147.146) (Read error: Connection reset by peer)
2022-10-10 19:11:48 +0200Midjak(~Midjak@82.66.147.146)
2022-10-10 19:13:32 +0200thegeekinside(~thegeekin@189.180.118.117)
2022-10-10 19:13:42 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-10-10 19:13:55 +0200thegeekinside(~thegeekin@189.180.118.117) (Remote host closed the connection)
2022-10-10 19:14:16 +0200thegeekinside(~thegeekin@189.180.118.117)
2022-10-10 19:16:02 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9960:b0f8:561f:a74b)
2022-10-10 19:17:11 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-10-10 19:18:40 +0200vorpuni(~pvorp@2001:861:3881:c690:6d50:829f:f2b1:8790)
2022-10-10 19:19:56 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9960:b0f8:561f:a74b) (Remote host closed the connection)
2022-10-10 19:19:59 +0200mvk(~mvk@2607:fea8:5ce3:8500::a80f)
2022-10-10 19:21:11 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9960:b0f8:561f:a74b)
2022-10-10 19:22:36 +0200shriekingnoise(~shrieking@186.137.167.202)
2022-10-10 19:24:40 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-10-10 19:24:41 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-10-10 19:24:41 +0200wroathe(~wroathe@user/wroathe)
2022-10-10 19:25:00 +0200loras(~bc@c-73-139-125-125.hsd1.fl.comcast.net) (Quit: Leaving)
2022-10-10 19:27:31 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-10-10 19:27:38 +0200thegeekinside(~thegeekin@189.180.118.117) (Remote host closed the connection)
2022-10-10 19:29:26 +0200thegeekinside(~thegeekin@189.180.118.117)
2022-10-10 19:30:17 +0200 <monochrom> Worst of both worlds: Unpinned buffer but its address is stored in a pinned object so the buffer is movable and the C side can still find it. >:)
2022-10-10 19:30:50 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-10 19:32:33 +0200littlefinger(~littlefin@38.142.23.50)
2022-10-10 19:32:49 +0200kora9(~kora@185.224.57.161)
2022-10-10 19:34:34 +0200 <kora9> Hi. I'm using cabal-install 3.2.0.0 and cabal update downloading 01-index.tar.gz is taking forever. I'm on a train so not able to update too much right now, is it possible for me to manually download 01-index.tar.gz and place it/unpack it somewhere for cabal to detect it? (It seems to download faster in a web browser)
2022-10-10 19:35:25 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 268 seconds)
2022-10-10 19:36:40 +0200 <davean> kora9: yes, ~/.cabal/packages/hackage.haskell.org/ but I don't recomend it - a browser shouldn't be faster and it is large
2022-10-10 19:36:53 +0200beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 265 seconds)
2022-10-10 19:37:11 +0200 <kora9> davean: Oh, would you know roughly how large?
2022-10-10 19:37:19 +0200 <davean> if you have it downloaded already cabal only fetches more of it, doesn't download it again
2022-10-10 19:37:34 +0200 <davean> a bit over 100MiB
2022-10-10 19:38:14 +0200 <kora9> I don't have a local index so it's fetching it from scratch. Ah ok, 100MiB will probably take a few minutes on this connection. Thanks for the help :-)
2022-10-10 19:39:26 +0200 <geekosaur> cabal does tend to be a bit slow about it since it's processing as it goes instead of downloading all at once and processing after, iirc. newer versions are somewhat better about it (current cabal is 3.8.1.0)
2022-10-10 19:40:40 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-10-10 19:41:33 +0200 <kora9> geekosaur: Right, I noticed it's piping it directly from curl and I did see a few github bugs about cabal and speed. I assumed it would be fixed after a cabal update of cabal
2022-10-10 19:42:44 +0200littlefinger(~littlefin@38.142.23.50) (Ping timeout: 252 seconds)
2022-10-10 19:44:14 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
2022-10-10 19:45:17 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-10-10 19:46:57 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-10-10 19:47:16 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 246 seconds)
2022-10-10 19:48:08 +0200kora9(~kora@185.224.57.161) (Quit: WeeChat 3.5)
2022-10-10 19:52:17 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
2022-10-10 19:52:35 +0200hochata(~user@user/hochata) (Ping timeout: 268 seconds)
2022-10-10 19:52:56 +0200Midjak(~Midjak@82.66.147.146) (Read error: Connection reset by peer)
2022-10-10 19:54:46 +0200zaquest(~notzaques@5.130.79.72) (Ping timeout: 265 seconds)
2022-10-10 19:55:53 +0200mbuf(~Shakthi@49.205.87.31) (Quit: Leaving)
2022-10-10 19:56:52 +0200 <davean> ksu: cabal update doesn't update cabal, just its dataset
2022-10-10 19:58:27 +0200thegeekinside(~thegeekin@189.180.118.117) (Remote host closed the connection)
2022-10-10 20:00:34 +0200arkeet(~arkeet@moriya.ca) (Ping timeout: 265 seconds)
2022-10-10 20:00:58 +0200thegeekinside(~thegeekin@189.180.118.117)
2022-10-10 20:04:05 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-10 20:06:44 +0200zaquest(~notzaques@5.130.79.72)
2022-10-10 20:10:07 +0200Midjak(~Midjak@82.66.147.146)
2022-10-10 20:11:12 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 264 seconds)
2022-10-10 20:12:34 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9960:b0f8:561f:a74b) (Remote host closed the connection)
2022-10-10 20:15:19 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-10-10 20:20:27 +0200razetime(~quassel@117.254.34.90) (Remote host closed the connection)
2022-10-10 20:21:48 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
2022-10-10 20:23:46 +0200thegeekinside(~thegeekin@189.180.118.117) (Remote host closed the connection)
2022-10-10 20:24:09 +0200thegeekinside(~thegeekin@189.180.118.117)
2022-10-10 20:24:34 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-10-10 20:28:26 +0200thegeekinside(~thegeekin@189.180.118.117) (Remote host closed the connection)
2022-10-10 20:28:53 +0200argento(~argent0@191.81.194.124)
2022-10-10 20:32:03 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds)
2022-10-10 20:32:21 +0200mvk(~mvk@2607:fea8:5ce3:8500::a80f) (Ping timeout: 250 seconds)
2022-10-10 20:33:02 +0200 <argento> hello, what's the proper way to concatenate parsers? E.g: to parse 1.23, `many1' digit <??> char '.' <??> many1' digit`. Where <??> is the operator I'm missing.
2022-10-10 20:34:14 +0200 <EvanR> >>
2022-10-10 20:34:35 +0200zebrag(~chris@user/zebrag)
2022-10-10 20:35:11 +0200 <argento> Thanks
2022-10-10 20:35:22 +0200 <EvanR> in this case << would also work xD
2022-10-10 20:37:28 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-10-10 20:38:20 +0200thegeekinside(~thegeekin@189.180.118.117)
2022-10-10 20:40:43 +0200thegeekinside(~thegeekin@189.180.118.117) (Remote host closed the connection)
2022-10-10 20:40:58 +0200thegeekinside(~thegeekin@189.180.118.117)
2022-10-10 20:41:18 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-10-10 20:41:22 +0200thegeekinside(~thegeekin@189.180.118.117) (Remote host closed the connection)
2022-10-10 20:43:53 +0200thegeekinside(~thegeekin@189.180.118.117)
2022-10-10 20:44:08 +0200nschoe(~q@2a01:e0a:8e:a190:ef30:9c9d:b81a:a11)
2022-10-10 20:44:09 +0200nschoe(~q@2a01:e0a:8e:a190:ef30:9c9d:b81a:a11) (Client Quit)
2022-10-10 20:44:40 +0200LisaLiz(~KELEBEK@95.70.185.133)
2022-10-10 20:45:17 +0200LisaLiz(~KELEBEK@95.70.185.133) (Client Quit)
2022-10-10 20:47:52 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
2022-10-10 20:48:39 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2022-10-10 20:48:45 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-10-10 20:52:45 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-10 20:53:17 +0200 <monochrom> But I suppose you also want the digits themselves. pure (\x _ y -> x is "1" and y is "23" what do you want to do with them?) <*> many1 digit <*> char '>' <*> many1 digit
2022-10-10 20:54:13 +0200son0p(~ff@181.136.122.143) (Ping timeout: 265 seconds)
2022-10-10 20:54:24 +0200beteigeuze(~Thunderbi@89.187.168.40)
2022-10-10 20:55:35 +0200 <argento> monochrom: I want exactly that: `x <> '.':y`. I thought there was a way to lift the `<>`
2022-10-10 20:56:09 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2022-10-10 20:56:26 +0200DDR(~DDR@2604:3d08:4c7f:8250:79f3:1c2b:2580:abd1)
2022-10-10 20:56:39 +0200 <monochrom> (\x _ y -> x <> "." <> y)
2022-10-10 20:57:20 +0200 <monochrom> A very good tutorial for your parser library would explain what are pure and <*> and why you need them.
2022-10-10 20:57:24 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 268 seconds)
2022-10-10 20:57:35 +0200beteigeuze(~Thunderbi@89.187.168.40) (Remote host closed the connection)
2022-10-10 20:57:49 +0200 <monochrom> Although, very good tutorials don't exist. Only mediocre ones do.
2022-10-10 20:58:01 +0200 <monochrom> At least, not free of charge.
2022-10-10 20:58:12 +0200lottaquestions_(~nick@2607:fa49:503e:7100:17df:3c92:219a:a0dd) (Quit: Konversation terminated!)
2022-10-10 20:58:29 +0200lottaquestions_(~nick@2607:fa49:503e:7100:253:563:daad:1d7e)
2022-10-10 20:59:35 +0200 <EvanR> applicative tutorial pro, first month's free, check promocode in the description
2022-10-10 21:00:49 +0200zns(~zns@user/zns) (Quit: zzz)
2022-10-10 21:01:07 +0200 <monochrom> Well yeah but just as I don't want to bring up "Monad" in an IO tutorial, I don't want to bring up "Applicative" in a parser tutorial.
2022-10-10 21:01:17 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
2022-10-10 21:01:29 +0200 <zzz> wait, people are learning parser combinators before Applicative?
2022-10-10 21:01:47 +0200 <monochrom> People are learning lists and maybes before Functor, too.
2022-10-10 21:01:50 +0200 <EvanR> examples before the general theorem, concrete before abstract
2022-10-10 21:02:28 +0200 <monochrom> You also learned integers before monoids and groups and rings. You also learned rational numbers before fields.
2022-10-10 21:02:42 +0200 <monochrom> Hell, you also learned natural numbers before integers.
2022-10-10 21:02:48 +0200 <zzz> yes and i consider that bad
2022-10-10 21:03:02 +0200 <EvanR> you're right, it's illogical
2022-10-10 21:03:09 +0200 <monochrom> You also learned Chess rules before learning "strategies" "control the centre".
2022-10-10 21:03:14 +0200 <EvanR> I will never understand humans
2022-10-10 21:03:37 +0200 <monochrom> What do you think would be a good order then?
2022-10-10 21:04:00 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-10-10 21:04:51 +0200 <zzz> ins this specific case of learning Haskell, i would think what makes most sense is understanding the Prelude before random libraries
2022-10-10 21:04:58 +0200 <monochrom> Category theory in kindergarten? Universal algebra in primary and secondary school? Rings and fields in university? Then finally rational numbers and integers themselves in grad school, for those who actually want grade school and get admitted?
2022-10-10 21:05:25 +0200 <EvanR> evolution of a haskell programmer
2022-10-10 21:06:44 +0200 <EvanR> you finally made it to the level data Nat = Z | S Nat
2022-10-10 21:06:44 +0200 <monochrom> So basically only people with MSc and PhD know how to make sense of "I earned $40 today and spend $20 today"?
2022-10-10 21:06:46 +0200 <zzz> i don't think learning order should be disctated by "level of abstraction", but let's not get derailed here
2022-10-10 21:07:08 +0200 <monochrom> Although, that is already happening as a status quo, so meh.
2022-10-10 21:08:09 +0200 <zzz> lol, no PhD student earns $40 a day :D
2022-10-10 21:08:37 +0200 <Digit> asked them all?
2022-10-10 21:09:14 +0200 <monochrom> Oh, that's an example of a very good day when the PhD student has had a private tutoring customer.
2022-10-10 21:09:36 +0200 <zzz> yeah, teaching Applicatives
2022-10-10 21:09:40 +0200 <zzz> ka-tching
2022-10-10 21:10:11 +0200thegeekinside(~thegeekin@189.180.118.117) (Remote host closed the connection)
2022-10-10 21:10:12 +0200 <monochrom> And also has had free pizza from a seminar so it's only $20 spent that day haha.
2022-10-10 21:10:25 +0200 <monochrom> perhaps s/haha/sosad/ heh
2022-10-10 21:10:38 +0200madnight(~madnight@static.59.103.201.195.clients.your-server.de) (Quit: ZNC 1.7.1 - https://znc.in)
2022-10-10 21:10:56 +0200 <EvanR> the music at the end of incredible hulk tv show
2022-10-10 21:11:07 +0200thegeekinside(~thegeekin@189.180.118.117)
2022-10-10 21:13:01 +0200 <monochrom> I can agree about Prelude before parsers. But even within Prelude I still want to teach [], Maybe, IO before FAM.
2022-10-10 21:15:29 +0200zns(~zns@user/zns)
2022-10-10 21:16:48 +0200 <EvanR> [] Maybe IO are pretty simple and important as they stand. Another one is using :t to ask for the type of things. And a lot of stuff, including Prelude operators report Applicative...
2022-10-10 21:17:52 +0200 <EvanR> so either you explain that or give them the baby prelude with specialized things
2022-10-10 21:18:26 +0200 <geekosaur> and that gives you Haskell98 with map specialized to []
2022-10-10 21:18:42 +0200 <geekosaur> whereas earlier versions map was fmap
2022-10-10 21:20:21 +0200raym(~aritra@user/raym) (Ping timeout: 260 seconds)
2022-10-10 21:20:30 +0200 <EvanR> yeah we actually have the baby prelude in that case
2022-10-10 21:21:21 +0200 <geekosaur> and used to have it in more cases, but it's been turning away from that. FTP, the reintroduction (behind an extension) of monad comprehensions, etc.
2022-10-10 21:21:36 +0200asivitz(uid178348@id-178348.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2022-10-10 21:22:48 +0200pavonia(~user@user/siracusa)
2022-10-10 21:24:36 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk)
2022-10-10 21:25:59 +0200raym(~aritra@user/raym)
2022-10-10 21:29:01 +0200burnsidesLlama(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Ping timeout: 244 seconds)
2022-10-10 21:31:57 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 258 seconds)
2022-10-10 21:33:26 +0200 <johnw> does anyone have an example of testing a servant API without using socket? I.e., just direct function calls?
2022-10-10 21:33:56 +0200jackhill(~jackhill@kalessin.dragonsnail.net) (Remote host closed the connection)
2022-10-10 21:37:16 +0200argento(~argent0@191.81.194.124) (Ping timeout: 260 seconds)
2022-10-10 21:37:44 +0200jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-10-10 21:38:03 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-10-10 21:38:03 +0200jinsun(~jinsun@user/jinsun)
2022-10-10 21:38:34 +0200gqplox(~textual@97e654ef.skybroadband.com)
2022-10-10 21:38:35 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-10-10 21:39:04 +0200jackhill(~jackhill@kalessin.dragonsnail.net)
2022-10-10 21:41:15 +0200 <gqplox> Hi
2022-10-10 21:42:04 +0200 <gqplox> I'm trying to write map but I can't get it working, here is my code http://sprunge.us/xcmdIP
2022-10-10 21:42:33 +0200jackhillKM4MBG
2022-10-10 21:43:06 +0200KM4MBGjackhill
2022-10-10 21:43:42 +0200 <gqplox> Why does it say that couldn't match expected a0 -> b0 with actual [a]?
2022-10-10 21:43:45 +0200 <gqplox> Oh wait dumb mistake
2022-10-10 21:43:49 +0200 <gqplox> Hahah my bad sorry
2022-10-10 21:43:59 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-10-10 21:44:51 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-10-10 21:48:00 +0200 <dminuoso> johnw: While the code is proprietary, we do it in one of our projects.
2022-10-10 21:52:32 +0200 <johnw> dminuoso: was it very difficult to setup? Was it mainly providing a mocked version of HasServer?
2022-10-10 21:52:45 +0200 <dminuoso> Huh?
2022-10-10 21:53:24 +0200 <johnw> dminuoso: how did you setup your servant testing minus sockets?
2022-10-10 21:54:38 +0200 <dminuoso> johnw: So we use the generics (since that's the only sane way to use servant) interface, then its as simple as just `ma_findService (mailService user) ...`
2022-10-10 21:54:40 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-10-10 21:55:41 +0200 <dminuoso> Where `mailService :: ApiUser -> MailAPI AsServerF`, and `ma_findService :: MailAPI AsServerF -> ApiUser -> Uid -> FreyjaM MailService`
2022-10-10 21:56:35 +0200 <dminuoso> There's no need for any server to run, you can just call that function, and run that monad in whatever setting you want
2022-10-10 21:57:00 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-10-10 21:58:20 +0200 <dminuoso> Even without a custom monad, you can just runHandler' it
2022-10-10 21:59:17 +0200jakalx(~jakalx@base.jakalx.net)
2022-10-10 21:59:23 +0200 <dminuoso> It's also how we trivially implement a fully flegded client:
2022-10-10 22:00:01 +0200 <dminuoso> `mailClient :: MailAPI (AsClientT ClientM); mailClient = genericClient; cm_findService :: Uid -> ClientM MailService; cm_findService = ma_findService mailClient`
2022-10-10 22:00:08 +0200 <dminuoso> It's really the same interface
2022-10-10 22:01:35 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Read error: Connection reset by peer)
2022-10-10 22:02:14 +0200mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2022-10-10 22:03:46 +0200jonathanx_(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 246 seconds)
2022-10-10 22:08:15 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 252 seconds)
2022-10-10 22:10:06 +0200ph88(~ph88@2a02:8109:9e00:71d0:7166:ab0e:b806:c76c) (Quit: Leaving)
2022-10-10 22:11:58 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-10-10 22:16:22 +0200 <johnw> thank you!
2022-10-10 22:26:51 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2022-10-10 22:27:19 +0200shailangsa(~shailangs@86.159.49.5) (Ping timeout: 252 seconds)
2022-10-10 22:27:38 +0200jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-10-10 22:27:54 +0200jinsun(~jinsun@user/jinsun)
2022-10-10 22:28:58 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-10-10 22:29:59 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-10-10 22:30:12 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-10-10 22:31:01 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-10-10 22:34:26 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-10-10 22:37:11 +0200johnw(~johnw@2600:1700:cf00:db0:c408:2164:6157:6eb5) (Quit: ZNC - http://znc.in)
2022-10-10 22:37:13 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 244 seconds)
2022-10-10 22:38:52 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-10-10 22:38:56 +0200talismanick(~talismani@5.187.27.20)
2022-10-10 22:41:19 +0200zer0bitz_(~zer0bitz@2001:2003:f748:2000:bc16:3d64:146f:ea3e) (Read error: Connection reset by peer)
2022-10-10 22:41:27 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-10-10 22:43:25 +0200talismanick(~talismani@5.187.27.20) (Ping timeout: 244 seconds)
2022-10-10 22:43:46 +0200vorpuni(~pvorp@2001:861:3881:c690:6d50:829f:f2b1:8790) (Ping timeout: 260 seconds)
2022-10-10 22:45:16 +0200Lycurgus(~juan@user/Lycurgus)
2022-10-10 22:45:21 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9960:b0f8:561f:a74b)
2022-10-10 22:46:11 +0200nate1(~nate@98.45.169.16)
2022-10-10 22:47:17 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 22:49:37 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9960:b0f8:561f:a74b) (Ping timeout: 244 seconds)
2022-10-10 22:51:21 +0200nate1(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-10-10 22:54:08 +0200dsrt^(~dsrt@c-76-17-6-165.hsd1.ga.comcast.net)
2022-10-10 22:55:05 +0200beteigeuze(~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
2022-10-10 22:55:21 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-10-10 22:55:49 +0200Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt juan@acm.org)
2022-10-10 22:59:42 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-10-10 23:00:56 +0200phma(~phma@host-67-44-208-36.hnremote.net) (Read error: Connection reset by peer)
2022-10-10 23:01:51 +0200phma(~phma@2001:5b0:210f:49a8:1266:723e:2abd:17a6)
2022-10-10 23:01:54 +0200son0p(~ff@181.136.122.143)
2022-10-10 23:07:37 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-10-10 23:08:46 +0200Franciman(~Franciman@mx1.fracta.dev) (Read error: Connection reset by peer)
2022-10-10 23:09:26 +0200shailangsa(~shailangs@host86-159-49-5.range86-159.btcentralplus.com)
2022-10-10 23:10:01 +0200Franciman(~Franciman@mx1.fracta.dev)
2022-10-10 23:14:41 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 260 seconds)
2022-10-10 23:15:14 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-10-10 23:17:11 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-10-10 23:22:53 +0200hochata(~user@user/hochata)
2022-10-10 23:27:19 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 23:28:26 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-10-10 23:28:54 +0200rosalind(rosalind@id-194105.uxbridge.irccloud.com)
2022-10-10 23:30:26 +0200smol-hors(sid524992@smol/hors) ()
2022-10-10 23:32:11 +0200rockystone(~rocky@user/rockymarine) (Ping timeout: 268 seconds)
2022-10-10 23:34:33 +0200Franciman(~Franciman@mx1.fracta.dev) (Read error: Connection reset by peer)
2022-10-10 23:35:46 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-10-10 23:37:05 +0200codaraxis___(~codaraxis@user/codaraxis)
2022-10-10 23:37:52 +0200codaraxis__(~codaraxis@user/codaraxis) (Read error: Connection reset by peer)
2022-10-10 23:38:49 +0200rockystone(~rocky@user/rockymarine)
2022-10-10 23:40:48 +0200Franciman(~Franciman@mx1.fracta.dev)
2022-10-10 23:47:04 +0200michalz(~michalz@185.246.207.205) (Remote host closed the connection)
2022-10-10 23:51:48 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-10-10 23:59:58 +0200Tuplanolla(~Tuplanoll@91-159-69-34.elisa-laajakaista.fi) (Quit: Leaving.)