2022-01-11 00:00:30 +0100 | <Raito_Bezarius> | but hm whenever I do that, it seems like hls is complaining: |
2022-01-11 00:00:33 +0100 | <Raito_Bezarius> | [typecheck] [E] Parse error: module header, import declaration |
2022-01-11 00:00:35 +0100 | <Raito_Bezarius> | or top-level declaration expected. |
2022-01-11 00:00:56 +0100 | <glguy> | Did you turn on the TemplateHaskell extension in that module? |
2022-01-11 00:01:31 +0100 | <Raito_Bezarius> | indeed, that did the trick… thanks a lot glguy ! |
2022-01-11 00:01:58 +0100 | <Raito_Bezarius> | that's really super neaaaat |
2022-01-11 00:04:38 +0100 | <hololeap> | I'm working on a long-running program that will need to have suspend/resume functionality. I've heard that ContT allows for this, but I've also heard that it has issues and should be avoided. Thoughts? |
2022-01-11 00:05:26 +0100 | <glguy> | suspend/resume like all one process or across multiple processes? |
2022-01-11 00:05:30 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
2022-01-11 00:06:34 +0100 | <hololeap> | just one process. it's going to have an updating work queue that should be saved so that it can resume if it stops for whatever reason |
2022-01-11 00:06:35 +0100 | <jkaye> | What issues have you heard about with ContT? Interested just because I haven't heard that before |
2022-01-11 00:06:41 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-01-11 00:06:55 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Client Quit) |
2022-01-11 00:07:08 +0100 | <hololeap> | jkaye: I honestly don't remember. I've never used it and what I read was probably years ago when I didn't understand much |
2022-01-11 00:07:33 +0100 | <EvanR> | you want the work queue persisted to disk and reloaded after the program reboots? |
2022-01-11 00:07:49 +0100 | <hololeap> | yeah |
2022-01-11 00:08:20 +0100 | <glguy> | oh, that's "multiple processes" then |
2022-01-11 00:08:35 +0100 | <hololeap> | oh, I see what you meant now, glguy |
2022-01-11 00:08:37 +0100 | <glguy> | ContT probably isn't related to your answer |
2022-01-11 00:09:01 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
2022-01-11 00:09:39 +0100 | <hololeap> | ok, yeah as I think of it StateT makes sense to use. but then what _is_ ContT useful for? |
2022-01-11 00:09:47 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
2022-01-11 00:09:52 +0100 | <glguy> | StateT isn't particularly related, either |
2022-01-11 00:10:13 +0100 | <glguy> | You just need your work queue to be serializable and then save/restore it to/from disk when you need to do that |
2022-01-11 00:10:27 +0100 | <glguy> | so don't save functions in it, for example |
2022-01-11 00:11:08 +0100 | <EvanR> | unless you want to get fancy with higher order abstract syntax or something xD |
2022-01-11 00:11:20 +0100 | <hololeap> | really? I would think that `StateT WorkQueue IO a` would make sense, where you save the queue to disk each time it updates |
2022-01-11 00:11:20 +0100 | <dolio> | ContT, in particular, is just notation for using higher-order functions, so it's not going to help with serializing things to disk. |
2022-01-11 00:11:37 +0100 | <glguy> | hololeap: StateT isn't doing anything there, you just happen to be using it |
2022-01-11 00:11:49 +0100 | <glguy> | WorkQueue being serializable or not is what matters |
2022-01-11 00:12:02 +0100 | <hololeap> | sure |
2022-01-11 00:12:11 +0100 | <EvanR> | implement working Read and Show and you're golden xD |
2022-01-11 00:12:42 +0100 | <EvanR> | *YMMV |
2022-01-11 00:13:13 +0100 | <hololeap> | haha. I don't know if I'll ever find a use for ContT. it just never seems to fit anywhere |
2022-01-11 00:14:15 +0100 | random-jellyfish | (~random-je@user/random-jellyfish) (Quit: Client closed) |
2022-01-11 00:14:45 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-11 00:15:04 +0100 | <hpc> | i almost had a use for it once, but it turns out i needed to short-circuit the start of the computation instead, and switched to some goofy StateT IO thing |
2022-01-11 00:15:19 +0100 | <hpc> | someday though... |
2022-01-11 00:15:32 +0100 | <hololeap> | lol so it isn't just me then |
2022-01-11 00:15:46 +0100 | <hpc> | knowing it is more important than actually using it though |
2022-01-11 00:16:04 +0100 | <monochrom> | Firstly it depends on your answer to "resume from what?". For example, resuming from disk is very different from resuming from memory. |
2022-01-11 00:16:24 +0100 | <hpc> | you can recognize the continuations in ParsecT and such, once you know the "base case" of ContT |
2022-01-11 00:16:48 +0100 | <hpc> | https://hackage.haskell.org/package/parsec-3.1.15.0/docs/src/Text.Parsec.Prim.html#ParsecT - the consumed/empty ok/err stuff |
2022-01-11 00:17:08 +0100 | <hpc> | that's just a really elaborate (stuff -> m b) -> m b |
2022-01-11 00:17:21 +0100 | <hpc> | foralled and etc |
2022-01-11 00:17:29 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2022-01-11 00:17:53 +0100 | infinity0 | (~infinity0@occupy.ecodis.net) (Killed (zirconium.libera.chat (Nickname regained by services))) |
2022-01-11 00:18:07 +0100 | infinity0 | (~infinity0@occupy.ecodis.net) |
2022-01-11 00:18:37 +0100 | <hololeap> | ok, sure. I've been using and slowly grokking LogicT, which someone pointed out is `forall r. ContT r (ContT r)`, if I remember correctly |
2022-01-11 00:19:20 +0100 | <hpc> | oh, another funny thing to note |
2022-01-11 00:19:25 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-11 00:19:29 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-01-11 00:19:34 +0100 | <hpc> | there's no difference between s and u, in that ParsecT definition |
2022-01-11 00:19:55 +0100 | <hpc> | just that every function on it has Stream s m t in the class context |
2022-01-11 00:20:38 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2022-01-11 00:20:41 +0100 | <jackdk> | ContT is good for taming callback pyramids |
2022-01-11 00:21:05 +0100 | <hpc> | yeah, i think if i had ever messed with ghcjs i would have a dozen uses for it |
2022-01-11 00:21:35 +0100 | <hpc> | webapps are callback city |
2022-01-11 00:23:05 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-11 00:23:05 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-11 00:23:05 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-11 00:23:12 +0100 | <hololeap> | doesn't FRP do a better job of taming callbacks, by making them unneeded? |
2022-01-11 00:24:17 +0100 | <monochrom> | In the case of ParsecT and LogicT, you are looking at more Codensity. "Codensity m a" = forall r. (a -> m r) -> m r |
2022-01-11 00:24:37 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 240 seconds) |
2022-01-11 00:24:37 +0100 | <monochrom> | ContT lacks that forall over r. |
2022-01-11 00:25:30 +0100 | <monochrom> | If you like to think of ContT and then slaps on "forall r", that's OK, but the extra forall makes a whole lot of difference. |
2022-01-11 00:26:28 +0100 | <hpc> | heh, that's true |
2022-01-11 00:26:32 +0100 | <hpc> | like comparing ST to State |
2022-01-11 00:27:06 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-11 00:27:21 +0100 | <hololeap> | "Abuse of the Continuation monad can produce code that is impossible to understand and maintain." -- this is probably why I avoided it, jkaye |
2022-01-11 00:27:47 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-11 00:27:49 +0100 | <monochrom> | The benefit of the extra forall can be explained by looking at how System F manages to provide all algebraic data types. |
2022-01-11 00:28:25 +0100 | <monochrom> | Suppose my ADT is "data T = C0 | C1 Int | C2 T T". |
2022-01-11 00:28:33 +0100 | <hololeap> | it's the only monad that mentions abuse in the docs |
2022-01-11 00:28:55 +0100 | <glguy> | don't get too comfortable, though; you can write unmaintainable code no matter what libraries you use |
2022-01-11 00:29:22 +0100 | <monochrom> | In System F, it becomes "forall r. (r, Int, (r,r)) -> r", or after currying my tuples, "forall r. r -> Int -> (r -> r -> r) -> r". |
2022-01-11 00:29:35 +0100 | hays | h_ |
2022-01-11 00:29:35 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-01-11 00:29:36 +0100 | <hpc> | glguy: heh, as proof i submit acme-php |
2022-01-11 00:29:57 +0100 | <hpc> | zero-import horribleness |
2022-01-11 00:30:22 +0100 | puke | (~puke@user/puke) (Quit: puke) |
2022-01-11 00:30:51 +0100 | <hololeap> | "ContT is not a functor on the category of monads, and many operations cannot be lifted through it." -- this is also one of the other thorns that scared me. it reminds me of ListT's warnings |
2022-01-11 00:30:58 +0100 | AlexNoo_ | (~AlexNoo@178.34.151.107) |
2022-01-11 00:31:13 +0100 | cheater | (~Username@user/cheater) |
2022-01-11 00:31:29 +0100 | <monochrom> | If you do a similar decoding to ParsecT, you can recover the original Leijen-Meijer "4 cases: {consumed, unconsumed} x {OK, error}" ADT in the original parsec. |
2022-01-11 00:31:57 +0100 | <monochrom> | If you do a similar decoding to LogicT, you can recover the ADT of "ListT done right". |
2022-01-11 00:32:35 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep) |
2022-01-11 00:32:44 +0100 | <monochrom> | So LogicT and today's ParsecT are just doing a CPS or System-F encoding of very vanilla ADTs. |
2022-01-11 00:33:15 +0100 | <hololeap> | isn't that called church encoding? |
2022-01-11 00:33:26 +0100 | <monochrom> | Why do they do it? The answer is efficiency, or believed efficiency. |
2022-01-11 00:34:13 +0100 | <monochrom> | Because which way is more efficient is pretty sensitive to which GHC version you use. Very old GHC, probably ADTs are slower. |
2022-01-11 00:34:34 +0100 | <monochrom> | Today's GHC? I don't think anyone has any actual data. I bet ADTs are not slower. |
2022-01-11 00:34:35 +0100 | AlexZenon | (~alzenon@178.34.162.219) (Ping timeout: 256 seconds) |
2022-01-11 00:34:37 +0100 | Alex_test | (~al_test@178.34.162.219) (Ping timeout: 240 seconds) |
2022-01-11 00:34:44 +0100 | AlexNoo | (~AlexNoo@178.34.162.219) (Ping timeout: 256 seconds) |
2022-01-11 00:35:13 +0100 | <dolio> | That's not a very good bet. |
2022-01-11 00:35:26 +0100 | <hpc> | also would you want strict data or lazy data? |
2022-01-11 00:35:42 +0100 | <hololeap> | I've wondered why there were church-encoded versions of e.g. Free and why it would affect performance |
2022-01-11 00:36:43 +0100 | <monochrom> | Oleg would say that the untyped-lambda-calculus version is Church encoding, the System-F version is Böhm-Berarducci encoding. |
2022-01-11 00:37:07 +0100 | <dolio> | It's kind of like betting that (co)yoneda is no longer faster in certain use cases, because GHC somehow figures out how to fuse fmap at runtime, without inlining. |
2022-01-11 00:38:11 +0100 | <jackdk> | I remember seeing a talk presented by someone who worked at Seek, saying they used to use the `data Free f a = Return a | Free (f (Free f a))`, had poor performance, and switched to the "Church Encoded" version. This would've been 2015 or so, though. |
2022-01-11 00:38:46 +0100 | Alex_test | (~al_test@178.34.151.107) |
2022-01-11 00:38:49 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-16.elisa-laajakaista.fi) (Quit: Leaving.) |
2022-01-11 00:38:49 +0100 | AlexZenon | (~alzenon@178.34.151.107) |
2022-01-11 00:40:07 +0100 | <hololeap> | if anyone can point me to something that goes into more detail on this, I'd be grateful: https://stackoverflow.com/a/9806770 |
2022-01-11 00:41:04 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-01-11 00:42:03 +0100 | <hololeap> | otherwise I'll just continue reading what pops up in a search |
2022-01-11 00:42:15 +0100 | mikoto-chan | (~mikoto-ch@185.25.79.189) |
2022-01-11 00:42:37 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 240 seconds) |
2022-01-11 00:43:36 +0100 | <monochrom> | Yikes haha "aka Visitor Pattern" |
2022-01-11 00:45:05 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Quit: Leaving) |
2022-01-11 00:45:12 +0100 | <jackdk> | that's an interesting parallel that I'd never noticed before |
2022-01-11 00:45:35 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2022-01-11 00:46:15 +0100 | <monochrom> | Yeah, "yikes" means "I see it's true but oh god". ("haha" means "god help us") |
2022-01-11 00:46:43 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Client Quit) |
2022-01-11 00:46:47 +0100 | cemg | (~cemguresc@2001:a61:11ff:a001:9a1b:dd7d:413d:f699) (Quit: Leaving) |
2022-01-11 00:47:00 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2022-01-11 00:47:53 +0100 | <jackdk> | hololeap: https://slides.yowconference.com/yowlambdajam2017/Humphries-ContinuationsAllTheWayDown.pdf this shows the performance angle somewhat, but may be unintelligible if you didn't see the actual presentation (a recording of which never seemed to be published) |
2022-01-11 00:48:48 +0100 | <jackdk> | but there are at least benchmarks, and if you trace the reductions of DList appends or whatever, you can see the right-association pop out. I remember going home after the talk and grabbing pen and paper to convince myself that it worked |
2022-01-11 00:52:51 +0100 | <dolio> | Encoding the data type isn't always better, of course. They're bad for repeatedly peeling off just the outermost layer. |
2022-01-11 00:53:18 +0100 | <dolio> | Unless you get really elaborate with the encodings. |
2022-01-11 00:53:50 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:5835:5767:1aa7:b5ec) (Quit: Leaving) |
2022-01-11 00:54:11 +0100 | <hololeap> | jackdk: the syntax trees are neat, I think I might get something out of those slides |
2022-01-11 00:54:26 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-11 00:54:34 +0100 | <dolio> | Point being, you need to know what you're optimizing for. |
2022-01-11 00:57:37 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 240 seconds) |
2022-01-11 00:59:56 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480::41) |
2022-01-11 01:06:27 +0100 | <Axman6> | hololeap: monochrom: jackdk: https://ibb.co/2KmCCHF |
2022-01-11 01:07:13 +0100 | <jackdk> | Axman6... |
2022-01-11 01:07:15 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:5835:5767:1aa7:b5ec) |
2022-01-11 01:08:24 +0100 | <monochrom> | Haha congrats |
2022-01-11 01:09:24 +0100 | <Axman6> | f it, it's going on reddit |
2022-01-11 01:09:35 +0100 | <hololeap> | heh |
2022-01-11 01:09:35 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e155922c761977fca48.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2022-01-11 01:09:35 +0100 | acidjnk | (~acidjnk@p200300d0c7271e155922c761977fca48.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2022-01-11 01:09:45 +0100 | <monochrom> | There is also a connection with dependency injection, may I add... |
2022-01-11 01:10:13 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:cb46:c04b:665a:c687) (Ping timeout: 240 seconds) |
2022-01-11 01:11:10 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-01-11 01:11:39 +0100 | <Axman6> | Image posts not allowed :'( don't they know I have @ in here! |
2022-01-11 01:12:59 +0100 | <monochrom> | It is still draft but my https://www.vex.net/~trebla/haskell/abs-type-param.html opens with a church encoding example but I relate it to dependency injection instead. >:) |
2022-01-11 01:14:06 +0100 | falafel | (~falafel@2603-8000-d800-688c-54f8-65c3-409b-d4a1.res6.spectrum.com) |
2022-01-11 01:15:40 +0100 | <dolio> | This 100 year old thing is just a more general version of this much newer thing I came up with because I didn't know about the much older thing. :þ |
2022-01-11 01:16:01 +0100 | <jackdk> | that's my favourite genre of conference talks |
2022-01-11 01:16:26 +0100 | <jackdk> | particularly if the speaker invented the less general thing, and you get to follow along the path of dawning realisation |
2022-01-11 01:17:52 +0100 | <hpc> | when that happens to me i just think "oh phew, it was a good idea after all" |
2022-01-11 01:18:39 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-11 01:18:49 +0100 | <Axman6> | so I used church encoding yesterday to try and speed up somecode that would allocate IORefs when really State should be enough. I was surprised to find that the IORefs were both faster and ended up allocating less: https://paste.tomsmeding.com/h6aIktOI |
2022-01-11 01:19:55 +0100 | puke | (~puke@user/puke) |
2022-01-11 01:20:06 +0100 | <Axman6> | using the normal newtype S s a = S (a -> IO (a,s)) was even worse |
2022-01-11 01:20:13 +0100 | puke | (~puke@user/puke) (Client Quit) |
2022-01-11 01:20:50 +0100 | <Axman6> | edwardk: ^ I came up with another way to write memo with discrimination, but I'm surprised it performed worse than the IORef version |
2022-01-11 01:24:08 +0100 | max22- | (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Remote host closed the connection) |
2022-01-11 01:24:23 +0100 | <jackdk> | Axman6: you gonna PR this thing at any point? |
2022-01-11 01:24:36 +0100 | <Axman6> | perhaps... |
2022-01-11 01:26:29 +0100 | <jackdk> | Does this monadic variant of `local` have a common name? `localM :: MonadReader r m => (r -> m r) -> m a -> m a` |
2022-01-11 01:27:13 +0100 | <[itchyjunk]> | can i use something and define after in list comprehension? [y | y <- x, x <- xs] ? |
2022-01-11 01:27:17 +0100 | hud | (~hud@uwyo-129-72-161-67.uwyo.edu) (Ping timeout: 256 seconds) |
2022-01-11 01:27:20 +0100 | <Axman6> | why do I want to call that locum |
2022-01-11 01:27:31 +0100 | <Axman6> | no |
2022-01-11 01:28:57 +0100 | <Axman6> | "locum-tenens: A person, especially a physician or cleric, who substitutes temporarily for another." seems apt |
2022-01-11 01:29:10 +0100 | <[itchyjunk]> | can i nest it ? [y | y <- [x | x <- xs]] |
2022-01-11 01:29:38 +0100 | <Axman6> | yes |
2022-01-11 01:29:40 +0100 | <Axman6> | uh |
2022-01-11 01:29:47 +0100 | puke | (~puke@user/puke) |
2022-01-11 01:29:49 +0100 | <Axman6> | I mean, that will do something, but not the same thing |
2022-01-11 01:29:56 +0100 | <[itchyjunk]> | :< |
2022-01-11 01:30:20 +0100 | <Axman6> | in the firt one, xs :: [[a]], in the second it onlt needs to be [a] because the inner comprehension is id |
2022-01-11 01:30:48 +0100 | <Axman6> | > ( \xs -> [x | x <- xs]) [1..10] |
2022-01-11 01:30:50 +0100 | <lambdabot> | [1,2,3,4,5,6,7,8,9,10] |
2022-01-11 01:32:38 +0100 | Inst | (~delicacie@2601:6c4:4080:3f80:35fa:dcbe:dd4e:5a43) |
2022-01-11 01:36:07 +0100 | notzmv | (~zmv@user/notzmv) |
2022-01-11 01:37:45 +0100 | <jackdk> | Axman6: I dunno why you want to call it locum, but given the amazonka refactor I'm considering, having `localEnvM :: MonadAmazonka m => (Env -> m Env) -> m a -> m a` is going to be so useful that I think it's worth naming (consider `localEnvM (fromAssumedRole "arn:aws:..." "assumed-role") $ do ...`) |
2022-01-11 01:39:53 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-11 01:39:53 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-11 01:39:53 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-11 01:40:22 +0100 | <Axman6> | looks lovely |
2022-01-11 01:40:36 +0100 | <Axman6> | and i think the name is fine |
2022-01-11 01:40:36 +0100 | jkaye_ | (~qicruser@2604:ca00:158:98c7::662:b620) |
2022-01-11 01:41:27 +0100 | <jackdk> | it's like almost under the Fairbairn threshold, but its implementation is a little awkward |
2022-01-11 01:41:30 +0100 | <monochrom> | locum tenet: A person whose time is backwards temporarily >:) |
2022-01-11 01:41:41 +0100 | <hololeap> | prependKleisli |
2022-01-11 01:42:02 +0100 | tomboy64 | (~tomboy64@user/tomboy64) (Ping timeout: 240 seconds) |
2022-01-11 01:42:28 +0100 | <hpc> | monochrom: coforwards |
2022-01-11 01:42:36 +0100 | burnsidesLlama | (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-01-11 01:43:09 +0100 | burnsidesLlama | (~burnsides@client-8-69.eduroam.oxuni.org.uk) |
2022-01-11 01:43:47 +0100 | jkaye_ | (~qicruser@2604:ca00:158:98c7::662:b620) (Read error: Connection reset by peer) |
2022-01-11 01:44:15 +0100 | jkaye_ | (~qicruser@2604:ca00:158:98c7::662:b620) |
2022-01-11 01:45:29 +0100 | <hololeap> | appendMonadicEndomorphism |
2022-01-11 01:46:17 +0100 | <hololeap> | oh, I guess it would still be prepending |
2022-01-11 01:46:26 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) (Ping timeout: 252 seconds) |
2022-01-11 01:47:50 +0100 | burnsidesLlama | (~burnsides@client-8-69.eduroam.oxuni.org.uk) (Ping timeout: 256 seconds) |
2022-01-11 01:48:17 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds) |
2022-01-11 01:50:00 +0100 | shapr | (~user@2601:7c0:c202:5190:cc12:44b:f211:c38f) |
2022-01-11 01:50:49 +0100 | jkaye_ | (~qicruser@2604:ca00:158:98c7::662:b620) (Read error: Connection reset by peer) |
2022-01-11 01:59:32 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) (Read error: Connection reset by peer) |
2022-01-11 02:01:22 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) |
2022-01-11 02:11:17 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-01-11 02:11:38 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:87d8:fa0a:4d3d:df57) |
2022-01-11 02:12:57 +0100 | falafel | (~falafel@2603-8000-d800-688c-54f8-65c3-409b-d4a1.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-01-11 02:13:54 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
2022-01-11 02:17:24 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-01-11 02:17:46 +0100 | falafel | (~falafel@2603-8000-d800-688c-54f8-65c3-409b-d4a1.res6.spectrum.com) |
2022-01-11 02:23:29 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:80ee:56b1:c7cc:d16d) (Quit: Textual IRC Client: www.textualapp.com) |
2022-01-11 02:23:57 +0100 | jkaye | (~jkaye@2601:281:8300:7530:d171:6c14:e395:f91b) (Ping timeout: 240 seconds) |
2022-01-11 02:27:37 +0100 | falafel | (~falafel@2603-8000-d800-688c-54f8-65c3-409b-d4a1.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-01-11 02:30:45 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Ping timeout: 256 seconds) |
2022-01-11 02:34:33 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.4) |
2022-01-11 02:35:17 +0100 | Inst | (~delicacie@2601:6c4:4080:3f80:35fa:dcbe:dd4e:5a43) (Ping timeout: 240 seconds) |
2022-01-11 02:35:24 +0100 | <albet70> | how to get all k from Map k v? |
2022-01-11 02:35:48 +0100 | <Axman6> | @hoogle keys |
2022-01-11 02:35:48 +0100 | <lambdabot> | Data.IntMap.Internal keys :: IntMap a -> [Key] |
2022-01-11 02:35:48 +0100 | <lambdabot> | Data.IntMap.Lazy keys :: IntMap a -> [Key] |
2022-01-11 02:35:48 +0100 | <lambdabot> | Data.IntMap.Strict keys :: IntMap a -> [Key] |
2022-01-11 02:35:56 +0100 | <Axman6> | @hoogle Map k a -> [k] |
2022-01-11 02:35:57 +0100 | <lambdabot> | Data.Map.Internal keys :: Map k a -> [k] |
2022-01-11 02:35:57 +0100 | <lambdabot> | Data.Map.Lazy keys :: Map k a -> [k] |
2022-01-11 02:35:57 +0100 | <lambdabot> | Data.Map.Strict keys :: Map k a -> [k] |
2022-01-11 02:37:11 +0100 | Inst | (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
2022-01-11 02:39:58 +0100 | xsperry | (~xs@user/xsperry) (Ping timeout: 256 seconds) |
2022-01-11 02:41:05 +0100 | <albet70> | \k -> lookup k target == flip lookup target? |
2022-01-11 02:42:14 +0100 | <Axman6> | yep |
2022-01-11 02:42:24 +0100 | <albet70> | how to $ to express this? |
2022-01-11 02:42:33 +0100 | <Axman6> | or (`lookup` target) |
2022-01-11 02:42:49 +0100 | <Axman6> | I don't understand the question |
2022-01-11 02:43:03 +0100 | <albet70> | "Axman6 :or (`lookup` target)", could with $? |
2022-01-11 02:44:04 +0100 | <Axman6> | I don't know what that means. what code are you trying to write that doesn't work? |
2022-01-11 02:45:18 +0100 | <albet70> | never mind, just a little wounder if $ can change the argument order |
2022-01-11 02:46:01 +0100 | <Axman6> | :t ($) |
2022-01-11 02:46:02 +0100 | <lambdabot> | (a -> b) -> a -> b |
2022-01-11 02:47:35 +0100 | <albet70> | :t const |
2022-01-11 02:47:36 +0100 | <lambdabot> | a -> b -> a |
2022-01-11 02:56:59 +0100 | <ephemient> | :t \target -> ($ target) . lookup |
2022-01-11 02:57:00 +0100 | <lambdabot> | Eq a => [(a, b)] -> a -> Maybe b |
2022-01-11 02:57:55 +0100 | <ephemient> | so sure, you can find a way to express (flip lookup target) using ($), but it doesn't feel natural |
2022-01-11 03:02:27 +0100 | <monochrom> | It's pretty contrived. |
2022-01-11 03:05:52 +0100 | ub | (~Thunderbi@p200300ecdf0994f52db7d35c756e5286.dip0.t-ipconnect.de) |
2022-01-11 03:06:57 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-9cdb-69bc-753b-1e50.res6.spectrum.com) |
2022-01-11 03:07:22 +0100 | ubert | (~Thunderbi@p200300ecdf0994f82db7d35c756e5286.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2022-01-11 03:07:22 +0100 | ub | ubert |
2022-01-11 03:08:52 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
2022-01-11 03:13:34 +0100 | califax- | (~califax@user/califx) |
2022-01-11 03:13:58 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-11 03:14:39 +0100 | califax | (~califax@user/califx) (Ping timeout: 276 seconds) |
2022-01-11 03:14:40 +0100 | califax- | califax |
2022-01-11 03:18:28 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:87d8:fa0a:4d3d:df57) (Ping timeout: 268 seconds) |
2022-01-11 03:22:13 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-11 03:22:13 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-11 03:22:13 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-11 03:23:19 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:5835:5767:1aa7:b5ec) (Remote host closed the connection) |
2022-01-11 03:24:24 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:55c5:5707:fdcb:78cd) |
2022-01-11 03:28:02 +0100 | neurocyte09175 | (~neurocyte@IP-045143079193.dynamic.medianet-world.de) |
2022-01-11 03:28:02 +0100 | neurocyte09175 | (~neurocyte@IP-045143079193.dynamic.medianet-world.de) (Changing host) |
2022-01-11 03:28:02 +0100 | neurocyte09175 | (~neurocyte@user/neurocyte) |
2022-01-11 03:29:16 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-11 03:30:15 +0100 | neurocyte0917 | (~neurocyte@user/neurocyte) (Ping timeout: 256 seconds) |
2022-01-11 03:30:15 +0100 | neurocyte09175 | neurocyte0917 |
2022-01-11 03:30:20 +0100 | cheater | (~Username@user/cheater) (Read error: Connection reset by peer) |
2022-01-11 03:30:37 +0100 | xff0x | (~xff0x@2001:1a81:5310:700:28af:ed1a:1e0a:acc) (Ping timeout: 240 seconds) |
2022-01-11 03:32:37 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:3a80:4bac:7552:9848) |
2022-01-11 03:33:12 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-11 03:33:12 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-11 03:33:12 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-11 03:33:47 +0100 | cheater | (~Username@user/cheater) |
2022-01-11 03:34:51 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-11 03:37:17 +0100 | raym | (~raym@user/raym) |
2022-01-11 03:39:01 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2022-01-11 03:43:16 +0100 | xsperry | (~xs@user/xsperry) |
2022-01-11 03:43:26 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 256 seconds) |
2022-01-11 03:53:29 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-11 03:58:58 +0100 | xkuru | (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
2022-01-11 03:59:04 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-11 03:59:21 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-11 04:04:49 +0100 | tomboy64 | (~tomboy64@user/tomboy64) |
2022-01-11 04:05:32 +0100 | mikoto-chan | (~mikoto-ch@185.25.79.189) (Ping timeout: 256 seconds) |
2022-01-11 04:07:34 +0100 | mikoto-chan | (~mikoto-ch@185.25.79.189) |
2022-01-11 04:07:39 +0100 | jushur | (~human@user/jushur) (Quit: ¯\_(ツ)_/¯) |
2022-01-11 04:08:25 +0100 | BrokenClutch | (~pioneer@2804:d41:c292:6c00:33d8:d2f1:d8af:153e) |
2022-01-11 04:09:07 +0100 | <BrokenClutch> | I've learned the difference between srfi-1's fold and haskell |
2022-01-11 04:09:12 +0100 | <BrokenClutch> | \o/ |
2022-01-11 04:12:03 +0100 | <EvanR> | which is what |
2022-01-11 04:13:24 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2022-01-11 04:13:24 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2022-01-11 04:13:24 +0100 | finn_elija | FinnElija |
2022-01-11 04:16:26 +0100 | <Axman6> | you haven't truly learnt it if you can't teach us :) |
2022-01-11 04:17:09 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4) |
2022-01-11 04:18:03 +0100 | <shapr> | Is Axman6 still the king of the channel? |
2022-01-11 04:18:13 +0100 | mikoto-chan | (~mikoto-ch@185.25.79.189) (Ping timeout: 240 seconds) |
2022-01-11 04:18:45 +0100 | <Axman6> | yes, and no one know why D: |
2022-01-11 04:18:48 +0100 | <Axman6> | except you |
2022-01-11 04:18:56 +0100 | shapr | cackles evilly |
2022-01-11 04:20:28 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) |
2022-01-11 04:20:33 +0100 | <Axman6> | I was very good and refrained from weilding my power yesterday when someone was talking _a lot_ of nonsense |
2022-01-11 04:20:50 +0100 | <Axman6> | got very close to @where ops'ing though |
2022-01-11 04:20:55 +0100 | <shapr> | well, if you got the ops |
2022-01-11 04:21:07 +0100 | <shapr> | you've been around to know the right thing to do |
2022-01-11 04:29:42 +0100 | <BrokenClutch> | the struct of foldl on srfi-1 is just a reverse of foldr |
2022-01-11 04:30:06 +0100 | <BrokenClutch> | like, foldr is a_1 to a_n and foldl is a_n to a_1 |
2022-01-11 04:30:19 +0100 | <BrokenClutch> | with almost the same algorithm |
2022-01-11 04:31:12 +0100 | <BrokenClutch> | foldl f i l = (f a_n (foldl f i (cdr l)) |
2022-01-11 04:32:18 +0100 | <BrokenClutch> | foldr f i l = (f a_1 (foldr f i (cdr l))) |
2022-01-11 04:32:35 +0100 | <BrokenClutch> | with l on foldl being (a_n ... a_1) |
2022-01-11 04:32:36 +0100 | <EvanR> | that seems backwards |
2022-01-11 04:32:45 +0100 | <BrokenClutch> | and l on foldr being (a_1 ... a_n) |
2022-01-11 04:32:50 +0100 | <BrokenClutch> | yeah, it's backwards |
2022-01-11 04:33:26 +0100 | jkaye_ | (~qicruser@2604:ca00:158:98c7::662:b620) |
2022-01-11 04:34:30 +0100 | <Axman6> | there is a funcamental difference between foldl and foldr - one can run in constant space, the other allows for laziness in a lazy language, but leads to stack overflows in a strict language or when using strict functions |
2022-01-11 04:38:08 +0100 | <BrokenClutch> | you can't have infinite loops with foldr |
2022-01-11 04:38:16 +0100 | <BrokenClutch> | in eager languages (obviosly) |
2022-01-11 04:38:29 +0100 | <BrokenClutch> | it would be a infinite loop |
2022-01-11 04:38:33 +0100 | <BrokenClutch> | which is a big nono |
2022-01-11 04:40:22 +0100 | gabiruh | (~gabiruh@vps19177.publiccloud.com.br) (Ping timeout: 260 seconds) |
2022-01-11 04:40:37 +0100 | gabiruh | (~gabiruh@vps19177.publiccloud.com.br) |
2022-01-11 04:40:40 +0100 | mikoto-chan | (~mikoto-ch@185.25.79.189) |
2022-01-11 04:41:03 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-11 04:41:29 +0100 | <dibblego> | well you can, if you fix the foldr implementation |
2022-01-11 04:42:56 +0100 | td_ | (~td@94.134.91.23) (Ping timeout: 256 seconds) |
2022-01-11 04:44:32 +0100 | td_ | (~td@94.134.91.153) |
2022-01-11 04:44:47 +0100 | <BrokenClutch> | srfi is dumb |
2022-01-11 04:44:51 +0100 | <BrokenClutch> | there are others |
2022-01-11 04:45:07 +0100 | <BrokenClutch> | actually, fold is dumb |
2022-01-11 04:45:12 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
2022-01-11 04:45:21 +0100 | <BrokenClutch> | (i'm sorry, just joking, don't kill me) |
2022-01-11 04:46:26 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) |
2022-01-11 04:47:53 +0100 | noddy | (~user@user/noddy) (Quit: WeeChat 3.4) |
2022-01-11 04:49:09 +0100 | noddy | (~user@user/noddy) |
2022-01-11 04:51:53 +0100 | <dibblego> | already dead to me bro |
2022-01-11 04:52:17 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds) |
2022-01-11 05:01:00 +0100 | yauhsien_ | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) |
2022-01-11 05:01:00 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
2022-01-11 05:05:54 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480::41) |
2022-01-11 05:06:15 +0100 | user322 | (~user322@75-32-237-142.lightspeed.rnpsca.sbcglobal.net) |
2022-01-11 05:06:48 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:69b8:e285:4414:d6cb) |
2022-01-11 05:07:18 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds) |
2022-01-11 05:08:42 +0100 | <Axman6> | does anyone have a relatively modern document on binding to C libraries from Haskell? I'd love to automate as much as possible (.h in, .hs out) and not sure what the current state of the art is. |
2022-01-11 05:14:15 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
2022-01-11 05:15:48 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-01-11 05:22:02 +0100 | <BrokenClutch> | Axman6 capi ftw |
2022-01-11 05:23:17 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds) |
2022-01-11 05:24:28 +0100 | <c_wraith> | starting at the .h file is too late. start from the specification, create bindings from that. (only works for one C library: https://github.com/ekmett/gl ) |
2022-01-11 05:25:00 +0100 | <Axman6> | I'm just not sure what tools exist these days to help automate things |
2022-01-11 05:25:46 +0100 | mbuf | (~Shakthi@122.178.183.53) |
2022-01-11 05:28:38 +0100 | user322 | (~user322@75-32-237-142.lightspeed.rnpsca.sbcglobal.net) (Remote host closed the connection) |
2022-01-11 05:35:40 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-11 05:35:57 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-11 05:39:10 +0100 | <ephemient> | hsc2hs still exists |
2022-01-11 05:39:36 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
2022-01-11 05:45:54 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) |
2022-01-11 05:48:28 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-01-11 05:50:36 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-01-11 05:53:36 +0100 | jkaye_ | (~qicruser@2604:ca00:158:98c7::662:b620) (Read error: Connection reset by peer) |
2022-01-11 05:55:28 +0100 | yauhsien_ | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-11 05:56:19 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) |
2022-01-11 05:56:26 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:69b8:e285:4414:d6cb) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-11 05:57:34 +0100 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 268 seconds) |
2022-01-11 06:01:12 +0100 | pavonia | (~user@user/siracusa) |
2022-01-11 06:02:57 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds) |
2022-01-11 06:03:33 +0100 | HotblackDesiato | (~HotblackD@gateway/tor-sasl/hotblackdesiato) (Remote host closed the connection) |
2022-01-11 06:03:52 +0100 | HotblackDesiato | (~HotblackD@gateway/tor-sasl/hotblackdesiato) |
2022-01-11 06:05:50 +0100 | nhatanh02 | (~satori@123.24.172.30) |
2022-01-11 06:05:58 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-11 06:06:07 +0100 | tommd | (~tommd@75-164-130-101.ptld.qwest.net) |
2022-01-11 06:06:39 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) |
2022-01-11 06:10:17 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2022-01-11 06:10:35 +0100 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) |
2022-01-11 06:15:53 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) |
2022-01-11 06:16:28 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-11 06:17:01 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-11 06:17:09 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) |
2022-01-11 06:19:13 +0100 | <jackdk> | Axman6: try frase on #bfpg - he gave a talk on it a couple of years back |
2022-01-11 06:21:25 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4) |
2022-01-11 06:24:58 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-01-11 06:25:09 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-01-11 06:25:10 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-11 06:25:10 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-11 06:25:10 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-11 06:26:59 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-11 06:27:40 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) |
2022-01-11 06:29:53 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-11 06:33:26 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds) |
2022-01-11 06:35:06 +0100 | <Axman6> | Found it! thanks jackdk |
2022-01-11 06:36:16 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 256 seconds) |
2022-01-11 06:37:29 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-11 06:38:10 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) |
2022-01-11 06:40:08 +0100 | puke | (~puke@user/puke) () |
2022-01-11 06:42:11 +0100 | <EvanR> | is there every a downside to putting ~ on pair pattern match |
2022-01-11 06:42:30 +0100 | <EvanR> | is there a performance hit |
2022-01-11 06:44:03 +0100 | nhatanh02 | (~satori@123.24.172.30) (Ping timeout: 256 seconds) |
2022-01-11 06:44:22 +0100 | <EvanR> | just realized I don't know the difference between ~ and no ~ on deconstructing a pair in a let binding |
2022-01-11 06:45:03 +0100 | <EvanR> | and I'm using that annoying speech pattern. What is the different between ~ and no ~ on deconstructing a pair in a let binding? |
2022-01-11 06:48:33 +0100 | <c_wraith> | nothing |
2022-01-11 06:48:54 +0100 | <c_wraith> | using a let binding and a ~ both do the same thing. |
2022-01-11 06:49:21 +0100 | <c_wraith> | In that they both mean the (,) constructor isn't evaluated until one of its arguments is demanded |
2022-01-11 06:51:16 +0100 | <EvanR> | but if used in do notation or in a lambda argument, it does something right |
2022-01-11 06:51:32 +0100 | <c_wraith> | pattern matches in a let expression are irrefutable by default. |
2022-01-11 06:51:45 +0100 | <c_wraith> | Pattern matches in a function definition, case, or lambda are not |
2022-01-11 06:53:25 +0100 | <EvanR> | cool |
2022-01-11 06:54:07 +0100 | <c_wraith> | oh. and pattern matches in a <- are refutable by default, with special desugaring to use MonadFail if they are refuted. |
2022-01-11 06:55:04 +0100 | moet | (~moet@mobile-166-170-41-195.mycingular.net) |
2022-01-11 06:56:40 +0100 | <int-e> | > fix (\ ~(a,b) -> (b+19, 23)) |
2022-01-11 06:56:42 +0100 | <lambdabot> | (42,23) |
2022-01-11 06:56:49 +0100 | <int-e> | > fix (\(a,b) -> (b+19, 23)) |
2022-01-11 06:56:51 +0100 | <lambdabot> | *Exception: <<loop>> |
2022-01-11 06:58:54 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
2022-01-11 06:59:30 +0100 | vysn | (~vysn@user/vysn) |
2022-01-11 07:00:04 +0100 | Codaraxis_ | (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds) |
2022-01-11 07:00:10 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-01-11 07:03:00 +0100 | h_ | (rootvegeta@fsf/member/hays) (Quit: h_) |
2022-01-11 07:05:35 +0100 | Inst | (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 256 seconds) |
2022-01-11 07:06:09 +0100 | moet | (~moet@mobile-166-170-41-195.mycingular.net) (Ping timeout: 256 seconds) |
2022-01-11 07:06:53 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2022-01-11 07:07:10 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-01-11 07:07:47 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
2022-01-11 07:08:19 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) |
2022-01-11 07:11:36 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) |
2022-01-11 07:11:59 +0100 | hays | (rootvegeta@fsf/member/hays) |
2022-01-11 07:15:35 +0100 | Guest72 | (~Guest72@82-132-214-147.dab.02.net) (Quit: Client closed) |
2022-01-11 07:16:43 +0100 | puke | (~puke@user/puke) |
2022-01-11 07:18:12 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds) |
2022-01-11 07:19:52 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) |
2022-01-11 07:25:01 +0100 | mikoto-chan | (~mikoto-ch@185.25.79.189) (Ping timeout: 240 seconds) |
2022-01-11 07:31:01 +0100 | kaph | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Ping timeout: 240 seconds) |
2022-01-11 07:32:22 +0100 | vglfr | (~vglfr@88.155.96.35) (Ping timeout: 256 seconds) |
2022-01-11 07:44:11 +0100 | michalz | (~michalz@185.246.204.104) |
2022-01-11 07:50:21 +0100 | tommd | (~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 256 seconds) |
2022-01-11 07:51:20 +0100 | nattiestnate | (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) |
2022-01-11 07:52:44 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2022-01-11 07:53:57 +0100 | shapr | (~user@2601:7c0:c202:5190:cc12:44b:f211:c38f) (Ping timeout: 240 seconds) |
2022-01-11 07:55:28 +0100 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2022-01-11 07:56:14 +0100 | zaquest | (~notzaques@5.130.79.72) (Remote host closed the connection) |
2022-01-11 07:58:26 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2022-01-11 08:01:33 +0100 | mcglk | (~mcglk@131.191.49.120) (Read error: Connection reset by peer) |
2022-01-11 08:01:59 +0100 | mcglk | (~mcglk@131.191.49.120) |
2022-01-11 08:05:02 +0100 | nhatanh02 | (~satori@123.24.172.30) |
2022-01-11 08:09:16 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-11 08:09:54 +0100 | nattiestnate | (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Quit: WeeChat 3.4) |
2022-01-11 08:12:17 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:3a80:4bac:7552:9848) (Ping timeout: 240 seconds) |
2022-01-11 08:12:57 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:3a80:4bac:7552:9848) |
2022-01-11 08:23:03 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving) |
2022-01-11 08:23:20 +0100 | <jackdk> | > fix error |
2022-01-11 08:23:21 +0100 | <lambdabot> | "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *Ex... |
2022-01-11 08:23:28 +0100 | <jackdk> | Alas, my error was not fixed. |
2022-01-11 08:27:17 +0100 | yangby | (~secret@115.199.105.217) |
2022-01-11 08:28:35 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:2c67:7cfa:cdb8:6538) |
2022-01-11 08:34:14 +0100 | <ephemient> | speaking of pattern matches in let expressions… this order isn't defined, is it? |
2022-01-11 08:34:14 +0100 | <ephemient> | > let !_ = error "1"; !_ = error "2" in () |
2022-01-11 08:34:15 +0100 | <lambdabot> | *Exception: 2 |
2022-01-11 08:34:33 +0100 | <c_wraith> | it is in fact explicitly undefined |
2022-01-11 08:35:12 +0100 | <c_wraith> | ghc is allowed to treat all bottoms as equivalent |
2022-01-11 08:35:57 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:55c5:5707:fdcb:78cd) (Ping timeout: 240 seconds) |
2022-01-11 08:36:07 +0100 | BrokenClutch | (~pioneer@2804:d41:c292:6c00:33d8:d2f1:d8af:153e) () |
2022-01-11 08:37:24 +0100 | mikoto-chan | (~mikoto-ch@95.214.66.65) |
2022-01-11 08:39:08 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:55c5:5707:fdcb:78cd) |
2022-01-11 08:39:34 +0100 | `2jt | (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) |
2022-01-11 08:47:01 +0100 | mikoto-chan | (~mikoto-ch@95.214.66.65) (Ping timeout: 256 seconds) |
2022-01-11 08:47:24 +0100 | mikoto-chan | (~mikoto-ch@95.214.66.65) |
2022-01-11 08:51:24 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2022-01-11 08:51:51 +0100 | Akiva | (~Akiva@user/Akiva) |
2022-01-11 08:55:47 +0100 | yangby | (~secret@115.199.105.217) (Quit: Go out for a walk and buy a drink.) |
2022-01-11 08:57:26 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-11 08:58:05 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-01-11 09:00:04 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-01-11 09:02:12 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-01-11 09:03:00 +0100 | fef | (~thedawn@user/thedawn) |
2022-01-11 09:03:35 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2022-01-11 09:03:36 +0100 | mikoto-chan | (~mikoto-ch@95.214.66.65) (Ping timeout: 256 seconds) |
2022-01-11 09:04:29 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:d6ff:672a:8ae7:74fd) |
2022-01-11 09:05:06 +0100 | mikoto-chan | (~mikoto-ch@95.214.66.65) |
2022-01-11 09:05:20 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-01-11 09:11:17 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::55f8) (Ping timeout: 240 seconds) |
2022-01-11 09:14:32 +0100 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-01-11 09:15:43 +0100 | califax | (~califax@user/califx) |
2022-01-11 09:18:45 +0100 | kjak | (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
2022-01-11 09:27:06 +0100 | max22- | (~maxime@2a01cb08833598007fce73d4e7f21a7b.ipv6.abo.wanadoo.fr) |
2022-01-11 09:27:38 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2022-01-11 09:28:49 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-01-11 09:30:35 +0100 | MajorBiscuit | (~MajorBisc@c-001-007-038.client.tudelft.eduvpn.nl) |
2022-01-11 09:31:44 +0100 | sektor|2 | (~kvirc@87.227.175.182) |
2022-01-11 09:33:30 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
2022-01-11 09:33:47 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-01-11 09:37:05 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::55f8) |
2022-01-11 09:38:13 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 240 seconds) |
2022-01-11 09:38:19 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-01-11 09:38:46 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
2022-01-11 09:39:05 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-01-11 09:40:26 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-01-11 09:48:13 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-11 09:48:53 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) |
2022-01-11 09:51:32 +0100 | joel135 | (sid136450@id-136450.hampstead.irccloud.com) (Ping timeout: 240 seconds) |
2022-01-11 09:53:18 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:55c5:5707:fdcb:78cd) (Remote host closed the connection) |
2022-01-11 09:55:07 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) |
2022-01-11 09:55:29 +0100 | joel135 | (sid136450@id-136450.hampstead.irccloud.com) |
2022-01-11 09:56:08 +0100 | sus | (zero@user/zeromomentum) (Quit: the lounge - https://webirc.envs.net) |
2022-01-11 09:56:44 +0100 | sus | (zero@user/zeromomentum) |
2022-01-11 09:58:43 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-11 09:59:24 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) |
2022-01-11 10:00:08 +0100 | surgeon[m] | (~surge9nma@2001:470:69fc:105::f585) (Quit: You have been kicked for being idle) |
2022-01-11 10:02:47 +0100 | ouestbillie | (~gallup@192-222-138-215.qc.cable.ebox.net) (Remote host closed the connection) |
2022-01-11 10:03:40 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 256 seconds) |
2022-01-11 10:03:49 +0100 | ubert | (~Thunderbi@p200300ecdf0994f52db7d35c756e5286.dip0.t-ipconnect.de) (Remote host closed the connection) |
2022-01-11 10:03:50 +0100 | cheater | (~Username@user/cheater) |
2022-01-11 10:04:38 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2022-01-11 10:09:13 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-11 10:09:54 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) |
2022-01-11 10:10:20 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
2022-01-11 10:11:47 +0100 | acidjnk | (~acidjnk@p200300d0c7271e155922c761977fca48.dip0.t-ipconnect.de) |
2022-01-11 10:11:47 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e155922c761977fca48.dip0.t-ipconnect.de) |
2022-01-11 10:11:47 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2022-01-11 10:12:06 +0100 | neurocyte0917 | (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat) |
2022-01-11 10:14:34 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2022-01-11 10:14:45 +0100 | neurocyte0917 | (~neurocyte@IP-045143079193.dynamic.medianet-world.de) |
2022-01-11 10:14:45 +0100 | neurocyte0917 | (~neurocyte@IP-045143079193.dynamic.medianet-world.de) (Changing host) |
2022-01-11 10:14:45 +0100 | neurocyte0917 | (~neurocyte@user/neurocyte) |
2022-01-11 10:17:36 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2022-01-11 10:17:36 +0100 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2022-01-11 10:17:39 +0100 | allbery_b | geekosaur |
2022-01-11 10:18:24 +0100 | mikoto-chan | (~mikoto-ch@95.214.66.65) (Ping timeout: 256 seconds) |
2022-01-11 10:19:15 +0100 | mmhat | (~mmh@55d441e1.access.ecotel.net) |
2022-01-11 10:28:28 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-11 10:35:12 +0100 | madjestic | (~madjestic@88-159-247-120.fixed.kpn.net) |
2022-01-11 10:35:56 +0100 | _FlawLess_ | (~user@2a01:e0a:a4:7098::10) |
2022-01-11 10:41:03 +0100 | zaquest | (~notzaques@5.130.79.72) |
2022-01-11 10:41:45 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2022-01-11 10:43:05 +0100 | kuribas | (~user@ptr-25vy0ia1hzdpftx2lxu.18120a2.ip6.access.telenet.be) |
2022-01-11 10:50:13 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 240 seconds) |
2022-01-11 10:53:47 +0100 | the_last_immorta | (~thelastim@2001:470:69fc:105::1:4d57) (Quit: You have been kicked for being idle) |
2022-01-11 10:54:13 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:3a80:4bac:7552:9848) (Ping timeout: 240 seconds) |
2022-01-11 10:54:35 +0100 | InternetManaging | (~imjmatrix@2001:470:69fc:105::1:2ea5) (Quit: You have been kicked for being idle) |
2022-01-11 10:55:05 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2022-01-11 10:55:08 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:e459:15a9:4623:d8a6) |
2022-01-11 10:58:31 +0100 | jkaye_ | (~qicruser@2601:281:8300:7530:81c9:15c5:1001:5f30) |
2022-01-11 10:59:07 +0100 | jkaye_ | (~qicruser@2601:281:8300:7530:81c9:15c5:1001:5f30) (Read error: Connection reset by peer) |
2022-01-11 11:05:17 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) (Ping timeout: 256 seconds) |
2022-01-11 11:05:55 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-11 11:07:29 +0100 | syrkis | (syrkis@gateway/vpn/protonvpn/syrkis) |
2022-01-11 11:09:36 +0100 | kjak | (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) |
2022-01-11 11:10:02 +0100 | maroloccio | (~marolocci@151.75.59.229) |
2022-01-11 11:10:48 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:4371:6bef:aafb:f58d) |
2022-01-11 11:11:00 +0100 | n8chan | (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
2022-01-11 11:11:58 +0100 | n8chan | (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
2022-01-11 11:15:38 +0100 | chele | (~chele@user/chele) |
2022-01-11 11:16:32 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 11:18:19 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2022-01-11 11:22:17 +0100 | mikoto-chan | (~mikoto-ch@91-157-120-246.elisa-laajakaista.fi) |
2022-01-11 11:23:10 +0100 | Topsi | (~Tobias@dyndsl-095-033-027-133.ewe-ip-backbone.de) |
2022-01-11 11:25:23 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:4f29:e68c:50c9:fe2) |
2022-01-11 11:29:36 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-11 11:30:16 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) |
2022-01-11 11:30:41 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset) |
2022-01-11 11:33:29 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:a92f:4d2f:4882:4db9) |
2022-01-11 11:33:47 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) |
2022-01-11 11:35:06 +0100 | <madjestic> | hey guys, I have uploaded a package candidate to hackage to check if everything is ok, but it looks like hackage failed generate the documentation, even though when I generate the documentation locally (using `cabal haddock`), everything seems to be ok. Is there a way to upload hackage documentation for a hackage candidate manually? |
2022-01-11 11:35:19 +0100 | monochrom | (trebla@216.138.220.146) (Ping timeout: 256 seconds) |
2022-01-11 11:36:52 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-11 11:36:56 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2022-01-11 11:37:01 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
2022-01-11 11:37:05 +0100 | ouestbillie | (~gallup@192-222-138-215.qc.cable.ebox.net) |
2022-01-11 11:37:28 +0100 | <merijn> | Yes, same 'cabal upload' command, just with -d flag |
2022-01-11 11:37:30 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-11 11:37:43 +0100 | <merijn> | Also, I don't think hackage builds docs for candidates? |
2022-01-11 11:38:16 +0100 | Lord_of_Life_ | Lord_of_Life |
2022-01-11 11:45:50 +0100 | <madjestic> | merijn: just to make sure (I don't want to screw up by uploading anything permanent yet, as I am just testing), the upload command will work with the candidate upload, or documentation upload is something separate and can be updated? |
2022-01-11 11:47:44 +0100 | __monty__ | (~toonn@user/toonn) |
2022-01-11 11:48:11 +0100 | pera | (~pera@user/pera) |
2022-01-11 11:48:23 +0100 | <madjestic> | (I am reading https://hackage.haskell.org/upload as a guide, but it is not clear, if there's a distinction between candidate and normal upload) |
2022-01-11 11:48:30 +0100 | puke | (~puke@user/puke) (Ping timeout: 256 seconds) |
2022-01-11 11:52:49 +0100 | <madjestic> | also, is there an IRC channel, dedicated to hackage? |
2022-01-11 11:53:22 +0100 | comerijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 11:54:06 +0100 | <geekosaur> | #hackage but I'm not sure about user questions there |
2022-01-11 11:54:57 +0100 | <geekosaur> | ok, looks like they're fine with it |
2022-01-11 11:55:05 +0100 | max22- | (~maxime@2a01cb08833598007fce73d4e7f21a7b.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2022-01-11 11:55:52 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-01-11 12:01:15 +0100 | <madjestic> | geekosaur: thanks! |
2022-01-11 12:01:38 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-01-11 12:05:48 +0100 | maroloccio | (~marolocci@151.75.59.229) (Quit: WeeChat 3.0) |
2022-01-11 12:06:31 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-11 12:07:20 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-01-11 12:08:01 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-11 12:08:16 +0100 | jakalx | (~jakalx@base.jakalx.net) () |
2022-01-11 12:09:37 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::55f8) (Ping timeout: 240 seconds) |
2022-01-11 12:10:17 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds) |
2022-01-11 12:10:27 +0100 | syrkis | (syrkis@gateway/vpn/protonvpn/syrkis) (Ping timeout: 256 seconds) |
2022-01-11 12:11:10 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2022-01-11 12:11:59 +0100 | random | (~random@185.219.68.251) |
2022-01-11 12:12:17 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2022-01-11 12:12:44 +0100 | <random> | hey guys |
2022-01-11 12:12:55 +0100 | <geekosaur> | o/ |
2022-01-11 12:13:07 +0100 | <random> | can anyone help with a probably very simple Conduit question |
2022-01-11 12:13:19 +0100 | <random> | we have a `ConduitT () thing m result` |
2022-01-11 12:13:38 +0100 | <random> | and need to get ([thing], result) out of it |
2022-01-11 12:13:50 +0100 | <random> | we used to have `ConduitT () thing m ()` and used `sourceToList` |
2022-01-11 12:14:20 +0100 | <random> | but now that it also has a result we need that as well, I found runConduitRes that just gives you the result, and sourceToList that gives you [thing], but nothing that combines both |
2022-01-11 12:16:42 +0100 | SummerSonw | (~The_viole@203.77.49.232) |
2022-01-11 12:17:24 +0100 | comerijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-01-11 12:18:37 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 12:19:51 +0100 | <random> | no actually runConduit requires a () output |
2022-01-11 12:20:19 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-01-11 12:23:12 +0100 | puke | (~puke@user/puke) |
2022-01-11 12:23:18 +0100 | pieguy12- | (~pieguy128@bras-base-mtrlpq5031w-grc-48-67-70-102-17.dsl.bell.ca) (Ping timeout: 260 seconds) |
2022-01-11 12:23:19 +0100 | <geekosaur> | runConduit :: Monad m => ConduitT () Void m r -> m r -- looks like r, not () ? (similar to runConduitRes) |
2022-01-11 12:23:49 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-11 12:23:50 +0100 | <random> | it has () as the output value |
2022-01-11 12:24:06 +0100 | <random> | Void I meant |
2022-01-11 12:24:17 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:e459:15a9:4623:d8a6) (Ping timeout: 240 seconds) |
2022-01-11 12:24:23 +0100 | <random> | we have `ConduitT () CustomType m CustomResult` |
2022-01-11 12:24:35 +0100 | <random> | and need [CustomType] and CustomResult |
2022-01-11 12:24:38 +0100 | <geekosaur> | runConduitRes has Void in the same position |
2022-01-11 12:24:44 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 12:24:48 +0100 | <random> | yeah |
2022-01-11 12:24:51 +0100 | <geekosaur> | the "Res" in runConduitRes is ResourceT, not result |
2022-01-11 12:24:57 +0100 | <random> | exactly but I misread |
2022-01-11 12:25:04 +0100 | <random> | so I can't get it to work at all |
2022-01-11 12:25:21 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:ecd7:329:7ff4:5aa6) |
2022-01-11 12:25:58 +0100 | <geekosaur> | I'm not a conduit expert so doubt I can help much., not sure anyone else is around this time of day/night/whatever :) |
2022-01-11 12:26:27 +0100 | <random> | it's lunchtime over here haha |
2022-01-11 12:27:33 +0100 | <geekosaur> | breakfast here |
2022-01-11 12:28:17 +0100 | emf | (~emf@2620:10d:c090:400::5:b9c2) (Ping timeout: 240 seconds) |
2022-01-11 12:28:19 +0100 | <random> | damn this feels weird :D |
2022-01-11 12:28:21 +0100 | <random> | looking at https://hackage.haskell.org/package/conduit-1.3.4.2/docs/Data-Conduit.html |
2022-01-11 12:28:29 +0100 | <geekosaur> | and getting ready for a trip which will cost me pretty much all day |
2022-01-11 12:28:30 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480::41) |
2022-01-11 12:28:47 +0100 | <random> | have fun! |
2022-01-11 12:29:24 +0100 | <polyphem> | geekosaur: day/night/whatever ... i recently had the idea of a "mob time" , like the average time for all clients in a channel , what do you think about that concept ? |
2022-01-11 12:29:49 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-11 12:29:55 +0100 | emf | (~emf@2620:10d:c090:400::5:b9c2) |
2022-01-11 12:30:51 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-11 12:30:53 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 12:31:00 +0100 | <Axman6> | you could hack something by turning Conduit () thing m r into Conduit () thing (StateT [thing] m) r, push each thing onto the list, then reverse at the end |
2022-01-11 12:31:12 +0100 | <geekosaur> | polyphem, see https://ircbrowse.tomsmeding.com/lchaskell |
2022-01-11 12:31:32 +0100 | <random> | Axman6: that sounds like fun |
2022-01-11 12:31:37 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-01-11 12:31:42 +0100 | fef | (~thedawn@user/thedawn) (Ping timeout: 276 seconds) |
2022-01-11 12:32:13 +0100 | <random> | Axman6: but it seems so weird that it's not trivial to get both the source as list and the result |
2022-01-11 12:32:40 +0100 | <Axman6> | I feel like getting a list of results is often a code smell when it comes to stream libraries |
2022-01-11 12:33:05 +0100 | <polyphem> | geekosaur: oh, cool , thanks |
2022-01-11 12:35:00 +0100 | <random> | Axman6: need to serve the results through the API |
2022-01-11 12:35:32 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-01-11 12:35:35 +0100 | <Axman6> | how are you building he API? |
2022-01-11 12:35:49 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-11 12:36:00 +0100 | <Axman6> | servant IIRC has ways to stream data in the reesponse |
2022-01-11 12:36:06 +0100 | <random> | Axman6: just a regular servant thing, the usecase is to stream a large db query |
2022-01-11 12:36:16 +0100 | <random> | Axman6: need to check about that |
2022-01-11 12:36:33 +0100 | <Axman6> | It may or moy not exist because I complained and asked for it :) |
2022-01-11 12:37:02 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 12:37:41 +0100 | <random> | Axman6: haha |
2022-01-11 12:37:55 +0100 | <random> | I'd still need both the [thing] and the result though, so probably that's where the codesmell is |
2022-01-11 12:38:06 +0100 | <random> | I need the stream and the length |
2022-01-11 12:38:13 +0100 | acidjnk | (~acidjnk@p200300d0c7271e155922c761977fca48.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-11 12:38:13 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e155922c761977fca48.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-11 12:38:31 +0100 | <Axman6> | https://hackage.haskell.org/package/servant-0.18.3/docs/Servant-API.html#t:ToSourceIO |
2022-01-11 12:38:47 +0100 | <Axman6> | needing the length is lamesauce |
2022-01-11 12:39:20 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2022-01-11 12:39:25 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:ecd7:329:7ff4:5aa6) (Ping timeout: 240 seconds) |
2022-01-11 12:39:38 +0100 | <random> | Axman6: need to calculate the "total pages" available |
2022-01-11 12:39:48 +0100 | <Axman6> | https://hackage.haskell.org/package/servant-0.18.3/docs/Servant-API-Stream.html#t:Stream is probably a better link |
2022-01-11 12:39:57 +0100 | <Axman6> | where's the data comming from? |
2022-01-11 12:39:57 +0100 | <random> | everything I've been doing so far feels like lamesauce tbh :D |
2022-01-11 12:40:23 +0100 | <random> | Axman6: postgres |
2022-01-11 12:40:29 +0100 | <random> | we basically have |
2022-01-11 12:40:32 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:8e73:9611:d4ed:ad69) |
2022-01-11 12:40:50 +0100 | <Axman6> | can you run two queries? |
2022-01-11 12:41:22 +0100 | <random> | (postgresQuery .| CL.map fancyTransformation .| CL.length (we need the length before the filters) .| CL.filter someFilters) `fuseUpstream` paginate |
2022-01-11 12:41:46 +0100 | <random> | Axman6: lol yeah of course, it's just that it's very overengineered and not very straightforward |
2022-01-11 12:41:49 +0100 | <random> | not sure how much I can change |
2022-01-11 12:42:09 +0100 | <random> | we don't need the length of the query, but the length of the query after some mapping |
2022-01-11 12:42:13 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-11 12:42:33 +0100 | <random> | in (postgresQuery .| CL.map fancyMap) the query might have had 2000 results, but fancy map will return 350 |
2022-01-11 12:42:48 +0100 | <random> | we need that 350 count before CL.filer-ing the thing |
2022-01-11 12:42:53 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 12:43:25 +0100 | fef | (~thedawn@user/thedawn) |
2022-01-11 12:44:37 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 240 seconds) |
2022-01-11 12:44:40 +0100 | <random> | nvm I'll just take a couple of hours break and plan towards simplifying the whole thing |
2022-01-11 12:44:52 +0100 | <random> | it's just way too complicated for what it's doing |
2022-01-11 12:45:59 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-01-11 12:47:17 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2022-01-11 12:47:19 +0100 | <Axman6> | good luck |
2022-01-11 12:47:38 +0100 | <random> | Axman6: I teared up while typing that |
2022-01-11 12:47:49 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-11 12:48:56 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 12:49:01 +0100 | cfricke | (~cfricke@user/cfricke) (Ping timeout: 240 seconds) |
2022-01-11 12:53:49 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-11 12:54:37 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:8e73:9611:d4ed:ad69) (Ping timeout: 240 seconds) |
2022-01-11 12:55:01 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 12:55:37 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4) |
2022-01-11 12:55:43 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:c522:bda4:b63a:6841) |
2022-01-11 12:57:51 +0100 | briandaed | (~briandaed@185.234.208.208.r.toneticgroup.pl) |
2022-01-11 12:58:09 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e153d27ba4f49b7fa4a.dip0.t-ipconnect.de) |
2022-01-11 12:58:12 +0100 | acidjnk | (~acidjnk@p200300d0c7271e153d27ba4f49b7fa4a.dip0.t-ipconnect.de) |
2022-01-11 12:59:15 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-01-11 12:59:57 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-11 13:00:39 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 13:01:32 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-11 13:01:42 +0100 | benin | (~benin@183.82.176.241) |
2022-01-11 13:02:13 +0100 | SummerSonw | (~The_viole@203.77.49.232) (Ping timeout: 240 seconds) |
2022-01-11 13:05:23 +0100 | biog | (~user1@static.39.160.132.142.clients.your-server.de) |
2022-01-11 13:05:37 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-11 13:06:33 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 13:11:48 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-01-11 13:12:25 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 13:14:17 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds) |
2022-01-11 13:14:37 +0100 | random_ | (~random@185.219.68.251) |
2022-01-11 13:16:13 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-01-11 13:17:14 +0100 | xb0o2 | (~xb0o2@user/xb0o2) |
2022-01-11 13:17:25 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-11 13:17:28 +0100 | random | (~random@185.219.68.251) (Ping timeout: 256 seconds) |
2022-01-11 13:18:12 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 13:18:50 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-01-11 13:18:52 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-01-11 13:19:33 +0100 | SummerSonw | (~The_viole@203.77.49.232) |
2022-01-11 13:21:21 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2022-01-11 13:23:25 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-11 13:24:15 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 13:24:20 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3) |
2022-01-11 13:25:47 +0100 | unyu | (~pyon@user/pyon) (Quit: Reboot.) |
2022-01-11 13:27:14 +0100 | max22- | (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) |
2022-01-11 13:29:25 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-11 13:30:05 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 13:32:53 +0100 | califax- | (~califax@user/califx) |
2022-01-11 13:34:06 +0100 | califax | (~califax@user/califx) (Ping timeout: 276 seconds) |
2022-01-11 13:34:07 +0100 | califax- | califax |
2022-01-11 13:36:40 +0100 | monochrom | (trebla@216.138.220.146) |
2022-01-11 13:37:46 +0100 | AlexNoo_ | AlexNoo |
2022-01-11 13:39:16 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-01-11 13:40:57 +0100 | monochrom | (trebla@216.138.220.146) (Ping timeout: 240 seconds) |
2022-01-11 13:42:00 +0100 | mikoto-chan | (~mikoto-ch@91-157-120-246.elisa-laajakaista.fi) (Quit: mikoto-chan) |
2022-01-11 13:42:14 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) |
2022-01-11 13:42:31 +0100 | Franciman | (~Franciman@mx1.fracta.dev) |
2022-01-11 13:42:55 +0100 | Franciman | (~Franciman@mx1.fracta.dev) (haskell has no up to date standard, hence it's relegated to ghc slavery) |
2022-01-11 13:44:42 +0100 | Franciman | (~Franciman@mx1.fracta.dev) |
2022-01-11 13:46:56 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:c522:bda4:b63a:6841) (Ping timeout: 252 seconds) |
2022-01-11 13:48:17 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Remote host closed the connection) |
2022-01-11 13:48:40 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-01-11 13:48:59 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-01-11 13:49:03 +0100 | nhatanh02 | (~satori@123.24.172.30) (Ping timeout: 256 seconds) |
2022-01-11 13:53:17 +0100 | slack1256 | (~slack1256@191.126.227.94) |
2022-01-11 14:02:08 +0100 | random__ | (~random@185.219.68.251) |
2022-01-11 14:02:39 +0100 | max22- | (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 256 seconds) |
2022-01-11 14:02:46 +0100 | monochrom | (trebla@216.138.220.146) |
2022-01-11 14:03:47 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-01-11 14:04:37 +0100 | random_ | (~random@185.219.68.251) (Ping timeout: 240 seconds) |
2022-01-11 14:06:26 +0100 | <slack1256> | I am asking for a friend that uses VSCode on ubuntu 21.10. Does the haskell extension for that editor autoinstall the haskell-language-server? It seems to have conflict with the native install via ghcup. |
2022-01-11 14:06:45 +0100 | <slack1256> | If so, is there a way to configure the extension to choose the local/native install? |
2022-01-11 14:10:27 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-01-11 14:11:00 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-01-11 14:15:01 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
2022-01-11 14:18:12 +0100 | Everything | (~Everythin@37.115.210.35) |
2022-01-11 14:22:36 +0100 | haask | (~harry@user/haask) (Remote host closed the connection) |
2022-01-11 14:23:58 +0100 | <[itchyjunk]> | I imagine people who use that editor/vscode would know more but maybe i am wrong |
2022-01-11 14:24:31 +0100 | unyu | (~pyon@user/pyon) |
2022-01-11 14:24:50 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-01-11 14:25:21 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2022-01-11 14:28:54 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:c522:bda4:b63a:6841) |
2022-01-11 14:29:49 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-01-11 14:31:44 +0100 | Inst | (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
2022-01-11 14:34:12 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2022-01-11 14:41:54 +0100 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 256 seconds) |
2022-01-11 14:46:16 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-01-11 14:49:38 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) (Ping timeout: 252 seconds) |
2022-01-11 14:50:22 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) |
2022-01-11 14:50:33 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2022-01-11 14:52:12 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2022-01-11 14:55:55 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) (Ping timeout: 256 seconds) |
2022-01-11 14:56:37 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
2022-01-11 14:56:52 +0100 | michalz | (~michalz@185.246.204.104) (Remote host closed the connection) |
2022-01-11 14:57:03 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
2022-01-11 14:57:12 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
2022-01-11 14:58:17 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds) |
2022-01-11 15:01:00 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2022-01-11 15:07:44 +0100 | ksqsf | (~user@2001:da8:d800:604:6d71:4647:806f:d6e9) |
2022-01-11 15:08:00 +0100 | ksqsf | (~user@2001:da8:d800:604:6d71:4647:806f:d6e9) (Remote host closed the connection) |
2022-01-11 15:09:06 +0100 | ouestbillie | (~gallup@192-222-138-215.qc.cable.ebox.net) (Remote host closed the connection) |
2022-01-11 15:12:47 +0100 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) |
2022-01-11 15:18:57 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
2022-01-11 15:19:57 +0100 | xkuru | (~xkuru@user/xkuru) |
2022-01-11 15:20:17 +0100 | jlamothe | (~jlamothe@198.251.61.229) (Quit: leaving) |
2022-01-11 15:21:09 +0100 | michalz | (~michalz@185.246.204.104) |
2022-01-11 15:21:49 +0100 | fizbin | (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 240 seconds) |
2022-01-11 15:22:41 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-11 15:27:16 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-01-11 15:29:12 +0100 | max22- | (~maxime@2a01cb0883359800510125e1acff834b.ipv6.abo.wanadoo.fr) |
2022-01-11 15:31:59 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-11 15:33:32 +0100 | <byorgey> | repl.it works with Nix now (https://blog.replit.com/nix), and I'd like to see if it's possible to use Nix to set up a custom REPL for a language implemented in Haskell. Anyone have experience with something like this that could offer advice or pointers to examples, etc? |
2022-01-11 15:33:37 +0100 | emf | (~emf@2620:10d:c090:400::5:b9c2) (Read error: Connection reset by peer) |
2022-01-11 15:33:42 +0100 | <byorgey> | I don't have any experience with Nix but I'm willing to learn. |
2022-01-11 15:33:53 +0100 | SummerSonw | (~The_viole@203.77.49.232) (Ping timeout: 256 seconds) |
2022-01-11 15:33:59 +0100 | emf_ | (~emf@2620:10d:c090:400::5:b9c2) |
2022-01-11 15:34:30 +0100 | jlamothe | (~jlamothe@198.251.61.229) |
2022-01-11 15:34:35 +0100 | <byorgey> | to be more concrete, I want to try to set things up so that students can work with https://github.com/disco-lang/disco/ in repl.it |
2022-01-11 15:36:43 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-01-11 15:37:52 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-11 15:37:52 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-11 15:37:52 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-11 15:40:37 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
2022-01-11 15:42:44 +0100 | <Inst> | gah |
2022-01-11 15:42:48 +0100 | <Inst> | i can't finish my "homework" |
2022-01-11 15:43:06 +0100 | <Inst> | it turns out I don't know how to apply a type constructor wrapped function to a type constructor wrapped value |
2022-01-11 15:45:16 +0100 | <byorgey> | Inst: try pattern matching on both of them to get the function and the value out |
2022-01-11 15:45:36 +0100 | <byorgey> | myFunction (Constructor1 f) (Constructor2 value) = ... f value ... |
2022-01-11 15:45:38 +0100 | <Inst> | i'm trying to do it with just fmap / <*> machinery |
2022-01-11 15:45:53 +0100 | <Inst> | IO is not a Data Constructor, though |
2022-01-11 15:46:03 +0100 | <byorgey> | Inst: ah, in that case, <*> does exactly what you just said |
2022-01-11 15:46:06 +0100 | <byorgey> | :type (<*>) |
2022-01-11 15:46:09 +0100 | <Inst> | it's nested |
2022-01-11 15:46:20 +0100 | <Inst> | i can work with one level of TCs using <*> |
2022-01-11 15:46:24 +0100 | <Inst> | I can't work with two levels |
2022-01-11 15:46:26 +0100 | <Inst> | IO Maybe |
2022-01-11 15:46:41 +0100 | <byorgey> | you can, actually, but I agree it's not as straightforward. |
2022-01-11 15:46:49 +0100 | <Inst> | dialogedFileOpenSanity = ((pure (pure openFile <*>) <*> openFilePath)) <*> (pure (<*> (Just ReadMode))) |
2022-01-11 15:47:06 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 268 seconds) |
2022-01-11 15:47:07 +0100 | <Inst> | openFilePath delivers IO (Maybe String) |
2022-01-11 15:47:30 +0100 | jkaye | (~jkaye@2601:281:8300:7530:7cb5:a22f:ba66:1688) |
2022-01-11 15:47:36 +0100 | <Inst> | but it's the very fact that it's not as straightforward that's worth learning how to do |
2022-01-11 15:47:38 +0100 | <Axman6> | :t liftA2 (<*>) |
2022-01-11 15:47:39 +0100 | <lambdabot> | (Applicative f1, Applicative f2) => f1 (f2 (a -> b)) -> f1 (f2 a) -> f1 (f2 b) |
2022-01-11 15:47:43 +0100 | <Inst> | sorry axman6 |
2022-01-11 15:47:44 +0100 | <Inst> | :( |
2022-01-11 15:47:55 +0100 | <Inst> | oh |
2022-01-11 15:49:02 +0100 | acidjnk | (~acidjnk@p200300d0c7271e153d27ba4f49b7fa4a.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2022-01-11 15:49:02 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e153d27ba4f49b7fa4a.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2022-01-11 15:49:16 +0100 | <Axman6> | :t \mf ma -> (<*>) <$> (mf :: IO (Maybe (Int -> Bool)) <*> ma |
2022-01-11 15:49:17 +0100 | <lambdabot> | error: |
2022-01-11 15:49:17 +0100 | <lambdabot> | parse error (possibly incorrect indentation or mismatched brackets) |
2022-01-11 15:49:23 +0100 | <Axman6> | :t \mf ma -> (<*>) <$> (mf :: IO (Maybe (Int -> Bool))) <*> ma |
2022-01-11 15:49:24 +0100 | <lambdabot> | IO (Maybe (Int -> Bool)) -> IO (Maybe Int) -> IO (Maybe Bool) |
2022-01-11 15:49:49 +0100 | <Inst> | well, you still didn't walk me through this |
2022-01-11 15:50:03 +0100 | <Axman6> | I thought we went through exactly this a few days ago? |
2022-01-11 15:50:05 +0100 | <Inst> | i mean, in the sense that I want to be able to do this with just (<*>), fmap |
2022-01-11 15:50:53 +0100 | <Axman6> | do you see anything other than fmap and <*> in \mf ma -> (<*>) <$> mf <*> ma? |
2022-01-11 15:51:14 +0100 | henninb | (~henninb@97-116-147-100.mpls.qwest.net) |
2022-01-11 15:51:31 +0100 | henninb | (~henninb@97-116-147-100.mpls.qwest.net) (Client Quit) |
2022-01-11 15:51:48 +0100 | <Inst> | this was my old solution, mind you |
2022-01-11 15:51:49 +0100 | <Inst> | join $ fmap sequence (fmap (fmap (ReadMode &)) (fmap (fmap openFile) openFilePath)) |
2022-01-11 15:52:20 +0100 | <sshine> | traverse? |
2022-01-11 15:52:20 +0100 | <Axman6> | what on earth |
2022-01-11 15:52:29 +0100 | henninb | (~henninb@97-116-147-100.mpls.qwest.net) |
2022-01-11 15:52:33 +0100 | <sshine> | or maybe several steps back :-D |
2022-01-11 15:53:02 +0100 | <Inst> | the point is that I end up generating IO (Maybe (IO Handle)) |
2022-01-11 15:53:16 +0100 | <Inst> | traverse gets it to IO (IO (Maybe Handle)) so I can join it to IO (Maybe Handle) |
2022-01-11 15:53:17 +0100 | shriekingnoise | (~shrieking@186.137.144.80) |
2022-01-11 15:54:59 +0100 | <Axman6> | I need to go to bed, good luck! |
2022-01-11 15:56:05 +0100 | <Inst> | cya, enjoy your sleep |
2022-01-11 15:56:13 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds) |
2022-01-11 15:57:00 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) |
2022-01-11 15:57:16 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds) |
2022-01-11 15:57:27 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2022-01-11 15:59:01 +0100 | jgeerds_ | (~jgeerds@55d4bbed.access.ecotel.net) |
2022-01-11 16:01:28 +0100 | MasseR | (~MasseR@51.15.143.128) (Quit: The Lounge - https://thelounge.chat) |
2022-01-11 16:01:32 +0100 | jgeerds | (~jgeerds@55d4bbed.access.ecotel.net) (Ping timeout: 240 seconds) |
2022-01-11 16:02:05 +0100 | MasseR | (~MasseR@51.15.143.128) |
2022-01-11 16:02:57 +0100 | <janus> | now is your chance to get rid of spurious Maybe's in amazonka: https://github.com/brendanhay/amazonka/issues/739 |
2022-01-11 16:04:35 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2022-01-11 16:05:49 +0100 | slack1256 | (~slack1256@191.126.227.94) (Ping timeout: 240 seconds) |
2022-01-11 16:07:25 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-11 16:08:44 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-01-11 16:11:24 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2022-01-11 16:11:30 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-01-11 16:11:55 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-01-11 16:13:49 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
2022-01-11 16:13:50 +0100 | kaph | (~kaph@net-2-38-107-19.cust.vodafonedsl.it) |
2022-01-11 16:15:36 +0100 | jonathanx__ | (~jonathan@c-5eea34e7-74736162.cust.telenor.se) |
2022-01-11 16:16:26 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-11 16:16:26 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-11 16:16:26 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-11 16:17:49 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 240 seconds) |
2022-01-11 16:18:05 +0100 | pottsy | (~pottsy@129.227.183.244) |
2022-01-11 16:18:46 +0100 | nschoe | (~quassel@2a01:e0a:8e:a190:4c27:e379:35e8:63af) |
2022-01-11 16:20:13 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2022-01-11 16:20:33 +0100 | jonathanx__ | (~jonathan@c-5eea34e7-74736162.cust.telenor.se) (Read error: Connection reset by peer) |
2022-01-11 16:21:04 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-11 16:21:08 +0100 | nhatanh02 | (~satori@123.24.172.30) |
2022-01-11 16:22:03 +0100 | jonathanx__ | (~jonathan@h-178-174-176-109.a357.priv.bahnhof.se) |
2022-01-11 16:22:08 +0100 | <gentauro> | anybody know why `stack` emits this warning "Warning: Installation path /home/johndoe/.local/bin not found on the PATH environment variable" but is able to install binaries to that folder? "Copied executables to /home/johndoe/.local/bin:" |
2022-01-11 16:22:12 +0100 | <gentauro> | it's a bit strange |
2022-01-11 16:23:49 +0100 | <peutri> | the directory exists |
2022-01-11 16:23:53 +0100 | <peutri> | it's just not on your $PATH |
2022-01-11 16:24:13 +0100 | <peutri> | so it won't find them by default when you try to run them without specifying the path |
2022-01-11 16:24:27 +0100 | <peutri> | which is likely a cause of surprise right after “installing”, hence the warning |
2022-01-11 16:29:08 +0100 | schweers | (~user@2001:16b8:e94a:ef00:aaa1:59ff:fe3f:235c) |
2022-01-11 16:29:42 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-11 16:31:31 +0100 | <schweers> | Is there something I should know about where embedFile from Data.FileEmbed looks for files? I’m using it in my tests and it works fine, but when I try to use it in the library or executable of the same cabal project, I always get a message that the file was not found. I’m using plain Cabal, not Stack. |
2022-01-11 16:34:41 +0100 | <gentauro> | 16:24 < peutri> it's just not on your $PATH |
2022-01-11 16:34:46 +0100 | <gentauro> | peutri: it is !!! |
2022-01-11 16:35:30 +0100 | Henson | (~kvirc@107-179-133-201.cpe.teksavvy.com) |
2022-01-11 16:35:41 +0100 | <gentauro> | conent of `.bashrc` -> `export PATH="$HOME/.local/bin:$PATH"` |
2022-01-11 16:35:54 +0100 | <gentauro> | that's why it's a bit `meh` |
2022-01-11 16:36:03 +0100 | <peutri> | how about `echo $PATH` ? |
2022-01-11 16:38:51 +0100 | <Henson> | I'm writing a library that contains a whole bunch of functions, but one main function that is exported. I also want to write tests in a separate module for this library. There doesn't seem to be a way to export all functions from the main library to the test library alone. What is the standard way of doing this in Haskell? Do I write a parent library with two child libraries? One child.. |
2022-01-11 16:39:05 +0100 | <gentauro> | peutri: yeah it's there |
2022-01-11 16:39:06 +0100 | <Henson> | is the main library that exports all functions. The other child is the test library that then import all functions from the main child library. Then the parent only exports the one function from the main child that I want other libraries to be able to use? |
2022-01-11 16:39:30 +0100 | <gentauro> | is it me or is `stack` a "bit" buggy for the time being? |
2022-01-11 16:39:31 +0100 | <gentauro> | xD |
2022-01-11 16:39:52 +0100 | zer0bitz | (~zer0bitz@2001:2003:f444:a000:2d06:fff0:d105:7c1) |
2022-01-11 16:40:41 +0100 | <polyphem> | Henson: put all functions in a n .Internal module export them all, reexport only api functions from main module , test should use the .Internal module |
2022-01-11 16:41:39 +0100 | <Henson> | polyphem: great, thank you |
2022-01-11 16:43:41 +0100 | <schweers> | polyphem: I’ve asked myself the same question as Henson. With your solution, the internal module would be visible to users of the package, correct? |
2022-01-11 16:44:05 +0100 | <peutri> | gentauro: well, it works for me :) |
2022-01-11 16:44:14 +0100 | <gentauro> | peutri: I get that :) |
2022-01-11 16:44:19 +0100 | <polyphem> | schweers: yes but its marked Internal |
2022-01-11 16:44:35 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 252 seconds) |
2022-01-11 16:45:02 +0100 | <schweers> | polyphem: by “marked” you mean that it’s a mere convention? Not that that’s a bad thing. |
2022-01-11 16:45:33 +0100 | <polyphem> | schweers: its "unsafe" and can change wheras the main api should stay stable and is safe to use |
2022-01-11 16:46:13 +0100 | <schweers> | Thanks for the explanation. It seems to be a quite reasonable solution. |
2022-01-11 16:46:22 +0100 | <polyphem> | schweers: its a common idiom, have seen it in some libraries |
2022-01-11 16:46:31 +0100 | <Henson> | schweers: I've seen other packages with an "Internal" module |
2022-01-11 16:47:37 +0100 | <schweers> | polyphem: I’ve seen it too, I just didn’t know how common the practice is. |
2022-01-11 16:47:41 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Remote host closed the connection) |
2022-01-11 16:49:04 +0100 | coot | (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) |
2022-01-11 16:53:04 +0100 | unyu | (~pyon@user/pyon) (Quit: brb) |
2022-01-11 16:54:22 +0100 | <EvanR> | also common is to hide the internal bits, then the user is screwed if they need access |
2022-01-11 16:54:30 +0100 | razetime | (~quassel@49.207.203.87) |
2022-01-11 16:56:03 +0100 | <polyphem> | Henson , schweers : Here is a fine talk about structuring idioms in haskell projects : https://skillsmatter.com/skillscasts/10832-how-to-architect-medium-to-large-scale-haskell-applicat… |
2022-01-11 16:57:02 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-01-11 16:57:22 +0100 | <schweers> | polyphem: Thanks, I’ll give it a read. |
2022-01-11 16:58:19 +0100 | <schweers> | Or rather a watch as it seems. |
2022-01-11 16:58:20 +0100 | <polyphem> | schweers: its a video talk :) |
2022-01-11 16:58:21 +0100 | <Henson> | polyphem: thanks for the pointer! |
2022-01-11 16:59:10 +0100 | <oxytocat> | The internal modules pattern is mentioned here: https://lhbg-book.link/03-html/07-internal_modules.html |
2022-01-11 16:59:14 +0100 | nvmd | (~nvmd@user/nvmd) |
2022-01-11 17:06:02 +0100 | emf | (~emf@2620:10d:c090:400::5:b9c2) |
2022-01-11 17:07:37 +0100 | emf_ | (~emf@2620:10d:c090:400::5:b9c2) (Ping timeout: 240 seconds) |
2022-01-11 17:08:23 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-01-11 17:08:51 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-01-11 17:09:27 +0100 | futh14 | (~futh14@c90-143-137-255.bredband.tele2.se) |
2022-01-11 17:10:04 +0100 | <futh14> | I have seen this function from the course cis194. I have a hard time understanding what the oneTwo = 1:2:oneTwo means, is this something infinitely recursive, just to adjust oneTwo's length to xs? https://pastebin.com/3mMnH7uJ |
2022-01-11 17:10:58 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-11 17:11:01 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) |
2022-01-11 17:11:49 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:d6ff:672a:8ae7:74fd) (Ping timeout: 240 seconds) |
2022-01-11 17:12:30 +0100 | pieguy128 | (~pieguy128@bras-base-mtrlpq5031w-grc-46-67-70-100-227.dsl.bell.ca) |
2022-01-11 17:12:49 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:2c52:4b9f:7e82:ac3e) |
2022-01-11 17:12:55 +0100 | burnside_ | (~burnsides@dhcp168-021.wadham.ox.ac.uk) |
2022-01-11 17:13:01 +0100 | burnsidesLlama | (~burnsides@dhcp168-021.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
2022-01-11 17:13:05 +0100 | <polyphem> | futh14: to double every other element in xs you multiply first element with one , next element with two ,next element with one again, fourth with 2 ..... |
2022-01-11 17:13:26 +0100 | <oxytocat> | it is infinitely recursive. it prepends 1 and 2 to oneTwo, which is prepending 1 and 2 to oneTwo, which is ... |
2022-01-11 17:13:53 +0100 | <oxytocat> | so you get: 1 : 2 : 1 : 2 : 1 : 2 : ... |
2022-01-11 17:14:04 +0100 | <polyphem> | zipWith takes a combining function (*) and two lists xs and [1,2,1,2,1,2,1,2.... |
2022-01-11 17:14:13 +0100 | <futh14> | in the end, oneTwo's length becomes equal to xs |
2022-01-11 17:14:18 +0100 | <futh14> | okay, thanks |
2022-01-11 17:14:31 +0100 | <EvanR> | oneTwo's length is infinite |
2022-01-11 17:14:41 +0100 | <polyphem> | zip familiy of functions stop after ind of shortest list |
2022-01-11 17:14:53 +0100 | <polyphem> | *end* |
2022-01-11 17:15:01 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
2022-01-11 17:15:03 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.3) |
2022-01-11 17:15:15 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2022-01-11 17:15:25 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) (Ping timeout: 240 seconds) |
2022-01-11 17:15:46 +0100 | <futh14> | its length is infinite, but only the length that is required by the calculation is made to a list though? EvanR |
2022-01-11 17:15:53 +0100 | unyu | (~pyon@user/pyon) |
2022-01-11 17:16:02 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2022-01-11 17:16:27 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:2c52:4b9f:7e82:ac3e) (Client Quit) |
2022-01-11 17:16:31 +0100 | <EvanR> | well, what will probably happen is oneTwo becomes a circular object in memory |
2022-01-11 17:16:37 +0100 | <EvanR> | doesn't always happen but it's nice when it does |
2022-01-11 17:16:55 +0100 | <EvanR> | that's an implementation detail though |
2022-01-11 17:17:52 +0100 | <EvanR> | in other circumstances you will get some finite prefix demanded by the program, unless you screw up |
2022-01-11 17:19:05 +0100 | <EvanR> | i.e. demand the whole infinite list |
2022-01-11 17:19:17 +0100 | pieguy128 | (~pieguy128@bras-base-mtrlpq5031w-grc-46-67-70-100-227.dsl.bell.ca) (Ping timeout: 256 seconds) |
2022-01-11 17:19:41 +0100 | <merijn> | futh14: Do you know any C, by any chance? |
2022-01-11 17:20:37 +0100 | jgeerds_ | (~jgeerds@55d4bbed.access.ecotel.net) (Ping timeout: 240 seconds) |
2022-01-11 17:21:46 +0100 | <EvanR> | also I want to point out a cool way to interpret equations of the form oneTwo = 1:2:oneTwo. A minimal assumption is that oneTwo is undefined, i.e. ⊥. Then you can take the formula literally and see what happens in steps: |
2022-01-11 17:22:00 +0100 | <EvanR> | oneTwo = ⊥ |
2022-01-11 17:22:07 +0100 | <EvanR> | oneTwo = 1:2:⊥ |
2022-01-11 17:22:13 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 240 seconds) |
2022-01-11 17:22:13 +0100 | <EvanR> | oneTwo = 1:2:1:2:⊥ |
2022-01-11 17:22:17 +0100 | <EvanR> | etc |
2022-01-11 17:24:55 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-11 17:24:57 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) |
2022-01-11 17:25:55 +0100 | henninb | (~henninb@97-116-147-100.mpls.qwest.net) (Quit: leaving) |
2022-01-11 17:26:22 +0100 | <EvanR> | substitution taken to a logical extreme |
2022-01-11 17:26:36 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2022-01-11 17:28:02 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-11 17:28:53 +0100 | yauhsien | (~yauhsien@61-231-29-214.dynamic-ip.hinet.net) |
2022-01-11 17:30:22 +0100 | <tomsmeding> | ghc-vis representation of oneTwo: https://tomsmeding.com/ss/get/tomsmeding/tB2wIw |
2022-01-11 17:31:02 +0100 | <EvanR> | :successbaby: |
2022-01-11 17:34:01 +0100 | pieguy128 | (~pieguy128@bras-base-mtrlpq5031w-grc-46-67-70-100-183.dsl.bell.ca) |
2022-01-11 17:34:47 +0100 | <futh14> | @mer |
2022-01-11 17:34:47 +0100 | <lambdabot> | Maybe you meant: vera msg more metar let arr |
2022-01-11 17:34:57 +0100 | <futh14> | merijn yes I do |
2022-01-11 17:35:31 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-01-11 17:35:57 +0100 | <futh14> | tomsmeding is this some kind of doubly-linked list? :D |
2022-01-11 17:36:07 +0100 | <tomsmeding> | singly-linked |
2022-01-11 17:36:17 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-11 17:36:18 +0100 | <tomsmeding> | it's just circular :) |
2022-01-11 17:36:21 +0100 | <futh14> | how do you generate such implementations? |
2022-01-11 17:36:29 +0100 | <tomsmeding> | the visualisation? |
2022-01-11 17:36:32 +0100 | <futh14> | yep |
2022-01-11 17:36:38 +0100 | <tomsmeding> | https://www.youtube.com/watch?v=I4lnCG18TaY |
2022-01-11 17:38:33 +0100 | pieguy128 | (~pieguy128@bras-base-mtrlpq5031w-grc-46-67-70-100-183.dsl.bell.ca) (Ping timeout: 256 seconds) |
2022-01-11 17:47:06 +0100 | _xor | (~xor@dsl-50-5-233-169.fuse.net) (Quit: brb) |
2022-01-11 17:47:34 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:a92f:4d2f:4882:4db9) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-11 17:48:23 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:4371:6bef:aafb:f58d) (Ping timeout: 252 seconds) |
2022-01-11 17:51:40 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2022-01-11 17:55:10 +0100 | alx741 | (~alx741@157.100.93.160) |
2022-01-11 17:58:39 +0100 | MajorBiscuit | (~MajorBisc@c-001-007-038.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.3) |
2022-01-11 18:09:55 +0100 | econo | (uid147250@user/econo) |
2022-01-11 18:11:26 +0100 | Guest42 | (~Guest42@563BEF60.catv.pool.telekom.hu) |
2022-01-11 18:11:45 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 18:13:30 +0100 | michalz | (~michalz@185.246.204.104) (Remote host closed the connection) |
2022-01-11 18:13:45 +0100 | oo_migue1 | (~pi@77.252.47.226) (Quit: WeeChat 2.3) |
2022-01-11 18:13:54 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:259f:1db:61a3:46e1) |
2022-01-11 18:14:27 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:86d:17f:4605:4c9d) |
2022-01-11 18:16:40 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-01-11 18:17:43 +0100 | <Inst> | i mean it should work, no? |
2022-01-11 18:18:07 +0100 | <Inst> | f a <*> f b = f (a b)? |
2022-01-11 18:18:13 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:259f:1db:61a3:46e1) (Ping timeout: 240 seconds) |
2022-01-11 18:18:15 +0100 | <EvanR> | that doesn't look right |
2022-01-11 18:18:26 +0100 | Akiva | (~Akiva@user/Akiva) |
2022-01-11 18:19:06 +0100 | <byorgey> | Inst: it looks like you are mixing up types and values. |
2022-01-11 18:19:16 +0100 | shapr | (~user@2601:7c0:c202:5190:c2c1:1b44:a2c4:880c) |
2022-01-11 18:19:17 +0100 | <monochrom> | That's very intuitive and very wrong. |
2022-01-11 18:19:17 +0100 | <EvanR> | (f <*> g) x = f x (g x) |
2022-01-11 18:19:54 +0100 | <EvanR> | monochrom, there you go again </reagan> |
2022-01-11 18:20:12 +0100 | <byorgey> | (<*>) has type f (a -> b) -> f a -> f b, so intuitively it takes a function and an argument both "inside" an f, and applies the function to the value "in the f context". |
2022-01-11 18:20:14 +0100 | <polux> | Hi all, if I have a String that is a valid haskell function declaration, is there a way to turn that into an actual function declaration using template haskell? |
2022-01-11 18:20:23 +0100 | <monochrom> | Except for the Identity functor and f = Identity (the data constructor) |
2022-01-11 18:20:35 +0100 | <byorgey> | However, f a is not valid syntax for a value of type f (a -> b) |
2022-01-11 18:21:20 +0100 | <polux> | I know of generating an haskell AST using template haskell combinators, and of quasiquotes but neither seems to help here. |
2022-01-11 18:21:45 +0100 | <EvanR> | polux do you want to like "eval" the string and use it at runtime? |
2022-01-11 18:21:46 +0100 | <Inst> | see, more things I hate about Haskell: |
2022-01-11 18:21:58 +0100 | <Inst> | standard should be F a <*> F b = F (a b) |
2022-01-11 18:22:01 +0100 | <Inst> | is that right? |
2022-01-11 18:22:11 +0100 | <Inst> | where F is a type constructor and a is a function |
2022-01-11 18:22:20 +0100 | <polux> | EvanR: no, I have a function that generates something of the form "f x = e" and I would like to turn that into a program at compile time |
2022-01-11 18:22:24 +0100 | <monochrom> | Why is F not a data constructor? |
2022-01-11 18:22:31 +0100 | <Inst> | *data constructor |
2022-01-11 18:22:56 +0100 | <monochrom> | That works for Identity as said. But have you tried Maybe? []? Either e? |
2022-01-11 18:23:17 +0100 | <EvanR> | polux, I know with TH you could parse that string and either fail or use the results to output code... |
2022-01-11 18:23:24 +0100 | <Inst> | Maybe includes logic such that if F b = Nothing, <*> returns Nothing |
2022-01-11 18:23:31 +0100 | <monochrom> | Maybe has two data constructors so does F become Nothing or does F become Just? |
2022-01-11 18:23:52 +0100 | <polux> | EvanR: right, that's something like that I am looking for! Is there some standard or commonly accepted way to do this? |
2022-01-11 18:24:13 +0100 | <monochrom> | And what about [] such that no constructor is 1-ary? |
2022-01-11 18:24:21 +0100 | <Inst> | textbook definition of <*> for Maybe (Hutton): |
2022-01-11 18:24:28 +0100 | <monochrom> | Does F become [] or does F become (:)? |
2022-01-11 18:24:31 +0100 | <Inst> | Nothing <*> _ = Nothing |
2022-01-11 18:24:37 +0100 | <Inst> | (Just g) <*> mx = fmap g mx |
2022-01-11 18:25:07 +0100 | <Inst> | Maybe (a->b) -> Maybe a -> Maybe b |
2022-01-11 18:25:45 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:2c67:7cfa:cdb8:6538) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-11 18:25:52 +0100 | <polux> | looks like https://hackage.haskell.org/package/haskell-src-meta does just that |
2022-01-11 18:26:08 +0100 | <Square> | I try to create (through standalone deriving) a Lift instance for Name (from Template.Haskell) but it says "The data constructors of ‘Name’ are not all in scope" even if i import "Name(..)" |
2022-01-11 18:26:44 +0100 | <Inst> | i mean I can get it working with toy examples |
2022-01-11 18:26:49 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-01-11 18:27:03 +0100 | <Inst> | pure (+) <*> pure 1 <*> pure 2 = Just 3 |
2022-01-11 18:27:05 +0100 | <Inst> | let me check |
2022-01-11 18:28:12 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-01-11 18:28:13 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) |
2022-01-11 18:28:23 +0100 | <Inst> | pure (+) <*> pure 1 <*> (pure 2 :: Num a => Maybe a) |
2022-01-11 18:28:32 +0100 | <Inst> | Just 3 |
2022-01-11 18:28:34 +0100 | razetime | (~quassel@49.207.203.87) (Ping timeout: 256 seconds) |
2022-01-11 18:29:59 +0100 | <EvanR> | as expected, pure has no effect |
2022-01-11 18:30:18 +0100 | <Inst> | i assume there's a default instance defined for Num a... |
2022-01-11 18:30:19 +0100 | <EvanR> | The pure was not very effective |
2022-01-11 18:30:31 +0100 | <monochrom> | Square: Did you import from Language.Haskell.TH or did you import from Language.Haskell.TH.Syntax? Not all of them actually exports the data constructor. |
2022-01-11 18:30:45 +0100 | <EvanR> | haskell doesn't have default instances |
2022-01-11 18:30:49 +0100 | <byorgey> | Inst: a default instance of what defined for Num a ? |
2022-01-11 18:31:02 +0100 | <Square> | monochrom, Language.Haskell.TH.Syntax |
2022-01-11 18:31:18 +0100 | <Square> | ...ill try the former |
2022-01-11 18:31:30 +0100 | <Square> | vice versa |
2022-01-11 18:31:44 +0100 | <monochrom> | That's mysterious. Language.Haskell.TH.Syntax is the one that has the best hope. |
2022-01-11 18:31:57 +0100 | <byorgey> | Inst: also, what question are you trying to answer right now? I'm trying to figure out how to help. |
2022-01-11 18:32:23 +0100 | <Inst> | byorgey: I'm trying to feed openFile a value of IO (Maybe String) |
2022-01-11 18:32:30 +0100 | <Inst> | using applicatives only |
2022-01-11 18:32:49 +0100 | <Inst> | problem is, openFile takes two arguments, a String and a IOMode |
2022-01-11 18:33:05 +0100 | <Square> | monochrom, you were correct.. chaning to Language.Haskell.TH.Syntax (i stated wrongly). It seems to work now |
2022-01-11 18:33:09 +0100 | <Square> | thanks |
2022-01-11 18:33:14 +0100 | <byorgey> | Inst: are you allowed to use liftA2? |
2022-01-11 18:33:21 +0100 | <Inst> | I already have a liftA2 solution |
2022-01-11 18:33:24 +0100 | <Inst> | it's an exercise |
2022-01-11 18:33:31 +0100 | <Inst> | it was provided by Ax.... |
2022-01-11 18:33:55 +0100 | <byorgey> | Inst: OK, did you see earlier when Axman6 showed the type of liftA2 (<*>)? |
2022-01-11 18:33:59 +0100 | <Inst> | yeah, I saw |
2022-01-11 18:34:49 +0100 | <Inst> | takes f1 (f2 (a->b)) -> f1 (f-2 a) -> f1 (f2 b) |
2022-01-11 18:34:56 +0100 | <Inst> | erm, sig |
2022-01-11 18:35:01 +0100 | <Inst> | it works |
2022-01-11 18:35:05 +0100 | <byorgey> | Right. It seems to me that is exactly what you want |
2022-01-11 18:36:11 +0100 | <byorgey> | you can apply it to pure (pure openFile) etc. |
2022-01-11 18:36:51 +0100 | <Inst> | liftA2 (<*>) fmap fx |
2022-01-11 18:36:58 +0100 | <Inst> | liftA2 (<*>) fmap f x |
2022-01-11 18:38:37 +0100 | <byorgey> | hmm? liftA2 (<*>) expects as its first argument something of type f1 (f2 (a -> b)). That is not the type of fmap. |
2022-01-11 18:39:32 +0100 | <Inst> | liftA2 f x = (<*>) (fmap f x) |
2022-01-11 18:39:41 +0100 | <Inst> | from GHC.Base |
2022-01-11 18:40:06 +0100 | <byorgey> | ok. |
2022-01-11 18:41:57 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 240 seconds) |
2022-01-11 18:43:07 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-01-11 18:45:26 +0100 | platz_ | (~platz@40.122.118.113) (Quit: leaving) |
2022-01-11 18:45:47 +0100 | neurocyte09179 | (~neurocyte@user/neurocyte) |
2022-01-11 18:45:49 +0100 | neurocyte0917 | (~neurocyte@user/neurocyte) (Ping timeout: 240 seconds) |
2022-01-11 18:45:49 +0100 | neurocyte09179 | neurocyte0917 |
2022-01-11 18:47:49 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-11 18:47:49 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-11 18:47:49 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-11 18:50:33 +0100 | <Inst> | why do people think "being filtered by trees" is funny? |
2022-01-11 18:52:04 +0100 | <byorgey> | they do? |
2022-01-11 18:52:28 +0100 | coot | (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) (Remote host closed the connection) |
2022-01-11 18:52:54 +0100 | coot | (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) |
2022-01-11 18:53:21 +0100 | nhatanh02 | (~satori@123.24.172.30) (Ping timeout: 256 seconds) |
2022-01-11 18:55:03 +0100 | <Inst> | do people get filtered by trees? |
2022-01-11 18:55:09 +0100 | <Inst> | i almost got filtered by trees, but made it |
2022-01-11 18:55:20 +0100 | <Inst> | now i'm about to get filtered by not understanding how to use <*> with stacked monads |
2022-01-11 18:55:31 +0100 | <Inst> | i'm sure i'll make it |
2022-01-11 18:56:19 +0100 | <Inst> | just needs more time, and the challenge is only a bit after the "fun" level right now |
2022-01-11 18:56:31 +0100 | <EvanR> | you know, this isn't a monad thing |
2022-01-11 18:56:54 +0100 | <EvanR> | it's about the Applicative instances |
2022-01-11 18:57:38 +0100 | <EvanR> | which is usually nicer to deal with, but you have the awkard situation where most of your stuff is not using Maybe or IO |
2022-01-11 18:57:45 +0100 | <EvanR> | in openFile |
2022-01-11 18:59:44 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-11 19:01:06 +0100 | <EvanR> | why is ghci still complaining about ambiguous . even after I put import Prelude hiding ((.)) |
2022-01-11 19:02:02 +0100 | Athas | (athas@sigkill.dk) (Read error: Connection reset by peer) |
2022-01-11 19:02:45 +0100 | <EvanR> | and id |
2022-01-11 19:03:09 +0100 | <byorgey> | EvanR: maybe they are being imported via a module you :loaded? |
2022-01-11 19:03:56 +0100 | <EvanR> | head scratch... importing and reexporting Prelude id and . ?? |
2022-01-11 19:03:58 +0100 | moet | (~moet@mobile-166-170-41-167.mycingular.net) |
2022-01-11 19:04:28 +0100 | <EvanR> | ah there are two import Prelude hiding lines! |
2022-01-11 19:05:13 +0100 | kimjetwav | (~user@2607:fea8:2363:8f00:62f3:c8e:2d83:a34f) (Read error: Connection reset by peer) |
2022-01-11 19:05:24 +0100 | <byorgey> | haha, each one is importing the thing the other is hiding =) |
2022-01-11 19:05:30 +0100 | kimjetwav | (~user@2607:fea8:2363:8f00:e50d:c794:338b:ac83) |
2022-01-11 19:05:38 +0100 | phma | (~phma@host-67-44-208-201.hnremote.net) (Read error: Connection reset by peer) |
2022-01-11 19:06:33 +0100 | phma | (~phma@host-67-44-208-198.hnremote.net) |
2022-01-11 19:07:31 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds) |
2022-01-11 19:07:47 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-11 19:07:47 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-11 19:07:47 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-11 19:09:02 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-01-11 19:09:48 +0100 | moet | (~moet@mobile-166-170-41-167.mycingular.net) (Quit: leaving) |
2022-01-11 19:10:24 +0100 | kupi | (uid212005@id-212005.hampstead.irccloud.com) |
2022-01-11 19:10:44 +0100 | <Inst> | (fmap (<*>) (fmap (fmap openFile) openFilePath)) <*> (pure (pure ReadMode)) <-- this works |
2022-01-11 19:10:58 +0100 | mbuf | (~Shakthi@122.178.183.53) (Quit: Leaving) |
2022-01-11 19:11:44 +0100 | <Inst> | EvanR: I am treating FAM monadically (in the sense of being a single unit) |
2022-01-11 19:12:12 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-11 19:12:50 +0100 | <EvanR> | just saying that could would work if nothing involved were monads |
2022-01-11 19:12:54 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2022-01-11 19:12:54 +0100 | <EvanR> | that code* |
2022-01-11 19:13:03 +0100 | <EvanR> | which comes up a lot more actually |
2022-01-11 19:13:57 +0100 | <EvanR> | :t \x y -> fmap (<*>) (fmap (fmap x) <*> (pure (pure x)) |
2022-01-11 19:13:58 +0100 | <lambdabot> | error: |
2022-01-11 19:13:58 +0100 | <lambdabot> | parse error (possibly incorrect indentation or mismatched brackets) |
2022-01-11 19:14:04 +0100 | <EvanR> | :t \x y -> fmap (<*>) (fmap (fmap x)) <*> (pure (pure x)) |
2022-01-11 19:14:05 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-11 19:14:05 +0100 | <lambdabot> | Applicative f => (a -> b) -> p -> f ((a -> b) -> a) -> f b |
2022-01-11 19:14:15 +0100 | <EvanR> | look mom no monads |
2022-01-11 19:14:25 +0100 | <EvanR> | :t \x y -> fmap (<*>) (fmap (fmap x)) <*> (pure (pure y)) |
2022-01-11 19:14:26 +0100 | <lambdabot> | Applicative f => (a1 -> b) -> a2 -> f (a2 -> a1) -> f b |
2022-01-11 19:14:39 +0100 | Square | Sqaure |
2022-01-11 19:15:25 +0100 | Athas | (~athas@2a01:7c8:aaac:1cf:d10b:de69:b1cf:3fd6) |
2022-01-11 19:15:55 +0100 | <EvanR> | sometimes it turns out you don't need some abilities and you can make your code more general |
2022-01-11 19:16:49 +0100 | <Inst> | i mean i don't actually need the code, it's just an exercise |
2022-01-11 19:17:07 +0100 | <EvanR> | no excuse not to note something cool |
2022-01-11 19:17:38 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-11 19:18:23 +0100 | <Inst> | in your sentence above, monad meant (it'd actually be funnier if monad's semantic drift went out of control and we be able to compose sentences entirely out of the word monad, with various inflections to indicate grammatical use) |
2022-01-11 19:18:33 +0100 | <Inst> | values whose type was monadic, right? |
2022-01-11 19:18:48 +0100 | pera | (~pera@user/pera) (Quit: leaving) |
2022-01-11 19:19:05 +0100 | vysn | (~vysn@user/vysn) |
2022-01-11 19:19:31 +0100 | <EvanR> | no |
2022-01-11 19:19:40 +0100 | <EvanR> | since we're talking about types not values |
2022-01-11 19:19:52 +0100 | <EvanR> | none of the types were monads |
2022-01-11 19:19:59 +0100 | <EvanR> | (necessarily) |
2022-01-11 19:21:42 +0100 | <Inst> | openFilePath returns IO (Maybe String) which is why it's such a mess |
2022-01-11 19:24:02 +0100 | <EvanR> | @hoogle openFilePath |
2022-01-11 19:24:02 +0100 | <lambdabot> | No results found |
2022-01-11 19:24:16 +0100 | <EvanR> | what's that |
2022-01-11 19:25:43 +0100 | <Inst> | openFilePath :: IO (Maybe String) |
2022-01-11 19:25:43 +0100 | <Inst> | openFilePath = openFileDialog (pack "") (pack "") [] (pack "") False >>= \x -> pure $ x >>= \y -> pure $ unpack (head y) |
2022-01-11 19:25:56 +0100 | <Inst> | openFileDialog is from TinyFileDialogs on Hackage |
2022-01-11 19:26:02 +0100 | <Inst> | I've been told it's badly coded |
2022-01-11 19:26:13 +0100 | <Inst> | it's a wrapper for TinyFileDialogs |
2022-01-11 19:26:44 +0100 | <Inst> | so it calls up OS API to get you a file selector, then returns a file path as IO Maybe [Text] |
2022-01-11 19:27:22 +0100 | <EvanR> | it returns the first path selected by the user or Nothing if they cancelled? |
2022-01-11 19:27:23 +0100 | <Inst> | the architecture of "cancer.hs" |
2022-01-11 19:27:25 +0100 | <Inst> | yeah |
2022-01-11 19:27:36 +0100 | <Inst> | if True is sent, you can select multiple files and it's a multi-element List |
2022-01-11 19:28:09 +0100 | <Inst> | so, like, if you want to teach with it, you can give an assignment to give a way to hook up TinyFileDialogs to an openFile / writeFile whatever |
2022-01-11 19:28:16 +0100 | <EvanR> | in this case, I would immediately handle the Nothing after calling that, then continue in IO, |
2022-01-11 19:28:30 +0100 | <EvanR> | using a case |
2022-01-11 19:28:51 +0100 | <EvanR> | react to a Just path with some IO code and a real String |
2022-01-11 19:28:57 +0100 | <Inst> | why do you guys hate If Then Else statements so much? They're perfectly useful when you only have two cases! |
2022-01-11 19:29:14 +0100 | <Inst> | it desugars to case! |
2022-01-11 19:29:15 +0100 | <EvanR> | if then else isn't about the number of cases, it's about the type of the scrutinee |
2022-01-11 19:29:25 +0100 | <ephemient> | you wan to destructure the maybe, so the natural thing to use is case |
2022-01-11 19:29:26 +0100 | <monochrom> | I don't hate if-then-else. |
2022-01-11 19:29:28 +0100 | <EvanR> | you don't have a Bool so it's inconvenient |
2022-01-11 19:29:35 +0100 | <Inst> | ah |
2022-01-11 19:29:44 +0100 | <monochrom> | "if x>10 then ... else ..." is fine. |
2022-01-11 19:29:44 +0100 | <Inst> | case of you can use pattern matching |
2022-01-11 19:29:58 +0100 | <monochrom> | Instead, why do you hate pattern matching so much? |
2022-01-11 19:29:59 +0100 | kimjetwav | (~user@2607:fea8:2363:8f00:e50d:c794:338b:ac83) (Remote host closed the connection) |
2022-01-11 19:30:10 +0100 | <monochrom> | "case xs of [] -> ... x:xs -> ..." is fine. |
2022-01-11 19:30:14 +0100 | <EvanR> | also, using an if with isJust or isNothing would be bad here, because then you don't have the string |
2022-01-11 19:30:14 +0100 | <Inst> | i wasn't used to it! |
2022-01-11 19:30:18 +0100 | <Inst> | and also, on FP Discord |
2022-01-11 19:30:22 +0100 | <ephemient> | with {-# LANGUAGE LambdaCase #-} you can write something >>= \case Just something -> foo; Nothing -> bar |
2022-01-11 19:30:28 +0100 | <EvanR> | and to get the string, you need... to use a case statement |
2022-01-11 19:30:30 +0100 | <Inst> | we have some guy who insists on defining functions with pattern matching |
2022-01-11 19:30:35 +0100 | <EvanR> | then the Nothing case makes no sense |
2022-01-11 19:30:35 +0100 | <Inst> | also, btw, can you @ a function? |
2022-01-11 19:30:46 +0100 | <Inst> | it's a phase people go through |
2022-01-11 19:30:52 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-01-11 19:30:55 +0100 | <ephemient> | and with {-# LANGUAGE BlockArguments #-} you don't need to increase indentation for a do block inside there |
2022-01-11 19:30:56 +0100 | <Inst> | they're not comfortable with pattern matching, they work with if then else because it's what they learned first |
2022-01-11 19:31:10 +0100 | <Inst> | if then else only has a valid use in the rare case where you only have two cases and don't need pattern matching |
2022-01-11 19:31:19 +0100 | <EvanR> | if then else doesn't give you access to the payload of Maybe |
2022-01-11 19:31:22 +0100 | <Inst> | yeah |
2022-01-11 19:31:23 +0100 | <Inst> | correct |
2022-01-11 19:31:30 +0100 | <Inst> | so in this case it's not necessary |
2022-01-11 19:31:37 +0100 | <Inst> | erm, it's not useful |
2022-01-11 19:31:42 +0100 | <EvanR> | it would actually be very awkward and weird |
2022-01-11 19:31:58 +0100 | <Inst> | but re: hating pattern matching |
2022-01-11 19:32:03 +0100 | <Inst> | there's a stage people go through where they prefer guards |
2022-01-11 19:32:10 +0100 | <Inst> | it's because they don't want to type the function name and arguments all the time |
2022-01-11 19:32:17 +0100 | <Inst> | so I'm sort of wondering if it's possible to @ the function name |
2022-01-11 19:32:22 +0100 | <EvanR> | you can just use a case to avoid that |
2022-01-11 19:32:26 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-11 19:32:33 +0100 | <Inst> | so when you're pattern matching, you can just type Function x y |
2022-01-11 19:32:43 +0100 | <Inst> | so when you're pattern matching, you can just type k@function x y |
2022-01-11 19:32:48 +0100 | <Inst> | then k x2 y2, etc |
2022-01-11 19:33:00 +0100 | <Inst> | not sure if @ notation is powerful enough for that |
2022-01-11 19:33:16 +0100 | <monochrom> | WTH is "@ the function name"? |
2022-01-11 19:33:30 +0100 | <EvanR> | yeah you can't write that |
2022-01-11 19:33:33 +0100 | <Inst> | in Chinese and Japanese, because words are so complicated, they have something called an iteration mark |
2022-01-11 19:33:39 +0100 | <Inst> | so, if you're reduplicating a word |
2022-01-11 19:33:46 +0100 | <Inst> | erm, the character for a given morpheme can be so complicated |
2022-01-11 19:33:54 +0100 | <int-e> | function_with_tediously_long_name = f where f ... |
2022-01-11 19:34:12 +0100 | <int-e> | "go" is a somewhat popular short name |
2022-01-11 19:34:14 +0100 | <Inst> | you just write 々 |
2022-01-11 19:34:24 +0100 | <monochrom> | No, Chinese doesn't do that. |
2022-01-11 19:34:26 +0100 | <Inst> | oh, thanks |
2022-01-11 19:34:34 +0100 | <EvanR> | function_with_tedious_name x = case x of |
2022-01-11 19:34:38 +0100 | <Inst> | Chinese has iteration marks, two, used entirely in casual writing |
2022-01-11 19:35:15 +0100 | <[itchyjunk]> | if list = [[1],[2,3]] and i [x | x <- [ y | y <- list] ], first instance of y would be [1] so x <- [1] would be 1 no? |
2022-01-11 19:35:18 +0100 | <Inst> | but there is a stage where people do guards, probably because (like me) they're too dumb to figure out how to use where to avoid having to type the pattern name repeatedly |
2022-01-11 19:35:21 +0100 | <monochrom> | And I believe Japanese does that for immediate repetition only, not marking something to be cloned 3 inches away. |
2022-01-11 19:35:23 +0100 | <[itchyjunk]> | idk why this is id function again |
2022-01-11 19:35:31 +0100 | <int-e> | EvanR: I kind of hate that because it means switching from = to -> |
2022-01-11 19:35:40 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3) |
2022-01-11 19:35:44 +0100 | <monochrom> | And English has "ditto" for that. |
2022-01-11 19:35:49 +0100 | <Inst> | 〻 |
2022-01-11 19:35:50 +0100 | <EvanR> | well... we switch between = and -> so much anyway xD |
2022-01-11 19:35:52 +0100 | futh1415 | (~futh14@c90-143-137-255.bredband.tele2.se) |
2022-01-11 19:36:09 +0100 | <EvanR> | i didn't know about the f trick |
2022-01-11 19:36:11 +0100 | <Inst> | case of I actually dislike because you have to use -> |
2022-01-11 19:36:17 +0100 | <Inst> | would be better if you could just type = instead |
2022-01-11 19:36:40 +0100 | <[itchyjunk]> | ah i think it's left to right evaluation |
2022-01-11 19:36:56 +0100 | <[itchyjunk]> | can i do list comprehension without a list? xD |
2022-01-11 19:36:58 +0100 | <EvanR> | it wouldn't be better, imo |
2022-01-11 19:36:59 +0100 | futh14 | (~futh14@c90-143-137-255.bredband.tele2.se) (Ping timeout: 256 seconds) |
2022-01-11 19:37:05 +0100 | <EvanR> | = means equals in haskell |
2022-01-11 19:37:18 +0100 | <Inst> | "is defined as" |
2022-01-11 19:37:21 +0100 | <EvanR> | Nothing = "whatever, it's empty" is wrong |
2022-01-11 19:37:23 +0100 | <Inst> | == is boolean equal |
2022-01-11 19:37:32 +0100 | <EvanR> | it's not is defined as either |
2022-01-11 19:38:06 +0100 | <Inst> | @int-e thank you for letting me know about the where trick |
2022-01-11 19:38:06 +0100 | <lambdabot> | Unknown command, try @list |
2022-01-11 19:38:14 +0100 | <int-e> | [itchyjunk]: [ y | y <- list] equals list |
2022-01-11 19:38:46 +0100 | <EvanR> | = also isn't a bool test, it's a proposition |
2022-01-11 19:39:06 +0100 | <[itchyjunk]> | :< |
2022-01-11 19:39:37 +0100 | <int-e> | we're back to making bold declarations I see |
2022-01-11 19:39:37 +0100 | nschoe | (~quassel@2a01:e0a:8e:a190:4c27:e379:35e8:63af) (Ping timeout: 240 seconds) |
2022-01-11 19:39:41 +0100 | <Inst> | w/e, this is a case where i'm better off learning the language more before arguing it |
2022-01-11 19:40:04 +0100 | <Inst> | like, I had a pythoner who had signed up to learn Hask from me when I was ready run off once he saw that Aeson apparently required you to define types |
2022-01-11 19:40:05 +0100 | <monochrom> | I thought that was the only fair thing to do. |
2022-01-11 19:40:21 +0100 | <ephemient> | well, one part of syntax I always find a bit awkward is using <- inside pattern guards, but I don't think there's really a great alternative since = already means something |
2022-01-11 19:40:25 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-11 19:40:29 +0100 | <monochrom> | What do you mean it is possible to give so much opinion on something you don't know. |
2022-01-11 19:40:41 +0100 | <monochrom> | Is that a new-fangled TikTok thing. |
2022-01-11 19:40:49 +0100 | <Inst> | isn't that the basis of democracy? :) |
2022-01-11 19:41:15 +0100 | <int-e> | monochrom: I don't know what you're talking about, therefore you are wrong. |
2022-01-11 19:42:17 +0100 | <Inst> | also there seems to be a dearth of information on algebraic data types in textbooks, as in, it's usually not taught unitarily |
2022-01-11 19:42:47 +0100 | <[itchyjunk]> | if i have a [[1]], is there no direct way to refer to that 1 inside a list comprehension? |
2022-01-11 19:43:02 +0100 | <[itchyjunk]> | [x | x <- ? ] |
2022-01-11 19:43:03 +0100 | <Inst> | ummm |
2022-01-11 19:43:16 +0100 | <Inst> | [x | x<- y , y<-k] |
2022-01-11 19:43:22 +0100 | <Inst> | or no, that doesn't work |
2022-01-11 19:43:25 +0100 | <EvanR> | > [x | [[x]] <- [[1]]] -- ? xD |
2022-01-11 19:43:26 +0100 | <[itchyjunk]> | no.. |
2022-01-11 19:43:27 +0100 | <lambdabot> | error: |
2022-01-11 19:43:27 +0100 | <lambdabot> | • No instance for (Num [()]) arising from a use of ‘e_11’ |
2022-01-11 19:43:27 +0100 | <lambdabot> | • In the expression: e_11 |
2022-01-11 19:43:35 +0100 | <EvanR> | > [x | [x] <- [[1]]] -- ? xD |
2022-01-11 19:43:36 +0100 | <lambdabot> | [1] |
2022-01-11 19:43:53 +0100 | <Inst> | i'm trying to figure out how to do it using the list comprehension syntax only |
2022-01-11 19:44:01 +0100 | <int-e> | Inst: it basically works, you just need to put things into the proper order |
2022-01-11 19:44:03 +0100 | <Inst> | you could just do [head x | x <- list] |
2022-01-11 19:44:18 +0100 | nschoe | (~quassel@2a01:e0a:8e:a190:2fd9:6714:788f:97f6) |
2022-01-11 19:44:21 +0100 | <monochrom> | > [x | a <- [[1]] {- so a = [1] -} , x <- a] |
2022-01-11 19:44:22 +0100 | <lambdabot> | [1] |
2022-01-11 19:44:22 +0100 | <int-e> | and maybe rename things |
2022-01-11 19:44:33 +0100 | <Inst> | [x | y <- list, x <- y |
2022-01-11 19:44:35 +0100 | <Inst> | ]? |
2022-01-11 19:44:41 +0100 | <[itchyjunk]> | okay, [[1]] was an example |
2022-01-11 19:44:48 +0100 | <[itchyjunk]> | i want to refrence to [[a]] |
2022-01-11 19:44:54 +0100 | <[itchyjunk]> | elements in lists of lists |
2022-01-11 19:44:57 +0100 | <[itchyjunk]> | all of them |
2022-01-11 19:45:01 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) (Ping timeout: 240 seconds) |
2022-01-11 19:45:09 +0100 | <monochrom> | You mean [[1,2,3]] |
2022-01-11 19:45:23 +0100 | <[itchyjunk]> | [[1],[2],[3..]] |
2022-01-11 19:45:24 +0100 | <monochrom> | > [x | a <- [[1,2,3]] {- so a = [1] or [2] or [3] -} , x <- a] |
2022-01-11 19:45:25 +0100 | <lambdabot> | [1,2,3] |
2022-01-11 19:45:36 +0100 | <Inst> | list = [[1] |
2022-01-11 19:45:38 +0100 | <Inst> | list = [[1]] |
2022-01-11 19:45:38 +0100 | <monochrom> | Err, a=[1,2,3] |
2022-01-11 19:45:55 +0100 | <monochrom> | [[1], [2], [3]] can also work |
2022-01-11 19:45:55 +0100 | <EvanR> | gratuitous list comprehension syntax for outrageous fortune |
2022-01-11 19:45:59 +0100 | <Inst> | [x | y<-list, x<-y] |
2022-01-11 19:46:02 +0100 | <Inst> | returns 1 |
2022-01-11 19:46:04 +0100 | <[itchyjunk]> | whats this {- -} stuff? |
2022-01-11 19:46:09 +0100 | <monochrom> | > [x | a <- [[1],[2],[3]] {- so a = [1] or [2] or [3] -} , x <- a] |
2022-01-11 19:46:10 +0100 | <lambdabot> | [1,2,3] |
2022-01-11 19:46:18 +0100 | <futh1415> | [itchyjunk] comments |
2022-01-11 19:46:22 +0100 | <monochrom> | block comment |
2022-01-11 19:46:43 +0100 | <Inst> | welcome to the Haskell club, [itchyjunk] |
2022-01-11 19:46:46 +0100 | <[itchyjunk]> | Inst, oh i didnt think of difining y first then x :| |
2022-01-11 19:47:02 +0100 | <[itchyjunk]> | oh i see :< |
2022-01-11 19:47:17 +0100 | <[itchyjunk]> | [x | y <- list, x <- y] seems to work |
2022-01-11 19:47:25 +0100 | <Inst> | EvanR: it's not gratuitous when you intrinsically derive pleasure from the syntax |
2022-01-11 19:47:38 +0100 | <Inst> | a bit decadent, perhaps, but not gratuitous |
2022-01-11 19:47:44 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-11 19:48:02 +0100 | <EvanR> | after using clojure I do appreciate my syntax |
2022-01-11 19:48:10 +0100 | <EvanR> | when it exists |
2022-01-11 19:48:12 +0100 | <Inst> | it could be better in parts |
2022-01-11 19:48:21 +0100 | <Inst> | but pretty close to optimum, Idris apparently uses : for type signatures |
2022-01-11 19:48:26 +0100 | <monochrom> | I like outrageous fortune. May well worth gratuitous syntax. |
2022-01-11 19:48:26 +0100 | <Inst> | not sure what they use for cons |
2022-01-11 19:48:27 +0100 | <EvanR> | : is more standard |
2022-01-11 19:48:33 +0100 | <EvanR> | haskell is the odd one out with :: |
2022-01-11 19:48:37 +0100 | <Inst> | ah |
2022-01-11 19:49:03 +0100 | <monochrom> | If someone pays me $100000 for saying "type X = Y" 3 times, I will do it. |
2022-01-11 19:49:04 +0100 | <[itchyjunk]> | https://bpa.st/MBDQ |
2022-01-11 19:49:18 +0100 | <[itchyjunk]> | Why didn't I think of defining y first? was stuck on this for too long.. |
2022-01-11 19:49:18 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2022-01-11 19:49:28 +0100 | <Inst> | LYAH or HPFFP? |
2022-01-11 19:49:43 +0100 | <EvanR> | basically you needed a two step list comprehension not one |
2022-01-11 19:49:48 +0100 | <EvanR> | since it's nested |
2022-01-11 19:49:54 +0100 | <monochrom> | This is why education exists. You can't expect to think up all the obvious-in-retrospect ideas yourself. |
2022-01-11 19:50:32 +0100 | <monochrom> | It is also why when I teach I don't say "think about it". I give carefully designed hints and even appropriate spoilers. |
2022-01-11 19:50:37 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Ping timeout: 240 seconds) |
2022-01-11 19:51:02 +0100 | <Inst> | monad comprehension is a language extension, right? |
2022-01-11 19:51:32 +0100 | <Inst> | there's no way to implement list comprehensions for a custom list type? |
2022-01-11 19:52:23 +0100 | nschoe | (~quassel@2a01:e0a:8e:a190:2fd9:6714:788f:97f6) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2022-01-11 19:54:06 +0100 | <Henson> | /quit |
2022-01-11 19:54:17 +0100 | Henson | (~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: let's try that again!) |
2022-01-11 19:54:23 +0100 | <monochrom> | Heh |
2022-01-11 19:55:20 +0100 | <EvanR> | a Henson shaped hole next to the open exit door |
2022-01-11 19:55:35 +0100 | <monochrom> | haha |
2022-01-11 19:56:24 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-01-11 19:56:49 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) (Ping timeout: 256 seconds) |
2022-01-11 19:59:10 +0100 | <Inst> | still fairly ugly |
2022-01-11 19:59:12 +0100 | <Inst> | d = pure ((<*>) . (pure openFile <*>)) <*> openFilePath <*> pure (pure ReadMode) |
2022-01-11 19:59:25 +0100 | <Inst> | well, it's going to be ugly, just need to figure out how to get rid of the . |
2022-01-11 19:59:34 +0100 | <Inst> | then it's done just with <*> and pure |
2022-01-11 20:00:13 +0100 | <Inst> | then i have to figure out how the code actually works! |
2022-01-11 20:00:38 +0100 | <dsal> | That looks like a mini golfer showed up at a PGA Tour. |
2022-01-11 20:00:43 +0100 | xstill- | (xstill@fimu/xstill) (Quit: Ping timeout (120 seconds)) |
2022-01-11 20:00:43 +0100 | <EvanR> | @pl \x y z -> pure ((<*>) . (pure x <*>)) <*> y <*> pure (pure z) |
2022-01-11 20:00:43 +0100 | <lambdabot> | flip flip (pure . pure) . (((.) . (<*>)) .) . (<*>) . pure . ((<*>) .) . (<*>) . pure |
2022-01-11 20:01:06 +0100 | xstill- | (xstill@fimu/xstill) |
2022-01-11 20:01:43 +0100 | max22- | (~maxime@2a01cb0883359800510125e1acff834b.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2022-01-11 20:01:48 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-11 20:01:55 +0100 | max22- | (~maxime@2a01cb0883359800decae4ceda35e3bf.ipv6.abo.wanadoo.fr) |
2022-01-11 20:02:13 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2022-01-11 20:04:15 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
2022-01-11 20:04:37 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Ping timeout: 240 seconds) |
2022-01-11 20:05:57 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-01-11 20:08:57 +0100 | <Inst> | i have a problem wherein I where if I see those red squiggly lines under my code, I feel like the Hlinter just called me a paedophile |
2022-01-11 20:09:36 +0100 | <EvanR> | use vim, no red squiggle support |
2022-01-11 20:12:36 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 20:13:05 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2022-01-11 20:16:11 +0100 | pieguy128 | (~pieguy128@bras-base-mtrlpq5031w-grc-35-70-24-248-198.dsl.bell.ca) |
2022-01-11 20:17:32 +0100 | coot | (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) (Quit: coot) |
2022-01-11 20:18:16 +0100 | <schuelermine[m]> | Is there a package/module that does something like this? https://gist.github.com/schuelermine/6a06efcc0c5b3a18768c4649e4cc8efb |
2022-01-11 20:18:29 +0100 | <ephemient> | :t let openFilePath :: String -> IO (Maybe FilePath); openFilePath = undefined in openFilePath >=> mapM (flip openFile ReadMode) |
2022-01-11 20:18:30 +0100 | <lambdabot> | error: |
2022-01-11 20:18:30 +0100 | <lambdabot> | Variable not in scope: openFile :: FilePath -> b0 -> IO b |
2022-01-11 20:18:30 +0100 | <lambdabot> | error: Data constructor not in scope: ReadMode |
2022-01-11 20:18:37 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2022-01-11 20:20:55 +0100 | jkaye_ | (~qicruser@2605:ef80:1a:c23f::1062:2648) |
2022-01-11 20:21:25 +0100 | pieguy128 | (~pieguy128@bras-base-mtrlpq5031w-grc-35-70-24-248-198.dsl.bell.ca) (Ping timeout: 240 seconds) |
2022-01-11 20:22:37 +0100 | Athas | (~athas@2a01:7c8:aaac:1cf:d10b:de69:b1cf:3fd6) (Ping timeout: 240 seconds) |
2022-01-11 20:23:59 +0100 | jkaye_ | (~qicruser@2605:ef80:1a:c23f::1062:2648) (Read error: Connection reset by peer) |
2022-01-11 20:24:08 +0100 | bliminse | (~bliminse@host86-186-17-7.range86-186.btcentralplus.com) (Quit: leaving) |
2022-01-11 20:29:10 +0100 | jkaye_ | (~qicruser@2605:ef80:1a:c23f::1062:2648) |
2022-01-11 20:30:45 +0100 | pieguy128 | (~pieguy128@bras-base-mtrlpq5031w-grc-43-67-70-144-25.dsl.bell.ca) |
2022-01-11 20:30:45 +0100 | fef | (~thedawn@user/thedawn) (Ping timeout: 276 seconds) |
2022-01-11 20:30:54 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-11 20:35:59 +0100 | <Inst> | bjs |
2022-01-11 20:36:14 +0100 | bliminse | (~bliminse@host86-186-17-7.range86-186.btcentralplus.com) |
2022-01-11 20:38:11 +0100 | jkaye_ | (~qicruser@2605:ef80:1a:c23f::1062:2648) (Read error: Connection reset by peer) |
2022-01-11 20:39:28 +0100 | benin | (~benin@183.82.176.241) (Quit: The Lounge - https://thelounge.chat) |
2022-01-11 20:43:30 +0100 | futh1415 | (~futh14@c90-143-137-255.bredband.tele2.se) (Quit: Client closed) |
2022-01-11 20:44:47 +0100 | Athas | (~athas@sigkill.dk) |
2022-01-11 20:45:29 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-01-11 20:46:37 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-11 20:48:11 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-11 20:48:11 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-11 20:48:11 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-11 20:49:19 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
2022-01-11 20:50:01 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-01-11 20:51:01 +0100 | <lyxia> | schuelermine[m]: you might be interested in "ghosts of departed proofs" https://hackage.haskell.org/package/gdp |
2022-01-11 20:53:48 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-11 20:54:21 +0100 | <monochrom> | Why is the readme essentially empty? :( |
2022-01-11 20:55:09 +0100 | <geekosaur> | ghosts are invisible :þ |
2022-01-11 20:55:19 +0100 | <monochrom> | Fortunately app/Main.hs is a good example. |
2022-01-11 20:57:13 +0100 | <EvanR> | was there a paper by this name |
2022-01-11 20:57:42 +0100 | briandaed | (~briandaed@185.234.208.208.r.toneticgroup.pl) (Quit: leaving) |
2022-01-11 20:57:52 +0100 | briandaed | (~root@185.234.208.208.r.toneticgroup.pl) |
2022-01-11 20:57:55 +0100 | <lyxia> | yeah, a functional pearl |
2022-01-11 21:00:56 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Quit: ERC (IRC client for Emacs 27.1)) |
2022-01-11 21:01:37 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-01-11 21:02:32 +0100 | <schuelermine[m]> | What syntax is `([a] ?SortedBy comp)`? Is it applying `[a]` to an implicit parameter? |
2022-01-11 21:03:28 +0100 | <monochrom> | It's "type (?) a p = Satisfies p a" |
2022-01-11 21:04:06 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-01-11 21:04:35 +0100 | <schuelermine[m]> | It's an infix type operator? And `SortedBy comp` is the right argument? |
2022-01-11 21:04:41 +0100 | <monochrom> | Yeah |
2022-01-11 21:04:57 +0100 | juhp | (~juhp@128.106.188.82) (Ping timeout: 240 seconds) |
2022-01-11 21:07:38 +0100 | <schuelermine[m]> | Does GHC propagate constraints from type families? Can you do... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/56f684a65369fda39abada8109007f682e42…) |
2022-01-11 21:07:56 +0100 | <schuelermine[m]> | * Does GHC propagate constraints from type families? Can you do... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/f2a37c482df8e3589687753844ee3b18bf1a…) |
2022-01-11 21:08:11 +0100 | juhp | (~juhp@128.106.188.82) |
2022-01-11 21:08:18 +0100 | <schuelermine[m]> | oh frick |
2022-01-11 21:08:20 +0100 | <schuelermine[m]> | sorry |
2022-01-11 21:08:27 +0100 | <schuelermine[m]> | I forgot I was bridging from matrix |
2022-01-11 21:08:40 +0100 | <schuelermine[m]> | sorry for attempting to use markdown :/ |
2022-01-11 21:09:53 +0100 | <geekosaur> | it's okay, the bridge pushed it into a pastebin and mostly kept the formatting |
2022-01-11 21:09:58 +0100 | <geekosaur> | the edit was more problematic |
2022-01-11 21:10:01 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) |
2022-01-11 21:10:41 +0100 | <schuelermine[m]> | what does it show up as? |
2022-01-11 21:10:47 +0100 | <schuelermine[m]> | (the editl |
2022-01-11 21:10:53 +0100 | <schuelermine[m]> | s/l/) |
2022-01-11 21:10:59 +0100 | <geekosaur> | [11 20:07:56] <schuelermine[m]> * Does GHC propagate constraints from type families? Can you do... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/f2a37c482df8e3589687753844ee3b18bf1a…) |
2022-01-11 21:11:05 +0100 | <geekosaur> | it doesn't edit, in short |
2022-01-11 21:11:34 +0100 | <schuelermine[m]> | I see, thanks |
2022-01-11 21:11:45 +0100 | <geekosaur> | IRC has no edit mechanism, just some conventions that hopefully don;t get overused |
2022-01-11 21:12:15 +0100 | <schuelermine[m]> | yeah I know, I just forgot to code-switch. |
2022-01-11 21:12:45 +0100 | <schuelermine[m]> | it's s/pat/rep/, or *fix-word, right? |
2022-01-11 21:12:51 +0100 | <geekosaur> | yeh |
2022-01-11 21:13:29 +0100 | <geekosaur> | and yours wasn't too bad, it's the folks who do 5 or 6 *s of the whole message in a row that are really frustrating IRC-side |
2022-01-11 21:13:40 +0100 | <awpr> | > let f :: (Num String => String) -> String; f _ = "what?" in f 42 -- putting the constraint there probably doesn't do what you were expecting |
2022-01-11 21:13:41 +0100 | <lambdabot> | "what?" |
2022-01-11 21:14:13 +0100 | deadmarshal | (~deadmarsh@95.38.231.124) (Ping timeout: 240 seconds) |
2022-01-11 21:14:45 +0100 | <schuelermine[m]> | Oh you can omit braces in one-line let stmts now & still use semicolons? |
2022-01-11 21:15:41 +0100 | <geekosaur> | when they're not nested in some other layout-using construct |
2022-01-11 21:15:53 +0100 | <geekosaur> | let inside of do will break, for example |
2022-01-11 21:16:00 +0100 | <schuelermine[m]> | > let a = 2; b = 3 in [a,b+a] |
2022-01-11 21:16:02 +0100 | <lambdabot> | [2,5] |
2022-01-11 21:16:10 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-11 21:16:37 +0100 | <schuelermine[m]> | …ok, that got turned into a blockquote on Matrix, hope that got through fine |
2022-01-11 21:16:54 +0100 | <geekosaur> | worked fine here |
2022-01-11 21:17:15 +0100 | <geekosaur> | bridging message systems with different conventions has its rough edges :) |
2022-01-11 21:17:35 +0100 | briandaed | (~root@185.234.208.208.r.toneticgroup.pl) (Remote host closed the connection) |
2022-01-11 21:17:51 +0100 | <geekosaur> | you could use @run instead of "> " if matrix is doing weird things with it |
2022-01-11 21:18:25 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-11 21:18:35 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-11 21:19:02 +0100 | <Inst> | question |
2022-01-11 21:19:03 +0100 | <schuelermine[m]> | IMO the best feature of rich text messaging is <details>, that's so convenient if you wanna send loads of text without cluttering up everyone's screens |
2022-01-11 21:19:10 +0100 | <Inst> | is it not possible to dispense wholly with .? |
2022-01-11 21:19:17 +0100 | jkaye | (~jkaye@2601:281:8300:7530:7cb5:a22f:ba66:1688) (Ping timeout: 240 seconds) |
2022-01-11 21:19:22 +0100 | <Inst> | like, i mean, i could always just replace . with a lambda |
2022-01-11 21:19:46 +0100 | <geekosaur> | there are some uses of . that can't be done in other ways, like use with forall |
2022-01-11 21:19:48 +0100 | <Inst> | pure ((<*>) . (pure openFile <*>)) <*> openFilePath <*> pure (pure ReadMode) |
2022-01-11 21:19:53 +0100 | <Inst> | like, how do I get . out? |
2022-01-11 21:20:03 +0100 | <Inst> | lambda solution is always there, of course |
2022-01-11 21:20:09 +0100 | kupi | (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2022-01-11 21:20:10 +0100 | <geekosaur> | @unpl pure ((<*>) . (pure openFile <*>)) <*> openFilePath <*> pure (pure ReadMode) |
2022-01-11 21:20:10 +0100 | <lambdabot> | ((pure (\ x -> (<*>) (pure openFile <*> x)) <*> openFilePath) <*> pure (pure ReadMode)) |
2022-01-11 21:20:18 +0100 | <Inst> | unpl? |
2022-01-11 21:20:30 +0100 | <Inst> | so the only way i can nuke the . is with a lambda? :( |
2022-01-11 21:20:32 +0100 | <geekosaur> | reverse of @pl which removes "points" (variables) |
2022-01-11 21:20:42 +0100 | <Inst> | pointless -> point free? :) |
2022-01-11 21:20:44 +0100 | <geekosaur> | that doens't necessarily mean it's the only way\ |
2022-01-11 21:20:50 +0100 | <bjs> | presumably "un-point-less" :P |
2022-01-11 21:21:11 +0100 | <geekosaur> | yes. "pointless" is just, well, when you see some of the stuff it comes up with, you'll see why some people consider it pointless :) |
2022-01-11 21:21:48 +0100 | <geekosaur> | multiple uses of <*> can sometimes be replaced by use of liftAn for some n |
2022-01-11 21:21:53 +0100 | <Inst> | i know |
2022-01-11 21:21:59 +0100 | <Inst> | but trying to do it with just pure and <*> |
2022-01-11 21:22:08 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) |
2022-01-11 21:22:12 +0100 | <Inst> | it's something about parsing, i'm sure |
2022-01-11 21:22:14 +0100 | <EvanR> | just pure or <*>, no lambda, what else |
2022-01-11 21:22:18 +0100 | <Inst> | hi whatsupdoc, did you finally try learning Haskell yet? |
2022-01-11 21:22:27 +0100 | <Inst> | parens, I guess, or $ |
2022-01-11 21:22:28 +0100 | <whatsupdoc> | lol |
2022-01-11 21:22:37 +0100 | <EvanR> | no parens allowed? |
2022-01-11 21:22:41 +0100 | <Inst> | allowed |
2022-01-11 21:22:56 +0100 | <EvanR> | these rules are turning into an olympic sport |
2022-01-11 21:22:56 +0100 | <whatsupdoc> | why so curious about me learning haskell? |
2022-01-11 21:23:53 +0100 | <Inst> | EvanR: "make a functional IO program that can read and write files on lesson 3 of 'Haskell for non-programmers'" |
2022-01-11 21:24:15 +0100 | <EvanR> | do notation |
2022-01-11 21:24:16 +0100 | <whatsupdoc> | Inst: i'm learning about the stock market right now |
2022-01-11 21:24:34 +0100 | <Inst> | is it ethical to teach do notation without teaching what's happening underneath? |
2022-01-11 21:24:36 +0100 | <EvanR> | and case analysis to dispatch the Maybes if they appear |
2022-01-11 21:24:45 +0100 | <EvanR> | yes it is ethical and probably smart |
2022-01-11 21:24:45 +0100 | <Inst> | i mean all you need is Do |
2022-01-11 21:24:47 +0100 | <monochrom> | Unethical. |
2022-01-11 21:25:04 +0100 | <Inst> | some people after getting monads want to teach a monad tutorial, i want to teach a monad course |
2022-01-11 21:25:06 +0100 | <EvanR> | just get something in IO working |
2022-01-11 21:25:09 +0100 | <Inst> | which is less unethical |
2022-01-11 21:25:13 +0100 | <whatsupdoc> | as soon as that's over, i'll start learning haskell |
2022-01-11 21:25:20 +0100 | <EvanR> | like we saw earlier it doesn't have to have anything to do with Monads |
2022-01-11 21:25:29 +0100 | <Inst> | hmmm, if i paid you $6 would you be a guinea pig for my haskell course? |
2022-01-11 21:25:34 +0100 | <monochrom> | Well, actually I don't have a notion of ethics for this. But I have a notion of efficacy on this. do-notation is more confusing than helping at an early stage. |
2022-01-11 21:25:34 +0100 | <Inst> | it'll be taught on twitch.tv and Discord |
2022-01-11 21:25:39 +0100 | <EvanR> | you used other means and didn't even use the monad instance |
2022-01-11 21:25:59 +0100 | <whatsupdoc> | twitch? I hate live stream stuff, disaster for learning |
2022-01-11 21:26:05 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-11 21:26:05 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-11 21:26:05 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-11 21:26:38 +0100 | <Inst> | tbh i'm thinking it'd be impossible to teach algebraic data types on lesson 2 |
2022-01-11 21:27:01 +0100 | d0ku | (~d0ku@178.43.3.56.ipv4.supernova.orange.pl) |
2022-01-11 21:27:06 +0100 | <Inst> | then intro monads as part of algebraic data types, along with the standard "monad anti-tutorial" |
2022-01-11 21:27:36 +0100 | <EvanR> | speaking of which, why are we learning haskell right now from the perspective of a seasoned practioner attempting to teach it to non-programmers |
2022-01-11 21:27:37 +0100 | <monochrom> | Live stream per se is neither good nor bad for learning. The real difference is between pre-planned and stream-of-consciousness. |
2022-01-11 21:27:42 +0100 | <whatsupdoc> | ablgebraic data types sounds like a class |
2022-01-11 21:27:45 +0100 | <EvanR> | i.e. where most of the monad tutorials came from |
2022-01-11 21:27:50 +0100 | <EvanR> | bad ones |
2022-01-11 21:28:18 +0100 | <EvanR> | like, learn it from the perspective of someone learning it |
2022-01-11 21:28:22 +0100 | <monochrom> | And then statistically most live-streamers are stream-of-consciousness. |
2022-01-11 21:28:38 +0100 | <Inst> | i'm trying to learn it, which is why i feel privileged to blow my mouth off about stuff i don't understand |
2022-01-11 21:28:47 +0100 | <whatsupdoc> | what's the best reosurce for learning haskell? i think if i don't have a structured plan i probably won't be curious to dig into it on my own |
2022-01-11 21:28:51 +0100 | <Inst> | "if I were teaching myself, this would be how I'd do it" |
2022-01-11 21:28:55 +0100 | <Inst> | LYAH is dead |
2022-01-11 21:29:06 +0100 | <Inst> | HPFFP costs money, but you can find a moderately old version online |
2022-01-11 21:29:15 +0100 | <Inst> | apparently people have a grudge against Chris Allen for trying to rip off Julie Moronuki |
2022-01-11 21:29:30 +0100 | <Inst> | LYAH you can still find on archive.org |
2022-01-11 21:29:33 +0100 | <monochrom> | I don't know about best. But http://www.vex.net/~trebla/haskell/learn-sources.html is my comments on some resources I have looked at. |
2022-01-11 21:29:47 +0100 | <monochrom> | And eventually "best" is very personal. |
2022-01-11 21:30:03 +0100 | <Inst> | no relation to that smuggler, monochrom? |
2022-01-11 21:30:07 +0100 | <monochrom> | And ultimately "best" just means the 3rd time you learn. |
2022-01-11 21:30:32 +0100 | Sgeo_ | (~Sgeo@user/sgeo) |
2022-01-11 21:30:37 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-11 21:30:45 +0100 | <whatsupdoc> | It's hard to find the motivation to learn something if I have no reason to learn it. I'm happy with C++ and Python :) |
2022-01-11 21:30:48 +0100 | <Inst> | lesson 2 at least has to be an introduction to the typechecker and why it's telling you to kys |
2022-01-11 21:31:24 +0100 | <[itchyjunk]> | Uh, i thought guard was the | stuff when defining functions. |
2022-01-11 21:31:29 +0100 | <whatsupdoc> | I'll take this course and do all the assignments https://www.seas.upenn.edu/~cis194/fall16/ |
2022-01-11 21:31:34 +0100 | <Inst> | yeah, your only motivation is an off-handed claim in ##programming that you could pick up Haskell in 3 days |
2022-01-11 21:31:37 +0100 | <[itchyjunk]> | Where is the guard in [x | x <- [1..10], even x] ? |
2022-01-11 21:31:42 +0100 | <polyphem> | whatsupdoc: do you do template metaprogramming in c++ ? |
2022-01-11 21:31:48 +0100 | <Inst> | I've met people who, with the appropriate pedagogy probably could do it |
2022-01-11 21:31:51 +0100 | <monochrom> | This is why I don't push myself to learn an unmotivated thing. |
2022-01-11 21:31:55 +0100 | <Inst> | but they were Harvard students overloading 24 credits a term |
2022-01-11 21:31:55 +0100 | <[itchyjunk]> | Inst, someone in ##programming said that? |
2022-01-11 21:31:59 +0100 | <Inst> | whatsupdoc |
2022-01-11 21:32:27 +0100 | <Inst> | (norm is 16 credits, so I'm told) |
2022-01-11 21:32:40 +0100 | <Inst> | in hard sciences, mind you |
2022-01-11 21:32:53 +0100 | <whatsupdoc> | you're looking at 20 units at a top 10 public university, all A+s, 4 upper div CS classes |
2022-01-11 21:33:00 +0100 | <monochrom> | For example people here raved about adjunctions, and I resisted for like 10 years. I finally learned it, but only when it had utility for me. |
2022-01-11 21:33:01 +0100 | <whatsupdoc> | lol |
2022-01-11 21:33:09 +0100 | <Inst> | monochrom: the joke was regarding Lai Changxing |
2022-01-11 21:33:11 +0100 | <monochrom> | And to date I still resist learning lenses. |
2022-01-11 21:33:18 +0100 | Sgeo | (~Sgeo@user/sgeo) (Ping timeout: 256 seconds) |
2022-01-11 21:33:26 +0100 | <whatsupdoc> | i'm sure I can learn it |
2022-01-11 21:33:33 +0100 | <whatsupdoc> | But usually I learn faster when I enjoy learning it |
2022-01-11 21:33:33 +0100 | <Inst> | in 3 days? |
2022-01-11 21:33:45 +0100 | <geekosaur> | [itchyjunk], "|" in general can be read as "such that". in some contexts that means a guard is coming (foo x | x < 5 = ...). in some cases that means something like "where", as in list comprehensions |
2022-01-11 21:33:52 +0100 | <whatsupdoc> | I'm sure I could get the hang of some things after 3 days |
2022-01-11 21:34:14 +0100 | <whatsupdoc> | And start writing meaningful-ish programs at that point |
2022-01-11 21:34:16 +0100 | <[itchyjunk]> | geekosaur, ah the | can be though of as guard then? i see |
2022-01-11 21:34:16 +0100 | <Inst> | okay, so i guess you want money to learn tolerably bad Haskell within 3 days |
2022-01-11 21:34:23 +0100 | <monochrom> | [itchyjunk]: "even x" is the guard. |
2022-01-11 21:34:23 +0100 | <geekosaur> | in some situsations |
2022-01-11 21:34:41 +0100 | <[itchyjunk]> | oh :x |
2022-01-11 21:34:51 +0100 | <[itchyjunk]> | i think i understand |
2022-01-11 21:34:52 +0100 | <Inst> | hmmm |
2022-01-11 21:34:52 +0100 | <whatsupdoc> | Never heard of template metaprogramming polyphem |
2022-01-11 21:34:56 +0100 | <monochrom> | true for some x's and false for some others. |
2022-01-11 21:35:00 +0100 | <geekosaur> | "such that" is the general nmeaning. if you're defining something, "such that" means a guard is coming. in a list comprehension, the list is coming |
2022-01-11 21:35:19 +0100 | <Inst> | look, if you can deliver me a composition dependent strategy calculator in haskell |
2022-01-11 21:35:19 +0100 | <geekosaur> | there are some other uses of "|", but iirc they all fit "such that" |
2022-01-11 21:35:20 +0100 | <polyphem> | whatsupdoc: c++ templates |
2022-01-11 21:35:24 +0100 | <Inst> | in 5 days |
2022-01-11 21:35:29 +0100 | <Inst> | how much would you want for it? |
2022-01-11 21:35:38 +0100 | <whatsupdoc> | polyphem: who hasn't written templates in C++ lol |
2022-01-11 21:36:03 +0100 | <whatsupdoc> | they give power to the language |
2022-01-11 21:36:08 +0100 | <Inst> | that is to say, a program that takes an input of some rules settings and outputs a chart telling you which action in blackjack delivers the most EV |
2022-01-11 21:36:14 +0100 | <polyphem> | whatsupdoc: are they an more advanced and complex c++ feature ? |
2022-01-11 21:36:26 +0100 | <whatsupdoc> | i would probably say so |
2022-01-11 21:36:29 +0100 | <monochrom> | I disagree that "such that" has semantics at all. It is there to just fulfill an English grammar rule. And English is by no means a hallmark of good expression. |
2022-01-11 21:36:45 +0100 | <[itchyjunk]> | hmm |
2022-01-11 21:36:49 +0100 | <Inst> | whatsupdoc? is money sufficient motivation? |
2022-01-11 21:36:53 +0100 | kuribas | (~user@ptr-25vy0ia1hzdpftx2lxu.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2022-01-11 21:36:56 +0100 | <whatsupdoc> | what is up with you lol |
2022-01-11 21:37:05 +0100 | <Inst> | sorry |
2022-01-11 21:37:11 +0100 | <monochrom> | At best it plays the role of a separator. So, purely syntactical. |
2022-01-11 21:37:12 +0100 | <whatsupdoc> | i'm about to get my wisdom teeth removed in 3 hours lol |
2022-01-11 21:37:17 +0100 | <Inst> | i sort of need one |
2022-01-11 21:37:20 +0100 | <Inst> | take it easy :) |
2022-01-11 21:37:29 +0100 | <whatsupdoc> | So the challenge can't start now :) |
2022-01-11 21:37:52 +0100 | <Inst> | and i thought about coding it myself, but then I tried doing a list enumeration of [1..20000000] |
2022-01-11 21:37:58 +0100 | <Inst> | 2 hours to get to 4% |
2022-01-11 21:38:02 +0100 | <Inst> | then again, it was on GHCi |
2022-01-11 21:38:04 +0100 | <whatsupdoc> | I wouldn't be able to test out a 5 day challenge, especially working 40 hours a week |
2022-01-11 21:38:04 +0100 | <EvanR> | hey man, schwarzchild solved einsteins equations while fighting world war I, maybe you could use haskell to take your mind off lol |
2022-01-11 21:38:52 +0100 | <whatsupdoc> | Learning haskell at work lol |
2022-01-11 21:38:54 +0100 | <polyphem> | whatsupdoc: what struck me about haskell, is that whats top end of c++ (templates) , is so easily expressed using haskell , and its more like hello world |
2022-01-11 21:38:56 +0100 | <Inst> | honestly, i think you're the stereotypical "ass" haskeller and you don't even know Haskell |
2022-01-11 21:38:57 +0100 | <monochrom> | Fighting WWI is different from today's 40-hour-week job. |
2022-01-11 21:39:07 +0100 | <Inst> | you'd fit right in |
2022-01-11 21:39:21 +0100 | <EvanR> | refering the wisdom teeth thing |
2022-01-11 21:39:25 +0100 | <whatsupdoc> | gatekeeper |
2022-01-11 21:39:39 +0100 | <whatsupdoc> | you get to chill in a trench during a world war |
2022-01-11 21:39:39 +0100 | <monochrom> | WWI was physically draining but not mentally draining. In fact doing mental work was how to rest. |
2022-01-11 21:39:47 +0100 | <Inst> | from what i've heard |
2022-01-11 21:39:54 +0100 | <Inst> | when American troops got into the trenches |
2022-01-11 21:40:01 +0100 | <whatsupdoc> | put me in a trench and i'd get so bored, i'd reinvent haskell |
2022-01-11 21:40:02 +0100 | <Inst> | all the soldiers on the allied side who seemed lucid from their letters |
2022-01-11 21:40:11 +0100 | <Inst> | seemed like half-dead zombies |
2022-01-11 21:40:12 +0100 | <monochrom> | Today's jobs are mentally draining but not physically draining. In fact turning off your brain and going to gym is how to rest. |
2022-01-11 21:40:14 +0100 | <Inst> | due to the sheer fatigue |
2022-01-11 21:40:37 +0100 | Guest42 | (~Guest42@563BEF60.catv.pool.telekom.hu) (Quit: Client closed) |
2022-01-11 21:40:58 +0100 | <whatsupdoc> | EvanR: lol woosh |
2022-01-11 21:41:49 +0100 | Everything | (~Everythin@37.115.210.35) (Quit: leaving) |
2022-01-11 21:41:53 +0100 | <monochrom> | But perhaps you can join the army. |
2022-01-11 21:42:05 +0100 | <monochrom> | "Join the Army! Learn Haskell!" |
2022-01-11 21:42:46 +0100 | <Inst> | if I ever get my dream of talking Xi Jinping into forcing his country's software industry to use Haskell by default implemented, that might actually come true |
2022-01-11 21:43:17 +0100 | <Inst> | you'll have to learn Haskell in order to discover software vulnerabilities in opposing force electronics |
2022-01-11 21:43:42 +0100 | <Inst> | tbh |
2022-01-11 21:43:51 +0100 | <Inst> | if the Soviet Union still existed, do you think the Soviets would have mandated FP? |
2022-01-11 21:43:51 +0100 | <whatsupdoc> | you probably big on cardano lol |
2022-01-11 21:44:22 +0100 | <whatsupdoc> | FP? |
2022-01-11 21:44:23 +0100 | <EvanR> | and then Americans learn haskell to find vulnerabilities in all china's software because it's written in haskell |
2022-01-11 21:44:32 +0100 | <Inst> | EvanR: win win, no? |
2022-01-11 21:44:41 +0100 | <geekosaur> | depends on whoever talked them into believing that <x> programming strategy is "bourgeois" |
2022-01-11 21:44:44 +0100 | <Inst> | mass Haskell adoption for everyone |
2022-01-11 21:45:05 +0100 | <Inst> | strangely enough, the best Haskell textbooks I've seen were written by Russians |
2022-01-11 21:45:15 +0100 | <geekosaur> | remember that neither politics nor law is particularly rational |
2022-01-11 21:45:20 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) |
2022-01-11 21:45:31 +0100 | <Inst> | Soviets and Chinese have strong baseline math education |
2022-01-11 21:45:32 +0100 | <monochrom> | C++ is too advanced. Haskell is so much easier. |
2022-01-11 21:45:56 +0100 | <Inst> | reason Soviets would have stuck with IP / procedural norms, though, was that they were behind on semi-conductors |
2022-01-11 21:46:34 +0100 | <Inst> | the Chinese are around 10 years behind, with 8nm being cutting edge (with imported equipment) and they're just implementing 14nm, whereas the Taiwanese are going to ship 5nm this year |
2022-01-11 21:47:00 +0100 | <Inst> | so to get the most raw performance out of their semiconductors, they would likely have stuck with imperative programming |
2022-01-11 21:47:11 +0100 | <EvanR> | my other computer is forall x > 0 nm |
2022-01-11 21:48:07 +0100 | ouestbillie | (~gallup@192-222-138-215.qc.cable.ebox.net) |
2022-01-11 21:48:58 +0100 | <[itchyjunk]> | Where do you hide your favorate list comprehension exercises? |
2022-01-11 21:49:06 +0100 | <[itchyjunk]> | having a hard time finding them with google |
2022-01-11 21:49:14 +0100 | <[itchyjunk]> | or maybe "list comprehension" isnt' the right term? |
2022-01-11 21:49:15 +0100 | <[exa]> | [itchyjunk]: protip: try Prolog |
2022-01-11 21:49:16 +0100 | <Inst> | i'll query you some "stuff" |
2022-01-11 21:49:25 +0100 | <Inst> | are you working Lyah? |
2022-01-11 21:49:27 +0100 | <[itchyjunk]> | isn't that a different language? :x |
2022-01-11 21:50:18 +0100 | <[exa]> | list monad and prolog behave similarly (also check out LogicT), so porting some prologish exercises to lists&comprehensions is usually a cool way to find new exercises |
2022-01-11 21:51:15 +0100 | <[itchyjunk]> | Hm, might have to do that. would have been ideal if i found some exercises made for novice haskeller |
2022-01-11 21:51:17 +0100 | <Inst> | nice |
2022-01-11 21:51:22 +0100 | <Inst> | check query |
2022-01-11 21:51:51 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Read error: Connection reset by peer) |
2022-01-11 21:52:08 +0100 | <[exa]> | try doing the "kalotan puzzle" with list comprehensions, not interpreting any of the logic yourself. See http://gauss.ececs.uc.edu/Courses/c694/lectures/Review/Exceptions/review.9.html or here with better hints https://ds26gte.github.io/tyscheme/index-Z-H-16.html#TAG:__tex2page_sec_14.4.1 |
2022-01-11 21:52:14 +0100 | <monochrom> | You may not need many list comprehension exercises. |
2022-01-11 21:52:22 +0100 | michalz | (~michalz@185.246.204.126) |
2022-01-11 21:52:26 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
2022-01-11 21:52:26 +0100 | <[exa]> | [itchyjunk]: ^^ |
2022-01-11 21:52:27 +0100 | <[itchyjunk]> | :O |
2022-01-11 21:52:27 +0100 | <hololeap> | [a] -> LogicT m a -- I've been using (asum . fmap pure) for this, but I'm wondering if there's something more idiomatic |
2022-01-11 21:52:33 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4) |
2022-01-11 21:52:35 +0100 | <polyphem> | [itchyjunk]: i did project euler when i started to learn haskell and i used list comprehension quite a lot when doing the puzzles so maybe thats somthing for you |
2022-01-11 21:52:46 +0100 | <[exa]> | +1 polyphem |
2022-01-11 21:55:02 +0100 | <polyphem> | [itchyjunk]: https://projecteuler.net/ |
2022-01-11 21:55:36 +0100 | <monochrom> | Ugh no, unless you won't ask "how to make it fast". |
2022-01-11 21:56:11 +0100 | <monochrom> | If you fully expect to use list comprehension for brute-forcing and fully expect it's blind brute-forcing then sure. |
2022-01-11 21:59:49 +0100 | <[itchyjunk]> | Can I OR on guards? |
2022-01-11 21:59:50 +0100 | <EvanR> | It's very good at brute forcing |
2022-01-11 21:59:57 +0100 | <polyphem> | monochrom: what do you mean , projecteuler ? |
2022-01-11 22:00:01 +0100 | <[itchyjunk]> | [x | x <- list, blah or blah2 |
2022-01-11 22:00:11 +0100 | <tomsmeding> | :t (||) |
2022-01-11 22:00:12 +0100 | <lambdabot> | Bool -> Bool -> Bool |
2022-01-11 22:00:15 +0100 | <EvanR> | specifically you won't miss elements of the lists |
2022-01-11 22:00:18 +0100 | <monochrom> | Yes Project Euler. |
2022-01-11 22:00:42 +0100 | <monochrom> | > [ x | x <- [1,2,3], even x || odd x] |
2022-01-11 22:00:44 +0100 | <lambdabot> | [1,2,3] |
2022-01-11 22:01:17 +0100 | schweers | (~user@2001:16b8:e94a:ef00:aaa1:59ff:fe3f:235c) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.0.91)) |
2022-01-11 22:02:30 +0100 | <[itchyjunk]> | https://bpa.st/YBQQ |
2022-01-11 22:02:32 +0100 | <[itchyjunk]> | ta da |
2022-01-11 22:03:31 +0100 | <polyphem> | foldr (+) 0 = sum |
2022-01-11 22:04:10 +0100 | <polyphem> | > sum [1..10] |
2022-01-11 22:04:11 +0100 | <lambdabot> | 55 |
2022-01-11 22:04:15 +0100 | <EvanR> | shouldn't sum really be a (strict) foldl |
2022-01-11 22:04:20 +0100 | <[itchyjunk]> | oh |
2022-01-11 22:04:21 +0100 | jkaye | (~jkaye@2601:281:8300:7530:a9ff:dc19:c096:5ef5) |
2022-01-11 22:04:55 +0100 | <tomsmeding> | EvanR: it is since ghc 9.2 |
2022-01-11 22:05:02 +0100 | <monochrom> | It doesn't matter for 10 numbers. |
2022-01-11 22:05:03 +0100 | <tomsmeding> | before that it was foldl, of all things |
2022-01-11 22:05:13 +0100 | <bjs> | I think EvanR is saying for [itchyjunk]'s benefit |
2022-01-11 22:05:16 +0100 | <EvanR> | oh it is? cool |
2022-01-11 22:05:42 +0100 | <tomsmeding> | EvanR: https://hackage.haskell.org/package/base-4.15.1.0/docs/src/GHC.List.html#sum vs https://hackage.haskell.org/package/base-4.16.0.0/docs/src/GHC.List.html#sum |
2022-01-11 22:06:00 +0100 | <bjs> | [itchyjunk]: you should keep doing fold exercises so you get a feel for when foldr and foldl make sense, it's tricky |
2022-01-11 22:06:25 +0100 | <[itchyjunk]> | yeah foldl foldr has been the worst of them so far! |
2022-01-11 22:06:26 +0100 | notzmv | (~zmv@user/notzmv) |
2022-01-11 22:06:36 +0100 | <EvanR> | FOLD LIFE |
2022-01-11 22:06:39 +0100 | <bjs> | tomsmeding: why was it foldl not foldl' before? I can't see a benefit |
2022-01-11 22:07:09 +0100 | <geekosaur> | becuase that's what the haskell report's prelude said it should be |
2022-01-11 22:07:19 +0100 | <tomsmeding> | https://www.haskell.org/onlinereport/haskell2010/haskellch9.html#x16-1720009.1 |
2022-01-11 22:07:30 +0100 | <EvanR> | yeah so no benefit |
2022-01-11 22:07:35 +0100 | <tomsmeding> | indeed |
2022-01-11 22:10:16 +0100 | jgeerds_ | (~jgeerds@55d4bbed.access.ecotel.net) |
2022-01-11 22:10:25 +0100 | <bjs> | [itchyjunk]: it might be instructive to try write your own foldl function using foldr (and vice-versa) and considering how they behave on infinite lists |
2022-01-11 22:12:23 +0100 | Topsi | (~Tobias@dyndsl-095-033-027-133.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
2022-01-11 22:12:24 +0100 | <[itchyjunk]> | wth! |
2022-01-11 22:12:39 +0100 | <[itchyjunk]> | write foldl using foldr? heh. alright, maybe i'll try that |
2022-01-11 22:12:43 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-11 22:12:48 +0100 | <[itchyjunk]> | i did write filter using foldl and foldr i think |
2022-01-11 22:13:47 +0100 | <polyphem> | [itchyjunk]: or you watch a video : https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiB__zhzqr… |
2022-01-11 22:14:08 +0100 | breakwindows | (~brkwnds@86.107.75.45) |
2022-01-11 22:14:10 +0100 | <polyphem> | [itchyjunk]: sorry , https://www.youtube.com/watch?v=t9pxo7L8mS0 |
2022-01-11 22:15:39 +0100 | `2jt | (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) (Ping timeout: 256 seconds) |
2022-01-11 22:17:17 +0100 | CiaoSen | (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-11 22:17:18 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-11 22:17:18 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-11 22:17:18 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-11 22:18:59 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2022-01-11 22:19:37 +0100 | biog | (~user1@static.39.160.132.142.clients.your-server.de) (Quit: ZZZzzz…) |
2022-01-11 22:19:56 +0100 | <Inst> | does anyone know / do fantasyland here? |
2022-01-11 22:19:59 +0100 | <Inst> | I'm reading a bit up about it |
2022-01-11 22:20:20 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds) |
2022-01-11 22:22:02 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-11 22:22:09 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2022-01-11 22:23:29 +0100 | <Inst> | ultimate love letter to haskell, tbh |
2022-01-11 22:23:35 +0100 | <Inst> | well, it'd be ultimate if you had haskell syntax |
2022-01-11 22:23:56 +0100 | <EvanR> | "fantasyland" is haskell related? |
2022-01-11 22:24:43 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 256 seconds) |
2022-01-11 22:26:09 +0100 | <Inst> | Fantasyland is a specification for Javascript libraries inspired by Haskell |
2022-01-11 22:26:48 +0100 | <Inst> | it came after some people on Javascript committees told the devs "you must live in Fantasyland" after they suggested porting FP structures to the Javascript language |
2022-01-11 22:26:52 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-01-11 22:28:08 +0100 | <geekosaur> | *snort* |
2022-01-11 22:30:04 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2022-01-11 22:31:11 +0100 | SummerSonw | (~The_viole@203.77.49.232) |
2022-01-11 22:32:00 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-11 22:32:27 +0100 | <[itchyjunk]> | Say i wanted to define a list l such that the first two element is 1 and 2 and the third element is the sum of those. so `let l = 1:2:"sum of those things"` `let l = 1:2:foldr (+) 0 l` ish? |
2022-01-11 22:32:28 +0100 | pottsy | (~pottsy@129.227.183.244) (Ping timeout: 250 seconds) |
2022-01-11 22:33:05 +0100 | <[itchyjunk]> | but i can see this is creating recursions that would mess it up |
2022-01-11 22:33:28 +0100 | <geekosaur> | you might be interestd in zipWith |
2022-01-11 22:33:33 +0100 | <[itchyjunk]> | hmmm |
2022-01-11 22:33:50 +0100 | <geekosaur> | see the classic definition of fibs |
2022-01-11 22:33:55 +0100 | biog | (~user1@static.39.160.132.142.clients.your-server.de) |
2022-01-11 22:34:37 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:4f29:e68c:50c9:fe2) (Ping timeout: 240 seconds) |
2022-01-11 22:35:00 +0100 | <geekosaur> | > let l = 1:2:zipWith (+) l (tail l) in l |
2022-01-11 22:35:02 +0100 | <lambdabot> | [1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,1771... |
2022-01-11 22:35:45 +0100 | <whatsupdoc> | is haskell the future? |
2022-01-11 22:35:48 +0100 | <geekosaur> | hm, or did you want to go from the beginning for each one? |
2022-01-11 22:36:17 +0100 | <[itchyjunk]> | i am not sure what i wanted anymore! :P but i guess i'll learn up on zipWith a bit more |
2022-01-11 22:36:17 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2022-01-11 22:36:18 +0100 | <geekosaur> | whatsupdoc, haskell is already having an impact on many other languages. not sure haskell itself is the future but its ideas certainly seem to be |
2022-01-11 22:36:20 +0100 | <[itchyjunk]> | might be a useful thing |
2022-01-11 22:36:21 +0100 | <EvanR> | whatsupdoc, I'm sure someone's been asking this since 1990 |
2022-01-11 22:36:43 +0100 | <polyphem> | whatsupdoc: wrong question , do YOU want it to be the future ? |
2022-01-11 22:36:49 +0100 | <whatsupdoc> | no |
2022-01-11 22:37:11 +0100 | <Inst> | it's sort of insulting, tbh, given that "Fusion is the energy technology of the future and has been since the 1950s." |
2022-01-11 22:37:11 +0100 | <EvanR> | haskell is the present |
2022-01-11 22:37:42 +0100 | <EvanR> | acme-now |
2022-01-11 22:37:44 +0100 | <polyphem> | haskell has the tardis , its past and future |
2022-01-11 22:37:48 +0100 | <Inst> | like I said, apparently Javascript coders got so jealous they reimplemented a good portion of the Haskell language in JS |
2022-01-11 22:38:09 +0100 | <EvanR> | javascriptZ ? |
2022-01-11 22:38:13 +0100 | <[itchyjunk]> | I want causality to stop existing. So we already had this conversation tomorrow. |
2022-01-11 22:38:16 +0100 | <Inst> | is javascriptZ a thing? |
2022-01-11 22:38:30 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-01-11 22:38:31 +0100 | <geekosaur> | there's alsourescript and typescript |
2022-01-11 22:38:45 +0100 | <geekosaur> | *also purescript |
2022-01-11 22:38:47 +0100 | <Inst> | fantasyland libs, i mean |
2022-01-11 22:39:13 +0100 | <whatsupdoc> | typescript is functionally equivalent to haskell? |
2022-01-11 22:39:24 +0100 | <[itchyjunk]> | So i want to reimplement foldr using foldl. is my signature correct? (a -> b -> b) -> b -> [a] -> [b] |
2022-01-11 22:39:36 +0100 | <[itchyjunk]> | or do i need the constraint of Foldable t here? |
2022-01-11 22:39:39 +0100 | <EvanR> | you mean implement foldl with foldr |
2022-01-11 22:39:43 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2022-01-11 22:39:51 +0100 | <[itchyjunk]> | i thought maybe using [a] lets me skip it |
2022-01-11 22:40:02 +0100 | <geekosaur> | typescript takes the idea of haskell-ish types and adds them to javascript |
2022-01-11 22:40:04 +0100 | <Inst> | did someone teach you accumulators yet? |
2022-01-11 22:40:04 +0100 | <[itchyjunk]> | i thought i was trying to implement foldr using foldl |
2022-01-11 22:40:18 +0100 | <geekosaur> | purescript is a closer approximation of haskell |
2022-01-11 22:40:30 +0100 | <[itchyjunk]> | hmm i think i might have used accumulator to count the length of a string |
2022-01-11 22:40:42 +0100 | <EvanR> | foldl fails any task for infinite list |
2022-01-11 22:40:49 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Client Quit) |
2022-01-11 22:40:50 +0100 | <[itchyjunk]> | :o |
2022-01-11 22:41:05 +0100 | <Inst> | foldl uses an accumulator as a central value, then kills itself and displays the accumulator on death |
2022-01-11 22:41:07 +0100 | <[itchyjunk]> | so you can represent foldl with foldr but not vice versa? /o\ |
2022-01-11 22:41:20 +0100 | <polyphem> | [itchyjunk]: i really urge you to watch the video :) |
2022-01-11 22:41:26 +0100 | talismanick | (~talismani@c-67-164-73-220.hsd1.ca.comcast.net) |
2022-01-11 22:41:34 +0100 | <[itchyjunk]> | ive watched first 10 mins |
2022-01-11 22:41:51 +0100 | <Inst> | yeah, because the function has to finish processing the data before the accumulator can process |
2022-01-11 22:42:07 +0100 | zer0bitz | (~zer0bitz@2001:2003:f444:a000:2d06:fff0:d105:7c1) (Ping timeout: 268 seconds) |
2022-01-11 22:42:12 +0100 | danso | (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Quit: WeeChat 3.3) |
2022-01-11 22:42:13 +0100 | <polyphem> | hmm |
2022-01-11 22:42:33 +0100 | danso | (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) |
2022-01-11 22:42:35 +0100 | <EvanR> | the real answer lies in the code for foldl |
2022-01-11 22:42:41 +0100 | <Inst> | accumulators: basically a sneaky way to get something like mutable variables, except with no side effects |
2022-01-11 22:42:42 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2022-01-11 22:43:07 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-01-11 22:43:25 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-01-11 22:44:03 +0100 | biberu | (~biberu@user/biberu) (Read error: Connection reset by peer) |
2022-01-11 22:44:09 +0100 | <Inst> | i wonder what proportion of JS coders use fantasyland libs |
2022-01-11 22:44:13 +0100 | danso | (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Client Quit) |
2022-01-11 22:44:26 +0100 | <Inst> | might possibly be more fantasyland users than Haskellers proper |
2022-01-11 22:45:34 +0100 | danso | (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) |
2022-01-11 22:45:38 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-11 22:47:53 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-01-11 22:48:35 +0100 | danso | (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Client Quit) |
2022-01-11 22:50:19 +0100 | danso | (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) |
2022-01-11 22:52:33 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:4895:4e42:bd43:c273) |
2022-01-11 22:54:43 +0100 | <EvanR> | Inst, a sneaky way to get something like mutable variables except no side effects is ST |
2022-01-11 22:54:44 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:c522:bda4:b63a:6841) (Ping timeout: 252 seconds) |
2022-01-11 22:55:24 +0100 | xff0x | (~xff0x@2001:1a81:534d:9900:8245:a333:af79:9a1f) |
2022-01-11 22:56:08 +0100 | biberu | (~biberu@user/biberu) |
2022-01-11 22:58:41 +0100 | simpleauthority | (~simpleaut@user/simpleauthority) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-01-11 22:58:49 +0100 | pdroman | (~pdroman@27.red-88-5-21.dynamicip.rima-tde.net) |
2022-01-11 22:59:15 +0100 | x28girl | (~x28girl@user/x28girl) |
2022-01-11 23:00:34 +0100 | simpleauthority | (~simpleaut@user/simpleauthority) |
2022-01-11 23:00:44 +0100 | pdroman | (~pdroman@27.red-88-5-21.dynamicip.rima-tde.net) (Client Quit) |
2022-01-11 23:01:26 +0100 | x28_girl | (~x28girl@user/x28girl) |
2022-01-11 23:02:00 +0100 | myrrh | (~markus@user/poet) |
2022-01-11 23:02:00 +0100 | danso | (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Quit: WeeChat 3.3) |
2022-01-11 23:03:20 +0100 | x28__girl | (~x28girl@user/x28girl) |
2022-01-11 23:05:06 +0100 | x28girl | (~x28girl@user/x28girl) (Ping timeout: 256 seconds) |
2022-01-11 23:08:50 +0100 | Guest87 | (~Guest87@151.82.3.46) |
2022-01-11 23:08:51 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-01-11 23:08:51 +0100 | Guest87 | (~Guest87@151.82.3.46) (Client Quit) |
2022-01-11 23:09:01 +0100 | acidjnk | (~acidjnk@p200300d0c7271e52381c42d4d3ad2973.dip0.t-ipconnect.de) |
2022-01-11 23:09:01 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e52381c42d4d3ad2973.dip0.t-ipconnect.de) |
2022-01-11 23:09:25 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-01-11 23:10:12 +0100 | breakwindows | (~brkwnds@86.107.75.45) (Ping timeout: 256 seconds) |
2022-01-11 23:11:17 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds) |
2022-01-11 23:14:09 +0100 | Guest87 | (~Guest87@151.82.3.46) |
2022-01-11 23:17:30 +0100 | x28__girl | (~x28girl@user/x28girl) (Remote host closed the connection) |
2022-01-11 23:17:34 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-01-11 23:17:57 +0100 | x28__girl | (~x28girl@user/x28girl) |
2022-01-11 23:18:24 +0100 | Guest8762 | (~Guest87@151.82.3.46) |
2022-01-11 23:18:58 +0100 | x28__girl | (~x28girl@user/x28girl) (Max SendQ exceeded) |
2022-01-11 23:19:27 +0100 | x28__girl | (~x28girl@user/x28girl) |
2022-01-11 23:20:01 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-11 23:20:43 +0100 | Guest8762 | (~Guest87@151.82.3.46) (Client Quit) |
2022-01-11 23:20:45 +0100 | x28__girl | (~x28girl@user/x28girl) (Max SendQ exceeded) |
2022-01-11 23:21:55 +0100 | x28__girl | (~x28girl@user/x28girl) |
2022-01-11 23:23:35 +0100 | Guest87 | (~Guest87@151.82.3.46) (Quit: Client closed) |
2022-01-11 23:24:42 +0100 | danso | (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) |
2022-01-11 23:25:25 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Read error: Connection reset by peer) |
2022-01-11 23:25:55 +0100 | <Inst> | https://groups.seas.harvard.edu/courses/cs152/2019sp/lectures/lec18-monads.pdf |
2022-01-11 23:31:20 +0100 | biog | (~user1@static.39.160.132.142.clients.your-server.de) (Quit: ZZZzzz…) |
2022-01-11 23:32:16 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-11 23:32:59 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-11 23:36:37 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2022-01-11 23:39:25 +0100 | SummerSonw | (~The_viole@203.77.49.232) (Ping timeout: 240 seconds) |
2022-01-11 23:42:51 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-11 23:43:41 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-11 23:44:06 +0100 | biog | (~user1@static.39.160.132.142.clients.your-server.de) |
2022-01-11 23:45:12 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-11 23:46:25 +0100 | michalz | (~michalz@185.246.204.126) (Remote host closed the connection) |
2022-01-11 23:48:47 +0100 | <[itchyjunk]> | How do people end up defining groups in programming language? |
2022-01-11 23:48:55 +0100 | <[itchyjunk]> | as a data structure? list comprehension? |
2022-01-11 23:49:07 +0100 | danso | (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Quit: WeeChat 3.3) |
2022-01-11 23:49:32 +0100 | <geekosaur> | depends on what you mean by group, and on how you're going to use it |
2022-01-11 23:50:11 +0100 | <geekosaur> | singly-linked lists are often a poor data structure; usually it's better to think of them as loops instead of as data structures |
2022-01-11 23:50:45 +0100 | danso | (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) |
2022-01-11 23:50:54 +0100 | <hpc> | obligatory "as a monoid with an inverse operation" :D |
2022-01-11 23:51:06 +0100 | <jackdk> | https://hackage.haskell.org/package/groups |
2022-01-11 23:52:12 +0100 | <Logio> | [itchyjunk]: groups as in groups of stuff (i.e. sets), or the algebraic structure? |
2022-01-11 23:52:24 +0100 | <[itchyjunk]> | algebraid structure :s |
2022-01-11 23:53:16 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-01-11 23:54:02 +0100 | qhong_ | (~qhong@rescomp-21-400677.stanford.edu) |
2022-01-11 23:54:23 +0100 | <[itchyjunk]> | I guess monoid is a datastructure and group just extends it :D |
2022-01-11 23:55:03 +0100 | <qhong_> | Anyone has experience successfully get exference or MagicHaskeller running? They seem bitrot and I can't get them pass build at all |
2022-01-11 23:55:24 +0100 | <geekosaur> | a monoid iusn't so much a data structure as an attribute of some (many) data structures |
2022-01-11 23:55:30 +0100 | <geekosaur> | same with groups |
2022-01-11 23:55:48 +0100 | <Logio> | unless you consider a tuple of a type and a function a data structure |
2022-01-11 23:55:52 +0100 | alx741 | (~alx741@157.100.93.160) (Read error: Connection reset by peer) |
2022-01-11 23:56:06 +0100 | <hpc> | i suppose there are other ways to define it, but via monoid seems the most natural |
2022-01-11 23:56:40 +0100 | <hpc> | maybe each axis of the "group cube" could be its own class, and you build group alacarte? https://upload.wikimedia.org/wikipedia/commons/3/3f/Magma_to_group4.svg |
2022-01-11 23:56:40 +0100 | danso | (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Quit: WeeChat 3.3) |
2022-01-11 23:57:20 +0100 | danso | (~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) |
2022-01-11 23:58:27 +0100 | alx741 | (~alx741@157.100.93.160) |
2022-01-11 23:59:22 +0100 | <geekosaur> | qhong_, poking at exference it looks like the usual problem with <> having been adopted by the Prelude with a different meaning |