2021-10-02 00:00:34 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds) |
2021-10-02 00:02:17 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-10-02 00:04:30 +0200 | hololeap | (~hololeap@user/hololeap) (Quit: Bye) |
2021-10-02 00:12:02 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-10-02 00:12:15 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-02 00:13:29 +0200 | shailangsa | (~shailangs@host217-39-45-200.range217-39.btcentralplus.com) |
2021-10-02 00:17:06 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-10-02 00:17:21 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-02 00:17:28 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-10-02 00:21:25 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-02 00:22:28 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 252 seconds) |
2021-10-02 00:25:05 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-10-02 00:25:22 +0200 | chisui | (~chisui@200116b8683fc700452c17731eb61342.dip.versatel-1u1.de) (Quit: Client closed) |
2021-10-02 00:26:08 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-10-02 00:26:22 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-10-02 00:27:27 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2) |
2021-10-02 00:29:19 +0200 | chisui | (~chisui@200116b8683fc700cf2a945a88454e85.dip.versatel-1u1.de) |
2021-10-02 00:31:16 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 00:33:42 +0200 | jaitoon2 | (~Jaitoon@94.46.244.24) |
2021-10-02 00:34:03 +0200 | <janus> | :t do { let (Just i) = Just 1; pure i } |
2021-10-02 00:34:05 +0200 | <lambdabot> | error: parse error on input ‘}’ |
2021-10-02 00:34:24 +0200 | <janus> | what's wrong with this? |
2021-10-02 00:34:37 +0200 | <geekosaur> | the fact that iut's a one-liner |
2021-10-02 00:35:00 +0200 | <geekosaur> | :t do { let { Just i = Just 1 }; pure i } |
2021-10-02 00:35:01 +0200 | <lambdabot> | (Applicative f, Num a) => f a |
2021-10-02 00:35:25 +0200 | <geekosaur> | let also uses braces, and the compiler gets confused when it's inside a braced do |
2021-10-02 00:35:41 +0200 | <janus> | ok, i had no idea :O i only use braces in here |
2021-10-02 00:36:57 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-02 00:37:14 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 00:37:25 +0200 | jaitoon1 | (~Jaitoon@2a02:c7f:a5f:1d00:546d:550:f4e1:8ed7) (Ping timeout: 252 seconds) |
2021-10-02 00:37:25 +0200 | <geekosaur> | more precisely it hands the semicolon and close brace to the let instead oif the do, then parsing breaks because `pure i` isn't an assignment |
2021-10-02 00:38:02 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-10-02 00:38:05 +0200 | <geekosaur> | brace parsing is a bit hacky; you can check the Report for details |
2021-10-02 00:39:31 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 252 seconds) |
2021-10-02 00:41:03 +0200 | <janus> | what is the motivation for let's and monadic binds working differently regarding incomplete patterns? |
2021-10-02 00:41:39 +0200 | <janus> | it seems to me that it would be sufficient to have the <- or the = only affect what's on the left side, it doesn't need to care about how to match on it, that logic could be shared for both |
2021-10-02 00:41:53 +0200 | <janus> | *affect what's on the RIGHT side, i meant |
2021-10-02 00:42:46 +0200 | <geekosaur> | you always want to error on a let pattern match failure, because there's no other option |
2021-10-02 00:42:54 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-10-02 00:43:11 +0200 | <geekosaur> | but in do, there is another option: fail. which means Nothing for Maybe, [] for list, Left msg for Either, ... |
2021-10-02 00:43:35 +0200 | <geekosaur> | s/Either/& String/ |
2021-10-02 00:43:54 +0200 | <awpr> | something I had missed about this question initially: inside do-notation, you could define that `let` should use the monad's `fail` for partial patterns |
2021-10-02 00:44:28 +0200 | <awpr> | it'd be weird for `let`-as-a-statement to be different from `let`-as-an-expression |
2021-10-02 00:44:51 +0200 | boxscape_ | (~boxscape_@mue-88-130-59-180.dsl.tropolys.de) |
2021-10-02 00:44:52 +0200 | <awpr> | but it's also a bit weird that `pat <- pure expr` is not the same as `let pat = expr` |
2021-10-02 00:46:33 +0200 | <janus> | aaah right, ok , that explains it. the preferrence is for let to behave the same inside and outside do-blocks, instead of having all pattern failures behave the same inside the do block. |
2021-10-02 00:51:38 +0200 | <jaitoon2> | thanks merijn and [itchyjunk] for the book recommendations :) |
2021-10-02 00:52:24 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 276 seconds) |
2021-10-02 00:53:03 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-10-02 00:54:47 +0200 | <geekosaur> | well, it also rather simplifiues how do blocks are expanded because "statement let" can just expand to normal let-in |
2021-10-02 00:55:25 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-02 00:55:38 +0200 | <geekosaur> | (of course that's not a great argument these days since MonadFail and ApplicativeDo have made much bigger messes of do than desugaring let differently would have) |
2021-10-02 00:56:21 +0200 | <geekosaur> | but you do have the question of whether you then go on to treat statement-let differently from let-in inside a do |
2021-10-02 00:57:15 +0200 | <geekosaur> | so they just took the simplest solution |
2021-10-02 00:57:37 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 00:58:37 +0200 | emf | (~emf@163.114.132.1) (Quit: emf) |
2021-10-02 00:59:46 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-10-02 01:03:04 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-10-02 01:03:04 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-10-02 01:03:04 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-02 01:03:07 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-02 01:07:07 +0200 | <awpr> | > `do let x = 5 in x` |
2021-10-02 01:07:08 +0200 | <lambdabot> | <hint>:1:1: error: parse error on input ‘`’ |
2021-10-02 01:07:14 +0200 | <awpr> | > do let x = 5 in x |
2021-10-02 01:07:15 +0200 | <lambdabot> | 5 |
2021-10-02 01:07:17 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 01:07:35 +0200 | <awpr> | some do-blocks have no monad to use for let-in anyway :) |
2021-10-02 01:07:48 +0200 | karim | (uid519758@id-519758.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2021-10-02 01:11:08 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.243) |
2021-10-02 01:12:05 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-10-02 01:14:30 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-02 01:15:35 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-10-02 01:19:40 +0200 | tlaxkit | (~hexchat@170.253.34.130) |
2021-10-02 01:21:16 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 252 seconds) |
2021-10-02 01:24:14 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-02 01:28:24 +0200 | <orzo> | I want to implement MVector for a buffer owned by a c library (opengl) that has a lot of state associated. I don't want to support the ST monad, but the MVector type class seems to want a constructor for an arbitrary PrimMonad instance. A runtime error call for non-IO usage is acceptable to me but I cant figure out how to do that. I need a Typeable constraint that i'm not provided with to |
2021-10-02 01:28:30 +0200 | <orzo> | accomplish it. |
2021-10-02 01:29:00 +0200 | cwmcrb | (~cwmcrb@c-98-208-68-237.hsd1.ca.comcast.net) |
2021-10-02 01:29:36 +0200 | <orzo> | Is it possible to assert (possibly even at runtime) that the given PrimMonad is IO? |
2021-10-02 01:29:51 +0200 | <geekosaur> | (PrimMonad m, M ~ IO) => ... ? |
2021-10-02 01:30:05 +0200 | <geekosaur> | er. m ~ IO |
2021-10-02 01:30:10 +0200 | DNH | (~DNH@2a02:8108:1100:16d8:4c54:3aa3:ad7c:33c2) (Quit: Textual IRC Client: www.textualapp.com) |
2021-10-02 01:30:18 +0200 | <orzo> | I'm trying to ipmement the api in Data.Vector.Generic.Mutable.Base |
2021-10-02 01:30:29 +0200 | <orzo> | basicUnsafeNew :: PrimMonad m => Int -> m (v (PrimState m) a) |
2021-10-02 01:31:04 +0200 | <orzo> | i made a GADT constructor for my v type that forces the state argument ot be RealWOrld |
2021-10-02 01:31:16 +0200 | <orzo> | but that's not good enough here because i can't pattern match on the return value |
2021-10-02 01:32:24 +0200 | cwmcrb | (~cwmcrb@c-98-208-68-237.hsd1.ca.comcast.net) (Quit: Leaving...) |
2021-10-02 01:32:29 +0200 | max22- | (~maxime@2a01cb088335980098b0bbe63a5a4455.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2021-10-02 01:33:47 +0200 | <orzo> | i can use something like unsafeIOToPrim |
2021-10-02 01:34:07 +0200 | <orzo> | but i'm not sure what would happen if somebody tried to then make an ST version of my MVector |
2021-10-02 01:34:32 +0200 | <awpr> | presumably it would perform whatever IO you did in the creation of the vector |
2021-10-02 01:34:49 +0200 | <orzo> | well, that doesn't sound good |
2021-10-02 01:34:56 +0200 | <orzo> | i'd rather error out |
2021-10-02 01:35:14 +0200 | <awpr> | if it's appropriate to pretend the allocation is no less pure than allocating a normal vector, then it might be fine |
2021-10-02 01:35:37 +0200 | <awpr> | seems like it depends on what the backing storage is and such |
2021-10-02 01:36:20 +0200 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2021-10-02 01:36:21 +0200 | <orzo> | it's an opengl vbo |
2021-10-02 01:36:53 +0200 | <dolio> | How is that represented in Haskell? |
2021-10-02 01:37:04 +0200 | <orzo> | a couple of Ints |
2021-10-02 01:37:28 +0200 | <orzo> | primarily a single int that identifies the buffer |
2021-10-02 01:37:45 +0200 | <dolio> | Oh, so it's not like a pointer or something? It uses some API for access that only works in IO? |
2021-10-02 01:37:51 +0200 | <orzo> | yes |
2021-10-02 01:38:26 +0200 | <orzo> | i'd like it to check the IO usage at compile time or even at run time |
2021-10-02 01:38:39 +0200 | <orzo> | i just want to satisfy MVector so i can use some other code |
2021-10-02 01:38:56 +0200 | <awpr> | I don't think that inherently has to be a problem; writing to memory like you would in ST is also I/O, and the core libraries people have just decided that kind of IO is okay to put in independent state threads |
2021-10-02 01:39:11 +0200 | <awpr> | but being an OpenGL object raises concerns |
2021-10-02 01:39:16 +0200 | <orzo> | ya |
2021-10-02 01:39:19 +0200 | <orzo> | it raises concerns |
2021-10-02 01:39:26 +0200 | <orzo> | i dont want it to be used that way |
2021-10-02 01:39:34 +0200 | <awpr> | sounds like it can't be an MVector, then |
2021-10-02 01:39:48 +0200 | <orzo> | well it can, just in a pretty unsafe way |
2021-10-02 01:40:00 +0200 | <dolio> | I don't think there's a way to tell you're in ST rather than IO. |
2021-10-02 01:40:19 +0200 | <awpr> | right, "can't" as in it doesn't fit into the intended meaning of MVector |
2021-10-02 01:41:16 +0200 | <orzo> | i dont think it would be unsafe for IO usage of MVector |
2021-10-02 01:41:34 +0200 | <orzo> | i think that would be fine |
2021-10-02 01:41:39 +0200 | <awpr> | but MVector is defined to be a class of things that can be used in all PrimMonads |
2021-10-02 01:42:04 +0200 | <awpr> | although I'm still not totally sure it wouldn't be appropriate to do in ST. how much invisible stateful nonsense is there in creating/writing these? |
2021-10-02 01:42:06 +0200 | <orzo> | yeah, well i mean, i don't think a programmer who uses it with IO would run into an issue |
2021-10-02 01:42:40 +0200 | <awpr> | that seems true. you could also write a Monad instance whose >>= is `error`, and programmers who only use `return` wouldn't run into any issues |
2021-10-02 01:43:15 +0200 | <orzo> | right, but in this case, i can't even write error |
2021-10-02 01:43:27 +0200 | <orzo> | i just have to pretend i'm in IO |
2021-10-02 01:43:28 +0200 | <orzo> | heh |
2021-10-02 01:43:43 +0200 | <awpr> | same sort of situation: the class wants more generality than the particular type can provide, and that's unfortunate because a lot of the stuff that abstracts over the class would be useful |
2021-10-02 01:44:27 +0200 | <awpr> | this is why I'm prodding at whether you can get away with allowing it in ST: if you can, then the problem goes away on its own |
2021-10-02 01:44:35 +0200 | <orzo> | i'm okay with errorIfST if it was doable |
2021-10-02 01:45:16 +0200 | <dolio> | It isn't, though. PrimMonad doesn't have that. |
2021-10-02 01:46:07 +0200 | <orzo> | PrimMonad should have a Typable m parent constraint |
2021-10-02 01:46:14 +0200 | <orzo> | then you could do hacky foo like this |
2021-10-02 01:47:28 +0200 | <orzo> | or MVector class should mention m as one of the arguments |
2021-10-02 01:47:40 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 01:49:31 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 01:50:09 +0200 | hololeap | (~hololeap@user/hololeap) |
2021-10-02 01:50:55 +0200 | danso | (~danso@23-233-111-52.cpe.pppoe.ca) |
2021-10-02 01:51:22 +0200 | Adran | (~adran@botters/adran) (Quit: Este é o fim.) |
2021-10-02 01:53:01 +0200 | <awpr> | what's the code you want to use it with that expects MVector? if it's something you wrote, you could change it to use a new class with e.g. just a write-at-index-i method |
2021-10-02 01:53:54 +0200 | <orzo> | data-vector-growable |
2021-10-02 01:54:35 +0200 | <orzo> | its not a whole lot, i had started re-implementing it, but then I foold myself into thinking it was possible to implmenet MVector with a GADT |
2021-10-02 01:54:35 +0200 | Adran | (adran@botters/adran) |
2021-10-02 01:55:27 +0200 | <awpr> | hmm, yeah, that seems like it wants to be written against an MVector-like thing that's capable of constraining the `m` |
2021-10-02 01:55:35 +0200 | <orzo> | now i'm torn between re-implmenting and using some unsafe hack |
2021-10-02 01:57:34 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-10-02 02:01:04 +0200 | emf | (~emf@2620:10d:c090:400::5:113f) |
2021-10-02 02:01:28 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 02:03:45 +0200 | <orzo> | probably unsafeIOToPrim is acceptable since the GADT includes the state argument and calling "new" will still be a type error if you use it with ST |
2021-10-02 02:04:06 +0200 | <orzo> | hm |
2021-10-02 02:04:12 +0200 | <orzo> | but it wont be a type error |
2021-10-02 02:04:22 +0200 | <orzo> | there i go tricking myself again |
2021-10-02 02:04:24 +0200 | <monochrom> | janus: BTW my perspective is that "do { pattern <- xxx; ... }" is as justified as "[ ... | pattern <- xxx, ...]" |
2021-10-02 02:04:31 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 02:05:12 +0200 | <monochrom> | > [ x | Just x <- [Nothing, Just 4, Nothing, Just 5] ] |
2021-10-02 02:05:14 +0200 | <lambdabot> | [4,5] |
2021-10-02 02:06:07 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-10-02 02:06:17 +0200 | hexfive | (~eric@50.35.83.177) |
2021-10-02 02:06:30 +0200 | hexfive | (~eric@50.35.83.177) (Client Quit) |
2021-10-02 02:10:13 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 02:10:48 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 02:13:42 +0200 | pfurla | (~pfurla@216.151.180.130) |
2021-10-02 02:16:23 +0200 | pfurla_ | (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 252 seconds) |
2021-10-02 02:17:26 +0200 | notzmv | (~zmv@user/notzmv) |
2021-10-02 02:17:38 +0200 | Stotteren | (~Stotteren@pool-108-20-79-41.bstnma.fios.verizon.net) |
2021-10-02 02:18:30 +0200 | hendursaga | (~weechat@user/hendursaga) (Quit: hendursaga) |
2021-10-02 02:18:58 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-10-02 02:22:27 +0200 | <monochrom> | https://github.com/treblacy/hasdoc newly improved :) |
2021-10-02 02:23:54 +0200 | nvmd | (~nvmd@user/nvmd) (Quit: Later, nerds.) |
2021-10-02 02:26:58 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-10-02 02:30:37 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds) |
2021-10-02 02:34:47 +0200 | ss4 | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2021-10-02 02:36:07 +0200 | ph88 | (~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2021-10-02 02:36:30 +0200 | ph88 | (~ph88@2a02:8109:9e00:7e5c:1cbc:efbb:c578:a980) |
2021-10-02 02:39:40 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-10-02 02:40:31 +0200 | Topsi | (~Tobias@dyndsl-095-033-023-177.ewe-ip-backbone.de) |
2021-10-02 02:42:16 +0200 | <orzo> | awpr: I got my gl vector to compile using only ioToPrim and unsafeInterleaveIO and GADT matching |
2021-10-02 02:43:28 +0200 | <awpr> | huh. I don't immediately see how that's possible |
2021-10-02 02:44:04 +0200 | <orzo> | it's probably an infinite loop |
2021-10-02 02:44:12 +0200 | <orzo> | i used fix |
2021-10-02 02:44:16 +0200 | <orzo> | heh |
2021-10-02 02:44:48 +0200 | <awpr> | oh, to match the output before you construct it? I expect that's a loop, yeah |
2021-10-02 02:44:50 +0200 | <orzo> | i was trying to use unsafeInterleaveIO to avoid looping but that's probably not right |
2021-10-02 02:45:30 +0200 | <orzo> | a give away is there was no place for me to call error |
2021-10-02 02:45:30 +0200 | <orzo> | heh |
2021-10-02 02:47:46 +0200 | <awpr> | out of curiosity, is this doing something like glGenBuffers+glBindBuffer+glMapBuffer to "create" the buffer? |
2021-10-02 02:48:17 +0200 | <orzo> | yeah but not glMap |
2021-10-02 02:48:28 +0200 | <orzo> | glBufferData |
2021-10-02 02:48:51 +0200 | <orzo> | i did use glMapBuffer for some other calls |
2021-10-02 02:49:21 +0200 | Psybur | (~Psybur@mobile-166-170-32-197.mycingular.net) (Remote host closed the connection) |
2021-10-02 02:49:33 +0200 | <orzo> | i'm probably just wating time now trying to make a sanish MVector instance |
2021-10-02 02:49:51 +0200 | <orzo> | but its ammusing anwyay |
2021-10-02 02:50:07 +0200 | <awpr> | hmm... I'm not very familiar with the GL APIs, does that mean each element write has to update the whole buffer? |
2021-10-02 02:50:15 +0200 | <orzo> | no |
2021-10-02 02:50:31 +0200 | <orzo> | there's a lot of different calls for manipulating buffers |
2021-10-02 02:52:43 +0200 | hgolden_ | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Remote host closed the connection) |
2021-10-02 02:53:27 +0200 | <awpr> | as far as updating the contents, I'm only finding APIs for "write the whole buffer" and "map the buffer into host address space", am I missing some? |
2021-10-02 02:53:54 +0200 | <orzo> | yes |
2021-10-02 02:54:22 +0200 | <orzo> | glBufferSubData |
2021-10-02 02:54:46 +0200 | acidjnk | (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) |
2021-10-02 02:54:57 +0200 | <awpr> | ah, okay. and that interacts with the hefty internal global state of OpenGL |
2021-10-02 02:55:36 +0200 | <awpr> | just wondering whether "map immediately on creation and keep the pointer" could avoid the internal state enough to be ST-compatible |
2021-10-02 02:56:54 +0200 | <orzo> | i don't think much would go wrong with ST if you use it within IO and have a GL context active |
2021-10-02 02:57:01 +0200 | acidjnk_new | (~acidjnk@p200300d0c703cb709cd806e9bafd3ecc.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-10-02 02:57:01 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c703cb709cd806e9bafd3ecc.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-10-02 02:57:37 +0200 | <orzo> | none of this will work without a GL context initialized |
2021-10-02 02:57:58 +0200 | acidjnk_new | (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) |
2021-10-02 02:58:00 +0200 | <orzo> | that's some kind of thread-local state |
2021-10-02 02:58:11 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 02:58:58 +0200 | <orzo> | it seems odd to put requirements like that on pure non-monadic code |
2021-10-02 02:59:11 +0200 | <awpr> | yeah, agree that's a problem |
2021-10-02 03:00:56 +0200 | lbseale | (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
2021-10-02 03:04:14 +0200 | Lycurgus | (~juan@98.4.112.204) (Ping timeout: 260 seconds) |
2021-10-02 03:05:39 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 03:11:25 +0200 | acidjnk_new | (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-10-02 03:11:25 +0200 | acidjnk | (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-10-02 03:12:17 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-10-02 03:13:03 +0200 | zaquest | (~notzaques@5.128.210.178) (Remote host closed the connection) |
2021-10-02 03:13:24 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-10-02 03:16:49 +0200 | xff0x | (~xff0x@2001:1a81:53fd:8200:7263:a828:f9a7:9516) (Ping timeout: 252 seconds) |
2021-10-02 03:18:22 +0200 | _xor | (~xor@74.215.232.67) (Quit: WeeChat 3.2.1) |
2021-10-02 03:18:45 +0200 | xff0x | (~xff0x@2001:1a81:5237:ef00:6acb:a523:9d13:873c) |
2021-10-02 03:18:52 +0200 | _xor | (~xor@74.215.232.67) |
2021-10-02 03:20:51 +0200 | zaquest | (~notzaques@5.128.210.178) |
2021-10-02 03:20:57 +0200 | acidjnk | (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) |
2021-10-02 03:20:57 +0200 | acidjnk_new | (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) |
2021-10-02 03:26:49 +0200 | acidjnk | (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-10-02 03:26:49 +0200 | acidjnk_new | (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-10-02 03:29:09 +0200 | <orzo> | awpr: what if i use unsafeInterleaveIO to make the basicUnsafeNew constructor lazy and all the read and write routines have an implicit check that PrimState m ~ RealWorld because they use ioToPrim |
2021-10-02 03:29:25 +0200 | alzgh | (~alzgh@user/alzgh) (Remote host closed the connection) |
2021-10-02 03:30:04 +0200 | betelgeuse | (~betelgeus@94-225-47-8.access.telenet.be) (Quit: The Lounge - https://thelounge.chat) |
2021-10-02 03:30:53 +0200 | <orzo> | the uncertainty comes from how it decides (PrimState m ~ RealWorld) is okay based on the GADT match and the constructor was created in the lazy constructor call that used unsafeCoerce |
2021-10-02 03:30:56 +0200 | neurocyte01320 | (~neurocyte@94.46.83.234) |
2021-10-02 03:30:56 +0200 | neurocyte01320 | (~neurocyte@94.46.83.234) (Changing host) |
2021-10-02 03:30:56 +0200 | neurocyte01320 | (~neurocyte@user/neurocyte) |
2021-10-02 03:30:59 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-10-02 03:32:25 +0200 | tlaxkit | (~hexchat@170.253.34.130) (Quit: Leaving) |
2021-10-02 03:33:10 +0200 | <awpr> | that doesn't actually achieve any checking if I'm understanding it correctly |
2021-10-02 03:33:19 +0200 | neurocyte0132 | (~neurocyte@user/neurocyte) (Ping timeout: 252 seconds) |
2021-10-02 03:33:19 +0200 | neurocyte01320 | neurocyte0132 |
2021-10-02 03:33:51 +0200 | <awpr> | if it's actually `unsafeCoerce`, then all it's doing is providing a lie as proof that whatever `PrimState` is `RealWorld` |
2021-10-02 03:34:11 +0200 | <awpr> | and then consuming that lie to retroactively justify the lie |
2021-10-02 03:35:03 +0200 | <monochrom> | @quote monochrom unsafeCoerce |
2021-10-02 03:35:03 +0200 | <lambdabot> | monochrom says: isTrue = (unsafeCoerce :: Either a b -> Bool) . (unsafeCoerce :: Maybe c -> Either a b) . (unsafeCoerce :: Bool -> Maybe c) |
2021-10-02 03:35:11 +0200 | <monochrom> | Very safe and honest. >:) |
2021-10-02 03:36:21 +0200 | <orzo> | well |
2021-10-02 03:36:42 +0200 | <geekosaur> | unsafeCoerce can be safe if and only if the type level says something valid. if you're using it because you can't say what you want at the type level, now you have two problems |
2021-10-02 03:36:59 +0200 | <orzo> | is there anything worthwhile to get from post-poning actual IO to a point where a constructor could be matched |
2021-10-02 03:37:47 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.243) (Ping timeout: 252 seconds) |
2021-10-02 03:37:56 +0200 | <orzo> | the read/write functions are fine the way they are relying on a GADT pattern match to decide the state is RealWorld |
2021-10-02 03:38:19 +0200 | <orzo> | it's not their fault |
2021-10-02 03:38:22 +0200 | <orzo> | heh |
2021-10-02 03:38:57 +0200 | <orzo> | if i made an alternative constructor and disallowed the basicUnsafeNew call, they'd be fine protection |
2021-10-02 03:39:14 +0200 | <awpr> | yeah, in isolation they're fine. but I don't think there's any way to get around the issue of `basicUnsafeNew`; nothing tells it what `m` is, and the only thing that tells the later methods what `m` is is `basicUnsafeNew`, which itself didn't know to begin with |
2021-10-02 03:39:14 +0200 | <orzo> | and that call does have unsafe in the title ;) |
2021-10-02 03:39:21 +0200 | <geekosaur> | I was actually consideriing suggesting that |
2021-10-02 03:39:27 +0200 | <geekosaur> | smart constructor |
2021-10-02 03:39:30 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.253) |
2021-10-02 03:39:46 +0200 | <orzo> | well it wont let me use data-vector-growable out of the box to disallow basicUnsafeNew |
2021-10-02 03:39:47 +0200 | <awpr> | yeah, an alternative IO-only constructor could be safe. but would it _work_ in the context you want to use it in? |
2021-10-02 03:39:50 +0200 | <awpr> | yeah, that |
2021-10-02 03:40:08 +0200 | <orzo> | the data-vector-growable package is not big tho |
2021-10-02 03:40:45 +0200 | <awpr> | does this whole situation also have issues with GHC's threaded runtime? or is this somehow dealing with that by using pinned threads etc. |
2021-10-02 03:41:06 +0200 | <orzo> | no issues |
2021-10-02 03:41:12 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-10-02 03:41:17 +0200 | <orzo> | i'm actually using gtk to get my gl context |
2021-10-02 03:41:58 +0200 | <awpr> | "using gtk" meaning "running inside a callback from gtk"? then it might be pinned to the GTK thread |
2021-10-02 03:42:33 +0200 | harveypwca | (~harveypwc@2601:246:c180:a570:2435:ba7:e573:bc26) |
2021-10-02 03:43:09 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-10-02 03:43:23 +0200 | <orzo> | gtk documents when you can use the gl context |
2021-10-02 03:43:36 +0200 | <orzo> | they have a call to bring it into scope when it is not |
2021-10-02 03:44:06 +0200 | <orzo> | but yeah, i don't feel confident i can use it from multiple threads |
2021-10-02 03:44:22 +0200 | <awpr> | ok, sounds like they've explicitly dealt with the issues and documented how to avoid breaking it |
2021-10-02 03:46:51 +0200 | <orzo> | i have a thought to add safety |
2021-10-02 03:48:20 +0200 | <orzo> | class MVector v a -- it has two arguments v and a. |
2021-10-02 03:49:06 +0200 | <orzo> | I could force the a to be something that includes some proof maybe |
2021-10-02 03:49:44 +0200 | <orzo> | when you actually write to the vector, kyou'll be forced to include the proof |
2021-10-02 03:49:58 +0200 | <orzo> | and everything else can be lazy to that point |
2021-10-02 03:53:45 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-10-02 03:53:59 +0200 | Topsi | (~Tobias@dyndsl-095-033-023-177.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
2021-10-02 03:54:25 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-02 03:54:33 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-02 03:54:38 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 260 seconds) |
2021-10-02 03:55:11 +0200 | yinghua | (~yinghua@181.228.40.183) (Quit: Leaving) |
2021-10-02 03:57:57 +0200 | acidjnk | (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) |
2021-10-02 03:57:57 +0200 | acidjnk_new | (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) |
2021-10-02 03:59:40 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-10-02 04:00:12 +0200 | TDANG | (~TDANG@inet-177-7.ets.org) |
2021-10-02 04:00:53 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.253) (Read error: Connection reset by peer) |
2021-10-02 04:00:58 +0200 | <TDANG> | Hi. Please take a look at this code snipet |
2021-10-02 04:01:18 +0200 | <TDANG> | data GiveParams = GiveParams |
2021-10-02 04:01:19 +0200 | <TDANG> | { gpBeneficiary :: !PubKeyHash |
2021-10-02 04:01:21 +0200 | <TDANG> | , gpDeadline :: !POSIXTime |
2021-10-02 04:01:22 +0200 | <TDANG> | , gpAmount :: !Integer |
2021-10-02 04:01:24 +0200 | <TDANG> | } deriving (Generic, ToJSON, FromJSON, ToSchema) |
2021-10-02 04:01:25 +0200 | <TDANG> | give :: AsContractError e => GiveParams -> Contract w s e () |
2021-10-02 04:01:27 +0200 | <TDANG> | give gp = do |
2021-10-02 04:01:28 +0200 | <TDANG> | let dat = VestingDatum |
2021-10-02 04:01:31 +0200 | <TDANG> | { beneficiary = gpBeneficiary gp |
2021-10-02 04:01:31 +0200 | <TDANG> | , deadline = gpDeadline gp |
2021-10-02 04:01:33 +0200 | <TDANG> | } |
2021-10-02 04:01:36 +0200 | <TDANG> | My concern: beneficiary = gpBeneficiary gp |
2021-10-02 04:01:40 +0200 | <monochrom> | Ugh you already know you should use a pastebin. |
2021-10-02 04:01:53 +0200 | <TDANG> | How should I understand this statement? |
2021-10-02 04:02:54 +0200 | <boxscape_> | instead of posting multiple lines of code directly, it's appropriate to paste them into something like https://paste.tomsmeding.com/ and then paste a link to the result here |
2021-10-02 04:03:01 +0200 | <TDANG> | Can you guide me how to use pastebin? |
2021-10-02 04:03:25 +0200 | <boxscape_> | 1. go to https://paste.tomsmeding.com/ 2. paste code 3. copy link and paste link here |
2021-10-02 04:04:08 +0200 | <TDANG> | https://paste.tomsmeding.com/oyfqUuyj |
2021-10-02 04:04:52 +0200 | <boxscape_> | 👍 |
2021-10-02 04:05:18 +0200 | <TDANG> | Can you help me with this statement: beneficiary = gpBeneficiary gp |
2021-10-02 04:05:35 +0200 | <boxscape_> | what is your question about that statement? |
2021-10-02 04:06:11 +0200 | <TDANG> | I mean, what does this statement mean: beneficiary = gpBeneficiary gp |
2021-10-02 04:06:47 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.245) |
2021-10-02 04:07:22 +0200 | <TDANG> | gp is of type GiveParams, correct? |
2021-10-02 04:07:42 +0200 | <boxscape_> | VestingDatum is a record with the fields beneficiary and deadline. `VestingDatum { beneficiary = gpBeneficiary gp, deadline = gpDeadline gp}` creates a new VestingDatum value with the beneficiary field having the value gpBeneficiary gp |
2021-10-02 04:07:51 +0200 | <boxscape_> | correc |
2021-10-02 04:07:52 +0200 | <boxscape_> | t |
2021-10-02 04:08:07 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-10-02 04:08:07 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-10-02 04:08:07 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-02 04:08:19 +0200 | <boxscape_> | GiveParams is also a record, and the expression `gpBeneficiary gp` extracts the gpBeneficiary field from the gp value |
2021-10-02 04:08:55 +0200 | <boxscape_> | so the line in question means that the newly created VestingDatum will have the same beneficiary as the gpBeneficiary of the GiveParams value |
2021-10-02 04:09:48 +0200 | <TDANG> | expression `gpBeneficiary gp` extracts the gpBeneficiary field from the gp value : do you have any document for this? |
2021-10-02 04:11:44 +0200 | <boxscape_> | TDANG: I don't have a standard document at hand, but the learn you a haskell section on "Record syntax" on this page seems alright http://learnyouahaskell.com/making-our-own-types-and-typeclasses |
2021-10-02 04:11:57 +0200 | <boxscape_> | (scroll down to "Record syntax") |
2021-10-02 04:11:59 +0200 | alx741 | (~alx741@181.196.69.214) (Quit: alx741) |
2021-10-02 04:12:10 +0200 | <TDANG> | Oh, I found one: https://sodocumentation.net/haskell/topic/1950/record-syntax |
2021-10-02 04:12:23 +0200 | <boxscape_> | yeah that seems good, too |
2021-10-02 04:12:55 +0200 | <TDANG> | https://paste.tomsmeding.com/pCRT7pFH |
2021-10-02 04:13:58 +0200 | <TDANG> | Ya, cool. Thanks a lot ;-) |
2021-10-02 04:14:04 +0200 | <boxscape_> | welcome |
2021-10-02 04:14:16 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) |
2021-10-02 04:14:31 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.2.1) |
2021-10-02 04:22:24 +0200 | pavonia | (~user@user/siracusa) |
2021-10-02 04:28:56 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-10-02 04:32:43 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 04:34:09 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 04:38:22 +0200 | <TDANG> | 1 bit concern: gpBeneficiary gp |
2021-10-02 04:38:52 +0200 | <TDANG> | this statement may be translated as : function gpBeneficiary with parameter gp |
2021-10-02 04:39:02 +0200 | <boxscape_> | yes |
2021-10-02 04:39:20 +0200 | <boxscape_> | (technically it's an expression, not a statement) |
2021-10-02 04:39:26 +0200 | <TDANG> | how can we differentciate with extraction a property from a record var |
2021-10-02 04:39:35 +0200 | <TDANG> | ya, expression |
2021-10-02 04:40:12 +0200 | <boxscape_> | when you define `data GiveParam = GiveParam { gpBeneficiary :: ... }`, the extractor `gpBeneficiary` *is* a function |
2021-10-02 04:40:21 +0200 | <boxscape_> | so you can't really differentiate it from a function |
2021-10-02 04:40:38 +0200 | jaitoon2 | (~Jaitoon@94.46.244.24) (Quit: Leaving) |
2021-10-02 04:40:44 +0200 | <boxscape_> | you can figure out where it was defined |
2021-10-02 04:40:56 +0200 | <boxscape_> | and then there you can see whether it comes from a record or was defined as a regular function |
2021-10-02 04:41:30 +0200 | <TDANG> | oh, nice. This is a correct way to trace the origin |
2021-10-02 04:42:02 +0200 | <boxscape_> | right |
2021-10-02 04:42:18 +0200 | terrorjack | (~terrorjac@static.3.200.12.49.clients.your-server.de) (Read error: Connection reset by peer) |
2021-10-02 04:43:39 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2021-10-02 04:43:43 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds) |
2021-10-02 04:46:01 +0200 | chisui | (~chisui@200116b8683fc700cf2a945a88454e85.dip.versatel-1u1.de) (Ping timeout: 256 seconds) |
2021-10-02 04:57:58 +0200 | doyougnu | (~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 252 seconds) |
2021-10-02 04:59:14 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-10-02 04:59:58 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-02 05:00:50 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 252 seconds) |
2021-10-02 05:01:04 +0200 | adium | (adium@user/adium) (Killed (NickServ (GHOST command used by adium55!~adium55@2804:14d:149a:8ad4:31b5:99c4:c7a3:6ed4))) |
2021-10-02 05:01:23 +0200 | td_ | (~td@94.134.91.208) (Ping timeout: 252 seconds) |
2021-10-02 05:02:44 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2021-10-02 05:02:50 +0200 | adium_ | (adium@user/adium) |
2021-10-02 05:03:04 +0200 | td_ | (~td@94.134.91.111) |
2021-10-02 05:06:07 +0200 | adium_ | adium |
2021-10-02 05:12:38 +0200 | rekahsoft | (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) |
2021-10-02 05:18:42 +0200 | mbuf | (~Shakthi@27.58.139.33) |
2021-10-02 05:22:40 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) |
2021-10-02 05:28:16 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 252 seconds) |
2021-10-02 05:30:25 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer) |
2021-10-02 05:30:37 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-10-02 05:31:01 +0200 | mei | (~mei@user/mei) (Ping timeout: 252 seconds) |
2021-10-02 05:35:55 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-10-02 05:38:32 +0200 | boxscape_ | (~boxscape_@mue-88-130-59-180.dsl.tropolys.de) (Quit: Connection closed) |
2021-10-02 05:43:56 +0200 | CnnibisIndica | CannabisIndica |
2021-10-02 05:47:50 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-10-02 05:47:50 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-10-02 05:47:50 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-02 05:53:01 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-10-02 06:08:56 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-10-02 06:11:14 +0200 | rekahsoft | (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 252 seconds) |
2021-10-02 06:11:50 +0200 | phma_ | (~phma@host-67-44-209-109.hnremote.net) |
2021-10-02 06:14:38 +0200 | phma | (~phma@host-67-44-209-109.hnremote.net) (Ping timeout: 260 seconds) |
2021-10-02 06:16:37 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-10-02 06:16:52 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-10-02 06:19:55 +0200 | geranim0 | (~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Ping timeout: 252 seconds) |
2021-10-02 06:24:42 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-02 06:29:22 +0200 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) |
2021-10-02 06:33:14 +0200 | fizzsegfaultbuzz | (~segfaultf@135-180-0-138.static.sonic.net) (Ping timeout: 252 seconds) |
2021-10-02 06:46:20 +0200 | thelounge9230681 | (~thelounge@cpe-75-85-161-60.san.res.rr.com) (Ping timeout: 250 seconds) |
2021-10-02 06:52:58 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 06:53:22 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 06:59:05 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-10-02 07:02:32 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-10-02 07:08:01 +0200 | pfurla_ | (~pfurla@ool-182ed2e2.dyn.optonline.net) |
2021-10-02 07:10:38 +0200 | pfurla | (~pfurla@216.151.180.130) (Ping timeout: 252 seconds) |
2021-10-02 07:12:16 +0200 | emf | (~emf@2620:10d:c090:400::5:113f) (Quit: emf) |
2021-10-02 07:13:30 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2021-10-02 07:14:27 +0200 | zebrag | (~chris@user/zebrag) (Remote host closed the connection) |
2021-10-02 07:16:34 +0200 | turlando | (~turlando@user/turlando) (Ping timeout: 252 seconds) |
2021-10-02 07:16:55 +0200 | turlando | (~turlando@93-42-250-112.ip89.fastwebnet.it) |
2021-10-02 07:16:55 +0200 | turlando | (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host) |
2021-10-02 07:16:55 +0200 | turlando | (~turlando@user/turlando) |
2021-10-02 07:18:32 +0200 | <c_wraith> | anyone know what the status of the GHC 9.2 release candidate is? |
2021-10-02 07:19:14 +0200 | martin02 | (~silas@141.84.69.76) (Ping timeout: 246 seconds) |
2021-10-02 07:19:40 +0200 | <c_wraith> | the current RC fixes a couple bugs that make using type application a lot nicer. |
2021-10-02 07:19:51 +0200 | martin02 | (~silas@141.84.69.76) |
2021-10-02 07:20:00 +0200 | <c_wraith> | It'd be cool to see it officially released |
2021-10-02 07:27:50 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2021-10-02 07:39:25 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.245) (Read error: Connection reset by peer) |
2021-10-02 07:45:03 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.245) |
2021-10-02 07:46:46 +0200 | vysn | (~vysn@user/vysn) |
2021-10-02 07:56:11 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-10-02 08:07:46 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 08:12:22 +0200 | chomwitt | (~chomwitt@ppp-2-85-111-14.home.otenet.gr) |
2021-10-02 08:14:38 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2021-10-02 08:20:45 +0200 | benin0369323016 | (~benin@183.82.205.238) |
2021-10-02 08:21:33 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-10-02 08:23:54 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2021-10-02 08:27:36 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 08:29:56 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) |
2021-10-02 08:33:10 +0200 | acidjnk_new | (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-10-02 08:33:10 +0200 | acidjnk | (~acidjnk@p200300d0c703cb484c2e41891c292fdb.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-10-02 08:33:28 +0200 | acidjnk | (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) |
2021-10-02 08:38:30 +0200 | juhp | (~juhp@128.106.188.220) (Quit: juhp) |
2021-10-02 08:38:31 +0200 | iridium__ | (~iridium@122.175.138.158) |
2021-10-02 08:38:44 +0200 | juhp | (~juhp@128.106.188.220) |
2021-10-02 08:42:36 +0200 | emf | (~emf@2620:10d:c090:400::5:113f) |
2021-10-02 08:43:41 +0200 | xiongxin | (~quassel@113.116.33.66) |
2021-10-02 08:50:21 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.245) (Read error: Connection reset by peer) |
2021-10-02 08:51:10 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 08:52:58 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 252 seconds) |
2021-10-02 08:53:07 +0200 | emf | (~emf@2620:10d:c090:400::5:113f) (Quit: emf) |
2021-10-02 08:53:20 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) |
2021-10-02 08:53:50 +0200 | emf | (~emf@2620:10d:c090:400::5:113f) |
2021-10-02 08:55:12 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-10-02 08:55:53 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-02 08:56:22 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-10-02 08:57:53 +0200 | ubert | (~Thunderbi@178.115.52.70.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2021-10-02 09:00:34 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 09:02:46 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 252 seconds) |
2021-10-02 09:04:52 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) |
2021-10-02 09:07:07 +0200 | rtjure | (~rtjure@bras-79-132-17-74.comnet.bg) |
2021-10-02 09:14:05 +0200 | falafel | (~falafel@2603-8000-d800-688c-5d7c-f952-1b32-cc6a.res6.spectrum.com) |
2021-10-02 09:14:29 +0200 | aegon | (~mike@174.127.249.180) (Remote host closed the connection) |
2021-10-02 09:18:10 +0200 | ByronJohnson | (~bairyn@mail.digitalkingdom.org) (Remote host closed the connection) |
2021-10-02 09:19:15 +0200 | emf | (~emf@2620:10d:c090:400::5:113f) (Quit: emf) |
2021-10-02 09:20:05 +0200 | emf | (~emf@2620:10d:c090:400::5:113f) |
2021-10-02 09:21:36 +0200 | iridium__ | (~iridium@122.175.138.158) (Changing host) |
2021-10-02 09:21:36 +0200 | iridium__ | (~iridium@user/iridium/x-1824934) |
2021-10-02 09:22:57 +0200 | max22- | (~maxime@2a01cb088335980038ece50ee02a7251.ipv6.abo.wanadoo.fr) |
2021-10-02 09:25:58 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-10-02 09:29:07 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-10-02 09:29:46 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-10-02 09:30:10 +0200 | emf | (~emf@2620:10d:c090:400::5:113f) (Quit: emf) |
2021-10-02 09:30:44 +0200 | ByronJohnson | (~bairyn@mail.digitalkingdom.org) |
2021-10-02 09:32:42 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2021-10-02 09:33:04 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2021-10-02 09:35:46 +0200 | xiongxin | (~quassel@113.116.33.66) (Ping timeout: 252 seconds) |
2021-10-02 09:35:46 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 252 seconds) |
2021-10-02 09:42:59 +0200 | jakalx | (~jakalx@base.jakalx.net) () |
2021-10-02 09:47:40 +0200 | dajoer | (~david@user/gvx) |
2021-10-02 09:49:13 +0200 | voldial | (~user@195.179.201.175) (Changing host) |
2021-10-02 09:49:13 +0200 | voldial | (~user@user/voldial) |
2021-10-02 09:51:26 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-10-02 09:52:54 +0200 | falafel | (~falafel@2603-8000-d800-688c-5d7c-f952-1b32-cc6a.res6.spectrum.com) (Remote host closed the connection) |
2021-10-02 09:53:14 +0200 | falafel | (~falafel@2603-8000-d800-688c-5d7c-f952-1b32-cc6a.res6.spectrum.com) |
2021-10-02 09:55:01 +0200 | benin0369323016 | (~benin@183.82.205.238) (Remote host closed the connection) |
2021-10-02 10:01:04 +0200 | ryantrinkle | (~ryan@50.239.20.147) (Read error: Connection reset by peer) |
2021-10-02 10:05:28 +0200 | hendursa1 | (~weechat@user/hendursaga) |
2021-10-02 10:07:01 +0200 | mbuf | (~Shakthi@27.58.139.33) (Quit: Leaving) |
2021-10-02 10:08:48 +0200 | hendursaga | (~weechat@user/hendursaga) (Ping timeout: 276 seconds) |
2021-10-02 10:10:04 +0200 | jinsun | (~quassel@user/jinsun) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2021-10-02 10:15:11 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2021-10-02 10:17:33 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-10-02 10:17:33 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-10-02 10:17:36 +0200 | allbery_b | geekosaur |
2021-10-02 10:18:05 +0200 | falafel | (~falafel@2603-8000-d800-688c-5d7c-f952-1b32-cc6a.res6.spectrum.com) (Ping timeout: 264 seconds) |
2021-10-02 10:18:21 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-10-02 10:19:24 +0200 | CookE[] | (~thedawn@user/thedawn) |
2021-10-02 10:19:24 +0200 | fef | (~thedawn@user/thedawn) |
2021-10-02 10:20:24 +0200 | xiongxin | (~quassel@113.116.33.66) |
2021-10-02 10:21:00 +0200 | fef | (~thedawn@user/thedawn) (Client Quit) |
2021-10-02 10:22:30 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-10-02 10:24:56 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2021-10-02 10:25:25 +0200 | kuribas | (~user@ptr-25vy0i8gk2vqd1giqyv.18120a2.ip6.access.telenet.be) |
2021-10-02 10:26:41 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Remote host closed the connection) |
2021-10-02 10:37:37 +0200 | nfd | (~nfd@user/nfd) |
2021-10-02 10:38:21 +0200 | jakalx | (~jakalx@base.jakalx.net) () |
2021-10-02 10:44:22 +0200 | hnOsmium0001 | (uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2021-10-02 10:45:37 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) |
2021-10-02 10:46:37 +0200 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2021-10-02 10:50:07 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds) |
2021-10-02 10:52:55 +0200 | mei | (~mei@user/mei) |
2021-10-02 10:57:30 +0200 | qbt | (~edun@user/edun) |
2021-10-02 10:58:10 +0200 | werneta_ | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 268 seconds) |
2021-10-02 11:00:07 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2021-10-02 11:00:14 +0200 | qbt | (~edun@user/edun) (Client Quit) |
2021-10-02 11:03:24 +0200 | VoidNoir0 | (~VoidNoir0@72.80.203.52) |
2021-10-02 11:05:53 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
2021-10-02 11:23:46 +0200 | DNH | (~DNH@2a02:8108:1100:16d8:f5a0:763f:a395:5643) |
2021-10-02 11:24:40 +0200 | CookE[] | (~thedawn@user/thedawn) (Remote host closed the connection) |
2021-10-02 11:24:51 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-10-02 11:26:09 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-10-02 11:26:24 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-02 11:33:16 +0200 | acidjnk_new | (~acidjnk@pd9e0b933.dip0.t-ipconnect.de) |
2021-10-02 11:35:38 +0200 | thelounge9230681 | (~thelounge@cpe-75-85-161-60.san.res.rr.com) |
2021-10-02 11:36:29 +0200 | acidjnk | (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2021-10-02 11:36:29 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2021-10-02 11:37:16 +0200 | acidjnk | (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) |
2021-10-02 11:38:31 +0200 | iridium__ | (~iridium@user/iridium/x-1824934) (Quit: leaving) |
2021-10-02 11:39:41 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2021-10-02 11:43:19 +0200 | thelounge9230681 | (~thelounge@cpe-75-85-161-60.san.res.rr.com) (Ping timeout: 252 seconds) |
2021-10-02 11:45:21 +0200 | DNH | (~DNH@2a02:8108:1100:16d8:f5a0:763f:a395:5643) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-10-02 11:47:36 +0200 | hendursa1 | (~weechat@user/hendursaga) (Ping timeout: 276 seconds) |
2021-10-02 11:48:01 +0200 | alzgh | (~alzgh@user/alzgh) |
2021-10-02 11:49:34 +0200 | hendursa1 | (~weechat@user/hendursaga) |
2021-10-02 11:50:30 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-10-02 11:55:18 +0200 | mjs2600_ | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 250 seconds) |
2021-10-02 11:56:13 +0200 | xsperry | (~xs@cpe-188-129-101-182.dynamic.amis.hr) (Changing host) |
2021-10-02 11:56:13 +0200 | xsperry | (~xs@user/xsperry) |
2021-10-02 11:57:20 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-10-02 11:58:15 +0200 | pera | (~pera@user/pera) |
2021-10-02 11:59:57 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-10-02 12:04:30 +0200 | Debate2021 | (~Debate202@103.134.42.228) |
2021-10-02 12:06:19 +0200 | Debate2021 | (~Debate202@103.134.42.228) () |
2021-10-02 12:07:20 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) |
2021-10-02 12:10:07 +0200 | DNH | (~DNH@2a02:8108:1100:16d8:f5a0:763f:a395:5643) |
2021-10-02 12:12:04 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds) |
2021-10-02 12:14:24 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-02 12:18:08 +0200 | jtomas | (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) |
2021-10-02 12:23:17 +0200 | mei | (~mei@user/mei) (Quit: mei) |
2021-10-02 12:24:43 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-10-02 12:25:05 +0200 | mei | (~mei@user/mei) |
2021-10-02 12:25:40 +0200 | pera | (~pera@user/pera) (Ping timeout: 252 seconds) |
2021-10-02 12:27:21 +0200 | <tomjaguarpaw> | I know of four popular streaming libraries: conduit, pipes, streaming, streamly. Are there any others? |
2021-10-02 12:33:11 +0200 | CiaoSen | (~Jura@p200300c9571bb9002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2021-10-02 12:43:29 +0200 | pera | (~pera@user/pera) |
2021-10-02 12:50:57 +0200 | mestre | (~mestre@191.177.175.57) |
2021-10-02 12:52:37 +0200 | pera | (~pera@user/pera) (Ping timeout: 252 seconds) |
2021-10-02 12:53:46 +0200 | DNH | (~DNH@2a02:8108:1100:16d8:f5a0:763f:a395:5643) (Quit: Textual IRC Client: www.textualapp.com) |
2021-10-02 12:56:54 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-02 13:00:08 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-10-02 13:00:53 +0200 | alx741 | (~alx741@181.196.69.214) |
2021-10-02 13:01:29 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-10-02 13:01:57 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-10-02 13:02:55 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-10-02 13:04:14 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) |
2021-10-02 13:05:17 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-10-02 13:05:26 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-10-02 13:06:27 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-10-02 13:08:04 +0200 | Vajb | (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) |
2021-10-02 13:09:02 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 260 seconds) |
2021-10-02 13:11:36 +0200 | AlexNoo_ | (~AlexNoo@178.34.162.155) |
2021-10-02 13:13:05 +0200 | Alex_test | (~al_test@178.34.161.150) (Ping timeout: 252 seconds) |
2021-10-02 13:13:53 +0200 | <zincy_> | transient? |
2021-10-02 13:14:00 +0200 | <zincy_> | https://hackage.haskell.org/package/transient |
2021-10-02 13:14:11 +0200 | AlexZenon | (~alzenon@178.34.161.150) (Ping timeout: 252 seconds) |
2021-10-02 13:14:27 +0200 | <zincy_> | Not sure about popular though |
2021-10-02 13:15:17 +0200 | AlexNoo | (~AlexNoo@178.34.161.150) (Ping timeout: 252 seconds) |
2021-10-02 13:15:34 +0200 | Cajun | (~Cajun@user/cajun) |
2021-10-02 13:16:19 +0200 | CiaoSen | (~Jura@p200300c9571bb9002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-10-02 13:16:21 +0200 | phma_ | phma |
2021-10-02 13:17:23 +0200 | Alex_test | (~al_test@178.34.162.155) |
2021-10-02 13:18:14 +0200 | AlexZenon | (~alzenon@178.34.162.155) |
2021-10-02 13:28:53 +0200 | sagax | (~sagax_nb@user/sagax) (Ping timeout: 264 seconds) |
2021-10-02 13:31:16 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-10-02 13:33:21 +0200 | BestSteve | (~beststeve@220-135-3-239.HINET-IP.hinet.net) (Quit: WeeChat 3.2) |
2021-10-02 13:42:41 +0200 | max22- | (~maxime@2a01cb088335980038ece50ee02a7251.ipv6.abo.wanadoo.fr) (Ping timeout: 264 seconds) |
2021-10-02 13:43:24 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-10-02 13:43:58 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) |
2021-10-02 13:48:19 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds) |
2021-10-02 13:56:06 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-10-02 14:06:52 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 14:12:04 +0200 | tabaqui | (~root@46.39.45.162) (Quit: WeeChat 3.3) |
2021-10-02 14:15:27 +0200 | fusion86 | (~fusion@2a02-a44c-e6e5-1-1753-33de-9d65-536a.fixed6.kpn.net) |
2021-10-02 14:16:20 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 14:16:27 +0200 | snekism | (~user@88.160.31.174) |
2021-10-02 14:19:22 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-10-02 14:19:50 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-10-02 14:22:25 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 14:24:03 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) |
2021-10-02 14:26:13 +0200 | Vajb | (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer) |
2021-10-02 14:26:54 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-10-02 14:28:50 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 260 seconds) |
2021-10-02 14:30:31 +0200 | <maerwald> | tomjaguarpaw: and only 2 of them have good performance :p |
2021-10-02 14:30:37 +0200 | max22- | (~maxime@2a01cb08833598003de9b0144dce98c8.ipv6.abo.wanadoo.fr) |
2021-10-02 14:31:35 +0200 | jtomas | (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-10-02 14:33:13 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 14:34:24 +0200 | jtomas | (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) |
2021-10-02 14:44:37 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) |
2021-10-02 14:49:16 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds) |
2021-10-02 14:50:38 +0200 | AlexNoo_ | AlexNoo |
2021-10-02 14:52:01 +0200 | mestre | (~mestre@191.177.175.57) (Quit: leaving) |
2021-10-02 14:55:40 +0200 | ph88 | (~ph88@2a02:8109:9e00:7e5c:1cbc:efbb:c578:a980) (Remote host closed the connection) |
2021-10-02 15:03:23 +0200 | Alex_test | (~al_test@178.34.162.155) (Quit: ;-) |
2021-10-02 15:03:33 +0200 | AlexZenon | (~alzenon@178.34.162.155) (Quit: ;-) |
2021-10-02 15:03:56 +0200 | AlexNoo | (~AlexNoo@178.34.162.155) (Quit: Leaving) |
2021-10-02 15:09:55 +0200 | renzhi | (~xp@2607:fa49:6500:b100::1d9d) |
2021-10-02 15:10:16 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 252 seconds) |
2021-10-02 15:10:51 +0200 | CiaoSen | (~Jura@p200300c9571bb9002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2021-10-02 15:11:43 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-02 15:13:00 +0200 | MQ-17J | (~MQ-17J@8.6.144.233) |
2021-10-02 15:17:25 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-10-02 15:22:33 +0200 | AlexZenon | (~alzenon@178.34.162.155) |
2021-10-02 15:22:43 +0200 | AlexNoo | (~AlexNoo@178.34.162.155) |
2021-10-02 15:28:30 +0200 | Alex_test | (~al_test@178.34.162.155) |
2021-10-02 15:34:30 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 265 seconds) |
2021-10-02 15:37:07 +0200 | rembo10 | (~rembo10@wally.codeshy.com) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-10-02 15:37:19 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-10-02 15:38:00 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-10-02 15:39:37 +0200 | rembo10 | (~rembo10@wally.codeshy.com) |
2021-10-02 15:40:10 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2021-10-02 15:42:28 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-10-02 15:44:02 +0200 | ryantrinkle | (~ryan@50.239.20.147) |
2021-10-02 15:46:13 +0200 | jinsun | (~quassel@user/jinsun) |
2021-10-02 15:49:02 +0200 | Vajb | (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) |
2021-10-02 15:49:33 +0200 | <tomjaguarpaw> | maerwald: which two? |
2021-10-02 15:49:42 +0200 | <maerwald> | tomjaguarpaw: streamly and streaming |
2021-10-02 15:50:10 +0200 | <tomjaguarpaw> | Depends what you mean by good! https://github.com/haskell-streaming/streaming/issues/109 |
2021-10-02 15:50:41 +0200 | <tomjaguarpaw> | streamly is the only one I have found that does not have quadratic edge cases |
2021-10-02 15:51:11 +0200 | jinsun | (~quassel@user/jinsun) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2021-10-02 15:53:04 +0200 | CiaoSen | (~Jura@p200300c9571bb9002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-10-02 15:53:25 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-02 15:57:04 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-10-02 15:57:27 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-10-02 16:02:08 +0200 | fendor | (~fendor@91.141.55.34.wireless.dyn.drei.com) |
2021-10-02 16:02:22 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-10-02 16:05:54 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 260 seconds) |
2021-10-02 16:07:28 +0200 | <maerwald> | yeah, I personally am only interested in streamly |
2021-10-02 16:07:33 +0200 | <maerwald> | but the API is still a bit rough |
2021-10-02 16:08:07 +0200 | <tomjaguarpaw> | It does seem to be the best thought-through |
2021-10-02 16:08:26 +0200 | <kuribas> | conduit is the easiest to use. |
2021-10-02 16:08:43 +0200 | <tomjaguarpaw> | Why is that? |
2021-10-02 16:09:03 +0200 | norskal | (~norskal@101.175.64.73) |
2021-10-02 16:09:22 +0200 | <kuribas> | streamly is a bit awkward, it's like using a list, except it's not a list... |
2021-10-02 16:10:08 +0200 | <maerwald> | kuribas: what?? |
2021-10-02 16:10:09 +0200 | <kuribas> | conduit you wait for the input, then yield some output. |
2021-10-02 16:10:14 +0200 | <maerwald> | conduit is over-engineered :p |
2021-10-02 16:10:59 +0200 | azimut_ | (~azimut@gateway/tor-sasl/azimut) |
2021-10-02 16:11:24 +0200 | <maerwald> | streamly actually is based on streams |
2021-10-02 16:11:49 +0200 | <kuribas> | conduit is more like coroutines |
2021-10-02 16:12:09 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds) |
2021-10-02 16:12:46 +0200 | <kuribas> | streamly claims it's as easy as using lists, but you cannot just pattern matching on a streamly stream. |
2021-10-02 16:13:24 +0200 | <tomjaguarpaw> | That's strange. There's nothing that should stop you from doing that. Do they really not have it in their API? |
2021-10-02 16:14:06 +0200 | <maerwald> | I'm not even sure what that means |
2021-10-02 16:14:21 +0200 | <tomjaguarpaw> | Yeah, here: https://hackage.haskell.org/package/streamly-0.8.0/docs/Streamly-Prelude.html#v:uncons |
2021-10-02 16:14:52 +0200 | <kuribas> | that's not the same simplicity as pattern matching on a list. |
2021-10-02 16:15:00 +0200 | <maerwald> | eh |
2021-10-02 16:15:13 +0200 | <maerwald> | turn the stream into a list then |
2021-10-02 16:15:30 +0200 | <kuribas> | maerwald: then you loose the stream, what is the point? |
2021-10-02 16:15:41 +0200 | <maerwald> | well, not sure what's your problem here |
2021-10-02 16:15:47 +0200 | <tomjaguarpaw> | It is about as simple as pattern matching on a list! |
2021-10-02 16:16:38 +0200 | iridium__ | (~iridium@user/iridium/x-1824934) |
2021-10-02 16:16:40 +0200 | <geekosaur> | sounds to me like a pattern synonym might iron out any problems anyway? |
2021-10-02 16:17:06 +0200 | <maerwald> | this seems to be more of a case people having trouble navigating the streamly docs and I agree it isn't easy |
2021-10-02 16:17:13 +0200 | <tomjaguarpaw> | I'm not sure what kuribas is objecting to but the uncons has to happen in a monad |
2021-10-02 16:17:43 +0200 | <kuribas> | what I object to is that it isn't a list. If you pattern match twice, you may get different elements. |
2021-10-02 16:18:04 +0200 | <maerwald> | because a stream may run actions, yes |
2021-10-02 16:18:12 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-10-02 16:18:28 +0200 | <kuribas> | so "it's as easy as using a list", is false IMO. |
2021-10-02 16:18:49 +0200 | <maerwald> | that seems like a fabricated complaint :p |
2021-10-02 16:19:09 +0200 | <kuribas> | whereas conduit is just, read a value from upstream, yield it downstream. |
2021-10-02 16:20:22 +0200 | <kuribas> | well, do something in between first of course. |
2021-10-02 16:20:46 +0200 | <maerwald> | except you need all sorts of odd combinators, while streamly's Monad instance actually makes sense |
2021-10-02 16:21:10 +0200 | Guest28 | (~Guest28@2a02:120b:c3f4:72c0:2322:7cf4:1b7d:710b) |
2021-10-02 16:21:55 +0200 | <maerwald> | you might also wanna check out the Unfold type in streamly |
2021-10-02 16:22:38 +0200 | <kuribas> | yeah, then there are also folds, lot's of concepts, it's just more complicated that the conduit way of doing things. |
2021-10-02 16:22:58 +0200 | <maerwald> | sounds more to me like you're used to conduit and hence find it easier |
2021-10-02 16:23:05 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 16:23:06 +0200 | <maerwald> | https://github.com/composewell/streamly#an-overview-of-the-types-used-in-these-examples |
2021-10-02 16:23:10 +0200 | <maerwald> | not many types you have to understand |
2021-10-02 16:23:18 +0200 | <maerwald> | basically 4 |
2021-10-02 16:23:50 +0200 | <kuribas> | I am not saying it's worse, it may have a good usecase, but I find the conduit interface easier to understand. |
2021-10-02 16:24:03 +0200 | Guest28 | (~Guest28@2a02:120b:c3f4:72c0:2322:7cf4:1b7d:710b) (Client Quit) |
2021-10-02 16:24:03 +0200 | <maerwald> | I find it mind-boggling whenever I look at it |
2021-10-02 16:24:23 +0200 | geekosaur | got lost almost immediately trying to understand the API |
2021-10-02 16:24:37 +0200 | <maerwald> | one day I figure out how conduit works, 2 weeks later I don't anymore |
2021-10-02 16:24:38 +0200 | <kuribas> | geekosaur: conduit? |
2021-10-02 16:24:42 +0200 | <maerwald> | it's so unintuitive |
2021-10-02 16:24:42 +0200 | <geekosaur> | yeh |
2021-10-02 16:25:18 +0200 | <tomjaguarpaw> | I'm curious why a streamly Unfold m a b is not just an a -> SerialT m b |
2021-10-02 16:26:05 +0200 | <maerwald> | `forall s. Unfold (s -> m (Step s b)) (a -> m s)` |
2021-10-02 16:26:10 +0200 | <kuribas> | tomjaguarpaw: because of the applicative? |
2021-10-02 16:27:40 +0200 | xiongxin | (~quassel@113.116.33.66) (Ping timeout: 252 seconds) |
2021-10-02 16:27:46 +0200 | <tomjaguarpaw> | I don't understand either response |
2021-10-02 16:28:05 +0200 | xiongxin | (~quassel@113.116.33.66) |
2021-10-02 16:28:22 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2021-10-02 16:28:24 +0200 | <maerwald> | I don't understand how `a -> SerialT m b` would allow you to define a stepper function |
2021-10-02 16:28:46 +0200 | <tomjaguarpaw> | Do you want to define a stepper function? |
2021-10-02 16:29:03 +0200 | <tomjaguarpaw> | You can't use it for anything other than getting b s out |
2021-10-02 16:29:54 +0200 | <maerwald> | In the stepper, you have Yield, Skip and Stop |
2021-10-02 16:30:21 +0200 | <tomjaguarpaw> | What can you do with it that you can't do with an a -> SerialT m b ? |
2021-10-02 16:30:28 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-10-02 16:30:28 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-10-02 16:30:28 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-02 16:31:46 +0200 | <kuribas> | tomjaguarpaw: maybe it's for performance? Streamly tries very hard to be performant. |
2021-10-02 16:32:05 +0200 | cheater | (~Username@user/cheater) |
2021-10-02 16:32:13 +0200 | <tomjaguarpaw> | Yes, possible |
2021-10-02 16:32:46 +0200 | <kuribas> | it even has a plugin that remove intermediate structures. |
2021-10-02 16:33:13 +0200 | <tomjaguarpaw> | "Unfold is an example of an abstraction that we have created to achieve high performance when mapping streams on streams. Unfold allows stream generation to be optimized well by the compiler through stream fusion." |
2021-10-02 16:33:17 +0200 | <tomjaguarpaw> | Perhaps that's it |
2021-10-02 16:33:58 +0200 | <maerwald> | https://hackage.haskell.org/package/streamly-0.8.0/docs/src/Streamly.Internal.Data.Stream.StreamD.… |
2021-10-02 16:34:03 +0200 | kuribas | (~user@ptr-25vy0i8gk2vqd1giqyv.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2021-10-02 16:34:11 +0200 | <maerwald> | that's basically what you mean I guess |
2021-10-02 16:34:57 +0200 | <tomjaguarpaw> | maerwald: Right |
2021-10-02 16:34:58 +0200 | <maerwald> | tomjaguarpaw: there's StreamD and StreamK btw |
2021-10-02 16:35:06 +0200 | <maerwald> | maybe Unfold abstracts over that |
2021-10-02 16:35:46 +0200 | Guest80 | (~Guest80@186.122.61.47) |
2021-10-02 16:35:48 +0200 | <maerwald> | I asked once and harendra says they have different performance properties |
2021-10-02 16:36:55 +0200 | <maerwald> | "GHC is able to INLINE and fuse direct style better, providing better performance than CPS implementation." |
2021-10-02 16:37:25 +0200 | <tomjaguarpaw> | Makes sense |
2021-10-02 16:37:34 +0200 | <maerwald> | so you can defer the decision or so |
2021-10-02 16:37:44 +0200 | <tomjaguarpaw> | Unfold is likely subject to the same O(n^2) behaviour I have reported on the other libraries though |
2021-10-02 16:37:57 +0200 | <tomjaguarpaw> | The point of CPS is to right-associate the binds |
2021-10-02 16:38:04 +0200 | Lycurgus | (~juan@98.4.112.204) |
2021-10-02 16:40:44 +0200 | iridium__ | (~iridium@user/iridium/x-1824934) (Quit: leaving) |
2021-10-02 16:42:08 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) |
2021-10-02 16:43:05 +0200 | hnOsmium0001 | (uid453710@id-453710.hampstead.irccloud.com) |
2021-10-02 16:46:25 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 252 seconds) |
2021-10-02 16:50:17 +0200 | acidjnk_new3 | (~acidjnk@pd9e0b933.dip0.t-ipconnect.de) |
2021-10-02 16:51:00 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2021-10-02 16:53:40 +0200 | acidjnk | (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-10-02 16:53:50 +0200 | ubert | (~Thunderbi@178.115.76.58.wireless.dyn.drei.com) |
2021-10-02 16:54:55 +0200 | <hololeap> | is there any way to customize `cabal init` to, say, also copy in a .gitignore file? |
2021-10-02 16:56:17 +0200 | <maerwald> | cabal init && cp gitignore |
2021-10-02 16:56:19 +0200 | <maerwald> | :p |
2021-10-02 16:56:45 +0200 | <hololeap> | that's too much typing! |
2021-10-02 16:56:51 +0200 | <maerwald> | oh dear |
2021-10-02 16:56:55 +0200 | <maerwald> | but it's unix :) |
2021-10-02 16:57:01 +0200 | <hololeap> | i'm kidding |
2021-10-02 16:57:50 +0200 | <hololeap> | however, it seems to be pulling in files from some kind of skel directory, so could this be modified? |
2021-10-02 17:02:34 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) |
2021-10-02 17:05:18 +0200 | acidjnk_new | (~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Remote host closed the connection) |
2021-10-02 17:05:18 +0200 | acidjnk_new3 | (~acidjnk@pd9e0b933.dip0.t-ipconnect.de) (Remote host closed the connection) |
2021-10-02 17:05:57 +0200 | <fusion86> | Hey all, this should be a very simple thing but I can't figure out how to convert a Float -> Word8. Anyone got any tips :) |
2021-10-02 17:07:02 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 260 seconds) |
2021-10-02 17:09:39 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-02 17:09:54 +0200 | <nitrix> | [Word8] or Word8? |
2021-10-02 17:11:23 +0200 | <nitrix> | A Float wont fit in a Word8 unless it's quite small. |
2021-10-02 17:12:21 +0200 | <hpc> | there's no single thing that could be "converting" - perhaps you want to round the float? |
2021-10-02 17:16:20 +0200 | mei | (~mei@user/mei) (Read error: Connection reset by peer) |
2021-10-02 17:17:10 +0200 | alx741 | (~alx741@181.196.69.214) (Ping timeout: 252 seconds) |
2021-10-02 17:21:25 +0200 | Lycurgus | (~juan@98.4.112.204) (Quit: Exeunt) |
2021-10-02 17:21:41 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 17:22:28 +0200 | <fusion86> | A Word8, I have 4 floats which I need to convert to a `V4 Word8`. This is because I use two libraries which both have their own `Color` data type. |
2021-10-02 17:23:04 +0200 | <geekosaur> | that's going to be more than just a simple conversion |
2021-10-02 17:23:28 +0200 | <geekosaur> | the Word8s will be 0-255, the Floats could be 0-1 or some other representation |
2021-10-02 17:24:55 +0200 | <fusion86> | The floats are 0-1, so I started with doing `r * 255` but at that point it still is a float. I pretty much just want to ignore the decimals (or round, but that doesn't matter in the grand scale of things) and get a Word8. |
2021-10-02 17:26:30 +0200 | <geekosaur> | :t floor |
2021-10-02 17:26:31 +0200 | <lambdabot> | (RealFrac a, Integral b) => a -> b |
2021-10-02 17:26:46 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-10-02 17:27:13 +0200 | <justsomeguy> | Is it possible to create a datatype that for only the characters 'a'..'z'? |
2021-10-02 17:27:28 +0200 | <geekosaur> | not with some evil type level horkery |
2021-10-02 17:27:37 +0200 | Ranhir | (~Ranhir@157.97.53.139) (Read error: Connection reset by peer) |
2021-10-02 17:27:39 +0200 | <geekosaur> | haskell doesn't really support subtyping |
2021-10-02 17:27:41 +0200 | <hpc> | or a newtype wrapper where you control the api |
2021-10-02 17:28:16 +0200 | <hpc> | or if you like typing, data Letter = A | B | C | ... |
2021-10-02 17:30:01 +0200 | alx741 | (~alx741@186.178.109.221) |
2021-10-02 17:31:08 +0200 | <dsal> | justsomeguy: you can approximate it with a type that allows for all characters, but doesn't export a constructor and has a smart constructor that only allows a subset. And maybe pattern synonyms or something. |
2021-10-02 17:32:08 +0200 | machinedgod | (~machinedg@24.105.81.50) (Quit: Lost terminal) |
2021-10-02 17:32:08 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 17:32:31 +0200 | <fusion86> | Neat, `floor` is the function I was looking for. Thanks :) |
2021-10-02 17:32:37 +0200 | Morrow | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 252 seconds) |
2021-10-02 17:33:20 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2021-10-02 17:34:32 +0200 | <geekosaur> | hm, also I think you want * 256, into a larger type than Word8, then subtract 1 if the result is 256. but then I'd suspect 0-1 actually never returns 1 |
2021-10-02 17:38:07 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) |
2021-10-02 17:38:29 +0200 | CannabisIndica | (~herb@user/mesaboogie) (Ping timeout: 264 seconds) |
2021-10-02 17:38:48 +0200 | machinedgod | (~machinedg@24.105.81.50) (Remote host closed the connection) |
2021-10-02 17:39:59 +0200 | <monochrom> | > round (0.99 * 255) :: Word8 |
2021-10-02 17:40:00 +0200 | <lambdabot> | 252 |
2021-10-02 17:40:37 +0200 | <geekosaur> | right, I'm thinking you lose a little dynamic range with * 255 |
2021-10-02 17:40:54 +0200 | <monochrom> | > round (0.9999 * 255) :: Word8 |
2021-10-02 17:40:55 +0200 | <lambdabot> | 255 |
2021-10-02 17:41:04 +0200 | <geekosaur> | it's the safer and easier option though |
2021-10-02 17:41:08 +0200 | <monochrom> | > floor (0.9999 * 256) :: Word8 |
2021-10-02 17:41:09 +0200 | <lambdabot> | 255 |
2021-10-02 17:41:47 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2021-10-02 17:41:50 +0200 | <monochrom> | "0.9999 * 25[5,6]" is already done in a larger type :) |
2021-10-02 17:42:35 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 265 seconds) |
2021-10-02 17:46:42 +0200 | Ranhir | (~Ranhir@157.97.53.139) |
2021-10-02 17:47:44 +0200 | acidjnk | (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) |
2021-10-02 17:47:46 +0200 | acidjnk_new | (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) |
2021-10-02 17:50:17 +0200 | raym | (~raym@user/raym) (Ping timeout: 252 seconds) |
2021-10-02 17:53:15 +0200 | <tomsmeding> | > 1.0 * 256 |
2021-10-02 17:53:16 +0200 | <lambdabot> | 256.0 |
2021-10-02 17:53:30 +0200 | <tomsmeding> | > floor (1.0 * 256) :: Word8 |
2021-10-02 17:53:31 +0200 | <lambdabot> | 0 |
2021-10-02 17:53:40 +0200 | xiongxin | (~quassel@113.116.33.66) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2021-10-02 17:53:58 +0200 | <hpc> | > floor (1.0 * 255) :: Word8 |
2021-10-02 17:54:00 +0200 | <lambdabot> | 255 |
2021-10-02 17:54:24 +0200 | <tomsmeding> | Yeah probably better to *255 |
2021-10-02 17:54:51 +0200 | <fusion86> | The library from where I am converting the color uses `int / 255` which is why I went with that. |
2021-10-02 17:55:09 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
2021-10-02 17:55:16 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-10-02 17:55:24 +0200 | <tomsmeding> | Sounds good |
2021-10-02 17:55:51 +0200 | raym | (~raym@user/raym) |
2021-10-02 17:56:20 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2021-10-02 17:57:29 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) |
2021-10-02 17:58:02 +0200 | <fusion86> | I have a function which translates/converts from 1 coordinate system to another, it internally uses `gameWidth / 2` every time the function is called. I assume that this division is calculated every time the function is called. gameWidth is a constant though, so is it possible to also make the result a constant somewhere? Pretty much a `constexpr` from c++, does something like that exist? |
2021-10-02 17:58:19 +0200 | <fusion86> | A single division wont actually slow my program, but it's the principle |
2021-10-02 17:59:47 +0200 | <monochrom> | If you have a "foo = gameWidth/2" in a suitable scope, the compiler is forced to reuse it. |
2021-10-02 18:00:07 +0200 | <monochrom> | If you don't, the optimizer may still do it for you, or maybe not, it depends. |
2021-10-02 18:00:09 +0200 | erinvanderveen[4 | (~erinvande@2001:470:69fc:105::e8f3) (Quit: You have been kicked for being idle) |
2021-10-02 18:00:32 +0200 | harveypwca | (~harveypwc@2601:246:c180:a570:2435:ba7:e573:bc26) (Quit: Leaving) |
2021-10-02 18:00:46 +0200 | <monochrom> | In both cases, don't assume. |
2021-10-02 18:01:25 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-10-02 18:01:49 +0200 | <monochrom> | These days, people don't even have a good idea what C and C++ optimizers do. (They just use Dunning-Kruger to congratulate themselves that they think they do.) So nevermind the even less familiar GHC. |
2021-10-02 18:03:07 +0200 | fizzsegfaultbuzz | (~segfaultf@135-180-0-138.static.sonic.net) |
2021-10-02 18:03:09 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 18:03:10 +0200 | <fusion86> | Hm, I guess I'll just not worry about that then, because in the end a single division wont actually be noticeable (even if run 10 times a second) |
2021-10-02 18:03:13 +0200 | <nitrix> | I agree with monochrom, profile if it's important. I will say though, there a big chance it does gets optimized, that's a fairly trivial reduction for SSA (which GHC has). |
2021-10-02 18:04:10 +0200 | <monochrom> | Even 30 years ago, if you look at a C loop (or Fortran for that matter) like "for (i = 0; i < n; i++) { ... a[i] ... }" and think "a + i*sizeof(whatever)" has an expensive multiplication and you "need" to hand-optimize that to manual pointer games,... |
2021-10-02 18:04:25 +0200 | <monochrom> | NO, the C optimizer already does that for you. |
2021-10-02 18:05:04 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds) |
2021-10-02 18:05:20 +0200 | <monochrom> | Even 30 years ago, when people continued to perpetuate the fantasy that recursion always takes up stack space... |
2021-10-02 18:05:29 +0200 | <monochrom> | NO, gcc already does TCO for you. |
2021-10-02 18:06:38 +0200 | <monochrom> | If you have neither read compiler-generated asm code or taken a course on code optimization... |
2021-10-02 18:06:43 +0200 | <monochrom> | Assume that you're wrong. |
2021-10-02 18:07:09 +0200 | <hpc> | and if you have, you're probably still wrong |
2021-10-02 18:07:27 +0200 | <monochrom> | And I haven't even touched the toggling story of cache locality. |
2021-10-02 18:07:30 +0200 | <hpc> | citation: optimization of UB |
2021-10-02 18:07:51 +0200 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) (Remote host closed the connection) |
2021-10-02 18:08:33 +0200 | <monochrom> | Yeah, if you think, like I did, that "n = 1; c = 0; while (n != 0) { n *= 2; c++}" helps me count how many bits the machine word has... |
2021-10-02 18:08:55 +0200 | MQ-17J | (~MQ-17J@8.6.144.233) (Ping timeout: 252 seconds) |
2021-10-02 18:08:57 +0200 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) |
2021-10-02 18:09:01 +0200 | <monochrom> | gcc -O2 optimizes that to "mylabel : jmp mylabel" |
2021-10-02 18:10:09 +0200 | <monochrom> | What's funny is that -O1 goes only so far as "increment c 32 times" or something. |
2021-10-02 18:10:23 +0200 | <int-e> | should've used unsigned int |
2021-10-02 18:10:29 +0200 | <monochrom> | I did. |
2021-10-02 18:10:30 +0200 | <nitrix> | fusion86, I would be more careful about memory reads or writes. On a cache miss, just one of those can completely outweight one order, sometimes two orders, the amount of multiplications. Skeletal animation for example has a lot of matrix multiplication and it's much faster to just recompute them each frame than fetching from memory the precomputed result (if they change often enough, like every frame, but not often enough to remain in cache). |
2021-10-02 18:10:52 +0200 | <nitrix> | fusion86, Game development is fun like that. I've never done it in Haskell so I'm sure that'll have its own set of surprises. |
2021-10-02 18:11:33 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-10-02 18:11:33 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-10-02 18:11:33 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-02 18:11:45 +0200 | <int-e> | monochrom: you didn't |
2021-10-02 18:12:33 +0200 | Null_A | (~null_a@2601:645:8700:2290:e9de:2461:c7b1:d42b) |
2021-10-02 18:12:41 +0200 | <geekosaur> | isn't this the one you pasted the C source and resulting asm from some years ago? |
2021-10-02 18:12:48 +0200 | <monochrom> | Yes. |
2021-10-02 18:12:58 +0200 | <int-e> | monochrom: with `int` it's undefined behavior; `unsigned int` is specified to work modulo 2^w where w is the bit size of the int. |
2021-10-02 18:13:11 +0200 | CnnibisIndica | (~herb@user/mesaboogie) |
2021-10-02 18:13:55 +0200 | <int-e> | > 2^30 * 2 :: Int |
2021-10-02 18:13:56 +0200 | <lambdabot> | 2147483648 |
2021-10-02 18:14:02 +0200 | <int-e> | > 2^62 * 2 :: Int |
2021-10-02 18:14:03 +0200 | <lambdabot> | -9223372036854775808 |
2021-10-02 18:14:29 +0200 | <monochrom> | I mean C. |
2021-10-02 18:16:01 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-10-02 18:16:15 +0200 | <fusion86> | The game framework we need to use is pretty high level (Gloss) so I assume that most performance is lost there. I also hacked sdl2_ttf into the project to render some neat text, so that's probably also a large performance hit (though I didn't test) |
2021-10-02 18:16:30 +0200 | <int-e> | monochrom: I guess you may have triggered a compiler bug at some point but... I'm not aware of gcc ever getting this particular case wrong. |
2021-10-02 18:18:20 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) |
2021-10-02 18:22:53 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) (Ping timeout: 264 seconds) |
2021-10-02 18:25:16 +0200 | dajoer | (~david@user/gvx) (Quit: leaving) |
2021-10-02 18:25:28 +0200 | q_implies_not_q | (~p_implies@host-46-33.ilcujsm.champaign.il.us.clients.pavlovmedia.net) |
2021-10-02 18:26:06 +0200 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) |
2021-10-02 18:30:09 +0200 | CnnibisIndica | CannabisIndica |
2021-10-02 18:32:47 +0200 | Morrow | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
2021-10-02 18:33:11 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-10-02 18:37:31 +0200 | q_implies_not_q | (~p_implies@host-46-33.ilcujsm.champaign.il.us.clients.pavlovmedia.net) (Quit: Leaving) |
2021-10-02 18:38:52 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-10-02 18:41:23 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2021-10-02 18:41:59 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2021-10-02 18:43:05 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
2021-10-02 18:43:56 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2021-10-02 18:44:08 +0200 | ubert | (~Thunderbi@178.115.76.58.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-10-02 18:44:52 +0200 | ubert | (~Thunderbi@178.115.76.58.wireless.dyn.drei.com) |
2021-10-02 18:49:10 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 18:53:14 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 18:55:54 +0200 | snekism | (~user@88.160.31.174) (Remote host closed the connection) |
2021-10-02 18:56:23 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-10-02 18:56:23 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-10-02 18:56:23 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-02 18:56:24 +0200 | Vajb | (~Vajb@n8vwdu04eps78g521-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer) |
2021-10-02 18:57:00 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-10-02 18:59:10 +0200 | TDANG_ | (~TDANG@216.63.184.7) |
2021-10-02 18:59:16 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-10-02 19:02:20 +0200 | TDANG | (~TDANG@inet-177-7.ets.org) (Ping timeout: 252 seconds) |
2021-10-02 19:03:23 +0200 | fusion86 | (~fusion@2a02-a44c-e6e5-1-1753-33de-9d65-536a.fixed6.kpn.net) (Remote host closed the connection) |
2021-10-02 19:03:55 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
2021-10-02 19:06:11 +0200 | econo | (uid147250@user/econo) |
2021-10-02 19:06:21 +0200 | jaitoon | (~Jaitoon@2a02:c7f:a5f:1d00:3434:15c8:b68c:cba1) |
2021-10-02 19:09:22 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-10-02 19:11:52 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2021-10-02 19:12:54 +0200 | cheater | (~Username@user/cheater) |
2021-10-02 19:19:11 +0200 | chisui | (~chisui@200116b868bc9f00884a12b19ab3b2f3.dip.versatel-1u1.de) |
2021-10-02 19:19:17 +0200 | <awpr> | a few weeks ago we were looking into a case of a Gloss program being pretty slow, and it turned out it uses the legacy OpenGL API that calls into OpenGL once for every vertex, and pushes/pops the geometry transform matrix stack for every translation. it might just have a performance ceiling when there's a lot of geometry |
2021-10-02 19:20:51 +0200 | <Hecate> | damn |
2021-10-02 19:27:47 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-10-02 19:28:49 +0200 | __monty__ | (~toonn@user/toonn) |
2021-10-02 19:29:50 +0200 | Pacra | (~Pacra@pool-100-11-34-209.phlapa.fios.verizon.net) (Ping timeout: 252 seconds) |
2021-10-02 19:32:08 +0200 | hueso | (~root@user/hueso) |
2021-10-02 19:36:19 +0200 | Zer000 | (~phil@64.137.132.26) |
2021-10-02 19:36:37 +0200 | <maerwald> | awpr: ah the thing with a max stack of 30 or so? |
2021-10-02 19:38:09 +0200 | <awpr> | hmm, I never thought about there being a limit, but I guess that makes sense. in this case the problem was more that it was expensive to do a separate matrix multiply and GL FFI call for basically every polygon |
2021-10-02 19:44:49 +0200 | <awpr> | oh, fusion86 already left anyway. I'm just responding into the void :/ |
2021-10-02 19:49:11 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-10-02 19:49:22 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
2021-10-02 19:49:56 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2021-10-02 19:52:21 +0200 | charukiewicz | (~quassel@108.210.196.136) (Quit: No Ping reply in 180 seconds.) |
2021-10-02 19:53:22 +0200 | ss4 | (~wootehfoo@user/wootehfoot) |
2021-10-02 19:53:49 +0200 | charukiewicz | (~quassel@108.210.196.136) |
2021-10-02 19:53:50 +0200 | kayvank | (~user@52-119-115-185.PUBLIC.monkeybrains.net) |
2021-10-02 19:54:20 +0200 | hendursa1 | (~weechat@user/hendursaga) (Quit: hendursa1) |
2021-10-02 19:54:59 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-10-02 19:55:53 +0200 | kimjetwav | (~user@2607:fea8:235f:9730:49e1:79a9:994b:782d) (Remote host closed the connection) |
2021-10-02 19:56:10 +0200 | kimjetwav | (~user@2607:fea8:235f:9730:48ad:b7dd:9c1e:6d8d) |
2021-10-02 19:56:40 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Ping timeout: 252 seconds) |
2021-10-02 19:58:11 +0200 | mekeor[m] | (~mekeormat@2001:470:69fc:105::17e4) |
2021-10-02 19:59:53 +0200 | <mekeor[m]> | is there a package on hackage which provides a function f of type `String -> String` which evaluates arithmetic expressions? e.g. `f "1+2"` would equal `"3"`. |
2021-10-02 20:00:06 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-10-02 20:00:18 +0200 | <geekosaur> | hint? mueval? |
2021-10-02 20:00:49 +0200 | <geekosaur> | (mueval is based on hint but provides protections, for example it accepts arbitrary Haskell expressions but disallows IO) |
2021-10-02 20:01:19 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) (Quit: Leaving) |
2021-10-02 20:01:22 +0200 | kayvank | (~user@52-119-115-185.PUBLIC.monkeybrains.net) (Remote host closed the connection) |
2021-10-02 20:02:14 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2021-10-02 20:02:32 +0200 | <geekosaur> | I don't know of one limited to arithmetic evaluations, but those are kinda uninteresting anyway: at minimum you often want simple functions |
2021-10-02 20:03:11 +0200 | <geekosaur> | and that gets you into how you best structure them for your needs since there's several possible ways to do it, each with its own shortcomings |
2021-10-02 20:03:13 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-02 20:03:27 +0200 | max22- | (~maxime@2a01cb08833598003de9b0144dce98c8.ipv6.abo.wanadoo.fr) (Ping timeout: 240 seconds) |
2021-10-02 20:06:08 +0200 | <mekeor[m]> | well, i actually really just want an arithmetic calculator. but thanks anyway |
2021-10-02 20:07:09 +0200 | kayvank | (~user@52-119-115-185.public.monkeybrains.net) |
2021-10-02 20:07:36 +0200 | kayvank | (~user@52-119-115-185.public.monkeybrains.net) (Client Quit) |
2021-10-02 20:09:00 +0200 | __monty__ | (~toonn@user/toonn) |
2021-10-02 20:10:14 +0200 | <monochrom> | Hutton's Haskell textbook has an arithmetic calculator. |
2021-10-02 20:10:19 +0200 | <mekeor[m]> | i once wrote such a package myself, but it does not support paranthesis x) |
2021-10-02 20:10:58 +0200 | <monochrom> | Since it is known upfront that there are only like 5 operations, it can easily be represented as vanilla data. |
2021-10-02 20:11:43 +0200 | wroathe | (~wroathe@50-205-197-50-static.hfc.comcastbusiness.net) |
2021-10-02 20:11:43 +0200 | wroathe | (~wroathe@50-205-197-50-static.hfc.comcastbusiness.net) (Changing host) |
2021-10-02 20:11:43 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-02 20:17:26 +0200 | <mekeor[m]> | monochrom: you mean, i could check if the input-string matches the regex [0-9\.+-*/^] before i pass it to "hint"? |
2021-10-02 20:18:17 +0200 | <monochrom> | No, Hutton's book doesn't use hint. |
2021-10-02 20:18:18 +0200 | <geekosaur> | no, I think he's saying you avoid the problems I mentioned with writing your own if you're not supporting bindings, functions, etc. |
2021-10-02 20:18:41 +0200 | <monochrom> | It doesn't use regexes either. |
2021-10-02 20:23:15 +0200 | Lycurgus | (~juan@98.4.112.204) |
2021-10-02 20:24:40 +0200 | <[exa]> | mekeor[m]: calculators are kinda 5-line exercise in megaparsec, I guess if you google megaparsec tutorials you'll find one |
2021-10-02 20:27:20 +0200 | snekism | (~user@88.160.31.174) |
2021-10-02 20:32:00 +0200 | aegon | (~mike@174.127.249.180) |
2021-10-02 20:34:37 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 252 seconds) |
2021-10-02 20:38:38 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
2021-10-02 20:39:02 +0200 | max22- | (~maxime@2a01cb0883359800842b86a07baa5676.ipv6.abo.wanadoo.fr) |
2021-10-02 20:46:52 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2021-10-02 20:50:41 +0200 | nfd | (~nfd@user/nfd) (Ping timeout: 252 seconds) |
2021-10-02 20:53:47 +0200 | max22- | (~maxime@2a01cb0883359800842b86a07baa5676.ipv6.abo.wanadoo.fr) (Ping timeout: 240 seconds) |
2021-10-02 20:58:22 +0200 | <aegon> | i'm looking for a good matrix library in haskell for standard glm type functionality, I found hmatrix but it doesn't have a notion of quaternions which I have to interact with quite a lot and writing a quaternion to matrix function is not trivial. is there a composable library with this that provides those things or does anyone know of a different matrix lib in haskell that fits the bill better for |
2021-10-02 20:58:28 +0200 | <aegon> | geometric operations |
2021-10-02 20:59:51 +0200 | <aegon> | oh linear might be better |
2021-10-02 21:00:27 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-10-02 21:00:30 +0200 | <Lycurgus> | quaternions are their own thing, there's several hs pkgs iirc |
2021-10-02 21:01:05 +0200 | <aegon> | well, they are hteir own things but going from linear to rotation matrix is a normal operation in my domain |
2021-10-02 21:01:08 +0200 | <aegon> | and vice versa |
2021-10-02 21:01:08 +0200 | <Lycurgus> | usually filed under classical nick nacks |
2021-10-02 21:01:28 +0200 | <aegon> | s/linear/quaternion/g |
2021-10-02 21:02:10 +0200 | <Lycurgus> | math bric a brac |
2021-10-02 21:02:13 +0200 | terrorjack | (~terrorjac@static.3.200.12.49.clients.your-server.de) |
2021-10-02 21:02:27 +0200 | machinedgod | (~machinedg@24.105.81.50) |
2021-10-02 21:02:57 +0200 | <aegon> | maybe theres a quaternion library that gives me a list of lists that is the rotation matrix equivalent |
2021-10-02 21:04:13 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-10-02 21:04:31 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-10-02 21:04:48 +0200 | Null_A | (~null_a@2601:645:8700:2290:e9de:2461:c7b1:d42b) (Remote host closed the connection) |
2021-10-02 21:05:10 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2021-10-02 21:07:09 +0200 | <aegon> | linear / linear-accelerate seem to have all the bells and whistles needed |
2021-10-02 21:10:09 +0200 | ss4 | (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
2021-10-02 21:10:26 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2021-10-02 21:21:00 +0200 | Lycurgus | (~juan@98.4.112.204) (Quit: Exeunt) |
2021-10-02 21:22:42 +0200 | Lorra | (~lorenzo@2001:a61:be4:201:2c70:ff42:b0f:e800) |
2021-10-02 21:28:53 +0200 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2021-10-02 21:30:58 +0200 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-10-02 21:32:32 +0200 | Lorra | (~lorenzo@2001:a61:be4:201:2c70:ff42:b0f:e800) (Quit: Konversation terminated!) |
2021-10-02 21:37:25 +0200 | yinghua | (~yinghua@181.228.40.183) |
2021-10-02 21:38:27 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-10-02 21:39:42 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Remote host closed the connection) |
2021-10-02 21:39:57 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-10-02 21:40:31 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-10-02 21:45:36 +0200 | fendor | (~fendor@91.141.55.34.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-10-02 21:48:29 +0200 | fendor | (~fendor@91.141.55.34.wireless.dyn.drei.com) |
2021-10-02 21:48:30 +0200 | fendor_ | (~fendor@91.141.55.34.wireless.dyn.drei.com) |
2021-10-02 21:48:31 +0200 | fendor__ | (~fendor@91.141.55.34.wireless.dyn.drei.com) |
2021-10-02 21:57:03 +0200 | fendor__ | (~fendor@91.141.55.34.wireless.dyn.drei.com) (Quit: Leaving) |
2021-10-02 21:57:06 +0200 | fendor_ | (~fendor@91.141.55.34.wireless.dyn.drei.com) (Quit: Leaving) |
2021-10-02 21:57:13 +0200 | fendor | (~fendor@91.141.55.34.wireless.dyn.drei.com) (Quit: Leaving) |
2021-10-02 21:58:01 +0200 | snekism` | (~user@88.160.31.174) |
2021-10-02 21:59:55 +0200 | snekism | (~user@88.160.31.174) (Ping timeout: 252 seconds) |
2021-10-02 22:04:52 +0200 | azeem | (~azeem@2a00:801:428:f4e3:face:8eed:b26f:ce9c) (Ping timeout: 252 seconds) |
2021-10-02 22:04:56 +0200 | juhp | (~juhp@128.106.188.220) (Ping timeout: 252 seconds) |
2021-10-02 22:05:49 +0200 | <hololeap> | what ever happened to ski? |
2021-10-02 22:08:31 +0200 | juhp | (~juhp@128.106.188.220) |
2021-10-02 22:08:40 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-10-02 22:12:33 +0200 | norskal | (~norskal@101.175.64.73) (Quit: Ping timeout (120 seconds)) |
2021-10-02 22:13:00 +0200 | <hpc> | he got simplified to sk |
2021-10-02 22:15:42 +0200 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2021-10-02 22:18:01 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 252 seconds) |
2021-10-02 22:19:51 +0200 | fr33domlover1 | fr33domlover |
2021-10-02 22:20:21 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
2021-10-02 22:29:32 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-10-02 22:34:59 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-10-02 22:35:26 +0200 | rond_ | (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) |
2021-10-02 22:45:11 +0200 | rond_ | (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed) |
2021-10-02 22:54:26 +0200 | Morrow | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 246 seconds) |
2021-10-02 22:55:01 +0200 | <zwro[m]> | what do we call it when we do `a <- someMonad`? |
2021-10-02 22:55:07 +0200 | <zwro[m]> | "unbinding"? |
2021-10-02 22:55:57 +0200 | <[exa]> | "binding" actually |
2021-10-02 22:56:13 +0200 | <Hecate> | zwro[m]: nothing more than binding :) |
2021-10-02 22:56:21 +0200 | <Hecate> | https://en.wikibooks.org/wiki/Haskell/do_notation |
2021-10-02 22:57:16 +0200 | <zwro[m]> | ok makes sense |
2021-10-02 22:58:01 +0200 | <zwro[m]> | my intuition was that the real binding happens in the next line |
2021-10-02 22:58:11 +0200 | <[exa]> | in certain cases you might say it's a bit like "unwrapping", but with many monads that's misleading |
2021-10-02 22:58:37 +0200 | ByronJohnson | (~bairyn@mail.digitalkingdom.org) (Remote host closed the connection) |
2021-10-02 22:59:11 +0200 | <zwro[m]> | yeah. i was considering "lifting" and gave up on it for the same reason |
2021-10-02 22:59:12 +0200 | <[exa]> | it gets rewritten to something like `... someMonad >>= \a -> ...nextline...`, so yeah, technically `a` is bound for the next line |
2021-10-02 23:00:12 +0200 | <[exa]> | (name "lifting" is usually reserved for the other direction, making a function work through some extra semantics) |
2021-10-02 23:01:13 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2021-10-02 23:01:53 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-10-02 23:02:03 +0200 | <zwro[m]> | yeah... words are confusing |
2021-10-02 23:02:13 +0200 | <[exa]> | (like, `map f` is the function `f` lifted to work on lists, and the actual name can be seen e.g. in `liftA2`) |
2021-10-02 23:03:24 +0200 | ubert | (~Thunderbi@178.115.76.58.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-10-02 23:03:49 +0200 | <zwro[m]> | liftA2 f a b = f <$> a <*> , right? |
2021-10-02 23:04:03 +0200 | <zwro[m]> | ^ missed the b at the end |
2021-10-02 23:04:04 +0200 | <[exa]> | yes that should work |
2021-10-02 23:04:21 +0200 | <awpr> | the funnest part of all this is that "map" seems to have come from the definition of a functor "... along with a map of morphisms in C to morphisms in D", in which context it just means "a function" |
2021-10-02 23:04:56 +0200 | <zwro[m]> | well, functions are maps |
2021-10-02 23:05:37 +0200 | <awpr> | right, it was used as a totally generic term and then accidentally acquired a very specific meaning by being used as the name of a class method |
2021-10-02 23:05:54 +0200 | <awpr> | if that's actually how the etymology happened, anyway |
2021-10-02 23:06:11 +0200 | <zwro[m]> | and now we even have fmap |
2021-10-02 23:06:35 +0200 | <zwro[m]> | words... |
2021-10-02 23:06:43 +0200 | <[exa]> | mapmap from now on |
2021-10-02 23:07:05 +0200 | <zwro[m]> | aha fair. that's why i like lambda calculos. names are irrelevant |
2021-10-02 23:07:24 +0200 | <zwro[m]> | what's in a name? said the bard |
2021-10-02 23:07:33 +0200 | <awpr> | if we started using lambda calculus for large scale software development, names would instantly become relevant |
2021-10-02 23:07:36 +0200 | Lycurgus | (~juan@98.4.112.204) |
2021-10-02 23:08:21 +0200 | <awpr> | `Endo`, `Endo`, wherefore art thou `Endo`? |
2021-10-02 23:08:55 +0200 | <[exa]> | needs starwars memes with endor |
2021-10-02 23:09:19 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-10-02 23:11:34 +0200 | ByronJohnson | (~bairyn@mail.digitalkingdom.org) |
2021-10-02 23:12:05 +0200 | <zwro[m]> | let a = Nothing:a in a |
2021-10-02 23:12:57 +0200 | <zwro[m]> | ^ in the Merchant of Venice, this is an insult |
2021-10-02 23:13:39 +0200 | zebrag | (~chris@user/zebrag) |
2021-10-02 23:13:45 +0200 | kimjetwav | (~user@2607:fea8:235f:9730:48ad:b7dd:9c1e:6d8d) (Remote host closed the connection) |
2021-10-02 23:14:46 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 250 seconds) |
2021-10-02 23:15:55 +0200 | unmanbearpig | (~unmanbear@user/unmanbearpig) (Ping timeout: 252 seconds) |
2021-10-02 23:16:26 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-10-02 23:16:52 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
2021-10-02 23:17:21 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2021-10-02 23:17:37 +0200 | zero | (~yin@user/zero) () |
2021-10-02 23:17:46 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2021-10-02 23:18:18 +0200 | zzz | (~yin@user/zero) |
2021-10-02 23:18:23 +0200 | Lycurgus | (~juan@98.4.112.204) (Quit: Exeunt) |
2021-10-02 23:20:23 +0200 | jtomas | (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection) |
2021-10-02 23:21:45 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 23:27:44 +0200 | ByronJohnson | (~bairyn@mail.digitalkingdom.org) (Remote host closed the connection) |
2021-10-02 23:31:32 +0200 | Morrow | (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
2021-10-02 23:35:46 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer) |
2021-10-02 23:35:50 +0200 | Guest80 | (~Guest80@186.122.61.47) (Quit: Connection closed) |
2021-10-02 23:36:03 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-10-02 23:39:07 +0200 | unmanbearpig | (~unmanbear@user/unmanbearpig) |
2021-10-02 23:43:49 +0200 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 252 seconds) |
2021-10-02 23:44:06 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:75c8:94d0:d9df:71f1) |
2021-10-02 23:44:21 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c703cb484c7d47010f4c2dbe.dip0.t-ipconnect.de) |
2021-10-02 23:47:28 +0200 | <zzz> | "You speak an infinite deal of nothing!" |
2021-10-02 23:48:05 +0200 | acidjnk_new | (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2021-10-02 23:48:05 +0200 | acidjnk | (~acidjnk@p200300d0c703cb481ce6ffa2a003826c.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2021-10-02 23:48:23 +0200 | acidjnk | (~acidjnk@p200300d0c703cb484c7d47010f4c2dbe.dip0.t-ipconnect.de) |
2021-10-02 23:51:40 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 252 seconds) |
2021-10-02 23:55:40 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-10-02 23:58:46 +0200 | machinedgod | (~machinedg@24.105.81.50) |