2021/06/15

2021-06-15 00:00:15 +0200 <monochrom> There is going to be an early, simplistic stage of "Maybe doesn't count as a type", and an intermediate stage of needing to care about the kind system, in which case Maybe is a type, just that its kind is not *
2021-06-15 00:01:14 +0200 <maerwald> you can teach 10 weeks of haskell without ever mentioning kinds :)
2021-06-15 00:01:15 +0200 <ski> in the latter, all of `Int',`Maybe Int',`Either String Int',`Maybe',`Either',`Either String' are types (the first three are sometimes called "concrete types", while the latter three are parameterized types, are type functions). (both `Eq' and `Functor` are type classes)
2021-06-15 00:02:02 +0200 <monochrom> You need to make a decision on how much you want to teach your friend, and optimize for that. There will not be one single "standard" "agreement" "truth" that is optimal for all purposes and contexts. I would think you already knew.
2021-06-15 00:02:12 +0200 <geekosaur> safinaskar, even ghc disagrees with itself, sometimes it uses "type" to mean kind * and other times other kinds
2021-06-15 00:02:39 +0200 <geekosaur> notably "Expected a type, but found…"
2021-06-15 00:02:54 +0200 <hpc> there's also the symmetry with the value level to consider
2021-06-15 00:03:02 +0200 <ski> (and all type constructors are types, but not vice versa. type constructors, of the aforementioned, are (only) `Int',`Maybe' (`String' is a type synonym for `[Char]', which is syntactic sygar for `[] Char'. `[]' and `Char' are also type constructors))
2021-06-15 00:03:09 +0200skiprefers the latter terminology
2021-06-15 00:03:14 +0200 <hpc> we don't say "functions are not values", or that True is a value but Just is a value constructor?
2021-06-15 00:03:15 +0200 <monochrom> In fact, I teach 12 weeks and still don't need to talk about kinds.
2021-06-15 00:03:21 +0200 <hpc> s/?//
2021-06-15 00:03:43 +0200 <maerwald> navigation is more important than terminology
2021-06-15 00:03:57 +0200 <monochrom> I think the 1st time you really need to discuss kinds is monad transformers.
2021-06-15 00:04:18 +0200tonyday(~user@202-65-93-249.ip4.superloop.com) (Ping timeout: 244 seconds)
2021-06-15 00:04:27 +0200charukiewicz_charukiewicz
2021-06-15 00:04:29 +0200 <ski> `fmap
2021-06-15 00:04:33 +0200 <ski> ' ?
2021-06-15 00:05:08 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-06-15 00:05:19 +0200 <monochrom> And yeah, if the audience know that "x :: Maybe Int" is cool and "x :: Maybe" isn't, you've already succeeded.
2021-06-15 00:05:32 +0200 <safinaskar> leaving
2021-06-15 00:05:34 +0200safinaskar(~safinaska@109.252.90.89) ()
2021-06-15 00:05:43 +0200 <maerwald> haskellers misuse 'purity' all the time, but it helps them navigate through concepts relevant to them
2021-06-15 00:06:51 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 00:06:55 +0200 <monochrom> May I take a naughty take on that?
2021-06-15 00:07:11 +0200tonyday(~user@202-65-93-249.ip4.superloop.com)
2021-06-15 00:07:15 +0200 <janus> yes, please tell us!
2021-06-15 00:07:23 +0200 <monochrom> haskellers miuses "unsafe" all the time, and it helps them wage endian wars >:)
2021-06-15 00:07:50 +0200tremon(~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
2021-06-15 00:07:55 +0200hemlock(~hemlock@2607:fb90:9629:beeb:c0f9:725f:e469:1bcf) (Ping timeout: 244 seconds)
2021-06-15 00:07:56 +0200eflister(~eflister@2601:1c0:5501:c150:a9cd:cab7:e080:34d4) (Quit: Client closed)
2021-06-15 00:08:12 +0200hemlock(~hemlock@ip72-203-188-10.tu.ok.cox.net)
2021-06-15 00:08:24 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533) (Remote host closed the connection)
2021-06-15 00:08:59 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533)
2021-06-15 00:09:00 +0200ddellacosta(~ddellacos@89.46.62.229)
2021-06-15 00:09:28 +0200 <monochrom> Really, "is Maybe a type?" is an XY problem. Probably all terminlogy questions are.
2021-06-15 00:09:49 +0200 <monochrom> The asker is using that to hide the real question "is x::Maybe legal?"
2021-06-15 00:10:00 +0200 <monochrom> for example.
2021-06-15 00:10:26 +0200 <maerwald> I'm a bit worried about the friend
2021-06-15 00:11:00 +0200 <monochrom> I agree, but this terminology question is very minor and trivial compared to:
2021-06-15 00:11:43 +0200 <monochrom> We're talking about a speaker who says "THREAT of making yet another parser library"
2021-06-15 00:12:05 +0200 <monochrom> Are they delusional or what. Did they forget their meds.
2021-06-15 00:12:36 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533) (Remote host closed the connection)
2021-06-15 00:12:43 +0200xsperry(~as@user/xsperry)
2021-06-15 00:12:52 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533)
2021-06-15 00:13:07 +0200 <monochrom> Raising a trivial first-world problem of having more or fewer libraries to the level of, like, terrorism.
2021-06-15 00:13:44 +0200ddellacosta(~ddellacos@89.46.62.229) (Ping timeout: 272 seconds)
2021-06-15 00:14:04 +0200 <monochrom> It's why I refused to answer their parser question a few days ago.
2021-06-15 00:14:12 +0200 <maerwald> unification seems to be a common theme these days
2021-06-15 00:14:22 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-06-15 00:15:05 +0200 <geekosaur> looked to me like they were making so much noise over "can't be monadic" yet one of their requirements seemed to require a monadic parser
2021-06-15 00:16:09 +0200 <monochrom> Oh, I wouldn't be surprised if they had two points that logically imply "can't be monoadic" and one point that logically implies "must be monadic".
2021-06-15 00:16:11 +0200Schrostfutz_(~Schrostfu@p5de88aa6.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2021-06-15 00:16:29 +0200 <maerwald> maybe they need selective!
2021-06-15 00:16:36 +0200 <maerwald> oh, do we have selective parsers?
2021-06-15 00:16:38 +0200 <monochrom> I mean what do you expect from someone who spams the word "THREAT" in all caps.
2021-06-15 00:17:09 +0200 <monochrom> I think no, but I haven't really checked.
2021-06-15 00:17:14 +0200bor0(~boro@user/bor0) (Quit: Leaving)
2021-06-15 00:17:17 +0200 <maerwald> I admit I have no intuition about what a selective parser looks like
2021-06-15 00:17:18 +0200chisui(~chisui@200116b8662d980089ca00d34d7b3df6.dip.versatel-1u1.de) (Ping timeout: 250 seconds)
2021-06-15 00:18:06 +0200 <monochrom> Maybe I can somewhat explain it.
2021-06-15 00:18:40 +0200Topsi(~Tobias@dyndsl-095-033-094-176.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-06-15 00:19:09 +0200awth13(~user@user/awth13) (Remote host closed the connection)
2021-06-15 00:19:10 +0200 <monochrom> Suppose you only need to parse for a CFG. And suppose someone has already given you "satisfy :: (Token -> Bool) -> Parser Token" as a given primitive.
2021-06-15 00:19:20 +0200 <monochrom> Then you find out that you only need Alternative.
2021-06-15 00:19:23 +0200awth13(~user@user/awth13)
2021-06-15 00:19:42 +0200 <monochrom> Furthermore, you find that to implement satisfy, you only need Selective.
2021-06-15 00:22:37 +0200alexeikale(~alexeikal@2601:1c2:1b80:100:4ea5:a35a:95ba:fcb1)
2021-06-15 00:23:13 +0200 <monochrom> So for example, these days when I teach chainl1 and chainr1 to my students, I show them an implementation that stays within Alternative. (The traditional Hutton version uses MonadPlus, e.g., uses >>=.)
2021-06-15 00:23:43 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533) (Remote host closed the connection)
2021-06-15 00:24:01 +0200 <maerwald> right, selective is a way to recover from a parse failure, but it still doesn't allow you to dynamically choose parsers
2021-06-15 00:24:03 +0200 <tonyday> Is there a new parser library? I love them - a good way to check on latest technique etc.
2021-06-15 00:26:09 +0200 <geekosaur> not yet, at least
2021-06-15 00:26:21 +0200 <shachaf> The latest technique: Make your grammar LL(1) and then use any old way of writing a parser.
2021-06-15 00:26:39 +0200 <shachaf> The secret parser library authors don't want you to know.
2021-06-15 00:26:41 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533)
2021-06-15 00:27:43 +0200involans(~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net) (Ping timeout: 272 seconds)
2021-06-15 00:27:47 +0200 <maerwald> I switched to regex-posix :>
2021-06-15 00:28:04 +0200 <maerwald> (and then got memory errors on darwin)
2021-06-15 00:28:13 +0200 <monochrom> haha yikes
2021-06-15 00:28:26 +0200 <maerwald> or was it windows, I forget
2021-06-15 00:29:42 +0200haskman(~haskman@171.61.149.211) (Quit: Going to sleep. ZZZzzz…)
2021-06-15 00:30:04 +0200 <maerwald> ah yeah, windows https://gitlab.haskell.org/ghc/ghc/-/issues/19945
2021-06-15 00:30:18 +0200tonyday(~user@202-65-93-249.ip4.superloop.com) (Remote host closed the connection)
2021-06-15 00:30:37 +0200 <maerwald> I remember merijn boasting how easy FFI is in haskell
2021-06-15 00:30:39 +0200 <maerwald> yeah... no
2021-06-15 00:31:41 +0200dhil(~dhil@80.208.56.181) (Ping timeout: 244 seconds)
2021-06-15 00:34:19 +0200benin036(~benin@183.82.176.206)
2021-06-15 00:35:34 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 00:36:08 +0200nckx(~nckx@tobias.gr) (Quit: Updating my Guix System <https://guix.gnu.org>)
2021-06-15 00:38:02 +0200eL_Bart0(eL_Bart0@dietunichtguten.org) (Quit: Restarting)
2021-06-15 00:38:12 +0200eL_Bart0(eL_Bart0@dietunichtguten.org)
2021-06-15 00:40:37 +0200nckx(~nckx@tobias.gr)
2021-06-15 00:42:52 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-06-15 00:44:02 +0200tonyday(~user@202-65-93-249.ip4.superloop.com)
2021-06-15 00:45:11 +0200 <janus> how can it be that `catMaybes = [... | Just x <- xs]` works? is it a property of the list comprehension that it skips an element when the pattern fails?
2021-06-15 00:45:15 +0200 <janus> or is it something more general?
2021-06-15 00:46:11 +0200econo(uid147250@user/econo)
2021-06-15 00:46:13 +0200 <geekosaur> the former, when the pattern match fails it appends the empty list to the result instead of the result of the pattern as a singleton list
2021-06-15 00:47:25 +0200 <janus> so MonadFail is not involved?
2021-06-15 00:47:25 +0200 <geekosaur> if you use the monadic desugaring of list comprehensions, the pattern failing alls fail which is [] in the list monad
2021-06-15 00:48:02 +0200 <geekosaur> but that's I think only used when MonadComprehensions is turned on; I don't recall the simpler desugaring it otherwise uses
2021-06-15 00:48:27 +0200 <geekosaur> @undo [x | Just x <- xs]
2021-06-15 00:48:27 +0200 <lambdabot> concatMap (\ a -> case a of { Just x -> [x]; _ -> []}) xs
2021-06-15 00:48:43 +0200 <geekosaur> there you go
2021-06-15 00:48:49 +0200 <janus> oh, cool
2021-06-15 00:49:15 +0200NieDzejkob_(~quassel@195.149.98.3) (Ping timeout: 244 seconds)
2021-06-15 00:49:17 +0200 <janus> @undo [(x,y) | (x, Just y) <- xs]
2021-06-15 00:49:17 +0200 <lambdabot> concatMap (\ a -> case a of { (x, Just y) -> [(x, y)]; _ -> []}) xs
2021-06-15 00:49:28 +0200 <ski> > do Just x <- [Just 0,Nothing,Just 2]; [x]
2021-06-15 00:49:30 +0200 <lambdabot> [0,2]
2021-06-15 00:49:40 +0200ddellacosta(~ddellacos@86.106.143.21)
2021-06-15 00:49:45 +0200 <ski> @undo do Just x <- [Just 0,Nothing,Just 2]; [x]
2021-06-15 00:49:46 +0200 <lambdabot> [Just 0, Nothing, Just 2] >>= \ a -> case a of { Just x -> [x]; _ -> fail ""}
2021-06-15 00:50:01 +0200 <monochrom> It is up to you which model to use: "it's a rule of list comprehension to skip pattern mismatches", "it is a special case of MonadFail". They give the same prediction, I wouldn't draw a hard line between them.
2021-06-15 00:50:38 +0200 <monochrom> That is, unless you ask about possible differences in generated asm code even under -O10^80.
2021-06-15 00:50:47 +0200 <janus> don't like it calling fail with an empty string. so i am happy to avoid `fail`
2021-06-15 00:51:05 +0200 <ski> @src Maybe fail
2021-06-15 00:51:06 +0200 <lambdabot> fail _ = Nothing
2021-06-15 00:51:22 +0200 <ski> @src [] fail
2021-06-15 00:51:22 +0200 <lambdabot> fail _ = []
2021-06-15 00:51:29 +0200 <janus> but what if was another monad? tempting fate
2021-06-15 00:51:49 +0200 <hpc> @src IO fail
2021-06-15 00:51:49 +0200 <lambdabot> fail s = failIO s
2021-06-15 00:51:49 +0200 <monochrom> Sure, if it's another monad, then MonadFail is really invoked.
2021-06-15 00:52:02 +0200ham(~ham4@user/ham) (Read error: Connection reset by peer)
2021-06-15 00:54:13 +0200ddellacosta(~ddellacos@86.106.143.21) (Ping timeout: 244 seconds)
2021-06-15 00:54:38 +0200ham(~ham4@user/ham)
2021-06-15 00:55:34 +0200NieDzejkob(~quassel@195.149.98.3)
2021-06-15 00:56:17 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-06-15 00:56:44 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-06-15 00:56:48 +0200hemlock(~hemlock@ip72-203-188-10.tu.ok.cox.net) (Ping timeout: 272 seconds)
2021-06-15 00:57:17 +0200hgolden(~hgolden2@cpe-172-114-84-61.socal.res.rr.com) (Remote host closed the connection)
2021-06-15 00:57:41 +0200hemlock(~hemlock@2607:fb90:9629:beeb:8fe5:1eb6:ded9:dd19)
2021-06-15 00:57:41 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-06-15 00:58:10 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-06-15 01:02:36 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26)
2021-06-15 01:02:53 +0200kayprish(~kayprish@cable-188-2-229-172.dynamic.sbb.rs) (Remote host closed the connection)
2021-06-15 01:03:08 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Ping timeout: 272 seconds)
2021-06-15 01:04:07 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-06-15 01:04:20 +0200warnz(~warnz@2600:1700:77c0:5610:210a:ba95:5325:60a6) (Remote host closed the connection)
2021-06-15 01:06:49 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26) (Ping timeout: 244 seconds)
2021-06-15 01:09:28 +0200 <DigitalKiwi> 21:57 ski: in the former, `Int',`Maybe Int' are types, `Maybe
2021-06-15 01:09:28 +0200bfrk(~bfrk@200116b8451b0900bae0ed5ddd267e3d.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
2021-06-15 01:10:18 +0200 <DigitalKiwi> i was very concerned for a minute
2021-06-15 01:10:55 +0200 <monochrom> You should have faith in ski. :)
2021-06-15 01:13:10 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-06-15 01:13:41 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-15 01:13:42 +0200 <DigitalKiwi> i have no lack of faith in ski, maybe
2021-06-15 01:15:27 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-15 01:15:54 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-15 01:16:30 +0200lavaman(~lavaman@98.38.249.169)
2021-06-15 01:20:04 +0200tonyday(~user@202-65-93-249.ip4.superloop.com) (Remote host closed the connection)
2021-06-15 01:20:08 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-15 01:20:46 +0200hemlock(~hemlock@2607:fb90:9629:beeb:8fe5:1eb6:ded9:dd19) (Ping timeout: 244 seconds)
2021-06-15 01:21:38 +0200tonyday(~user@202-65-93-249.ip4.superloop.com)
2021-06-15 01:21:40 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-15 01:21:42 +0200hemlock(~hemlock@2600:8804:4c0a:3200:91a4:77db:aed9:3c83)
2021-06-15 01:22:07 +0200ddellacosta(~ddellacos@86.106.121.190)
2021-06-15 01:22:52 +0200skismiles
2021-06-15 01:25:44 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 244 seconds)
2021-06-15 01:26:46 +0200ddellacosta(~ddellacos@86.106.121.190) (Ping timeout: 244 seconds)
2021-06-15 01:31:11 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-15 01:34:48 +0200chomwitt(~Pitsikoko@2a02:587:dc02:b00:98b0:cd42:bd6f:8295) (Ping timeout: 272 seconds)
2021-06-15 01:35:02 +0200oo_miguel(~pi@89-72-187-203.dynamic.chello.pl) (Ping timeout: 244 seconds)
2021-06-15 01:35:38 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-06-15 01:35:44 +0200oo_miguel(~pi@89-72-187-203.dynamic.chello.pl)
2021-06-15 01:37:27 +0200danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-06-15 01:37:58 +0200fendor_(~fendor@77.119.128.134.wireless.dyn.drei.com)
2021-06-15 01:39:53 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Ping timeout: 244 seconds)
2021-06-15 01:40:42 +0200fendor(~fendor@77.119.131.39.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
2021-06-15 01:41:12 +0200larryba(~bc817c21@217.29.117.252)
2021-06-15 01:41:43 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-06-15 01:42:34 +0200 <larryba> hi. is there some extension that would allow me to create an operator called | and ~? I'm getting "parse error on input �|�" and "parse error on input �)�".
2021-06-15 01:42:46 +0200 <larryba> (I know that | is part of haskell syntax, and probably something similar with ~, so it's probably a long shot)
2021-06-15 01:43:03 +0200 <geekosaur> both are part of haskell syntax and can't be overridden
2021-06-15 01:43:24 +0200 <geekosaur> even with RebindableSyntax, neither can be made an operator
2021-06-15 01:43:59 +0200 <larryba> where is ~ used? I don't recall ever seeing it
2021-06-15 01:44:10 +0200 <geekosaur> it makes a strict pattern lazy
2021-06-15 01:44:20 +0200 <monochrom> ~? should be OK, HUnit uses ~?= all the time.
2021-06-15 01:44:23 +0200 <geekosaur> it's also used at type level to express type equality
2021-06-15 01:44:30 +0200 <monochrom> | is reserved.
2021-06-15 01:44:40 +0200 <monochrom> But you can make ||||| or something
2021-06-15 01:45:15 +0200 <geekosaur> right, both can be used as parts of other operators, just not by themsleves
2021-06-15 01:52:12 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-15 01:52:24 +0200lavaman(~lavaman@98.38.249.169)
2021-06-15 01:55:17 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-15 01:55:57 +0200ddellacosta(~ddellacos@89.46.62.164)
2021-06-15 01:56:44 +0200hmmmas(~chenqisu1@183.217.200.246)
2021-06-15 01:59:14 +0200tonyday(~user@202-65-93-249.ip4.superloop.com) (Remote host closed the connection)
2021-06-15 02:00:54 +0200ddellacosta(~ddellacos@89.46.62.164) (Ping timeout: 264 seconds)
2021-06-15 02:03:02 +0200bilegeek(~bilegeek@2600:1008:b041:5047:48ad:ae3d:d2ea:7d42) (Quit: Leaving)
2021-06-15 02:03:03 +0200Axman6(~Axman6@user/axman6)
2021-06-15 02:05:28 +0200zeenk(~zeenk@188.26.30.39) (Quit: Konversation terminated!)
2021-06-15 02:07:12 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
2021-06-15 02:10:24 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 02:14:13 +0200 <lbseale> I'm interested to hear everyone's thoughts on an idea: We're considering how to marshal data between C and Haskell. The size of the of data is small, but there are lot of fields in the record in Haskell (if that makes sense)
2021-06-15 02:14:55 +0200 <lbseale> On idea is to serialize it into JSON, and just pass a JSON string back and forth, this is currently how we get data into the Haskell program, it's satisfyingly fast
2021-06-15 02:15:23 +0200 <lbseale> Another option is to make a C Structs that mirror the Haskell records, and pass those back and forth
2021-06-15 02:15:35 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-06-15 02:15:58 +0200 <lbseale> We've been able to get that working in a toy program, but setting up the Storable instance for the C struct is a bit of a hassle
2021-06-15 02:17:38 +0200 <geekosaur> there are tools that purport to make that easier but they can be fragile (gcc11 reportedly breaks c2hs, for example)
2021-06-15 02:18:42 +0200 <lbseale> yeah I was looking at one called storable-record on the Haskell side
2021-06-15 02:19:40 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 244 seconds)
2021-06-15 02:19:51 +0200 <monochrom> I would expect JSON -> C struct be as much hassle as Haskell record -> Storable.
2021-06-15 02:19:52 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533) (Remote host closed the connection)
2021-06-15 02:20:28 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533)
2021-06-15 02:20:40 +0200 <lbseale> interesting, I don't know that much about C, but I work with people who do
2021-06-15 02:20:44 +0200 <glguy> There are possible advantages to the json approach if you have a particularly flexible data representation; I guess
2021-06-15 02:21:07 +0200 <glguy> if you had a bunch of lists or map structures or lots of different optional fields, it might be less hassle to go that route
2021-06-15 02:21:12 +0200 <glguy> but not for simple struct stuff
2021-06-15 02:22:24 +0200 <lbseale> hmm, yeah it's like 50 fixed fields, in addition to a list of 2 or more big records
2021-06-15 02:22:35 +0200 <monochrom> But C is a particularly inflexible language for types.
2021-06-15 02:23:46 +0200_73(~user@pool-96-252-123-136.bstnma.fios.verizon.net)
2021-06-15 02:24:38 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533) (Ping timeout: 244 seconds)
2021-06-15 02:25:50 +0200lavaman(~lavaman@98.38.249.169)
2021-06-15 02:30:32 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2021-06-15 02:30:51 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26)
2021-06-15 02:31:35 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-06-15 02:32:00 +0200teaSlurper(~chris@81.96.113.213)
2021-06-15 02:34:20 +0200nilof(~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 272 seconds)
2021-06-15 02:35:32 +0200ddellacosta(~ddellacos@86.106.121.203)
2021-06-15 02:35:37 +0200 <_73> `Couldn't match type ‘a’ with ‘()’`. Why does unit not match with an unconstrained type variable? http://dpaste.com/8Y8GDYVHH
2021-06-15 02:36:55 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-15 02:38:26 +0200lisphacker(~lisphacke@156.67.241.66)
2021-06-15 02:38:29 +0200 <davean> _73: That defintion says the function has to return *any* a, not an a of its choice
2021-06-15 02:38:37 +0200 <geekosaur> it is constrained. `forall a. Foo -> a` means the caller decides what `a` is
2021-06-15 02:38:41 +0200 <davean> there are things () isn't
2021-06-15 02:38:45 +0200 <davean> thus it can't be right
2021-06-15 02:38:59 +0200lisphacker(~lisphacke@156.67.241.66) (Client Quit)
2021-06-15 02:39:27 +0200 <_73> ohh. So this doesn't have anything to do with unit.
2021-06-15 02:40:40 +0200ddellacosta(~ddellacos@86.106.121.203) (Ping timeout: 272 seconds)
2021-06-15 02:41:07 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
2021-06-15 02:41:12 +0200 <_73> So really the only thing I can return is undefined right. Because undefined is the only thing that is everything.
2021-06-15 02:41:36 +0200 <geekosaur> correct
2021-06-15 02:41:53 +0200 <geekosaur> unless you have a better constraint for a than `forall a. a`
2021-06-15 02:42:06 +0200 <davean> That does make it a difficult defintion to satisfy, yes
2021-06-15 02:42:30 +0200 <_73> Ok now I understand forall
2021-06-15 02:43:04 +0200 <janus> if Foo was Void instead, would it still need a definition?
2021-06-15 02:44:13 +0200 <janus> surely anything is of type a if Void was constructed
2021-06-15 02:44:26 +0200lavaman(~lavaman@98.38.249.169)
2021-06-15 02:44:28 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 244 seconds)
2021-06-15 02:44:44 +0200 <davean> janus: you coulse use an empty case
2021-06-15 02:45:03 +0200 <davean> f x = case x of { }
2021-06-15 02:45:32 +0200 <janus> % f :: forall a. Void -> a; f x = case x of {}
2021-06-15 02:45:32 +0200 <yahb> janus:
2021-06-15 02:45:42 +0200 <janus> all right! wow, didn't think of that
2021-06-15 02:45:45 +0200 <janus> thanks
2021-06-15 02:47:43 +0200 <janus> % :set -XLambdaCase
2021-06-15 02:47:43 +0200 <yahb> janus:
2021-06-15 02:48:05 +0200 <janus> % g :: forall a. Void -> a; g = \case
2021-06-15 02:48:26 +0200 <janus> oooh yahb you crack me up :D
2021-06-15 02:48:45 +0200 <davean> janus: Yes, thats how people ACTUALLY do it in practice, but I wanted to be more illistrative
2021-06-15 02:49:01 +0200 <monochrom> SomeClass is a really nonsensical class, even though it's legal.
2021-06-15 02:49:10 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-06-15 02:52:48 +0200beka(~beka@104.193.170-244.PUBLIC.monkeybrains.net)
2021-06-15 02:53:01 +0200yd502(~yd502@180.168.212.6)
2021-06-15 02:57:32 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26) (Remote host closed the connection)
2021-06-15 02:58:52 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26)
2021-06-15 03:00:18 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 272 seconds)
2021-06-15 03:03:18 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26) (Ping timeout: 264 seconds)
2021-06-15 03:03:37 +0200Erutuon(~Erutuon@user/erutuon)
2021-06-15 03:05:58 +0200xff0x(~xff0x@2001:1a81:5224:8900:b094:cc23:ed27:1430) (Ping timeout: 244 seconds)
2021-06-15 03:07:43 +0200xff0x(~xff0x@2001:1a81:5237:f100:deef:ffe4:1734:e0a)
2021-06-15 03:08:14 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 244 seconds)
2021-06-15 03:10:32 +0200guest61(~xxx@47.245.54.240) (Remote host closed the connection)
2021-06-15 03:10:46 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-06-15 03:10:52 +0200Deide(~Deide@user/deide) (Quit: Seeee yaaaa)
2021-06-15 03:11:39 +0200guest61(~xxx@47.245.54.240)
2021-06-15 03:11:52 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-06-15 03:12:38 +0200dmang(~dmang@047-032-148-170.res.spectrum.com)
2021-06-15 03:14:26 +0200pragma-(~chaos@user/pragmatic-chaos) (Quit: Bye!)
2021-06-15 03:15:25 +0200ddellacosta(~ddellacos@86.106.143.216)
2021-06-15 03:16:45 +0200pragma-(~chaos@user/pragmatic-chaos)
2021-06-15 03:20:11 +0200ddellacosta(~ddellacos@86.106.143.216) (Ping timeout: 272 seconds)
2021-06-15 03:21:12 +0200hemlock(~hemlock@2600:8804:4c0a:3200:91a4:77db:aed9:3c83) (Ping timeout: 272 seconds)
2021-06-15 03:22:32 +0200hemlock(~hemlock@ip72-210-100-243.tu.ok.cox.net)
2021-06-15 03:22:43 +0200beka(~beka@104.193.170-244.PUBLIC.monkeybrains.net) (Ping timeout: 272 seconds)
2021-06-15 03:22:44 +0200sheepduck(~sheepduck@cpe98524a8cef7c-cm98524a8cef7a.cpe.net.cable.rogers.com)
2021-06-15 03:25:40 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533)
2021-06-15 03:26:50 +0200hemlock(~hemlock@ip72-210-100-243.tu.ok.cox.net) (Ping timeout: 244 seconds)
2021-06-15 03:27:00 +0200hemlock(~hemlock@ip72-210-100-243.tu.ok.cox.net)
2021-06-15 03:39:56 +0200berberman(~berberman@user/berberman)
2021-06-15 03:41:20 +0200yd502(~yd502@180.168.212.6)
2021-06-15 03:41:31 +0200berberman_(~berberman@user/berberman) (Ping timeout: 272 seconds)
2021-06-15 03:41:35 +0200dy`(~dy@user/dy)
2021-06-15 03:43:25 +0200dy(~dy@user/dy) (Ping timeout: 272 seconds)
2021-06-15 03:43:30 +0200mpt(~tom@2a02:908:1862:49e0::5)
2021-06-15 03:45:05 +0200dy`(~dy@user/dy) (Client Quit)
2021-06-15 03:45:30 +0200dy(~dy@user/dy)
2021-06-15 03:47:09 +0200wei2912(~wei2912@112.199.250.21)
2021-06-15 03:52:55 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-15 03:57:36 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-15 04:00:56 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 244 seconds)
2021-06-15 04:01:58 +0200xff0x(~xff0x@2001:1a81:5237:f100:deef:ffe4:1734:e0a) (Ping timeout: 244 seconds)
2021-06-15 04:03:56 +0200xff0x(~xff0x@2001:1a81:523f:a800:4cc0:9163:93f1:ee4a)
2021-06-15 04:05:04 +0200hemlock(~hemlock@ip72-210-100-243.tu.ok.cox.net) (Ping timeout: 244 seconds)
2021-06-15 04:05:13 +0200hemlock(~hemlock@2607:fb90:9716:c40c:8c30:5990:86f0:4ce1)
2021-06-15 04:05:39 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26)
2021-06-15 04:05:59 +0200td_(~td@muedsl-82-207-238-233.citykom.de) (Ping timeout: 252 seconds)
2021-06-15 04:07:41 +0200td_(~td@muedsl-82-207-238-227.citykom.de)
2021-06-15 04:10:02 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26) (Ping timeout: 244 seconds)
2021-06-15 04:11:16 +0200Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net) (Quit: Leaving)
2021-06-15 04:12:22 +0200killsushi(~killsushi@user/killsushi)
2021-06-15 04:12:30 +0200hemlock(~hemlock@2607:fb90:9716:c40c:8c30:5990:86f0:4ce1) (Ping timeout: 272 seconds)
2021-06-15 04:13:11 +0200 <DigitalKiwi> billionaires that have no income
2021-06-15 04:14:13 +0200hemlock(~hemlock@ip72-203-188-10.tu.ok.cox.net)
2021-06-15 04:15:26 +0200pottsy(~pottsy@2400:4050:b560:3700:df80:6e56:2853:b1e8)
2021-06-15 04:16:16 +0200 <monochrom> :)
2021-06-15 04:18:51 +0200rk04(~rk04@user/rajk)
2021-06-15 04:24:16 +0200beka(~beka@104-244-27-23.static.monkeybrains.net)
2021-06-15 04:30:11 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-06-15 04:30:11 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (tantalum.libera.chat (Nickname regained by services)))
2021-06-15 04:30:11 +0200finn_elijaFinnElija
2021-06-15 04:30:24 +0200ddellacosta(~ddellacos@89.46.62.177)
2021-06-15 04:31:30 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 272 seconds)
2021-06-15 04:34:50 +0200ddellacosta(~ddellacos@89.46.62.177) (Ping timeout: 244 seconds)
2021-06-15 04:39:02 +0200mniip_mniip
2021-06-15 04:40:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 04:41:29 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-06-15 04:45:03 +0200mpt(~tom@2a02:908:1862:49e0::5) (Ping timeout: 272 seconds)
2021-06-15 04:50:23 +0200khumba(~khumba@user/khumba)
2021-06-15 04:53:06 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 264 seconds)
2021-06-15 04:57:31 +0200yd502(~yd502@180.168.212.6)
2021-06-15 05:00:42 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com)
2021-06-15 05:04:26 +0200td_(~td@muedsl-82-207-238-227.citykom.de) (Ping timeout: 272 seconds)
2021-06-15 05:05:44 +0200td_(~td@muedsl-82-207-238-208.citykom.de)
2021-06-15 05:10:32 +0200alx741(~alx741@186.178.108.66) (Quit: alx741)
2021-06-15 05:11:20 +0200ddellacosta(~ddellacos@89.45.224.203)
2021-06-15 05:14:49 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 244 seconds)
2021-06-15 05:15:32 +0200hmmmas(~chenqisu1@183.217.200.246) (Quit: Leaving.)
2021-06-15 05:15:38 +0200 <guest61> do you want #TaxTheRich?
2021-06-15 05:16:28 +0200ddellacosta(~ddellacos@89.45.224.203) (Ping timeout: 272 seconds)
2021-06-15 05:16:56 +0200P1RATEZ(piratez@user/p1ratez)
2021-06-15 05:17:03 +0200polyphem(~polyphem@2a02:810d:640:776c:12c4:e67d:3560:5ad7) (Quit: polyphem)
2021-06-15 05:17:06 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 272 seconds)
2021-06-15 05:17:47 +0200 <guest61> lin littleme 我打包出termux上proot-distro里跑的ghc.deb了,你要吗?
2021-06-15 05:18:14 +0200 <monochrom> Wrong window?
2021-06-15 05:18:54 +0200 <guest61> sorry
2021-06-15 05:19:08 +0200 <sshine> guest61, 没关系
2021-06-15 05:20:43 +0200Sylveon[m](~sylveonma@2001:470:69fc:105::2d95)
2021-06-15 05:22:10 +0200Sylveon[m]Sylveon
2021-06-15 05:22:52 +0200Sylveon(~sylveonma@2001:470:69fc:105::2d95) (Client Quit)
2021-06-15 05:23:02 +0200 <guest61> sshine :)
2021-06-15 05:23:07 +0200Sylveon(~sylveonma@2001:470:69fc:105::2d95)
2021-06-15 05:23:32 +0200 <sshine> 🤓
2021-06-15 05:24:57 +0200rk04(~rk04@user/rajk) (Quit: rk04)
2021-06-15 05:25:15 +0200argento(~argent0@168-227-96-51.ptr.westnet.com.ar) (Remote host closed the connection)
2021-06-15 05:25:44 +0200Sylveon(~sylveonma@2001:470:69fc:105::2d95) (Client Quit)
2021-06-15 05:25:59 +0200Sylveon(~sylveonma@2001:470:69fc:105::2d95)
2021-06-15 05:34:50 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds)
2021-06-15 05:35:20 +0200yd502(~yd502@180.168.212.6)
2021-06-15 05:36:44 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-06-15 05:37:20 +0200Guest81(~Guest81@2406:3400:44b:fc00:b175:e2b5:8ad9:9875)
2021-06-15 05:37:31 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-15 05:39:16 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-06-15 05:40:33 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-15 05:41:30 +0200Guest81(~Guest81@2406:3400:44b:fc00:b175:e2b5:8ad9:9875) (Client Quit)
2021-06-15 05:41:41 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2021-06-15 05:42:45 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-15 05:43:42 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-06-15 05:44:49 +0200ddellacosta(~ddellacos@89.46.62.242)
2021-06-15 05:45:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 05:46:14 +0200benin036(~benin@183.82.176.206) (Ping timeout: 272 seconds)
2021-06-15 05:47:05 +0200benin036(~benin@183.82.204.156)
2021-06-15 05:49:26 +0200ddellacosta(~ddellacos@89.46.62.242) (Ping timeout: 244 seconds)
2021-06-15 05:50:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 244 seconds)
2021-06-15 05:52:53 +0200ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net)
2021-06-15 05:54:08 +0200lavaman(~lavaman@98.38.249.169)
2021-06-15 05:57:16 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-06-15 06:01:48 +0200sekun(~sekun@180.190.156.133)
2021-06-15 06:01:57 +0200polyphem(~polyphem@ip5f5ac3ae.dynamic.kabel-deutschland.de)
2021-06-15 06:02:56 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-06-15 06:03:22 +0200hendursaga(~weechat@user/hendursaga)
2021-06-15 06:07:49 +0200waleee-cl(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 272 seconds)
2021-06-15 06:09:08 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-15 06:14:09 +0200hiruji(~hiruji@2606:6080:1001:18:8d41:9604:d435:36b6) (Ping timeout: 272 seconds)
2021-06-15 06:15:22 +0200bgamari(~bgamari@2001:470:e438::1) (Ping timeout: 272 seconds)
2021-06-15 06:15:57 +0200bgamari(~bgamari@2001:470:e438::1)
2021-06-15 06:16:25 +0200peach(sid482179@id-482179.charlton.irccloud.com) ()
2021-06-15 06:18:29 +0200hemlock(~hemlock@ip72-203-188-10.tu.ok.cox.net) (Quit: Quit)
2021-06-15 06:20:14 +0200hiruji(~hiruji@2606:6080:1001:18:8d41:9604:d435:36b6)
2021-06-15 06:20:26 +0200P1RATEZ(piratez@user/p1ratez) (Ping timeout: 272 seconds)
2021-06-15 06:20:53 +0200pottsy(~pottsy@2400:4050:b560:3700:df80:6e56:2853:b1e8) (Quit: Leaving)
2021-06-15 06:21:50 +0200qwin(~yaaic@ip-96-43-230-90.dsl.netrevolution.com)
2021-06-15 06:22:56 +0200teaSlurper(~chris@81.96.113.213) (Remote host closed the connection)
2021-06-15 06:24:09 +0200polyphem(~polyphem@ip5f5ac3ae.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-06-15 06:27:54 +0200teaSlurper(~chris@81.96.113.213)
2021-06-15 06:29:14 +0200dmang(~dmang@047-032-148-170.res.spectrum.com) (Changing host)
2021-06-15 06:29:15 +0200dmang(~dmang@user/dmang)
2021-06-15 06:29:35 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-06-15 06:30:39 +0200dmang(~dmang@user/dmang) (Quit: Leaving)
2021-06-15 06:30:53 +0200dmang(~dmang@047-032-148-170.res.spectrum.com)
2021-06-15 06:31:47 +0200dmang(~dmang@047-032-148-170.res.spectrum.com) (Changing host)
2021-06-15 06:31:47 +0200dmang(~dmang@user/dmang)
2021-06-15 06:32:09 +0200reumeth(~reumeth@user/reumeth)
2021-06-15 06:32:19 +0200teaSlurper(~chris@81.96.113.213) (Ping timeout: 244 seconds)
2021-06-15 06:34:16 +0200sa1(uid7690@id-7690.charlton.irccloud.com)
2021-06-15 06:36:52 +0200vicentius(~vicentius@user/vicentius)
2021-06-15 06:38:54 +0200koishi_(~koishi_@67.209.186.120.16clouds.com)
2021-06-15 06:39:03 +0200reumeth(~reumeth@user/reumeth) (Ping timeout: 272 seconds)
2021-06-15 06:40:03 +0200koishi_(~koishi_@67.209.186.120.16clouds.com) (Remote host closed the connection)
2021-06-15 06:40:24 +0200alexeikale(~alexeikal@2601:1c2:1b80:100:4ea5:a35a:95ba:fcb1) (Quit: WeeChat 3.1)
2021-06-15 06:41:14 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-06-15 06:44:23 +0200Obo(~roberto@h-46-59-103-134.A498.priv.bahnhof.se)
2021-06-15 06:46:18 +0200beka(~beka@104-244-27-23.static.monkeybrains.net) (Remote host closed the connection)
2021-06-15 06:46:36 +0200beka(~beka@104-244-27-23.static.monkeybrains.net)
2021-06-15 06:47:16 +0200dunkeln(~dunkeln@94.129.65.28)
2021-06-15 06:49:26 +0200larryba(~bc817c21@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
2021-06-15 06:51:43 +0200chomwitt(~Pitsikoko@2a02:587:dc02:b00:98b0:cd42:bd6f:8295)
2021-06-15 06:53:20 +0200sheepduck(~sheepduck@cpe98524a8cef7c-cm98524a8cef7a.cpe.net.cable.rogers.com) (Remote host closed the connection)
2021-06-15 06:55:16 +0200sheepduck(~sheepduck@cpe98524a8cef7c-cm98524a8cef7a.cpe.net.cable.rogers.com)
2021-06-15 06:58:53 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-06-15 06:59:31 +0200ddellacosta(~ddellacos@86.106.143.60)
2021-06-15 07:00:58 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 272 seconds)
2021-06-15 07:02:03 +0200lain22(~lain@67.188.225.130)
2021-06-15 07:03:50 +0200ddellacosta(~ddellacos@86.106.143.60) (Ping timeout: 244 seconds)
2021-06-15 07:04:21 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 244 seconds)
2021-06-15 07:08:39 +0200shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-06-15 07:11:21 +0200wei2912(~wei2912@112.199.250.21) (Ping timeout: 272 seconds)
2021-06-15 07:17:41 +0200vicentius(~vicentius@user/vicentius) (Ping timeout: 272 seconds)
2021-06-15 07:17:45 +0200dmang(~dmang@user/dmang) (Quit: Leaving)
2021-06-15 07:17:59 +0200dmang(~dmang@047-032-148-170.res.spectrum.com)
2021-06-15 07:18:25 +0200dmang(~dmang@047-032-148-170.res.spectrum.com) (Changing host)
2021-06-15 07:18:25 +0200dmang(~dmang@user/dmang)
2021-06-15 07:20:48 +0200zmt00(~zmt00@user/zmt00) (Quit: Gone.)
2021-06-15 07:22:01 +0200jneira(~jneira@212.8.115.226)
2021-06-15 07:22:51 +0200lemmih(~lemmih@2406:3003:2072:44:925e:d7ab:50d2:4457) (Remote host closed the connection)
2021-06-15 07:22:59 +0200topostapas
2021-06-15 07:23:14 +0200lemmih(~lemmih@2406:3003:2072:44:925e:d7ab:50d2:4457)
2021-06-15 07:24:41 +0200lain22(~lain@67.188.225.130) (Quit: Client closed)
2021-06-15 07:25:46 +0200vonfry(~user@240e:688:3:1010:f2d0:5178:5f32:a971)
2021-06-15 07:27:04 +0200khumba(~khumba@user/khumba) ()
2021-06-15 07:32:42 +0200derelict(~derelict@user/derelict) (Ping timeout: 264 seconds)
2021-06-15 07:37:14 +0200ddellacosta(~ddellacos@86.106.143.73)
2021-06-15 07:37:22 +0200awschnap(~lavaman@98.38.249.169)
2021-06-15 07:37:25 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 244 seconds)
2021-06-15 07:38:39 +0200yoctocell(~yoctocell@h87-96-130-155.cust.a3fiber.se)
2021-06-15 07:38:54 +0200vonfry(~user@240e:688:3:1010:f2d0:5178:5f32:a971) (Quit: ERC (IRC client for Emacs 27.2))
2021-06-15 07:39:38 +0200bitmapper(uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
2021-06-15 07:41:21 +0200ddellacosta(~ddellacos@86.106.143.73) (Ping timeout: 244 seconds)
2021-06-15 07:46:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 07:50:38 +0200yd502(~yd502@180.168.212.6)
2021-06-15 07:50:47 +0200Nolrai(~Nolrai@c-76-27-202-218.hsd1.or.comcast.net)
2021-06-15 07:51:56 +0200 <Nolrai> So what's the modern way to use do notation with something like Data.Set?
2021-06-15 07:56:02 +0200pe200012_(~pe200012@120.236.161.38) (Remote host closed the connection)
2021-06-15 07:57:13 +0200jellz[m](~jellzmatr@2001:470:69fc:105::2daa)
2021-06-15 07:58:27 +0200 <Axman6> I'm not sure there is one
2021-06-15 08:02:53 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-06-15 08:03:34 +0200NanoC(~NanoCoast@p200300e127264d0058cc7c623629969e.dip0.t-ipconnect.de)
2021-06-15 08:05:10 +0200xkuru(~xkuru@user/xkuru)
2021-06-15 08:05:48 +0200xkuru(~xkuru@user/xkuru) (Client Quit)
2021-06-15 08:06:03 +0200xkuru(~xkuru@user/xkuru)
2021-06-15 08:08:03 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26)
2021-06-15 08:10:04 +0200fluffyballoon(~fluffybal@2620:72:0:6480::10f7) (Ping timeout: 250 seconds)
2021-06-15 08:11:29 +0200ddellacosta(~ddellacos@86.106.143.112)
2021-06-15 08:12:32 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26) (Ping timeout: 272 seconds)
2021-06-15 08:13:38 +0200syd(~syd@212-51-141-103.fiber7.init7.net)
2021-06-15 08:13:41 +0200wei2912(~wei2912@112.199.250.21)
2021-06-15 08:13:42 +0200 <syd> Test message
2021-06-15 08:13:44 +0200 <syd> Hi haskell peeps :D
2021-06-15 08:16:20 +0200ddellacosta(~ddellacos@86.106.143.112) (Ping timeout: 272 seconds)
2021-06-15 08:16:50 +0200Bartosz(~textual@24.35.90.211)
2021-06-15 08:17:51 +0200dy(~dy@user/dy) (Quit: ZNC 1.9.x-git-124-15e2351d - https://znc.in)
2021-06-15 08:18:00 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:7d76:d843:3eda:de44)
2021-06-15 08:18:45 +0200Obo(~roberto@h-46-59-103-134.A498.priv.bahnhof.se) (Quit: WeeChat 2.8)
2021-06-15 08:18:55 +0200oxide(~lambda@user/oxide) (Ping timeout: 272 seconds)
2021-06-15 08:19:00 +0200Obo(~roberto@h-46-59-103-134.A498.priv.bahnhof.se)
2021-06-15 08:19:21 +0200dy(~dy@user/dy)
2021-06-15 08:19:33 +0200Guest9(~Guest9@103.249.234.176)
2021-06-15 08:21:24 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-06-15 08:22:02 +0200xkuru(~xkuru@user/xkuru) (Ping timeout: 272 seconds)
2021-06-15 08:22:12 +0200xkuru(~xkuru@user/xkuru)
2021-06-15 08:26:00 +0200cyphase(~cyphase@c-73-222-119-252.hsd1.ca.comcast.net)
2021-06-15 08:26:42 +0200xkuru(~xkuru@user/xkuru) (Ping timeout: 264 seconds)
2021-06-15 08:29:23 +0200yoctocell(~yoctocell@h87-96-130-155.cust.a3fiber.se) (Remote host closed the connection)
2021-06-15 08:30:27 +0200awth13(~user@user/awth13) (Read error: Connection reset by peer)
2021-06-15 08:32:38 +0200awth13(~user@user/awth13)
2021-06-15 08:33:57 +0200chele(~chele@user/chele)
2021-06-15 08:34:03 +0200xff0x(~xff0x@2001:1a81:523f:a800:4cc0:9163:93f1:ee4a) (Ping timeout: 244 seconds)
2021-06-15 08:35:06 +0200xff0x(~xff0x@2001:1a81:523f:a800:fe55:300e:7173:8c39)
2021-06-15 08:35:27 +0200Guest9(~Guest9@103.249.234.176) (Quit: Connection closed)
2021-06-15 08:35:41 +0200ubikium(~ubikium@113x43x248x70.ap113.ftth.arteria-hikari.net) (Quit: Quit)
2021-06-15 08:36:49 +0200teaSlurper(~chris@81.96.113.213)
2021-06-15 08:45:08 +0200TheRAt(~TheRAt@user/therat) (Quit: :))
2021-06-15 08:45:34 +0200TheRAt(~TheRAt@user/therat)
2021-06-15 08:46:13 +0200ddellacosta(~ddellacos@89.45.224.216)
2021-06-15 08:48:15 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 272 seconds)
2021-06-15 08:51:10 +0200ddellacosta(~ddellacos@89.45.224.216) (Ping timeout: 272 seconds)
2021-06-15 08:52:50 +0200yd502(~yd502@180.168.212.6)
2021-06-15 08:55:26 +0200dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 244 seconds)
2021-06-15 08:55:42 +0200Bartosz(~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-15 08:57:30 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 244 seconds)
2021-06-15 08:59:09 +0200Unode(~Unode@194.94.44.220) (Ping timeout: 268 seconds)
2021-06-15 09:01:53 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-06-15 09:03:52 +0200Unode(~Unode@194.94.44.220)
2021-06-15 09:03:55 +0200gehmehgeh(~user@user/gehmehgeh)
2021-06-15 09:17:04 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-06-15 09:19:33 +0200teaSlurper(~chris@81.96.113.213) (Remote host closed the connection)
2021-06-15 09:20:25 +0200nsilv(~nsilv@host-82-50-119-12.retail.telecomitalia.it)
2021-06-15 09:20:42 +0200jespada(~jespada@90.254.242.55) (Ping timeout: 264 seconds)
2021-06-15 09:21:11 +0200warnz(~warnz@2600:1700:77c0:5610:a15e:288d:37ea:6878)
2021-06-15 09:21:25 +0200bfrk(~bfrk@200116b8458419008ef2b7070d67ad87.dip.versatel-1u1.de)
2021-06-15 09:22:12 +0200jespada(~jespada@90.254.242.55)
2021-06-15 09:22:32 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-06-15 09:23:39 +0200beka(~beka@104-244-27-23.static.monkeybrains.net) (Ping timeout: 244 seconds)
2021-06-15 09:24:45 +0200fef(~thedawn@user/thedawn)
2021-06-15 09:25:13 +0200ackyshake(~ackyshake@user/ackyshake)
2021-06-15 09:25:14 +0200neceve(~quassel@2a02:c7f:607e:d600:a95a:ecd2:e57a:3130)
2021-06-15 09:26:00 +0200warnz(~warnz@2600:1700:77c0:5610:a15e:288d:37ea:6878) (Ping timeout: 272 seconds)
2021-06-15 09:27:16 +0200ddellacosta(~ddellacos@89.46.62.177)
2021-06-15 09:27:50 +0200ackyshake(~ackyshake@user/ackyshake) (Soupy Twist!)
2021-06-15 09:29:56 +0200Nolrai(~Nolrai@c-76-27-202-218.hsd1.or.comcast.net) (Quit: Client closed)
2021-06-15 09:30:15 +0200syd(~syd@212-51-141-103.fiber7.init7.net) (Quit: Client closed)
2021-06-15 09:32:23 +0200ddellacosta(~ddellacos@89.46.62.177) (Ping timeout: 272 seconds)
2021-06-15 09:33:40 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 09:33:59 +0200yd502(~yd502@180.168.212.6) (Remote host closed the connection)
2021-06-15 09:34:13 +0200yd502(~yd502@180.168.212.6)
2021-06-15 09:38:49 +0200pe200012(~pe200012@58.248.179.134)
2021-06-15 09:40:10 +0200teaSlurper(~chris@81.96.113.213)
2021-06-15 09:40:28 +0200cfricke(~cfricke@user/cfricke)
2021-06-15 09:40:56 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 09:40:57 +0200allocaOxytocin
2021-06-15 09:47:15 +0200benin0367(~benin@106.198.88.131)
2021-06-15 09:49:29 +0200benin036(~benin@183.82.204.156) (Ping timeout: 244 seconds)
2021-06-15 09:49:29 +0200benin0367benin036
2021-06-15 09:53:54 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-06-15 09:56:24 +0200nsilv(~nsilv@host-82-50-119-12.retail.telecomitalia.it) (Ping timeout: 244 seconds)
2021-06-15 10:01:00 +0200ddellacosta(~ddellacos@86.106.143.73)
2021-06-15 10:02:18 +0200nsilv(~nsilv@host-82-50-119-12.retail.telecomitalia.it)
2021-06-15 10:03:04 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533) (Remote host closed the connection)
2021-06-15 10:05:11 +0200ddellacosta(~ddellacos@86.106.143.73) (Ping timeout: 244 seconds)
2021-06-15 10:06:12 +0200ccapndave(~ccapndave@84-73-232-220.dclient.hispeed.ch)
2021-06-15 10:07:16 +0200shryke_(~shryke@190.43.6.93.rev.sfr.net)
2021-06-15 10:08:32 +0200hendursa1(~weechat@user/hendursaga)
2021-06-15 10:08:54 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-06-15 10:08:59 +0200mpt(~tom@2a02:908:1862:49e0::5)
2021-06-15 10:09:42 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-15 10:10:15 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com)
2021-06-15 10:11:42 +0200shryke_(~shryke@190.43.6.93.rev.sfr.net) (Ping timeout: 244 seconds)
2021-06-15 10:11:45 +0200bfrk(~bfrk@200116b8458419008ef2b7070d67ad87.dip.versatel-1u1.de) (Leaving)
2021-06-15 10:12:01 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 252 seconds)
2021-06-15 10:12:13 +0200xff0x(~xff0x@2001:1a81:523f:a800:fe55:300e:7173:8c39) (Ping timeout: 244 seconds)
2021-06-15 10:12:17 +0200nsilv(~nsilv@host-82-50-119-12.retail.telecomitalia.it) (Ping timeout: 272 seconds)
2021-06-15 10:13:19 +0200xff0x(~xff0x@2001:1a81:523f:a800:1801:e3aa:b378:ead6)
2021-06-15 10:14:14 +0200ccapndave(~ccapndave@84-73-232-220.dclient.hispeed.ch) (Quit: Leaving...)
2021-06-15 10:15:36 +0200hegstal(~hegstal@2a02:c7f:7604:8a00:d648:1b69:add9:923)
2021-06-15 10:16:02 +0200mpt(~tom@2a02:908:1862:49e0::5) (Ping timeout: 272 seconds)
2021-06-15 10:16:14 +0200unyu(~pyon@user/pyon) (Ping timeout: 268 seconds)
2021-06-15 10:16:58 +0200unyu(~pyon@user/pyon)
2021-06-15 10:17:41 +0200awschnap(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-15 10:17:57 +0200lavaman(~lavaman@98.38.249.169)
2021-06-15 10:17:59 +0200nsilv(~nsilv@host-82-50-119-12.retail.telecomitalia.it)
2021-06-15 10:18:05 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-06-15 10:21:47 +0200flounders_(~flounders@173.246.200.33)
2021-06-15 10:23:08 +0200wonko(~wjc@62.115.229.50)
2021-06-15 10:23:38 +0200chaosite(~chaosite@user/chaosite) (Ping timeout: 272 seconds)
2021-06-15 10:25:30 +0200flounders(~flounders@173.246.200.33) (Ping timeout: 264 seconds)
2021-06-15 10:29:35 +0200oxide(~lambda@user/oxide)
2021-06-15 10:30:06 +0200kayprish(~kayprish@cable-188-2-229-172.dynamic.sbb.rs)
2021-06-15 10:32:43 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-06-15 10:36:54 +0200Jonno_FTW(~come@api.carswap.me) (Ping timeout: 264 seconds)
2021-06-15 10:37:11 +0200ddellacosta(~ddellacos@86.106.143.125)
2021-06-15 10:38:22 +0200delYsid(~user@zidpc777.tugraz.at)
2021-06-15 10:38:27 +0200feetwind(~mike@user/feetwind) (Ping timeout: 272 seconds)
2021-06-15 10:38:36 +0200Jonno_FTW(~come@api.carswap.me)
2021-06-15 10:39:01 +0200feetwind(~mike@user/feetwind)
2021-06-15 10:42:11 +0200azeem(~azeem@dynamic-adsl-78-13-238-239.clienti.tiscali.it) (Ping timeout: 244 seconds)
2021-06-15 10:42:15 +0200ddellacosta(~ddellacos@86.106.143.125) (Ping timeout: 272 seconds)
2021-06-15 10:42:47 +0200delYsid(~user@zidpc777.tugraz.at) (Changing host)
2021-06-15 10:42:47 +0200delYsid(~user@user/delYsid)
2021-06-15 10:43:44 +0200muto(~muto@d75-159-225-7.abhsia.telus.net) (Ping timeout: 244 seconds)
2021-06-15 10:44:12 +0200azeem(~azeem@176.200.254.249)
2021-06-15 10:46:03 +0200nsilv(~nsilv@host-82-50-119-12.retail.telecomitalia.it) (Ping timeout: 272 seconds)
2021-06-15 10:47:26 +0200nschoe(~quassel@178.251.84.79)
2021-06-15 10:47:55 +0200fishfinger(~fishfinge@cpc68330-cdif16-2-0-cust557.5-1.cable.virginm.net)
2021-06-15 10:48:35 +0200lavaman(~lavaman@98.38.249.169)
2021-06-15 10:51:17 +0200nsilv(~nsilv@host-82-50-119-12.retail.telecomitalia.it)
2021-06-15 10:51:36 +0200benin036(~benin@106.198.88.131) (Read error: Connection reset by peer)
2021-06-15 10:53:24 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 272 seconds)
2021-06-15 10:53:50 +0200benin036(~benin@183.82.204.171)
2021-06-15 10:54:37 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-06-15 10:57:50 +0200nsilv(~nsilv@host-82-50-119-12.retail.telecomitalia.it) (Ping timeout: 272 seconds)
2021-06-15 10:59:34 +0200nsilv(~nsilv@212.103.198.210)
2021-06-15 10:59:50 +0200cods(~fred@82-65-232-44.subs.proxad.net)
2021-06-15 11:03:13 +0200yd502(~yd502@180.168.212.6) (Read error: Connection reset by peer)
2021-06-15 11:03:27 +0200yd502(~yd502@180.168.212.6)
2021-06-15 11:05:57 +0200azeem(~azeem@176.200.254.249) (Ping timeout: 244 seconds)
2021-06-15 11:06:23 +0200dunkeln(~dunkeln@94.129.65.28)
2021-06-15 11:07:16 +0200 <cheater> how can I do this in Haskell? https://pastebin.com/Dyjf11Gu
2021-06-15 11:07:45 +0200azeem(~azeem@176.200.200.250)
2021-06-15 11:11:20 +0200ddellacosta(~ddellacos@89.45.224.34)
2021-06-15 11:11:58 +0200n0db(~n0db@HSI-KBW-091-089-090-070.hsi2.kabelbw.de)
2021-06-15 11:12:22 +0200 <nitrix> % do { xs <- ["a", "Bbb", "ccc", "EEE"]; ys <- ["bBb", "DDdD", "eeE"]; return (xs, ys, map toLower xs == map toLower ys) }
2021-06-15 11:12:22 +0200 <yahb> nitrix: [("a","bBb",False),("a","DDdD",False),("a","eeE",False),("Bbb","bBb",True),("Bbb","DDdD",False),("Bbb","eeE",False),("ccc","bBb",False),("ccc","DDdD",False),("ccc","eeE",False),("EEE","bBb",False),("EEE","DDdD",False),("EEE","eeE",True)]
2021-06-15 11:13:14 +0200 <nitrix> Lists are monads and they chain (>>=) by combining each of their elements together, exactly like your two nested loops.
2021-06-15 11:13:47 +0200 <nitrix> You can use `do` notation, the `>>=` operator or even a list comprehension. All are pretty readable.
2021-06-15 11:16:27 +0200ddellacosta(~ddellacos@89.45.224.34) (Ping timeout: 272 seconds)
2021-06-15 11:17:13 +0200 <cheater> that's incorrect. you are matching the keys incorrectly.
2021-06-15 11:17:19 +0200 <cheater> or rather the values.
2021-06-15 11:17:26 +0200 <cheater> EEE should be compared with eeE.
2021-06-15 11:17:37 +0200 <cheater> and Bbb with bBb.
2021-06-15 11:18:08 +0200 <cheater> oh, i see what you're doing
2021-06-15 11:18:30 +0200 <cheater> so how do I know to include "a" but also to include "bBb" and not "Bbb"?
2021-06-15 11:22:05 +0200 <nitrix> It would need to return the first comparison that is successful instead of all the comparisons. You can return a list of a single String, like [String] and concatenate them all, or use Maybe String and use that monad instead (catMaybes, >>=, whatever).
2021-06-15 11:22:14 +0200nsilv1(~nsilv@host-82-50-119-12.retail.telecomitalia.it)
2021-06-15 11:22:28 +0200 <cheater> i don't know how i would do that. it's a bit confusing.
2021-06-15 11:22:35 +0200 <cheater> also... it all looks pretty inelegant
2021-06-15 11:22:35 +0200nsilv(~nsilv@212.103.198.210) (Ping timeout: 272 seconds)
2021-06-15 11:23:06 +0200dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 264 seconds)
2021-06-15 11:23:34 +0200 <nitrix> Or literally translate your code to haskell. For the map, do a map, for the for+if+return do a filter+headSafe.
2021-06-15 11:24:02 +0200pe200012(~pe200012@58.248.179.134) (Ping timeout: 244 seconds)
2021-06-15 11:24:20 +0200pe200012(~pe200012@183.63.73.36)
2021-06-15 11:24:33 +0200 <nitrix> One sec.
2021-06-15 11:24:57 +0200dunkeln(~dunkeln@94.129.65.28)
2021-06-15 11:25:18 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2021-06-15 11:25:26 +0200brian_da_mage(~Neuromanc@user/briandamag) (Ping timeout: 252 seconds)
2021-06-15 11:27:45 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Quit: mikoto-chan)
2021-06-15 11:28:42 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-15 11:29:24 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 244 seconds)
2021-06-15 11:30:02 +0200 <nitrix> % let xs = ["a", "Bbb", "ccc", "EEE"]; ys = ["bBb", "DDdD", "eeE"] in map (\e -> listToMaybe $ catMaybes $ map (\f -> if map toLower e == map toLower f then Just f else Nothing ) ys) xs
2021-06-15 11:30:03 +0200 <yahb> nitrix: [Nothing,Just "bBb",Nothing,Just "eeE"]
2021-06-15 11:30:16 +0200 <nitrix> It's pretty unreadable as a one-liner.
2021-06-15 11:31:03 +0200 <nitrix> And you can probably use the nicer abstractions for manipulating the [String] and Maybe String.
2021-06-15 11:32:10 +0200 <nitrix> I would be more useful if I had used Haskell more recently :P
2021-06-15 11:33:25 +0200 <cheater> nitrix: also it doesn't include "a" or "ccc"
2021-06-15 11:34:10 +0200 <nitrix> Oh you have return x at the end.
2021-06-15 11:34:11 +0200kenran(~kenran@b2b-37-24-119-190.unitymedia.biz)
2021-06-15 11:37:09 +0200 <Rembane> > let xs = ["a", "Bbb", "ccc", "EEE"]; ys = ["bBb", "DDdD", "eeE"] in [x | x <- xs, y <- ys, toLower x == toLower y]
2021-06-15 11:37:11 +0200 <lambdabot> error:
2021-06-15 11:37:11 +0200 <lambdabot> • Couldn't match expected type ‘Char’ with actual type ‘[Char]’
2021-06-15 11:37:11 +0200 <lambdabot> • In the first argument of ‘toLower’, namely ‘x’
2021-06-15 11:37:16 +0200fef(~thedawn@user/thedawn) (Ping timeout: 252 seconds)
2021-06-15 11:38:48 +0200 <Rembane> > let xs = ["a", "Bbb", "ccc", "EEE"]; ys = ["bBb", "DDdD", "eeE"] in [x | x <- xs, y <- ys, map toLower x == map toLower y]
2021-06-15 11:38:48 +0200 <nitrix> That'll be like the first version I posted. He wants the first element from the second list that matches the current element from the first list (the matching is case insensitive, but the result needs to be sensitive).
2021-06-15 11:38:49 +0200 <lambdabot> ["Bbb","EEE"]
2021-06-15 11:39:29 +0200 <Rembane> Oh
2021-06-15 11:39:35 +0200 <nitrix> And, no matches is treated successfully too, it's a bit of an odd one.
2021-06-15 11:39:41 +0200dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 272 seconds)
2021-06-15 11:40:15 +0200 <Rembane> Interesting
2021-06-15 11:40:21 +0200 <nitrix> I think I would write a recursive function and pattern match it at this point. It's not very general :/
2021-06-15 11:40:40 +0200 <Rembane> +1
2021-06-15 11:44:42 +0200dixie_(~dixie@real.wilbury.sk) (Ping timeout: 272 seconds)
2021-06-15 11:45:06 +0200ddellacosta(~ddellacos@86.106.143.151)
2021-06-15 11:45:13 +0200fishfinger(~fishfinge@cpc68330-cdif16-2-0-cust557.5-1.cable.virginm.net) (Ping timeout: 244 seconds)
2021-06-15 11:46:06 +0200n0db(~n0db@HSI-KBW-091-089-090-070.hsi2.kabelbw.de) (Quit: Client closed)
2021-06-15 11:46:39 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 272 seconds)
2021-06-15 11:46:47 +0200 <nitrix> The nasty for loop needs to be a fold I think.
2021-06-15 11:47:32 +0200fishfinger(~fishfinge@cpc68330-cdif16-2-0-cust557.5-1.cable.virginm.net)
2021-06-15 11:48:20 +0200 <Rembane> nitrix: Isn't it a filter of some sort?
2021-06-15 11:50:01 +0200ddellacosta(~ddellacos@86.106.143.151) (Ping timeout: 272 seconds)
2021-06-15 11:50:09 +0200jakzale(uid499518@id-499518.charlton.irccloud.com)
2021-06-15 11:50:24 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Quit: mikoto-chan)
2021-06-15 11:50:27 +0200 <nitrix> Mhhh, a filter with a default.
2021-06-15 11:51:02 +0200nsilv1(~nsilv@host-82-50-119-12.retail.telecomitalia.it) (Ping timeout: 272 seconds)
2021-06-15 11:51:08 +0200 <Rembane> fromMaybe is good with defaults
2021-06-15 11:57:10 +0200 <cheater> <nitrix> That'll be like the first version I posted. He wants the first element from the second list that matches the current element from the first list (the matching is case insensitive, but the result needs to be sensitive). < nope. if the second list doesn't contain a matching element, then we use the element from the first list.
2021-06-15 11:58:03 +0200azeem(~azeem@176.200.200.250) (Ping timeout: 272 seconds)
2021-06-15 11:59:22 +0200azeem(~azeem@176.200.200.250)
2021-06-15 11:59:41 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 244 seconds)
2021-06-15 12:00:40 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 12:01:08 +0200 <nitrix> I'm playing with the getFirst monoid.
2021-06-15 12:01:22 +0200 <teaSlurper> @haskell let x = 2
2021-06-15 12:01:23 +0200 <lambdabot> https://www.haskellers.com/
2021-06-15 12:01:40 +0200 <teaSlurper> can you write haskell in this chat ?
2021-06-15 12:01:54 +0200 <teaSlurper> is there like an intrepreter?
2021-06-15 12:02:07 +0200ph88(~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de)
2021-06-15 12:02:14 +0200 <teaSlurper> @haskell 1 + 2
2021-06-15 12:02:15 +0200 <lambdabot> https://www.haskellers.com/
2021-06-15 12:02:23 +0200 <Rembane> > 1 + 2
2021-06-15 12:02:25 +0200 <lambdabot> 3
2021-06-15 12:02:31 +0200 <teaSlurper> > 1 + 1
2021-06-15 12:02:33 +0200 <lambdabot> 2
2021-06-15 12:02:37 +0200 <teaSlurper> thx
2021-06-15 12:02:50 +0200 <sshine> % "this one also"
2021-06-15 12:02:50 +0200 <yahb> sshine: "this one also"
2021-06-15 12:02:55 +0200 <teaSlurper> > 1 : 2
2021-06-15 12:02:57 +0200 <lambdabot> [1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2...
2021-06-15 12:03:11 +0200 <teaSlurper> that's not right is it?
2021-06-15 12:03:13 +0200 <sshine> % 1 : 2
2021-06-15 12:03:13 +0200 <yahb> sshine: ; <interactive>:83:1: error:; * No instance for (Num [Integer]) arising from a use of `it'; * In the first argument of `print', namely `it'; In a stmt of an interactive GHCi command: print it
2021-06-15 12:03:30 +0200 <sshine> I'm not sure why lambdabot does that.
2021-06-15 12:03:54 +0200pe200012(~pe200012@183.63.73.36) (Ping timeout: 264 seconds)
2021-06-15 12:03:57 +0200pe200012_(~pe200012@120.236.161.38)
2021-06-15 12:04:17 +0200 <teaSlurper> % 1 : 2
2021-06-15 12:04:17 +0200 <yahb> teaSlurper: ; <interactive>:86:1: error:; * No instance for (Num [Integer]) arising from a use of `it'; * In the first argument of `print', namely `it'; In a stmt of an interactive GHCi command: print it
2021-06-15 12:04:26 +0200 <teaSlurper> % 1 : [2]
2021-06-15 12:04:26 +0200 <yahb> teaSlurper: [1,2]
2021-06-15 12:04:30 +0200 <sshine> % subsequences "wat"
2021-06-15 12:04:30 +0200 <yahb> sshine: ["","w","a","wa","t","wt","at","wat"]
2021-06-15 12:04:45 +0200 <teaSlurper> i have a question
2021-06-15 12:04:57 +0200 <teaSlurper> why does this little function work...
2021-06-15 12:05:17 +0200 <teaSlurper> % let f x = x : f x in f 1
2021-06-15 12:05:23 +0200 <yahb> teaSlurper: [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
2021-06-15 12:05:39 +0200 <teaSlurper> and this doesn't
2021-06-15 12:05:40 +0200 <teaSlurper> :
2021-06-15 12:05:47 +0200 <teaSlurper> % 1 : 1
2021-06-15 12:05:48 +0200 <yahb> teaSlurper: ; <interactive>:1:1: error:; * No instance for (Num [Integer]) arising from a use of `it'; * In the first argument of `print', namely `it'; In a stmt of an interactive GHCi command: print it
2021-06-15 12:05:53 +0200 <sshine> :t (:)
2021-06-15 12:05:54 +0200 <lambdabot> a -> [a] -> [a]
2021-06-15 12:06:09 +0200 <sshine> the (:) constructor expects the right-hand side to be a list. in '1 : 1', the second 1 is not a list.
2021-06-15 12:06:27 +0200 <teaSlurper> my function shouldn't work though right?
2021-06-15 12:06:34 +0200 <sshine> in 'let f x = x : f x in f 1', the right-hand side of ':' is 'f x' which is a list.
2021-06-15 12:06:54 +0200 <sshine> it happens to be an infinite list, but those are okay in Haskell.
2021-06-15 12:07:11 +0200 <sshine> % let xs = [1,2..] in take 10 xs
2021-06-15 12:07:11 +0200 <yahb> sshine: [1,2,3,4,5,6,7,8,9,10]
2021-06-15 12:07:20 +0200 <Rembane> :t let f x = x : f x in f 1
2021-06-15 12:07:21 +0200 <lambdabot> Num t => [t]
2021-06-15 12:07:46 +0200 <teaSlurper> there's no part of my function that has a list in it?
2021-06-15 12:08:03 +0200 <sshine> teaSlurper, yes there is. 'x : f x' is a list
2021-06-15 12:08:18 +0200 <sshine> teaSlurper, also, because 'x : f x' is a list, so is 'f x', because of recursion.
2021-06-15 12:08:34 +0200 <teaSlurper> 1 : 1 : 1
2021-06-15 12:08:37 +0200Guest5851(~Guest58@ti0182q160-6494.bb.online.no)
2021-06-15 12:08:40 +0200 <teaSlurper> % 1 : 1 : 1
2021-06-15 12:08:40 +0200 <yahb> teaSlurper: ; <interactive>:3:1: error:; * No instance for (Num [Integer]) arising from a use of `it'; * In the first argument of `print', namely `it'; In a stmt of an interactive GHCi command: print it
2021-06-15 12:08:41 +0200 <sshine> % 1 : 1 : 1 : []
2021-06-15 12:08:42 +0200 <yahb> sshine: [1,1,1]
2021-06-15 12:08:58 +0200 <teaSlurper> but at no point do i specify []?
2021-06-15 12:09:12 +0200 <sshine> the right-hand side of (:) needs to be a list. I recommend you read the chapter of LYAH on lists: http://learnyouahaskell.com/starting-out#an-intro-to-lists
2021-06-15 12:09:40 +0200 <sshine> teaSlurper, that's right, lists can be infinite, and [] would mark the ending of a list. so not all lists have a [] at the far right.
2021-06-15 12:09:49 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26)
2021-06-15 12:09:54 +0200 <sshine> teaSlurper, also. not all lists contain a ':' either.
2021-06-15 12:10:53 +0200 <sshine> teaSlurper, also, #haskell-beginners :) (not to dissuade you from asking questions here, but this channel is also active.)
2021-06-15 12:11:15 +0200yd502(~yd502@180.168.212.6)
2021-06-15 12:11:21 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-06-15 12:11:27 +0200 <dminuoso> teaSlurper: the key to realize is that `1 : 1 : 1 ..` associates as 1 : (1 : (...))
2021-06-15 12:11:47 +0200 <sshine> Ó_ò
2021-06-15 12:12:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 12:13:52 +0200 <dminuoso> Compare that to the peano construction of natural numbers
2021-06-15 12:14:00 +0200 <dminuoso> % data Nat = Succ Nat | Nil
2021-06-15 12:14:00 +0200 <yahb> dminuoso:
2021-06-15 12:14:42 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26) (Ping timeout: 264 seconds)
2021-06-15 12:16:09 +0200 <dminuoso> let x = Succ (Succ (Succ Nil))
2021-06-15 12:16:11 +0200 <dminuoso> % let x = Succ (Succ (Succ Nil))
2021-06-15 12:16:11 +0200 <yahb> dminuoso:
2021-06-15 12:17:27 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 244 seconds)
2021-06-15 12:17:44 +0200 <teaSlurper> thx dminuoso
2021-06-15 12:17:55 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 12:18:36 +0200zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2021-06-15 12:20:08 +0200 <teaSlurper> thx sshine
2021-06-15 12:21:14 +0200 <teaSlurper> % 1 : (1 : (...))
2021-06-15 12:21:14 +0200 <yahb> teaSlurper: ; <interactive>:7:10: error:; * Couldn't match expected type: [a]; with actual type: LensLike f0 s0 t0 c0 c0 -> Over p0 f0 c0 c0 a0 b0 -> Over p0 f0 s0 t0 a0 b0; * Probable cause: `(...)' is applied to too few arguments; In the second argument of `(:)', namely `(...)'; In the second argument of `(:)', namely `(1 : (...))'; In the expression: 1 : (1 : (...));
2021-06-15 12:21:48 +0200ddellacosta(~ddellacos@86.106.143.73)
2021-06-15 12:23:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-06-15 12:23:46 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 12:24:04 +0200 <siers> can I have a haddock named paragraph (like -- $paragraph) but in multiline comments?
2021-06-15 12:24:05 +0200 <dminuoso> teaSlurper: you can use undefined as a placeholder. :)
2021-06-15 12:24:24 +0200 <dminuoso> % x :: [Int]; x = (1 : (2 : (3 : [])))
2021-06-15 12:24:25 +0200 <yahb> dminuoso:
2021-06-15 12:24:34 +0200 <dminuoso> % x
2021-06-15 12:24:35 +0200 <yahb> dminuoso: [1,2,3]
2021-06-15 12:24:51 +0200 <dminuoso> % :t (:)
2021-06-15 12:24:52 +0200 <yahb> dminuoso: a -> [a] -> [a]
2021-06-15 12:26:45 +0200ddellacosta(~ddellacos@86.106.143.73) (Ping timeout: 244 seconds)
2021-06-15 12:27:16 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 244 seconds)
2021-06-15 12:27:45 +0200Guest5851(~Guest58@ti0182q160-6494.bb.online.no) (Quit: Client closed)
2021-06-15 12:28:49 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 244 seconds)
2021-06-15 12:29:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 12:29:42 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 12:29:53 +0200 <teaSlurper> dminuoso: is (...) actually some sort of haskell thing though? infinity operator or something?
2021-06-15 12:29:59 +0200 <teaSlurper> ...
2021-06-15 12:30:11 +0200 <teaSlurper> under the hood it used that or?
2021-06-15 12:32:38 +0200 <dminuoso> No, that was just my informal way of phrasing "more stuff goes here"
2021-06-15 12:33:21 +0200 <dminuoso> Though, confusingly, .. actually exists here
2021-06-15 12:33:24 +0200 <dminuoso> % [1..5]
2021-06-15 12:33:24 +0200 <yahb> dminuoso: [1,2,3,4,5]
2021-06-15 12:33:27 +0200 <dminuoso> But that is unrelated.
2021-06-15 12:34:01 +0200 <teaSlurper> but under the hood haskell is deciding to count infinity as a list?
2021-06-15 12:34:11 +0200 <teaSlurper> or class infinity as a list
2021-06-15 12:34:41 +0200 <dminuoso> What do you mean by `infinity`?
2021-06-15 12:34:52 +0200 <teaSlurper> (...)
2021-06-15 12:34:56 +0200 <dminuoso> 12:32:37 dminuoso | No, that was just my informal way of phrasing "more stuff goes here"
2021-06-15 12:35:06 +0200azeem(~azeem@176.200.200.250) (Ping timeout: 264 seconds)
2021-06-15 12:35:35 +0200azeem(~azeem@176.200.200.250)
2021-06-15 12:36:01 +0200 <teaSlurper> so in the infinite expression does haskell inert a []?
2021-06-15 12:36:10 +0200 <teaSlurper> insert*
2021-06-15 12:36:27 +0200 <[exa]> it can't, the infinity is too far
2021-06-15 12:37:18 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 12:38:12 +0200shredder(~shredder@42-2-58-147.static.netvigator.com)
2021-06-15 12:38:30 +0200yd502(~yd502@180.168.212.6)
2021-06-15 12:38:37 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-06-15 12:38:52 +0200jneira(~jneira@212.8.115.226) (Quit: Client closed)
2021-06-15 12:40:03 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-06-15 12:40:32 +0200 <dminuoso> teaSlurper: Just do manual expansion
2021-06-15 12:40:46 +0200 <dminuoso> Haskell evaluation can be understood if you just do manual expansion yourself.
2021-06-15 12:41:04 +0200benin036(~benin@183.82.204.171) (Ping timeout: 272 seconds)
2021-06-15 12:41:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 12:41:29 +0200 <teaSlurper> you mean on paper?
2021-06-15 12:41:34 +0200 <teaSlurper> unfolding it?
2021-06-15 12:41:49 +0200 <teaSlurper> like 1 : (1 : (1 : (...)))
2021-06-15 12:42:12 +0200 <dminuoso> let f x = x : f x in f 1
2021-06-15 12:42:15 +0200 <dminuoso> f 1 = 1 : f 1
2021-06-15 12:42:18 +0200 <dminuoso> = 1 : 1 : f 1
2021-06-15 12:42:21 +0200 <dminuoso> = 1 : 1 : 1 : f1
2021-06-15 12:42:26 +0200 <dminuoso> ad infinitum.
2021-06-15 12:42:44 +0200 <teaSlurper> ahh i see ye
2021-06-15 12:42:58 +0200 <teaSlurper> that's called manual expansion is it?
2021-06-15 12:43:42 +0200 <dminuoso> It's an informal term I just used. If you ever want to understand how something works, you can just manually replace expressions by their definitions, binding values correctly.
2021-06-15 12:44:10 +0200 <dminuoso> This works mostly fine as long as we ignore lazyness.
2021-06-15 12:45:15 +0200jneira(~jneira@212.8.115.226)
2021-06-15 12:45:24 +0200 <dminuoso> % let f x = x : f x in take 10 (f 1)
2021-06-15 12:45:24 +0200 <yahb> dminuoso: [1,1,1,1,1,1,1,1,1,1]
2021-06-15 12:46:23 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 244 seconds)
2021-06-15 12:46:54 +0200zaquest(~notzaques@5.128.210.178)
2021-06-15 12:46:55 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 12:48:08 +0200 <dminuoso> This works because (f 1) is not evaluated ad-infinitum like I suggested above, it's rather that GHC evaluates only as far as it needs. But it can chase this list down as far as you want.
2021-06-15 12:48:45 +0200 <dminuoso> So something like `length (f 1)` will diverge, `length` essentially counts the elements until it finds a []
2021-06-15 12:48:59 +0200 <dminuoso> % let f x = x : f x in length (f 1)
2021-06-15 12:49:04 +0200 <yahb> dminuoso: [Timed out]
2021-06-15 12:49:33 +0200benin036(~benin@183.82.204.171)
2021-06-15 12:51:31 +0200jneira_(~jneira_@5.red-81-39-172.dynamicip.rima-tde.net) (Quit: Connection closed)
2021-06-15 12:54:06 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 12:55:53 +0200 <teaSlurper> dminuoso: so something to do with lazy computation?
2021-06-15 12:56:47 +0200 <teaSlurper> evaluation*
2021-06-15 12:57:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-06-15 12:58:01 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 12:58:10 +0200brian_da_mage(~Neuromanc@user/briandamag)
2021-06-15 12:59:46 +0200ddellacosta(~ddellacos@86.106.143.151)
2021-06-15 13:00:46 +0200mpt(~tom@2a02:908:1862:49e0::5)
2021-06-15 13:03:14 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 244 seconds)
2021-06-15 13:03:46 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 13:04:16 +0200 <dminuoso> Yes.
2021-06-15 13:04:23 +0200dunkeln(~dunkeln@94.129.65.28)
2021-06-15 13:04:30 +0200ddellacosta(~ddellacos@86.106.143.151) (Ping timeout: 264 seconds)
2021-06-15 13:05:06 +0200yd502(~yd502@180.168.212.6) (Ping timeout: 264 seconds)
2021-06-15 13:05:23 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 272 seconds)
2021-06-15 13:10:30 +0200mpt(~tom@2a02:908:1862:49e0::5) (Ping timeout: 264 seconds)
2021-06-15 13:12:59 +0200azeem(~azeem@176.200.200.250) (Ping timeout: 272 seconds)
2021-06-15 13:13:00 +0200 <siers> where can I feed seconds since epoch to Date.Time.Format?
2021-06-15 13:13:43 +0200azeem(~azeem@176.200.200.250)
2021-06-15 13:14:16 +0200 <siers> it certainly looks like I can't
2021-06-15 13:15:51 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 13:20:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-06-15 13:20:09 +0200larkfisherman(~larkfishe@217.75.204.126)
2021-06-15 13:20:16 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 13:21:17 +0200 <cdsmith> Let's play: am I reinventing the wheel! I've been building a type called `Predicate`, which is basically "a -> Bool, but explainable". Has a Show instance, and I'm about to add the ability to explain why it fails to match. e.g., if you compare two large Text values, it might show a diff instead of printing the whole value. Anyone know of prior art for this?
2021-06-15 13:21:29 +0200 <cdsmith> This is for a testing tool, btw
2021-06-15 13:25:08 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2021-06-15 13:25:54 +0200dixie(~dixie@real.wilbury.sk)
2021-06-15 13:26:38 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26)
2021-06-15 13:28:30 +0200larkfisherman(~larkfishe@217.75.204.126) (Quit: Leaving)
2021-06-15 13:28:39 +0200fef(~thedawn@user/thedawn)
2021-06-15 13:30:31 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-06-15 13:31:26 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 13:36:18 +0200azeem(~azeem@176.200.200.250) (Ping timeout: 244 seconds)
2021-06-15 13:36:25 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-06-15 13:37:32 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer)
2021-06-15 13:37:42 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net)
2021-06-15 13:38:26 +0200azeem(~azeem@176.201.22.245)
2021-06-15 13:38:32 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26) (Remote host closed the connection)
2021-06-15 13:38:51 +0200ddellacosta(~ddellacos@86.106.121.190)
2021-06-15 13:42:55 +0200nsilv1(~nsilv@212.103.198.210)
2021-06-15 13:43:32 +0200ddellacosta(~ddellacos@86.106.121.190) (Ping timeout: 244 seconds)
2021-06-15 13:50:59 +0200azeem(~azeem@176.201.22.245) (Ping timeout: 272 seconds)
2021-06-15 13:51:44 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net) (Ping timeout: 252 seconds)
2021-06-15 13:51:59 +0200nschoe(~quassel@178.251.84.79)
2021-06-15 13:54:54 +0200azeem(~azeem@176.201.22.245)
2021-06-15 13:55:45 +0200zyklotomic(~ethan@2604:a880:800:10::79f:8001)
2021-06-15 13:57:29 +0200dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 244 seconds)
2021-06-15 13:58:57 +0200 <zyklotomic> is there a way to deduce a type from a variable? i'm not sure if this is a language extension for it
2021-06-15 13:59:12 +0200 <zyklotomic> https://gist.github.com/zyklotomic/d1e7eb54e74ea53dcb9a5f616d362dc8 here is an example of where i'm trying to do that
2021-06-15 14:00:10 +0200 <zyklotomic> *if there is
2021-06-15 14:00:25 +0200 <merijn> zyklotomic: Ah, you want ScopedTypeVariables
2021-06-15 14:00:43 +0200 <merijn> zyklotomic: That lets you refer to type variables from your top-level signature in the body
2021-06-15 14:00:57 +0200 <merijn> so you can do "minBound :: a" with 'a' being equal to the 'a' in the top level type
2021-06-15 14:01:07 +0200 <merijn> @where user-guide
2021-06-15 14:01:07 +0200 <lambdabot> I know nothing about user-guide.
2021-06-15 14:01:12 +0200 <merijn> @where userguide
2021-06-15 14:01:12 +0200 <zyklotomic> merijn: ah thank you, appreciate it
2021-06-15 14:01:12 +0200 <lambdabot> https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/
2021-06-15 14:01:19 +0200henninb(~user@63.226.174.157)
2021-06-15 14:01:25 +0200 <merijn> GHC User Guide should have a section explaining the extensio
2021-06-15 14:02:03 +0200 <zyklotomic> the hard part is knowing how to explain specific niche use cases lol, and just the gut feeling there probably is an extension for it
2021-06-15 14:03:33 +0200 <merijn> zyklotomic: If you have an 'a' available there's also
2021-06-15 14:03:35 +0200 <merijn> :t asTypeOf
2021-06-15 14:03:37 +0200 <lambdabot> a -> a -> a
2021-06-15 14:03:47 +0200 <merijn> > minBound `asTypeOf` True
2021-06-15 14:03:49 +0200 <lambdabot> False
2021-06-15 14:03:53 +0200 <merijn> > minBound `asTypeOf` 'c'
2021-06-15 14:03:55 +0200 <lambdabot> '\NUL'
2021-06-15 14:04:41 +0200 <merijn> zyklotomic: Basically, asTypeOf is just const (i.e. returns first argument), but the type signature of asTypeOf lets you guide type inference with the second value
2021-06-15 14:04:50 +0200oxide(~lambda@user/oxide) (Read error: Connection reset by peer)
2021-06-15 14:05:49 +0200 <merijn> Although, looking at your example, probably ScopedTypeVariables is a better/easier solution
2021-06-15 14:05:59 +0200 <merijn> Since you don't actually have an 'a' available
2021-06-15 14:06:48 +0200 <merijn> zyklotomic: otoh, if you're just gonna apply a function to it, you might not even need that
2021-06-15 14:06:56 +0200 <merijn> :t [minBound .. maxBound]
2021-06-15 14:06:57 +0200 <lambdabot> (Bounded a, Enum a) => [a]
2021-06-15 14:07:09 +0200 <merijn> :t map isDigit [minBound .. maxBound]
2021-06-15 14:07:10 +0200 <lambdabot> [Bool]
2021-06-15 14:07:15 +0200 <merijn> > map isDigit [minBound .. maxBound]
2021-06-15 14:07:17 +0200 <lambdabot> [False,False,False,False,False,False,False,False,False,False,False,False,Fal...
2021-06-15 14:07:34 +0200dunkeln(~dunkeln@94.129.65.28)
2021-06-15 14:07:50 +0200 <merijn> zyklotomic: So if you're gonna just apply the function from your CountMap to the resulting list, you don't even need the type, it will just be inferred
2021-06-15 14:08:48 +0200oxide(~lambda@user/oxide)
2021-06-15 14:09:08 +0200kenran(~kenran@b2b-37-24-119-190.unitymedia.biz) (Quit: WeeChat info:version)
2021-06-15 14:11:11 +0200henninb(~user@63.226.174.157) (Remote host closed the connection)
2021-06-15 14:11:20 +0200ddellacosta(~ddellacos@89.45.224.73)
2021-06-15 14:11:50 +0200derelict(~derelict@user/derelict)
2021-06-15 14:12:14 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-06-15 14:16:05 +0200ddellacosta(~ddellacos@89.45.224.73) (Ping timeout: 244 seconds)
2021-06-15 14:21:18 +0200azeem(~azeem@176.201.22.245) (Ping timeout: 264 seconds)
2021-06-15 14:21:36 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-15 14:21:56 +0200azeem(~azeem@176.201.22.245)
2021-06-15 14:22:43 +0200shredder(~shredder@42-2-58-147.static.netvigator.com) (Changing host)
2021-06-15 14:22:43 +0200shredder(~shredder@user/shredder)
2021-06-15 14:24:54 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 264 seconds)
2021-06-15 14:25:52 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 14:27:28 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 272 seconds)
2021-06-15 14:27:58 +0200shredder(~shredder@user/shredder) (Ping timeout: 244 seconds)
2021-06-15 14:28:16 +0200haskman(~haskman@223.190.124.48)
2021-06-15 14:28:24 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 14:32:21 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-06-15 14:33:46 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-06-15 14:34:29 +0200azeem(~azeem@176.201.22.245) (Ping timeout: 272 seconds)
2021-06-15 14:34:49 +0200azeem(~azeem@176.201.22.245)
2021-06-15 14:34:54 +0200 <xsperry> > filter isDigit [minBound .. maxBound]
2021-06-15 14:34:56 +0200 <lambdabot> "0123456789"
2021-06-15 14:35:27 +0200teaSlurper(~chris@81.96.113.213) (Remote host closed the connection)
2021-06-15 14:36:32 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit)
2021-06-15 14:36:49 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-06-15 14:38:15 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-06-15 14:38:53 +0200teaSlurper(~chris@81.96.113.213)
2021-06-15 14:39:46 +0200nschoe(~quassel@178.251.84.79)
2021-06-15 14:39:56 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net)
2021-06-15 14:42:17 +0200Morrow(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 272 seconds)
2021-06-15 14:42:33 +0200ddellacosta(~ddellacos@86.106.143.229)
2021-06-15 14:44:29 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net)
2021-06-15 14:47:26 +0200ddellacosta(~ddellacos@86.106.143.229) (Ping timeout: 268 seconds)
2021-06-15 14:49:17 +0200azeem(~azeem@176.201.22.245) (Ping timeout: 268 seconds)
2021-06-15 14:49:55 +0200azeem(~azeem@176.201.22.245)
2021-06-15 14:52:44 +0200fishfinger(~fishfinge@cpc68330-cdif16-2-0-cust557.5-1.cable.virginm.net) (Remote host closed the connection)
2021-06-15 14:53:00 +0200jakalx(~jakalx@base.jakalx.net)
2021-06-15 14:53:21 +0200 <merijn> > filter isNumber [minBound .. maxBound]
2021-06-15 14:53:23 +0200 <lambdabot> "0123456789\178\179\185\188\189\190\1632\1633\1634\1635\1636\1637\1638\1639\...
2021-06-15 14:53:26 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-15 14:53:26 +0200 <merijn> oh, wait
2021-06-15 14:53:30 +0200 <merijn> > text filter isNumber [minBound .. maxBound]
2021-06-15 14:53:31 +0200 <lambdabot> error:
2021-06-15 14:53:32 +0200 <lambdabot> • Couldn't match expected type ‘(Char -> Bool) -> [a1] -> t’
2021-06-15 14:53:32 +0200 <lambdabot> with actual type ‘Doc’
2021-06-15 14:53:40 +0200 <merijn> > text $ filter isNumber [minBound .. maxBound] -- third time's the charm
2021-06-15 14:53:41 +0200 <lambdabot> 0123456789²³¹¼½¾٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹߀߁߂߃߄߅߆߇߈߉०१२३४५६७८९০১২৩৪৫৬৭৮৯৴৵৶৷৸৹੦੧੨੩...
2021-06-15 14:55:20 +0200zebrag(~chris@user/zebrag)
2021-06-15 14:56:40 +0200 <dminuoso> zyklotomic: So there's two parts at work. One, ScopedTypeVariables arguably should have been the default behavior from the beginning.
2021-06-15 14:57:00 +0200 <dminuoso> Secondly, minBound/maxBound should require a Proxy as argument like many other things that don't.
2021-06-15 14:57:10 +0200jneira(~jneira@212.8.115.226) (Quit: Client closed)
2021-06-15 14:57:28 +0200 <dminuoso> (sizeOf is an even better example)
2021-06-15 14:59:06 +0200zebrag(~chris@user/zebrag) (Client Quit)
2021-06-15 14:59:33 +0200dudek(~dudek@185.150.236.112)
2021-06-15 15:01:15 +0200alx741(~alx741@186.178.108.66)
2021-06-15 15:02:18 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-15 15:02:35 +0200dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 244 seconds)
2021-06-15 15:04:51 +0200larkfisherman(~larkfishe@217.75.204.126)
2021-06-15 15:05:12 +0200euandreh(~euandreh@2804:14c:33:9fe5:add0:1e4f:5044:d502) (Remote host closed the connection)
2021-06-15 15:05:36 +0200euandreh(~euandreh@2804:14c:33:9fe5:b257:2b:ea5f:da94)
2021-06-15 15:05:58 +0200shredder(~shredder@user/shredder)
2021-06-15 15:06:44 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-15 15:07:02 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533)
2021-06-15 15:07:47 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2021-06-15 15:08:06 +0200Tritlo(~Tritlo@h-155-4-130-185.NA.cust.bahnhof.se)
2021-06-15 15:11:06 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533) (Ping timeout: 240 seconds)
2021-06-15 15:11:58 +0200teaSlurper(~chris@81.96.113.213) (Remote host closed the connection)
2021-06-15 15:14:04 +0200 <merijn> dminuoso: I mean, proxy seems irrelevant here
2021-06-15 15:14:15 +0200melivia(~seph@sephistication.plus.com)
2021-06-15 15:14:25 +0200 <merijn> dminuoso: Since his question was about "how do I get the type?", proxy only works if you already have that type
2021-06-15 15:15:12 +0200kadobananamud
2021-06-15 15:15:20 +0200Tritlo_(sid58727@id-58727.stonehaven.irccloud.com)
2021-06-15 15:15:44 +0200delYsid(~user@user/delYsid) (Remote host closed the connection)
2021-06-15 15:16:17 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2021-06-15 15:16:50 +0200teaSlurper(~chris@81.96.113.213)
2021-06-15 15:18:53 +0200reumeth(~reumeth@user/reumeth)
2021-06-15 15:19:49 +0200yd502(~yd502@2409:891e:320:209e:f515:1951:1076:cda6)
2021-06-15 15:19:52 +0200Tritlo(~Tritlo@h-155-4-130-185.NA.cust.bahnhof.se) ()
2021-06-15 15:20:05 +0200Tritlo_(sid58727@id-58727.stonehaven.irccloud.com) ()
2021-06-15 15:20:06 +0200teaSlurper(~chris@81.96.113.213) (Read error: Connection reset by peer)
2021-06-15 15:20:10 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-06-15 15:20:25 +0200Tritlo_(sid58727@id-58727.stonehaven.irccloud.com)
2021-06-15 15:20:28 +0200teaSlurper(~chris@81.96.113.213)
2021-06-15 15:20:32 +0200Tritlo_Tritlo
2021-06-15 15:20:36 +0200Tritlo(sid58727@id-58727.stonehaven.irccloud.com) (Client Quit)
2021-06-15 15:20:47 +0200Tritlo(sid58727@id-58727.stonehaven.irccloud.com)
2021-06-15 15:21:05 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-06-15 15:21:23 +0200Tritlo(sid58727@id-58727.stonehaven.irccloud.com) (Client Quit)
2021-06-15 15:21:36 +0200Tritlo(sid58727@id-58727.stonehaven.irccloud.com)
2021-06-15 15:21:37 +0200hendursaga(~weechat@user/hendursaga)
2021-06-15 15:21:40 +0200dunkeln(~dunkeln@94.129.65.28)
2021-06-15 15:23:28 +0200ddellacosta(~ddellacos@86.106.143.203)
2021-06-15 15:25:06 +0200melivia(~seph@sephistication.plus.com) (Quit: leaving)
2021-06-15 15:26:13 +0200zebrag(~chris@user/zebrag)
2021-06-15 15:28:25 +0200ddellacosta(~ddellacos@86.106.143.203) (Ping timeout: 265 seconds)
2021-06-15 15:28:28 +0200ixlun(~matthew@213.205.241.86)
2021-06-15 15:30:29 +0200Guest9(~Guest9@103.249.234.176)
2021-06-15 15:31:26 +0200yd502(~yd502@2409:891e:320:209e:f515:1951:1076:cda6) (Ping timeout: 272 seconds)
2021-06-15 15:32:17 +0200 <ixlun> Hi all, has anyone had issues with line editing in GHCi?
2021-06-15 15:32:28 +0200 <ixlun> I'm using 8.10.5 GHC on apple silicon
2021-06-15 15:32:47 +0200 <maerwald> what does line editing mean
2021-06-15 15:33:12 +0200 <ixlun> For example, pressing Ctrl-a to take you to the beginning of the line
2021-06-15 15:34:31 +0200 <ixlun> I think it uses GNU readline under the hood
2021-06-15 15:34:53 +0200haskman(~haskman@223.190.124.48) (Quit: Going to sleep. ZZZzzz…)
2021-06-15 15:35:16 +0200 <maerwald> ctrl-a does odd things for me
2021-06-15 15:35:35 +0200 <maerwald> but I have no idea if that is supposed to work on darwin
2021-06-15 15:35:42 +0200haskman(~haskman@223.190.124.48)
2021-06-15 15:36:57 +0200 <ixlun> Are you on an X86 or arm64 machine?
2021-06-15 15:37:04 +0200 <maerwald> arm64
2021-06-15 15:37:16 +0200 <Hecate> am I hallucinating or is this an effect system in the rust std_lib? https://blog.sunfishcode.online/introducing-cap-std/
2021-06-15 15:37:58 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 15:37:59 +0200 <maerwald> looks like a syscall sandbox
2021-06-15 15:38:13 +0200 <ixlun> maerwald: Okay, thanks for the info. Good to know that it's not just my system. I might raise a bug on the GHC gitlab.
2021-06-15 15:38:19 +0200 <merijn> ghci uses haskeline
2021-06-15 15:38:44 +0200 <merijn> Which is a Haskell implementation that mimics readline. But it doesn't use readline
2021-06-15 15:38:56 +0200 <ixlun> Ahh, I didn't know that
2021-06-15 15:39:06 +0200 <ixlun> It does such a good job, I thought it was readline!
2021-06-15 15:39:11 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26)
2021-06-15 15:39:13 +0200 <merijn> It's quite nice to work with
2021-06-15 15:39:24 +0200 <merijn> Have been using it with custom completion logic, etc.
2021-06-15 15:39:41 +0200listofoptions(~haha@nat.syssrc.com)
2021-06-15 15:40:36 +0200 <ixlun> I might try and create a small program that uses it on my system and see if I can replicate the problem. If so, I guess there would be a bug in haskeline
2021-06-15 15:43:06 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26) (Ping timeout: 240 seconds)
2021-06-15 15:43:51 +0200involans(~alex@cpc92718-cmbg20-2-0-cust157.5-4.cable.virginm.net)
2021-06-15 15:43:57 +0200larkfisherman(~larkfishe@217.75.204.126) (Quit: Leaving)
2021-06-15 15:46:05 +0200 <merijn> Could be, or an issue with terminfo, etc.
2021-06-15 15:46:07 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2021-06-15 15:46:50 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 15:47:07 +0200haskman(~haskman@223.190.124.48) (Quit: QUIT)
2021-06-15 15:47:32 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-06-15 15:50:38 +0200ixlun(~matthew@213.205.241.86) (Read error: Connection reset by peer)
2021-06-15 15:50:57 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit)
2021-06-15 15:51:14 +0200warnz(~warnz@2600:1700:77c0:5610:800b:6e01:97af:a956)
2021-06-15 15:52:35 +0200azeem(~azeem@176.201.22.245) (Ping timeout: 265 seconds)
2021-06-15 15:52:54 +0200azeem(~azeem@176.201.22.245)
2021-06-15 15:53:18 +0200chddr(~Thunderbi@31.148.23.125)
2021-06-15 15:53:42 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-06-15 15:54:27 +0200berberman(~berberman@user/berberman) (Ping timeout: 244 seconds)
2021-06-15 15:54:29 +0200berberman_(~berberman@user/berberman)
2021-06-15 15:54:42 +0200Guest9(~Guest9@103.249.234.176) (Ping timeout: 240 seconds)
2021-06-15 15:54:51 +0200qbt(~edun@user/edun)
2021-06-15 15:55:30 +0200warnz(~warnz@2600:1700:77c0:5610:800b:6e01:97af:a956) (Ping timeout: 240 seconds)
2021-06-15 15:56:30 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-06-15 15:56:49 +0200wonko(~wjc@62.115.229.50) (Remote host closed the connection)
2021-06-15 15:57:40 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit)
2021-06-15 15:58:43 +0200sekun(~sekun@180.190.156.133) (Ping timeout: 272 seconds)
2021-06-15 15:59:06 +0200Sgeo(~Sgeo@user/sgeo)
2021-06-15 15:59:18 +0200ddellacosta(~ddellacos@89.45.224.112)
2021-06-15 15:59:42 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-06-15 16:00:12 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit)
2021-06-15 16:00:45 +0200egoist(~egoist@186.235.82.46)
2021-06-15 16:00:54 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-06-15 16:01:14 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 16:02:44 +0200dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 265 seconds)
2021-06-15 16:03:57 +0200fluffyballoon(~fluffybal@2620:72:0:6480::10f7)
2021-06-15 16:04:11 +0200ddellacosta(~ddellacos@89.45.224.112) (Ping timeout: 265 seconds)
2021-06-15 16:04:12 +0200raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.1)
2021-06-15 16:04:31 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-06-15 16:04:55 +0200egoist(~egoist@186.235.82.46) (Client Quit)
2021-06-15 16:05:08 +0200egoist(~egoist@186.235.82.46)
2021-06-15 16:05:37 +0200etherington(~nagybogo@2a02:c7f:d425:9500:3ec0:37eb:211a:4131)
2021-06-15 16:07:05 +0200egoist(~egoist@186.235.82.46) (Client Quit)
2021-06-15 16:07:19 +0200egoist(~egoist@186.235.82.46)
2021-06-15 16:08:19 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 16:09:10 +0200egoist(~egoist@186.235.82.46) (Client Quit)
2021-06-15 16:10:41 +0200warnz(~warnz@2600:1700:77c0:5610:800b:6e01:97af:a956)
2021-06-15 16:13:07 +0200 <cheater> any idea what "issues" he was experiencing?
2021-06-15 16:13:48 +0200 <cheater> because haskeline is buggy as hell with ctrl-keys and i reported it typing a when you hold ctrl-a. i think i reported that like 10 years ago. it hasn't been fixed yet.
2021-06-15 16:14:25 +0200econo(uid147250@user/econo)
2021-06-15 16:15:18 +0200warnz(~warnz@2600:1700:77c0:5610:800b:6e01:97af:a956) (Ping timeout: 265 seconds)
2021-06-15 16:16:39 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Read error: Connection reset by peer)
2021-06-15 16:17:16 +0200 <siraben> What's the easiest way to sort strings in a locale-sensitive manner?
2021-06-15 16:17:23 +0200 <siraben> I'm maintaining a list of items https://github.com/siraben/freenode-exodus/pull/112/files and sorting ö against other characters seems to put it in an odd place
2021-06-15 16:18:33 +0200eagleflo(~aku@eagleflow.fi)
2021-06-15 16:18:42 +0200 <siraben> Ideally this should not need anything outside of the base libraries
2021-06-15 16:19:38 +0200warnz(~warnz@2600:1700:77c0:5610:800b:6e01:97af:a956)
2021-06-15 16:19:39 +0200 <geekosaur> siraben, I think base only supports Unicode codepoint sorting and you need an external libary *and* a locale to do better
2021-06-15 16:20:05 +0200 <siraben> I found https://hackage.haskell.org/package/rfc5051
2021-06-15 16:20:52 +0200egoist(~egoist@186.235.82.46)
2021-06-15 16:21:07 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2021-06-15 16:22:04 +0200 <geekosaur> https://hackage.haskell.org/package/text-icu
2021-06-15 16:23:38 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-06-15 16:24:17 +0200ixlun(~matthew@213.205.241.86)
2021-06-15 16:24:21 +0200jakalx(~jakalx@base.jakalx.net)
2021-06-15 16:24:23 +0200fef(~thedawn@user/thedawn)
2021-06-15 16:25:54 +0200chddr(~Thunderbi@31.148.23.125) (Ping timeout: 240 seconds)
2021-06-15 16:25:57 +0200_73(~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Ping timeout: 272 seconds)
2021-06-15 16:26:07 +0200 <merijn> siraben: The "correct" sorting depends on your locale
2021-06-15 16:26:11 +0200_73``(~user@pool-96-252-123-136.bstnma.fios.verizon.net)
2021-06-15 16:26:21 +0200 <merijn> siraben: And text-icu is going to be the only correct answer
2021-06-15 16:26:32 +0200neceve(~quassel@2a02:c7f:607e:d600:a95a:ecd2:e57a:3130) (Ping timeout: 272 seconds)
2021-06-15 16:26:57 +0200Profpatsch(~Profpatsc@static.88-198-193-255.clients.your-server.de)
2021-06-15 16:27:08 +0200 <Profpatsch> Is there a way to tell cabal to run tests in interactive mode?
2021-06-15 16:27:36 +0200 <siraben> merijn: how would I construct parsers for Text using parser combinators?
2021-06-15 16:27:39 +0200 <Profpatsch> The “compile -> compile tests -> link test binaries -> run once -> restart” cycle is not very nice
2021-06-15 16:27:39 +0200 <dminuoso> Profpatsch: you can just build the tests and run them directly
2021-06-15 16:27:41 +0200 <merijn> Profpatsch: "cabal run" works on tests
2021-06-15 16:27:51 +0200 <siraben> One issue I run into is when parsing `many1 anyChar`, I have to re-pack into text
2021-06-15 16:27:59 +0200 <Profpatsch> merijn: linking still takes multiple seconds
2021-06-15 16:27:59 +0200 <merijn> siraben: megaparsec supports Text
2021-06-15 16:28:04 +0200sayola(~vekto@dslc-082-082-145-205.pools.arcor-ip.net) (Read error: Connection reset by peer)
2021-06-15 16:28:11 +0200 <merijn> (as input)
2021-06-15 16:28:16 +0200 <dminuoso> Profpatsch: Do you have stripping enabled?
2021-06-15 16:28:26 +0200 <Profpatsch> merijn: I don’t see why test runners couldn’t just run in interactive mode
2021-06-15 16:28:34 +0200 <siraben> bah, I guess I'll have to add dependencies then
2021-06-15 16:28:53 +0200 <dminuoso> Profpatsch: You cant get around linking irrespective of whether you use `cabal test` or `cabal run`.
2021-06-15 16:28:59 +0200 <Profpatsch> yeah
2021-06-15 16:29:22 +0200 <dminuoso> Also, you can run tests from `cabal repl` if that helps
2021-06-15 16:29:23 +0200 <merijn> Profpatsch: What does interactive mode mean?
2021-06-15 16:29:31 +0200 <Profpatsch> ghci
2021-06-15 16:29:42 +0200ikex(~ash@user/ikex)
2021-06-15 16:30:00 +0200 <Profpatsch> Maybe I should just run them in ghci
2021-06-15 16:30:01 +0200 <dminuoso> Oh, I see. You want it to run through ghci to avoid the slower compilation process from building a binary? :p
2021-06-15 16:30:09 +0200Tritlotritlo
2021-06-15 16:30:11 +0200 <dminuoso> `cabal repl` is your friend.
2021-06-15 16:30:13 +0200 <sclv> i'd actually want this feature too -- for a Work Project not only is linking tests slow, but on macos in particular it actually fails because too many symbols for stupid apple linkerr
2021-06-15 16:30:25 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-06-15 16:30:33 +0200 <sclv> running in ghci is feasible of course, but less convenieent
2021-06-15 16:31:02 +0200_73``(~user@pool-96-252-123-136.bstnma.fios.verizon.net) (Remote host closed the connection)
2021-06-15 16:31:02 +0200 <Profpatsch> dminuoso: is there a way to automate `cabal repl` short of just piping text to stdin?
2021-06-15 16:31:40 +0200 <sclv> oh btw while i'm here is there a pexpect/pxssh library alike for haskell i can use out of the box?
2021-06-15 16:31:56 +0200 <dminuoso> Mmm, a `cabal run --ghci` doesnt sound unreasonable, honestly
2021-06-15 16:32:01 +0200ddellacosta(~ddellacos@83.143.246.104)
2021-06-15 16:32:24 +0200 <Profpatsch> I guess what I want to do is have something like a ghci start as a service and my test suite just executing symbols in it
2021-06-15 16:32:27 +0200 <sclv> need to drive a bunch of concurrent ssh sessions from haskell and not looking forward to doing all the grotty bits myself directly on top of system.process
2021-06-15 16:32:29 +0200 <dminuoso> Profpatsch: You can use ghci
2021-06-15 16:32:31 +0200 <merijn> Profpatsch: You can just do "cabal repl test:test-name" ?
2021-06-15 16:32:32 +0200 <dminuoso> err ghcid
2021-06-15 16:32:38 +0200 <dminuoso> ghcid can then call `cabal repl`
2021-06-15 16:32:42 +0200 <dminuoso> and invoke your test suite
2021-06-15 16:32:48 +0200 <Profpatsch> hmm
2021-06-15 16:33:44 +0200tritloFalla-Matti
2021-06-15 16:34:13 +0200Falla-Mattitritlo
2021-06-15 16:34:25 +0200pavonia(~user@user/siracusa)
2021-06-15 16:35:04 +0200hendursaga(~weechat@user/hendursaga)
2021-06-15 16:35:40 +0200 <dminuoso> Does runghc use the bytecode interpreter?
2021-06-15 16:37:12 +0200ddellacosta(~ddellacos@83.143.246.104) (Ping timeout: 268 seconds)
2021-06-15 16:37:12 +0200 <merijn> I think si
2021-06-15 16:37:37 +0200 <geekosaur> yes
2021-06-15 16:38:09 +0200larkfisherman(~larkfishe@217.75.204.126)
2021-06-15 16:42:47 +0200 <dminuoso> There'd have to be a bit of engineering. For starters runghc would need response file support.
2021-06-15 16:42:48 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-15 16:43:20 +0200azeem(~azeem@176.201.22.245) (Ping timeout: 265 seconds)
2021-06-15 16:45:12 +0200Guest91(~Guest91@p200300f4c70f24004558d010706c3ebd.dip0.t-ipconnect.de)
2021-06-15 16:45:20 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 16:45:39 +0200Guest91(~Guest91@p200300f4c70f24004558d010706c3ebd.dip0.t-ipconnect.de) (Client Quit)
2021-06-15 16:45:54 +0200dunkeln(~dunkeln@94.129.65.28)
2021-06-15 16:45:55 +0200_73(~user@pool-96-252-123-136.bstnma.fios.verizon.net)
2021-06-15 16:47:28 +0200fef(~thedawn@user/thedawn) (Ping timeout: 252 seconds)
2021-06-15 16:47:51 +0200fishfinger(~fishfinge@cpc68330-cdif16-2-0-cust557.5-1.cable.virginm.net)
2021-06-15 16:49:26 +0200chexum(~chexum@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
2021-06-15 16:49:37 +0200chexum(~chexum@gateway/tor-sasl/chexum)
2021-06-15 16:50:10 +0200azeem(~azeem@176.201.22.245)
2021-06-15 16:50:29 +0200fiddlerwoaroof(~fiddlerwo@user/fiddlerwoaroof) (Quit: Gone.)
2021-06-15 16:51:34 +0200kayprish(~kayprish@cable-188-2-229-172.dynamic.sbb.rs) (Remote host closed the connection)
2021-06-15 16:51:51 +0200fiddlerwoaroof(~fiddlerwo@user/fiddlerwoaroof)
2021-06-15 16:53:49 +0200 <siraben> given a parse tree by cmark (for markdown parsing), how can I get all the list items?
2021-06-15 16:54:02 +0200fef(~thedawn@user/thedawn)
2021-06-15 16:54:03 +0200 <siraben> is this something suitable for lens? I'm trying recursion schemes right now and it seems awkward to express as a catamorphism
2021-06-15 16:55:07 +0200ef(~thedawn@user/thedawn)
2021-06-15 16:55:08 +0200ef(~thedawn@user/thedawn) (Client Quit)
2021-06-15 16:55:43 +0200fendor_fendor
2021-06-15 16:55:45 +0200 <c_wraith> how do you want nested lists to be handled?
2021-06-15 16:56:01 +0200_73(~user@pool-96-252-123-136.bstnma.fios.verizon.net) (ERC (IRC client for Emacs 27.2))
2021-06-15 16:56:09 +0200 <siraben> c_wraith: assume no nested lists
2021-06-15 16:56:43 +0200 <c_wraith> that sounds like an implausible assumption, but ok. :P
2021-06-15 16:56:48 +0200 <siraben> there's a flat list of items somewhere in the markdown file, and I want to get the items in order
2021-06-15 16:57:02 +0200 <siraben> c_wraith: the list is https://github.com/siraben/freenode-exodus/ :P
2021-06-15 16:57:19 +0200 <siraben> currently I have an ad-hoc parser for it which doesn't handle locales well
2021-06-15 16:57:21 +0200 <c_wraith> This is a thing you can do with lenses, but you need them to be written
2021-06-15 16:57:25 +0200 <sshine> siraben, "I'm trying recursion schemes right now and it seems awkward to express as a catamorphism" -- they should put that in the reviews.
2021-06-15 16:58:18 +0200 <siraben> sshine: haha, the difficulty is that as I'm going down the node tree I'm looking for different types of nodes, first a LIST, then an ITEM
2021-06-15 16:58:28 +0200fef(~thedawn@user/thedawn) (Ping timeout: 252 seconds)
2021-06-15 16:58:44 +0200 <sshine> yea :)
2021-06-15 16:58:50 +0200 <sshine> paramorphism
2021-06-15 16:59:29 +0200 <sshine> https://hackage.haskell.org/package/recursion-schemes-5.2.2.1/docs/Data-Functor-Foldable.html#v:para
2021-06-15 16:59:51 +0200muto(~muto@d75-159-225-7.abhsia.telus.net)
2021-06-15 17:00:10 +0200fluffyballoon(~fluffybal@2620:72:0:6480::10f7) (Quit: Client closed)
2021-06-15 17:00:43 +0200larkfisherman(~larkfishe@217.75.204.126) (Remote host closed the connection)
2021-06-15 17:02:14 +0200 <sshine> I had this idea that recursion-schemes would be neat if you wrote your original tree as a fixed point type, and then wrote a whole lot of convenience patterns and values so you get an unwrapped experience, too. then you'd be able to have nice patterns when doing explicit matching/building, and still some generic traversal.
2021-06-15 17:02:55 +0200 <c_wraith> yeah, I've done that. it ends up with a lot of boilerplate if you're not using it a *lot*
2021-06-15 17:02:58 +0200 <sshine> my one attempt with data-fix made me a little tired, though. >_<
2021-06-15 17:03:07 +0200 <siraben> Oh god now I'm reading into unicode normalization
2021-06-15 17:03:14 +0200 <siraben> all I wanted was to sort ö nicely 😭
2021-06-15 17:03:18 +0200abrar_(~abrar@static-108-2-152-54.phlapa.fios.verizon.net) (Ping timeout: 264 seconds)
2021-06-15 17:03:36 +0200 <c_wraith> well, the good thing is you can just let text-icu handle all of that for you
2021-06-15 17:04:27 +0200 <sshine> siraben, the cmark/cmark-gfm AST doesn't provide an ordered list?
2021-06-15 17:04:45 +0200 <siraben> c_wraith: I want to sort strings but that requires me to talk about normalization and locales
2021-06-15 17:04:57 +0200nschoe(~quassel@178.251.84.79) (Ping timeout: 268 seconds)
2021-06-15 17:05:12 +0200spicyrice(~ubuntu@2600:1f11:52a:4400:ada3:7fcd:e4c0:53a1)
2021-06-15 17:05:18 +0200 <sshine> siraben, just sort on casefold? ;-D
2021-06-15 17:05:18 +0200azeem(~azeem@176.201.22.245) (Read error: Connection reset by peer)
2021-06-15 17:05:40 +0200 <sshine> squint :: Char -> Char
2021-06-15 17:05:46 +0200ddellacosta(~ddellacos@86.106.121.177)
2021-06-15 17:05:59 +0200 <siraben> hmm, ok, I'll just continue with the naïve sort in Data.List, not ideal but this is a silly little list that doesn't need other dependencies haha
2021-06-15 17:06:04 +0200azeem(~azeem@dynamic-adsl-78-13-238-239.clienti.tiscali.it)
2021-06-15 17:06:49 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-06-15 17:08:31 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533)
2021-06-15 17:10:09 +0200Sgeo_(~Sgeo@ool-18b9875e.dyn.optonline.net)
2021-06-15 17:10:18 +0200ddellacosta(~ddellacos@86.106.121.177) (Ping timeout: 240 seconds)
2021-06-15 17:10:20 +0200aplainze1akind(~johndoe@captainludd.powered.by.lunarbnc.net)
2021-06-15 17:10:24 +0200listofoptions_(~haha@nat.syssrc.com)
2021-06-15 17:10:47 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-06-15 17:11:12 +0200gentauro(~gentauro@user/gentauro)
2021-06-15 17:11:35 +0200ixlun-(~matthew@213.205.241.86)
2021-06-15 17:12:40 +0200berberman(~berberman@user/berberman)
2021-06-15 17:12:42 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533) (Ping timeout: 240 seconds)
2021-06-15 17:13:17 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-06-15 17:13:34 +0200reumeth2(~reumeth@user/reumeth)
2021-06-15 17:13:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-06-15 17:13:43 +0200pbrisbin_(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net)
2021-06-15 17:13:43 +0200ikex1(~ash@user/ikex)
2021-06-15 17:14:00 +0200muto_(~muto@d75-159-225-7.abhsia.telus.net)
2021-06-15 17:14:13 +0200shapr`(~user@pool-108-28-144-11.washdc.fios.verizon.net)
2021-06-15 17:15:02 +0200 <c_wraith> siraben: for what it's worth, use Normal Form C unless you have a specific requirement to use something else
2021-06-15 17:15:03 +0200berberman_(~berberman@user/berberman) (Ping timeout: 265 seconds)
2021-06-15 17:15:03 +0200ixlun(~matthew@213.205.241.86) (Ping timeout: 265 seconds)
2021-06-15 17:15:03 +0200spicyrice(~ubuntu@2600:1f11:52a:4400:ada3:7fcd:e4c0:53a1) (Ping timeout: 265 seconds)
2021-06-15 17:15:03 +0200ikex(~ash@user/ikex) (Ping timeout: 265 seconds)
2021-06-15 17:15:03 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net) (Ping timeout: 265 seconds)
2021-06-15 17:15:03 +0200muto(~muto@d75-159-225-7.abhsia.telus.net) (Ping timeout: 265 seconds)
2021-06-15 17:15:03 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Ping timeout: 265 seconds)
2021-06-15 17:15:03 +0200Sgeo(~Sgeo@user/sgeo) (Ping timeout: 265 seconds)
2021-06-15 17:15:03 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 265 seconds)
2021-06-15 17:15:03 +0200listofoptions(~haha@nat.syssrc.com) (Ping timeout: 265 seconds)
2021-06-15 17:15:03 +0200alx741(~alx741@186.178.108.66) (Ping timeout: 265 seconds)
2021-06-15 17:15:03 +0200shapr(~user@pool-108-28-144-11.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2021-06-15 17:15:03 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 265 seconds)
2021-06-15 17:15:04 +0200aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net) (Ping timeout: 265 seconds)
2021-06-15 17:15:04 +0200zebrag(~chris@user/zebrag) (Ping timeout: 265 seconds)
2021-06-15 17:15:04 +0200reumeth(~reumeth@user/reumeth) (Ping timeout: 265 seconds)
2021-06-15 17:15:11 +0200shapr`shapr
2021-06-15 17:15:14 +0200LukeHoer_(~LukeHoers@user/lukehoersten)
2021-06-15 17:15:25 +0200spicyrice(~ubuntu@2600:1f11:52a:4400:ada3:7fcd:e4c0:53a1)
2021-06-15 17:15:28 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-06-15 17:15:41 +0200zebrag(~chris@user/zebrag)
2021-06-15 17:16:35 +0200alx741(~alx741@186.178.108.66)
2021-06-15 17:17:39 +0200spicyrice(~ubuntu@2600:1f11:52a:4400:ada3:7fcd:e4c0:53a1) (Client Quit)
2021-06-15 17:17:53 +0200spicyrice(~ubuntu@2600:1f11:52a:4400:ada3:7fcd:e4c0:53a1)
2021-06-15 17:18:26 +0200allbery_bgeekosaur
2021-06-15 17:18:43 +0200NanoC(~NanoCoast@p200300e127264d0058cc7c623629969e.dip0.t-ipconnect.de) (Quit: Leaving)
2021-06-15 17:19:03 +0200shredder(~shredder@user/shredder) (Remote host closed the connection)
2021-06-15 17:19:06 +0200spicyrice(~ubuntu@2600:1f11:52a:4400:ada3:7fcd:e4c0:53a1) (Client Quit)
2021-06-15 17:19:21 +0200spicyrice(~ubuntu@2600:1f11:52a:4400:ada3:7fcd:e4c0:53a1)
2021-06-15 17:20:58 +0200neceve(~quassel@2a02:c7f:607e:d600:a95a:ecd2:e57a:3130)
2021-06-15 17:21:28 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.1)
2021-06-15 17:23:30 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 240 seconds)
2021-06-15 17:25:00 +0200 <Profpatsch> Why is it executable and library but Test-Suite
2021-06-15 17:25:05 +0200 <Profpatsch> can we finally burn this format to the ground
2021-06-15 17:26:12 +0200derelict(~derelict@user/derelict) (Quit: WeeChat 3.1)
2021-06-15 17:26:28 +0200zmt00(~zmt00@user/zmt00)
2021-06-15 17:26:37 +0200 <tomsmeding> Profpatsch: at least the capitals are unnecessary; test-suite also works
2021-06-15 17:26:41 +0200learner-monad(~ehanneken@user/learner-monad)
2021-06-15 17:26:56 +0200 <tomsmeding> and also grammatically, it's a "test suite" not a testsuite, so it makes sense kindof :p
2021-06-15 17:27:22 +0200 <tomsmeding> there's also build-depends and such
2021-06-15 17:27:36 +0200derelict(~derelict@user/derelict)
2021-06-15 17:30:24 +0200cstml(cstml@tilde.club) (Quit: WeeChat 3.1)
2021-06-15 17:30:24 +0200ddb(~ddb@2607:5300:61:c67::196) (Quit: WeeChat 3.0)
2021-06-15 17:31:49 +0200benin036(~benin@183.82.204.171) (Quit: The Lounge - https://thelounge.chat)
2021-06-15 17:36:03 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-15 17:38:36 +0200Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-06-15 17:38:56 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 17:40:51 +0200fishfinger(~fishfinge@cpc68330-cdif16-2-0-cust557.5-1.cable.virginm.net) (Ping timeout: 265 seconds)
2021-06-15 17:41:54 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-15 17:42:08 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:7d76:d843:3eda:de44) (Quit: WeeChat 2.8)
2021-06-15 17:43:15 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-15 17:43:26 +0200sekun(~sekun@180.190.156.133)
2021-06-15 17:43:36 +0200lbseale(~lbseale@user/ep1ctetus)
2021-06-15 17:44:01 +0200 <monochrom> type-class
2021-06-15 17:44:49 +0200 <monochrom> But why the proliferation of such hyperboles tho
2021-06-15 17:44:59 +0200sayola(~vekto@dslc-082-082-145-205.pools.arcor-ip.net)
2021-06-15 17:45:21 +0200 <monochrom> If someone can't find a parser library they want, they say "I THREAT to create a library I need"
2021-06-15 17:45:46 +0200 <monochrom> If someone doesn't like a spelling, they say "can we burn this format to ground"
2021-06-15 17:46:54 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533)
2021-06-15 17:49:09 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-15 17:49:21 +0200sekun(~sekun@180.190.156.133) (Ping timeout: 268 seconds)
2021-06-15 17:49:48 +0200fef(~thedawn@user/thedawn)
2021-06-15 17:50:37 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-15 17:50:37 +0200ixlun-(~matthew@213.205.241.86) (Read error: Connection reset by peer)
2021-06-15 17:54:55 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26)
2021-06-15 17:55:06 +0200spicyrice(~ubuntu@2600:1f11:52a:4400:ada3:7fcd:e4c0:53a1) (Quit: WeeChat 3.2)
2021-06-15 17:55:37 +0200jao(jao@gateway/vpn/protonvpn/jao)
2021-06-15 17:57:26 +0200LukeHoer_(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-15 17:57:34 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2021-06-15 17:57:44 +0200xff0x(~xff0x@2001:1a81:523f:a800:1801:e3aa:b378:ead6) (Ping timeout: 244 seconds)
2021-06-15 17:58:32 +0200xff0x(~xff0x@2001:1a81:523f:a800:1537:97ed:971:4698)
2021-06-15 17:59:20 +0200ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
2021-06-15 18:00:27 +0200ikex1(~ash@user/ikex) (Ping timeout: 268 seconds)
2021-06-15 18:00:30 +0200nsilv1(~nsilv@212.103.198.210) (Quit: WeeChat 3.0.1)
2021-06-15 18:01:25 +0200 <Profpatsch> watch me generate a cabal file, with all transitive packages from my nix closure in scope
2021-06-15 18:01:33 +0200 <Profpatsch> So that I never have to add `containers` to my cabal files ever again
2021-06-15 18:02:22 +0200 <Profpatsch> and curse the weird syntax with no editor support, the strange indentation, the common stanzas not supported by hie
2021-06-15 18:03:02 +0200[exa]grabs popcorn
2021-06-15 18:04:02 +0200 <c_wraith> So let's guess on how it's going to break first. Some transitive dependency on monads-tf? Or is that not an issue that happens anymore these days?
2021-06-15 18:07:20 +0200vicfred(~vicfred@user/vicfred)
2021-06-15 18:08:08 +0200Scotty_Trees(~Scotty_Tr@162-234-179-169.lightspeed.brhmal.sbcglobal.net)
2021-06-15 18:08:20 +0200 <c_wraith> in theory there could be an issue with multiple versions of the same package, but I don't think that will ever happen in practice. As much as all the tools are intended to not break in that case, no solvers will intentionally do it
2021-06-15 18:09:03 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-06-15 18:09:37 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2021-06-15 18:09:39 +0200 <Boarders> I am getting a build error with cabal that says:
2021-06-15 18:09:39 +0200 <Boarders> rejecting: bytestring-0.11.1.0 (conflict: binary =>
2021-06-15 18:09:39 +0200 <Boarders> bytestring==0.10.12.1/installed-0.10.12.1)
2021-06-15 18:10:06 +0200 <Boarders> does anyone know why that might be the case since binary doesn't have those bounds on bytestring
2021-06-15 18:10:12 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 18:11:15 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Client Quit)
2021-06-15 18:11:18 +0200 <monochrom> No, it is something else that requests bytestring-0.11
2021-06-15 18:11:49 +0200 <monochrom> but you already have bytestring-0.10.12.1 that comes with GHC.
2021-06-15 18:12:30 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Remote host closed the connection)
2021-06-15 18:12:49 +0200 <Boarders> I am trying to ask for bytestring-0.11.1.0 with ghc-9.0.1
2021-06-15 18:12:55 +0200 <Boarders> is there an issue with that?
2021-06-15 18:13:58 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-06-15 18:14:23 +0200 <Boarders> if so how are you meant to figure out the correct version of bytestring for a given GHC version?
2021-06-15 18:14:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 244 seconds)
2021-06-15 18:15:18 +0200ddellacosta(~ddellacos@89.45.224.251)
2021-06-15 18:15:25 +0200spicyrice(~ubuntu@2600:1f11:52a:4400:ccbc:2b96:cabe:414b)
2021-06-15 18:15:25 +0200 <maerwald> Boarders: https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history
2021-06-15 18:15:45 +0200 <Boarders> Actually I get the error even if I just do:
2021-06-15 18:15:45 +0200 <Boarders> cabal install --with-compiler=ghc-9.0.1 --lib bytestrinng
2021-06-15 18:15:50 +0200 <Boarders> what gives with that?
2021-06-15 18:16:54 +0200spicyrice(~ubuntu@2600:1f11:52a:4400:ccbc:2b96:cabe:414b) (Client Quit)
2021-06-15 18:17:03 +0200pe200012_(~pe200012@120.236.161.38) (Ping timeout: 244 seconds)
2021-06-15 18:17:10 +0200spicyrice(~ubuntu@2600:1f11:52a:4400:ccbc:2b96:cabe:414b)
2021-06-15 18:18:00 +0200spicyrice(~ubuntu@2600:1f11:52a:4400:ccbc:2b96:cabe:414b) (Client Quit)
2021-06-15 18:19:30 +0200ddellacosta(~ddellacos@89.45.224.251) (Ping timeout: 240 seconds)
2021-06-15 18:19:43 +0200spicyrice(~ubuntu@2600:1f11:52a:4400:ccbc:2b96:cabe:414b)
2021-06-15 18:21:03 +0200 <Boarders> as far as I can tell, if the cabal store contains a newer version of bytestring than the boot library then that completely messes up installation
2021-06-15 18:22:25 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-06-15 18:27:08 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-06-15 18:27:32 +0200 <Boarders> I am trying to build with the llvm backend on a new machine and I get a bunch of errors like:
2021-06-15 18:27:32 +0200 <Boarders> undefined reference to 'bytestringzm0zi10zi12zi0_DataziByteStringziInternal_PS_con_info'
2021-06-15 18:27:57 +0200 <Boarders> I think that is probably something to do with not having something related to libc, anyone know how to fix it?
2021-06-15 18:28:07 +0200sekun(~sekun@180.190.156.133)
2021-06-15 18:28:14 +0200 <Boarders> Thanks maerwald btw!
2021-06-15 18:28:51 +0200fluffyballoon(~fluffybal@2620:72:0:6480::10f7)
2021-06-15 18:29:19 +0200altern(~altern@altern.corbina.com.ua)
2021-06-15 18:30:25 +0200 <[exa]> Boarders: did you carry any of the binaries from the older machine? this sounds fishy
2021-06-15 18:32:33 +0200sekun(~sekun@180.190.156.133) (Ping timeout: 244 seconds)
2021-06-15 18:32:58 +0200Topsi(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de)
2021-06-15 18:33:05 +0200 <[exa]> btw bytestringzm0zi10... doesn't sound like from libc at all
2021-06-15 18:36:42 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-06-15 18:36:50 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533) (Remote host closed the connection)
2021-06-15 18:37:06 +0200arjun(~user@user/arjun)
2021-06-15 18:37:13 +0200 <altern> johnw_, Hi John! I want to contribute to gitlib, but I rather lack expertise. Would you be able to guide me? If you have time and inclination of course.
2021-06-15 18:37:27 +0200 <arjun> SUPER OVERLOADED QUESTION
2021-06-15 18:37:35 +0200 <arjun> lenses. yay or nay ?
2021-06-15 18:37:38 +0200 <Boarders> @[exa]: ah thank you, I was being dumb. An old object file was lying around so GHC wasn't re-compiling :)
2021-06-15 18:37:38 +0200 <lambdabot> Unknown command, try @list
2021-06-15 18:37:55 +0200xaltsc(~xaltsc@user/xaltsc)
2021-06-15 18:42:34 +0200warnz(~warnz@2600:1700:77c0:5610:800b:6e01:97af:a956) (Remote host closed the connection)
2021-06-15 18:42:46 +0200 <cdsmith> Ugh... I need something like generalized newtype deriving, but for a GADT with a constraint in the context. :(
2021-06-15 18:47:14 +0200 <monochrom> Since GADT is very unlike newtype, I don't know what "like" means, I only know what "unlike" means.
2021-06-15 18:47:34 +0200 <monochrom> But there is standalone deriving.
2021-06-15 18:48:02 +0200 <monochrom> err actually I don't know whehter standalone deriving works for GADT.
2021-06-15 18:48:11 +0200 <tomsmeding> it does
2021-06-15 18:48:19 +0200 <tomsmeding> or, at least sometimes it does
2021-06-15 18:48:19 +0200 <monochrom> Nice.
2021-06-15 18:48:40 +0200 <monochrom> I kind of have some memory of someone else suggesting it.
2021-06-15 18:48:42 +0200 <tomsmeding> I regularly use it to derive Show for some GADT, each time wondering why a plain 'deriving (Show)' can't do the same
2021-06-15 18:51:01 +0200qbt(~edun@user/edun) (Ping timeout: 268 seconds)
2021-06-15 18:52:24 +0200ddellacosta(~ddellacos@89.45.224.34)
2021-06-15 18:52:34 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26) (Remote host closed the connection)
2021-06-15 18:53:08 +0200chexum(~chexum@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-06-15 18:55:20 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2021-06-15 18:57:18 +0200ddellacosta(~ddellacos@89.45.224.34) (Ping timeout: 264 seconds)
2021-06-15 18:58:03 +0200warnz(~warnz@2600:1700:77c0:5610:800b:6e01:97af:a956)
2021-06-15 18:59:48 +0200neceve(~quassel@2a02:c7f:607e:d600:a95a:ecd2:e57a:3130) (Ping timeout: 272 seconds)
2021-06-15 18:59:56 +0200killsushi(~killsushi@user/killsushi) (Ping timeout: 244 seconds)
2021-06-15 19:02:18 +0200warnz(~warnz@2600:1700:77c0:5610:800b:6e01:97af:a956) (Ping timeout: 240 seconds)
2021-06-15 19:02:24 +0200 <cdsmith> What "like" means here is that I have a GADT like this: data MockT m a where MockT :: MonadIO m => ReaderT (MVar Foo) m a -> MockT m a. Now I'd like to derive most of the instances on ReaderT for MockT. MockT is almost a newtype, but cannot be because it needs the MonadIO constraint.
2021-06-15 19:03:36 +0200 <cdsmith> So there are 14 instances that are currently derived, but I need to write by hand to add that constraint.
2021-06-15 19:03:58 +0200 <cdsmith> I can write them... I'm just a bit annoyed at having to do so. :)
2021-06-15 19:05:57 +0200memowe(~memowe@ip-84-118-82-47.unity-media.net)
2021-06-15 19:06:09 +0200mrd(~mrd@45.61.147.211)
2021-06-15 19:06:26 +0200dunkeln(~dunkeln@94.129.65.28) (Ping timeout: 268 seconds)
2021-06-15 19:06:30 +0200mrd(~mrd@45.61.147.211) ()
2021-06-15 19:06:36 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
2021-06-15 19:07:40 +0200memowe(~memowe@ip-84-118-82-47.unity-media.net) (Client Quit)
2021-06-15 19:07:50 +0200tritlo(sid58727@id-58727.stonehaven.irccloud.com) (Changing host)
2021-06-15 19:07:50 +0200tritlo(sid58727@user/tritlo)
2021-06-15 19:09:39 +0200zeenk(~zeenk@188.26.30.39)
2021-06-15 19:09:51 +0200teaSlurper(~chris@81.96.113.213) (Remote host closed the connection)
2021-06-15 19:10:46 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26)
2021-06-15 19:11:25 +0200Erutuon(~Erutuon@user/erutuon)
2021-06-15 19:14:09 +0200wei2912(~wei2912@112.199.250.21) (Quit: Lost terminal)
2021-06-15 19:14:49 +0200teaSlurper(~chris@81.96.113.213)
2021-06-15 19:15:06 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26) (Ping timeout: 240 seconds)
2021-06-15 19:15:25 +0200 <tritlo> Boarders: that's a known bug in when using bytestring and some other library using the same ffi function, but at a different type
2021-06-15 19:16:17 +0200 <tritlo> At least that's what it was when I ran into a similar thing 2 years ago using the LLVM backend...
2021-06-15 19:18:55 +0200ddellacosta(~ddellacos@89.46.62.21)
2021-06-15 19:19:27 +0200teaSlurper(~chris@81.96.113.213) (Ping timeout: 265 seconds)
2021-06-15 19:19:48 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-06-15 19:20:30 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 19:22:05 +0200dunkeln(~dunkeln@94.129.65.28)
2021-06-15 19:22:45 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2021-06-15 19:23:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533)
2021-06-15 19:25:12 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.1)
2021-06-15 19:27:43 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 19:28:38 +0200azeem(~azeem@dynamic-adsl-78-13-238-239.clienti.tiscali.it) (Ping timeout: 268 seconds)
2021-06-15 19:29:01 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-06-15 19:30:15 +0200azeem(~azeem@176.201.22.245)
2021-06-15 19:33:41 +0200fef(~thedawn@user/thedawn)
2021-06-15 19:36:45 +0200azeem(~azeem@176.201.22.245) (Read error: Connection reset by peer)
2021-06-15 19:37:40 +0200Guest21(~Guest21@46.204.1.2.dsl.dynamic.t-mobile.pl)
2021-06-15 19:37:58 +0200azeem(~azeem@dynamic-adsl-78-13-238-239.clienti.tiscali.it)
2021-06-15 19:38:12 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 19:42:06 +0200Guest21(~Guest21@46.204.1.2.dsl.dynamic.t-mobile.pl) (Client Quit)
2021-06-15 19:42:13 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22) (Quit: Client limit exceeded: 10000)
2021-06-15 19:44:33 +0200ac(~aloiscoch@2001:470:69fc:105::65) (Quit: Client limit exceeded: 10000)
2021-06-15 19:46:12 +0200Wonner(~Wonner@h77.53.21.98.static.ip.windstream.net)
2021-06-15 19:46:18 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com) (Ping timeout: 240 seconds)
2021-06-15 19:47:08 +0200killsushi(~killsushi@2607:fea8:3d40:767:a826:23b7:521c:2d11)
2021-06-15 19:47:08 +0200killsushi(~killsushi@2607:fea8:3d40:767:a826:23b7:521c:2d11) (Changing host)
2021-06-15 19:47:08 +0200killsushi(~killsushi@user/killsushi)
2021-06-15 19:48:40 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-15 19:49:29 +0200Topsi1(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de)
2021-06-15 19:50:03 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-06-15 19:53:03 +0200Topsi(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de) (Ping timeout: 272 seconds)
2021-06-15 19:53:40 +0200 <Boarders> tritlo: ahh thanks, it was something to do with the store having two copies of bytestring in it :|
2021-06-15 19:53:40 +0200ac(~aloiscoch@2001:470:69fc:105::65)
2021-06-15 19:53:40 +0200MatrixTravelerbo(~voyagert2@2001:470:69fc:105::22)
2021-06-15 19:54:59 +0200 <arjun> hi. i have a .md file and i'd like to read the file and parse the top optional yaml metadata if present
2021-06-15 19:55:09 +0200 <arjun> ```md
2021-06-15 19:55:15 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2021-06-15 19:55:19 +0200chddr(~Thunderbi@31.148.23.125)
2021-06-15 19:55:28 +0200ptrcmd_ptrcmd
2021-06-15 19:55:39 +0200 <arjun> ---
2021-06-15 19:55:39 +0200 <arjun> title: "Sample Post"
2021-06-15 19:55:40 +0200 <arjun> author: Me
2021-06-15 19:55:40 +0200 <arjun> date: Jan 1, 2019
2021-06-15 19:55:42 +0200 <arjun> tags: [dope, site]
2021-06-15 19:55:47 +0200 <arjun> description: My first blog post
2021-06-15 19:55:50 +0200 <arjun> image: code.jpg
2021-06-15 19:55:53 +0200 <arjun> ---
2021-06-15 19:55:58 +0200 <dminuoso> cdsmith: Drop the constraint from the data type.
2021-06-15 19:55:58 +0200 <arjun> # This is a test file
2021-06-15 19:56:04 +0200 <arjun> ## to see if it works
2021-06-15 19:56:11 +0200 <arjun> ```
2021-06-15 19:56:12 +0200 <pragma-> what in tarnation
2021-06-15 19:56:15 +0200 <Obo> use https://paste.tomsmeding.com to paste code
2021-06-15 19:56:17 +0200 <arjun> how would i go about it?
2021-06-15 19:56:20 +0200 <arjun> thanks.
2021-06-15 19:56:32 +0200warnz(~warnz@2600:1700:77c0:5610:800b:6e01:97af:a956)
2021-06-15 19:56:46 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 244 seconds)
2021-06-15 19:56:55 +0200 <monochrom> I only know the broad answer "use the library part of pandoc".
2021-06-15 19:57:05 +0200notzmv(~zmv@user/notzmv) (Read error: Connection reset by peer)
2021-06-15 19:57:44 +0200 <arjun> Obo: https://paste.tomsmeding.com/I9tE2bBu
2021-06-15 19:58:02 +0200 <arjun> monochrom: i am actively trying to avoid pandoc : P
2021-06-15 19:58:44 +0200 <arjun> i am using cmark for the md -> html conversion. but it doesn't parse the yaml meta at the top. so i'd have to preprocess it.
2021-06-15 19:59:27 +0200notzmv(~zmv@user/notzmv)
2021-06-15 20:01:03 +0200peddie(~peddie@2001:470:69fc:105::25d) (Quit: Client limit exceeded: 10000)
2021-06-15 20:01:30 +0200ixlun(~matthew@213.205.241.86)
2021-06-15 20:03:38 +0200ec(~ec@gateway/tor-sasl/ec)
2021-06-15 20:06:35 +0200 <cdsmith> <dminuoso "Chris Smith: Drop the constraint"> Thanks, but the whole point of this is that I need the constraint. (Well, "need" is a strong word. I can hack something together with unsafePerformIO otherwise, but's pretty hacky.)
2021-06-15 20:07:02 +0200 <dminuoso> That sounds to me like you're trying to be lazy.
2021-06-15 20:07:25 +0200peddie(~peddie@2001:470:69fc:105::25d)
2021-06-15 20:07:34 +0200 <dminuoso> If your newtype has a MonadIO instance, why do you think you need this?
2021-06-15 20:07:36 +0200cfricke(~cfricke@user/cfricke)
2021-06-15 20:08:00 +0200 <dminuoso> arjun: just use Data.List.break to split the lines into the header and the rest?
2021-06-15 20:08:26 +0200Profpatsch(~Profpatsc@static.88-198-193-255.clients.your-server.de) (WeeChat 3.1)
2021-06-15 20:08:49 +0200 <dminuoso> naively it seems like you should be able to do something like: let ls = lines buf; (meta, rest) = break (isPrefixOf "```") (drop ls); in ...
2021-06-15 20:09:39 +0200 <arjun> dminuoso: imma go try that, thanks
2021-06-15 20:09:41 +0200 <dminuoso> Then you can hand off `drop 1 meta` to your YAML parser, and `rest` to whatever other part.
2021-06-15 20:09:55 +0200 <dminuoso> or no, `init meta`
2021-06-15 20:09:58 +0200SrPx(sid108780@id-108780.highgate.irccloud.com)
2021-06-15 20:10:08 +0200 <davean> cdsmith: putting the MonadIO constraint *in* the type has a number of potential issues
2021-06-15 20:10:28 +0200 <SrPx> Hey, I haven't used IRC lately. Is this where everyone moved from FreeNode? Or are people using other tools like Discord?
2021-06-15 20:10:30 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 20:10:44 +0200 <monochrom> Yes for the former.
2021-06-15 20:10:47 +0200 <dminuoso> cdsmith: Also I dont think it actually buys you anything.
2021-06-15 20:10:59 +0200 <davean> dminuoso: mechanically no, its strictly wrose to have it there
2021-06-15 20:11:07 +0200 <davean> dminuoso: but people get "upset" about putting it on functions
2021-06-15 20:11:07 +0200 <dminuoso> yup
2021-06-15 20:11:17 +0200 <davean> until they make it work, and then realize why no one thinks its a good iea
2021-06-15 20:11:24 +0200 <davean> Its wrong - semanticly
2021-06-15 20:11:30 +0200maralorn(~maralorn@2001:470:69fc:105::251) (Quit: Client limit exceeded: 10000)
2021-06-15 20:11:38 +0200jakalx(~jakalx@base.jakalx.net)
2021-06-15 20:11:38 +0200 <dminuoso> Indeed, it took me a long while to understand why constraints dont belong on data, they belong on functions.
2021-06-15 20:11:41 +0200 <davean> it doesn't mean what you want it to mean
2021-06-15 20:12:06 +0200maralorn(~maralorn@2001:470:69fc:105::251)
2021-06-15 20:13:21 +0200etherington(~nagybogo@2a02:c7f:d425:9500:3ec0:37eb:211a:4131) (Quit: Client closed)
2021-06-15 20:13:46 +0200 <dminuoso> davean: I think what this is, is a reminiscence of dependency injection at data instantiation time.
2021-06-15 20:13:46 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:c958:4e9b:6898:197c)
2021-06-15 20:14:51 +0200cyphase(~cyphase@c-73-222-119-252.hsd1.ca.comcast.net) (Read error: Connection reset by peer)
2021-06-15 20:15:01 +0200 <davean> dminuoso: mmm, yah, I could see how someone could pattern match it from another language, but we have coherence
2021-06-15 20:15:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-06-15 20:15:22 +0200altern(~altern@altern.corbina.com.ua) (Ping timeout: 244 seconds)
2021-06-15 20:16:01 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26)
2021-06-15 20:16:05 +0200 <cdsmith> <dminuoso "If your newtype has a MonadIO in"> Actually, you may be write. Perhaps MonadIO should be in the instance context instead.
2021-06-15 20:16:09 +0200siraben(~siraben@user/siraben) (Quit: issued !quit command)
2021-06-15 20:16:13 +0200 <cdsmith> Err, right, not write
2021-06-15 20:16:16 +0200 <tomsmeding> just for completeness, the sentiment that one shouldn't put constraints in data doesn't hold when we start having existentials, right?
2021-06-15 20:16:31 +0200 <dminuoso> tomsmeding: Right.
2021-06-15 20:16:45 +0200tomsmedinghas been doing lots of that lately
2021-06-15 20:17:07 +0200 <cdsmith> Yeah, this isn't a constraint on the type. It's a contraint of a GADT constructor
2021-06-15 20:17:07 +0200azeem(~azeem@dynamic-adsl-78-13-238-239.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-06-15 20:17:08 +0200 <davean> tomsmeding: yah thats ENTIRELY different
2021-06-15 20:17:10 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-06-15 20:17:18 +0200 <dminuoso> cdsmith: it is a constraint on the type.
2021-06-15 20:17:21 +0200 <davean> tomsmeding: because thats actually a constraint
2021-06-15 20:17:31 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 20:17:42 +0200siraben(~siraben@user/siraben)
2021-06-15 20:17:45 +0200azeem(~azeem@dynamic-adsl-78-13-238-239.clienti.tiscali.it)
2021-06-15 20:17:49 +0200 <tomsmeding> davean: right; and including the dictionary in the data is actually the right thing to do there, operationally
2021-06-15 20:18:02 +0200 <dminuoso> cdsmith: I invite you to just remove the MonadIO constraint from your data type definition, and perhaps switch to just a simple newtype.
2021-06-15 20:18:10 +0200 <cdsmith> <dminuoso "Chris Smith: it is a constraint "> Not sure what you're referring to. I wrote: data MockT m a where MockT :: MonadIO m => ReaderT (MVar Foo) m a -> MockT m a
2021-06-15 20:18:27 +0200 <cdsmith> which is clearly a GADT constraint, not a type constraint
2021-06-15 20:18:29 +0200 <zyklotomic> dminuoso: "Secondly, minBound/maxBound should require a Proxy as argument like..." wait sorry late response, what does Proxy mean here
2021-06-15 20:19:11 +0200 <cdsmith> In either case, though, I do think I can move the constraint to the instance, instead
2021-06-15 20:19:12 +0200 <monochrom> This (read on for irony) is what's wrong with pronouns like this and it.
2021-06-15 20:19:16 +0200 <dminuoso> cdsmith: Just write it as `newtype MockT m a = MockT { runMockT :: ReaderT (MVar Foo) m a }`
2021-06-15 20:19:20 +0200 <tomsmeding> cdsmith: I think dminuoso is saying that it should, morally, be a type constraint; this regardless of the fact that it's currently a constraint on the GADT constructor
2021-06-15 20:20:07 +0200 <dminuoso> cdsmith: You can then GND derive a MonadIO instance, and then you can liftIO freely inside `MockT m` as long as you have `MonadIO m`
2021-06-15 20:20:18 +0200fizbin(~fizbin@2601:8a:4080:1280:8c7e:5b3f:79d6:ec26) (Ping timeout: 240 seconds)
2021-06-15 20:21:27 +0200 <cdsmith> <dminuoso "Chris Smith: You can then GND de"> Sure, I'm doing that. Again, the key part that was missing was moving the constraint to the instance. I can't just delete the constraint.
2021-06-15 20:21:49 +0200 <dminuoso> Ah I see.
2021-06-15 20:21:54 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 240 seconds)
2021-06-15 20:22:17 +0200 <dminuoso> cdsmith: If you GND derive it, the constraints is there automatically. :)
2021-06-15 20:22:36 +0200 <dminuoso> (Because the MonadIO instance from ReaderT brings it along)
2021-06-15 20:22:49 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com) (Read error: No route to host)
2021-06-15 20:23:01 +0200 <dminuoso> instance MonadIO m => MonadIO (ReaderT r m)
2021-06-15 20:23:07 +0200BosonCollider(~olofs@90-227-86-119-no542.tbcn.telia.com)
2021-06-15 20:23:19 +0200dminuosoloves newtype + GND
2021-06-15 20:23:27 +0200ddellacosta(~ddellacos@89.46.62.21) (Read error: Connection reset by peer)
2021-06-15 20:23:39 +0200 <cdsmith> <dminuoso "Chris Smith: If you GND derive i"> Okay, I think we're just talking at cross purposes. Suppose there's some other class, like `class MonadFoo m where {...}`. I need `instance MonadIO m => MonadFoo (MockT m) where {...}`. I'd previously been trying to get THAT MonadIO constraint by adding it to the GADT, but it belongs on the instance
2021-06-15 20:23:56 +0200ddellacosta(~ddellacos@89.46.62.21)
2021-06-15 20:24:25 +0200 <dminuoso> cdsmith: If all MonadFoo demands it, make it a superclass of it.
2021-06-15 20:24:34 +0200 <dminuoso> i.e. `class MonadIO m => MonadFoo m where ...`
2021-06-15 20:24:44 +0200 <dminuoso> Is this what you were looking for?
2021-06-15 20:24:47 +0200 <cdsmith> Well, no. MonadFoo doesn't need it. The implementation for MockT does
2021-06-15 20:25:01 +0200 <dminuoso> There is no implementation for MockT.
2021-06-15 20:25:03 +0200rk04(~rk04@user/rajk)
2021-06-15 20:25:10 +0200 <dminuoso> It's just a newtype, in what I showed you
2021-06-15 20:25:20 +0200 <cdsmith> Sure there is. I'm confused...
2021-06-15 20:25:23 +0200adam1(~adam@2a02:8388:1903:9500:96e6:f7ff:fe92:4825)
2021-06-15 20:25:44 +0200shelle(~shelle@ip-96-43-230-90.dsl.netrevolution.com)
2021-06-15 20:25:45 +0200fef(~thedawn@user/thedawn) (Quit: Leaving)
2021-06-15 20:26:08 +0200 <cdsmith> Okay, I'm thoroughly confused by how we're miscommunicating, but adding MonadIO to the instance context should solve me problem, so I'm going to do that! :)
2021-06-15 20:26:48 +0200Topsi(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de)
2021-06-15 20:27:19 +0200Topsi2(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de)
2021-06-15 20:27:33 +0200 <lyxia> In the Haskell report, the grammar is explicitly ambiguous, with the "meta-rule" that let/if/lambdas "extend as far to the right as possible". Is the reason for this presentation to "make the spec simpler"? Because I find interpreting that rule to implement it correctly a bit of a headache...
2021-06-15 20:28:18 +0200chddr(~Thunderbi@31.148.23.125) (Ping timeout: 240 seconds)
2021-06-15 20:28:33 +0200Guest36(~Guest36@149.11.92.90)
2021-06-15 20:28:46 +0200adam1(~adam@2a02:8388:1903:9500:96e6:f7ff:fe92:4825) (Client Quit)
2021-06-15 20:28:51 +0200 <monochrom> I was not on the committee, but I think yes.
2021-06-15 20:29:06 +0200 <lyxia> I think I found an unambiguous grammar for it and honestly it doesn't look that terrible, so now I'm wondering why the less formal approach.
2021-06-15 20:29:07 +0200Topsi1(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de) (Ping timeout: 244 seconds)
2021-06-15 20:29:45 +0200pbrisbin_(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net) (Quit: WeeChat 3.1)
2021-06-15 20:30:00 +0200pbrisbin(~patrick@pool-72-92-38-164.phlapa.fios.verizon.net)
2021-06-15 20:30:57 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 20:31:21 +0200 <cdsmith> <lyxia "I think I found an unambiguous g"> Sounds interesting. I hope you share the result. If it is better, it might be good to incorporate into a future Haskell Report!
2021-06-15 20:31:23 +0200Topsi(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de) (Ping timeout: 244 seconds)
2021-06-15 20:32:01 +0200 <cdsmith> (should one ever exist... but that's a different point)
2021-06-15 20:32:09 +0200 <tomsmeding> dminuoso: "the implementation for MockT" being "the implementation of this MonadFoo class for MockT" I think
2021-06-15 20:32:22 +0200altern(~altern@altern.corbina.com.ua)
2021-06-15 20:32:27 +0200cfricke(~cfricke@user/cfricke)
2021-06-15 20:32:52 +0200 <tomsmeding> more concisely "the instance for MockT"
2021-06-15 20:34:25 +0200dunkeln(~dunkeln@94.129.65.28) (Quit: leaving)
2021-06-15 20:36:10 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-15 20:37:33 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533) (Remote host closed the connection)
2021-06-15 20:38:14 +0200Deewiant_(~deewiant@2001:470:69fc:105::2fd3)
2021-06-15 20:38:19 +0200Guest36(~Guest36@149.11.92.90) (Quit: Connection closed)
2021-06-15 20:39:07 +0200 <cdsmith> <tomsmeding "more concisely "the instance for"> Yes. To summarize, MonadIO is needed by the MonadFoo instance for MockT. I can't add MonadIO as a superclass of MonadFoo, because I don't own it. I *could* add MonadFoo to the context of the (one and only) GADT constructor, but that breaks newtype deriving and is more complex than needed. Adding MonadFoo to the instance context for that one MonadFoo instance was the right answer.
2021-06-15 20:39:18 +0200killsushi(~killsushi@user/killsushi) (Quit: Leaving)
2021-06-15 20:41:01 +0200qbt(~edun@user/edun)
2021-06-15 20:41:54 +0200groucho(~user@dynamic-adsl-78-14-24-41.clienti.tiscali.it)
2021-06-15 20:42:00 +0200groucho(~user@dynamic-adsl-78-14-24-41.clienti.tiscali.it) ()
2021-06-15 20:43:11 +0200Topsi(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de)
2021-06-15 20:43:49 +0200davetapley(sid666@id-666.highgate.irccloud.com)
2021-06-15 20:43:56 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2021-06-15 20:45:47 +0200rk04(~rk04@user/rajk) (Quit: rk04)
2021-06-15 20:46:42 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f) (Quit: Client limit exceeded: 10000)
2021-06-15 20:46:53 +0200Topsi2(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de) (Ping timeout: 244 seconds)
2021-06-15 20:47:11 +0200Codaraxis(~Codaraxis@s13490149139.blix.com)
2021-06-15 20:50:22 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-06-15 20:55:03 +0200listofoptions_(~haha@nat.syssrc.com) (Quit: Leaving)
2021-06-15 20:55:16 +0200listofoptions_(~haha@nat.syssrc.com)
2021-06-15 20:55:25 +0200arjun(~user@user/arjun) (Remote host closed the connection)
2021-06-15 20:55:40 +0200listofoptions_(~haha@nat.syssrc.com) (Client Quit)
2021-06-15 20:56:02 +0200Guest9(~Guest9@103.250.137.187)
2021-06-15 20:56:18 +0200listofoptions(~haha@nat.syssrc.com)
2021-06-15 20:58:05 +0200jophish(~jophish@2001:470:69fc:105::670) (Quit: Client limit exceeded: 10000)
2021-06-15 20:58:23 +0200ordinate(~ordinate@c-68-38-144-3.hsd1.in.comcast.net)
2021-06-15 20:58:29 +0200 <ordinate> good afternoon
2021-06-15 20:59:04 +0200dudek_(~dudek@185.150.236.112)
2021-06-15 20:59:31 +0200iDead(~iDead@254.142.71.148.rev.vodafone.pt)
2021-06-15 20:59:33 +0200 <janus> GREETINGS ORDINATE
2021-06-15 20:59:34 +0200 <iDead> where is the error?
2021-06-15 20:59:35 +0200 <iDead> q :: (Integer, (Integer -> Integer, Integer -> Integer)) -> (Integer, Integer)
2021-06-15 20:59:36 +0200 <iDead> q (h, (t1, t2)) = (split (add . (id >< ((uncurry (.)) . swap))) (succ.p2.p2)) (h , (t1,t2))
2021-06-15 21:00:03 +0200the-coot[m](~the-cootm@2001:470:69fc:105::95f)
2021-06-15 21:00:04 +0200 <ordinate> greetings!
2021-06-15 21:00:15 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.1)
2021-06-15 21:00:17 +0200ServerStatsDisco(~serversta@2001:470:69fc:105::1a) (Quit: Client limit exceeded: 10000)
2021-06-15 21:00:22 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-06-15 21:00:29 +0200 <glguy> iDead: it doesn't look like you pasted the error message
2021-06-15 21:00:30 +0200 <iDead> can anyone find the error there?
2021-06-15 21:00:50 +0200 <ordinate> the error is that you have a function with that typesig
2021-06-15 21:01:11 +0200 <janus> what is >< ?
2021-06-15 21:01:12 +0200 <iDead> glguy Couldn't match type ‘a -> c’ with ‘Integer’
2021-06-15 21:01:13 +0200 <iDead> Expected type: (Integer, (a -> b, b -> c)) -> (Integer, Integer)
2021-06-15 21:01:13 +0200 <iDead> Actual type: (Integer, (a -> b, b -> c)) -> (Integer, a -> c)
2021-06-15 21:01:24 +0200 <iDead> it's a split
2021-06-15 21:01:36 +0200 <janus> what is p2?
2021-06-15 21:01:39 +0200jophish(~jophish@2001:470:69fc:105::670)
2021-06-15 21:01:49 +0200 <iDead> p2 = second
2021-06-15 21:02:00 +0200 <janus> % :t second
2021-06-15 21:02:01 +0200 <yahb> janus: Arrow a => a b c -> a (d, b) (d, c)
2021-06-15 21:02:05 +0200 <iDead> snd*
2021-06-15 21:02:22 +0200dudek(~dudek@185.150.236.112) (Ping timeout: 268 seconds)
2021-06-15 21:02:23 +0200ServerStatsDisco(~serversta@2001:470:69fc:105::1a)
2021-06-15 21:02:41 +0200jakalx(~jakalx@base.jakalx.net)
2021-06-15 21:03:37 +0200Sgeo_(~Sgeo@ool-18b9875e.dyn.optonline.net) (Quit: Leaving)
2021-06-15 21:03:46 +0200 <janus> i think i'll side with ordinate, what is the point of writing a point-freeish function and then wondering when it turns out to be hard to decipher?
2021-06-15 21:03:47 +0200Sgeo(~Sgeo@user/sgeo)
2021-06-15 21:03:52 +0200 <glguy> succ.p2.p2 should probably be p2.p2.succ, then?
2021-06-15 21:04:34 +0200 <glguy> err
2021-06-15 21:04:42 +0200 <glguy> p2 (p2 succ)?
2021-06-15 21:05:02 +0200leah2(~leah@vuxu.org) (Quit: trotz alledem!)
2021-06-15 21:05:13 +0200leah2(~leah@vuxu.org)
2021-06-15 21:05:48 +0200Aleci[m](~alecilibr@2001:470:69fc:105::32e7)
2021-06-15 21:05:58 +0200 <ordinate> actually this reminds me of something i wanted to know
2021-06-15 21:06:12 +0200kayprish(~kayprish@46.240.143.86)
2021-06-15 21:06:15 +0200 <ordinate> whats the way to check if two values are the same type
2021-06-15 21:06:34 +0200 <ordinate> say f x y = True if both x and y share the same type
2021-06-15 21:07:08 +0200 <iDead> glguy it's was error in the "fetch", thanks for the help =)
2021-06-15 21:07:08 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-15 21:07:11 +0200jneira_(~jneira_@5.red-81-39-172.dynamicip.rima-tde.net)
2021-06-15 21:07:45 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2021-06-15 21:07:53 +0200abbie(~abbie@user/abbie) (Quit: Bye!)
2021-06-15 21:07:54 +0200SquidDev(~SquidDev@autoclave.squiddev.cc) (Quit: Bye!)
2021-06-15 21:07:59 +0200 <glguy> ordinate: That's not something you'd generally do
2021-06-15 21:08:11 +0200abbie(~abbie@user/abbie)
2021-06-15 21:08:12 +0200SquidDev(~SquidDev@autoclave.squiddev.cc)
2021-06-15 21:08:19 +0200 <ordinate> well, i still want to do it
2021-06-15 21:08:25 +0200 <monochrom> Unless you require Typeable, you can't tell.
2021-06-15 21:09:03 +0200 <janus> how is Typeable different from Generic?
2021-06-15 21:09:09 +0200 <ordinate> ^
2021-06-15 21:09:49 +0200 <monochrom> This "inability" is a Feature(TM), it enables parametricity, e.g., if you have "f :: a -> [a]" and a test case shows "f () = [(), ()]", then I also know "f 4 = [4, 4]", you cannot have "f 4 = [4, 5]".
2021-06-15 21:10:33 +0200 <janus> so it is what some call "referential transparency" ?
2021-06-15 21:10:42 +0200 <monochrom> Typeable and Generic are so unrelated I don't know how to answer "what's the difference".
2021-06-15 21:10:48 +0200 <monochrom> No.
2021-06-15 21:11:02 +0200fabfianda[m](~fabfianda@2001:470:69fc:105::6db) (Quit: Client limit exceeded: 10000)
2021-06-15 21:11:19 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533)
2021-06-15 21:11:29 +0200 <cdsmith> <janus "how is Typeable different from G"> Typeable lets you compare types. Generic lets you look at the structure of a data type: which constructors it has, what their fields are, etc.
2021-06-15 21:12:01 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 252 seconds)
2021-06-15 21:12:05 +0200 <janus> ah right, i can see how those are distinct and why Aeson would only require Generic to make an automatic ToJSON instance
2021-06-15 21:12:23 +0200 <janus> what is a popular use case for Typeable?
2021-06-15 21:12:27 +0200fabfianda[m](~fabfianda@2001:470:69fc:105::6db)
2021-06-15 21:12:51 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Ping timeout: 268 seconds)
2021-06-15 21:13:06 +0200 <monochrom> f x = "if x :: Int then True else False"
2021-06-15 21:13:27 +0200 <monochrom> basically the dream of every fan of dynamic typing.
2021-06-15 21:13:35 +0200 <janus> oh no, it's horrible! :O
2021-06-15 21:13:58 +0200 <ordinate> haskell is an interpreted, dynamically typed language
2021-06-15 21:17:22 +0200 <monochrom> @quote monochrom runtime
2021-06-15 21:17:22 +0200 <lambdabot> monochrom says: just add #! /usr/bin/runghc to your haskell file. then type errors occur at runtime only.
2021-06-15 21:18:17 +0200derelict(~derelict@user/derelict) (Quit: WeeChat 3.1)
2021-06-15 21:18:37 +0200reumeth2(~reumeth@user/reumeth) (Quit: reumeth2)
2021-06-15 21:18:38 +0200ddellacosta(~ddellacos@89.46.62.21) (Read error: Connection reset by peer)
2021-06-15 21:18:50 +0200 <janus> most people expect them to be deferred too, though ;)
2021-06-15 21:18:54 +0200reumeth(~reumeth@user/reumeth)
2021-06-15 21:18:59 +0200ddellacosta(~ddellacos@89.46.62.21)
2021-06-15 21:19:55 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Client limit exceeded: 10000)
2021-06-15 21:20:21 +0200 <janus> was it outrageous when dynamic languages started adding ASTs so they wouldn't even start executing with SyntaxErrors? an extreme dynamic fan should be offended, surely ;P
2021-06-15 21:20:50 +0200vaibhavsagar[m](~vaibhavsa@2001:470:69fc:105::ffe)
2021-06-15 21:21:27 +0200 <monochrom> or Haskell resisting dependent typing so static fans are offended that head :: [a] -> a exists.
2021-06-15 21:21:49 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2021-06-15 21:22:18 +0200 <tomsmeding> that quote should have -fdeferred-type-errors too
2021-06-15 21:22:36 +0200 <dolio> It's probably older than that flag.
2021-06-15 21:23:00 +0200 <tomsmeding> and also having flags in a shebang is probably not a good idea :)
2021-06-15 21:24:30 +0200 <janus> tomsmeding: many BSD'ers recommend "#!/usr/bin/env bash". why would a flag be different from "bash" here? to the shell it is the same, surely?
2021-06-15 21:24:55 +0200 <janus> (ok, i know, an extreme BSD'er wouldn't even accept using bash ;)
2021-06-15 21:25:05 +0200hololeap(~hololeap@user/hololeap)
2021-06-15 21:25:54 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Ping timeout: 240 seconds)
2021-06-15 21:26:22 +0200Wonner(~Wonner@h77.53.21.98.static.ip.windstream.net) (Quit: Client closed)
2021-06-15 21:26:39 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 21:27:10 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2021-06-15 21:27:24 +0200Deide(~Deide@wire.desu.ga)
2021-06-15 21:27:24 +0200Deide(~Deide@wire.desu.ga) (Changing host)
2021-06-15 21:27:24 +0200Deide(~Deide@user/deide)
2021-06-15 21:27:30 +0200 <monochrom> No worries, "#!/usr/bin/env python3" is a thing too.
2021-06-15 21:27:51 +0200 <maerwald> not sure '/usr/bin/env' is really specified by posix either
2021-06-15 21:28:08 +0200carmysilna(~brightly-@2001:470:69fc:105::2190) (Quit: Client limit exceeded: 10000)
2021-06-15 21:28:09 +0200 <janus> right, AFAIK the trouble starts when you want both: the executable whereever in the path, AND some command line params
2021-06-15 21:28:20 +0200 <maerwald> I think they recommend hardcoding full absolute paths to the binary at "install time" by using getconf
2021-06-15 21:28:24 +0200 <tomsmeding> janus: https://stackoverflow.com/a/4304187
2021-06-15 21:28:37 +0200 <tomsmeding> on many systems, you can pass at most one parameter in a shebang line
2021-06-15 21:28:45 +0200 <tomsmeding> though I guess that is enough for the runghc thing :)
2021-06-15 21:29:04 +0200carmysilna(~brightly-@2001:470:69fc:105::2190)
2021-06-15 21:29:08 +0200 <tomsmeding> maerwald: see link, #! isn't even specified :p
2021-06-15 21:29:28 +0200 <tomsmeding> env has -S but it's dangerous
2021-06-15 21:29:35 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-06-15 21:29:47 +0200 <janus> ooh, so there is a motivation for providing an argument passing mode that requires only one argv entry for all the arguments. interesting!
2021-06-15 21:29:49 +0200 <maerwald> but these are 1st world problems... if you've ever done powershell, you know it can be *way* worse
2021-06-15 21:30:07 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-06-15 21:30:17 +0200ddellacosta(~ddellacos@89.46.62.21) (Ping timeout: 244 seconds)
2021-06-15 21:30:29 +0200hook54321(sid149355@user/hook54321)
2021-06-15 21:30:34 +0200 <janus> i stick to the C subset of windows to piss of microsoft programmers that will have to maintain it for 200 years muahahaha
2021-06-15 21:30:36 +0200ixlun(~matthew@213.205.241.86) (Ping timeout: 244 seconds)
2021-06-15 21:30:49 +0200ukari(~ukari@user/ukari)
2021-06-15 21:31:53 +0200Obo(~roberto@h-46-59-103-134.A498.priv.bahnhof.se) (Quit: WeeChat 2.8)
2021-06-15 21:33:25 +0200 <monochrom> linux manpage for execve says "the entire string after the interpreter name is a single argument. some other systems split it into multiple arguments by spaces"
2021-06-15 21:34:26 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2021-06-15 21:35:45 +0200thedward[m](~thedwardm@2001:470:69fc:105::f79) (Quit: Client limit exceeded: 10000)
2021-06-15 21:36:19 +0200fluffyballoon(~fluffybal@2620:72:0:6480::10f7) (Quit: Client closed)
2021-06-15 21:36:33 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
2021-06-15 21:37:37 +0200__monty__(~toonn@user/toonn)
2021-06-15 21:37:37 +0200Wonner(~Wonner@h77.53.21.98.static.ip.windstream.net)
2021-06-15 21:38:07 +0200kayprish_(~kayprish@46.240.143.86)
2021-06-15 21:38:15 +0200 <tomsmeding> monochrom: indeed, linux implements behaviour 3 from the linked SO answer
2021-06-15 21:38:40 +0200ddellacosta(~ddellacos@86.106.121.100)
2021-06-15 21:38:41 +0200tomsmedingis trying to be inclusive towards non-linux systems, let me
2021-06-15 21:38:55 +0200Wonner(~Wonner@h77.53.21.98.static.ip.windstream.net) (Client Quit)
2021-06-15 21:39:15 +0200thedward[m](~thedwardm@2001:470:69fc:105::f79)
2021-06-15 21:39:51 +0200kayprish_(~kayprish@46.240.143.86) (Client Quit)
2021-06-15 21:43:39 +0200NoName_(~idk@8.20.127.195)
2021-06-15 21:43:59 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 21:45:28 +0200ephemient(uid407513@id-407513.tooting.irccloud.com) (Quit: Connection closed for inactivity)
2021-06-15 21:47:57 +0200hjulle[m](~hjullemat@2001:470:69fc:105::1dd) (Quit: Client limit exceeded: 10000)
2021-06-15 21:52:31 +0200wallymathieu(~wallymath@81-234-151-21-no94.tbcn.telia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-15 21:53:03 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.0.1)
2021-06-15 21:54:28 +0200NoName_(~idk@8.20.127.195) (Quit: https://www.endfgm.eu/what-can-you-do/donate/)
2021-06-15 21:56:41 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 21:57:28 +0200mengu(~mengu@c188-150-13-129.bredband.tele2.se)
2021-06-15 22:01:04 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2021-06-15 22:03:46 +0200 <dminuoso> cdsmith: Out of curiosity, what IRC client are you using? Your quoting/response style looks very unfamiliar.
2021-06-15 22:03:46 +0200hjulle[m](~hjullemat@2001:470:69fc:105::1dd)
2021-06-15 22:03:47 +0200Pickchea(~private@user/pickchea)
2021-06-15 22:04:02 +0200qbt(~edun@user/edun) (Ping timeout: 268 seconds)
2021-06-15 22:04:44 +0200 <geekosaur> that's a form that matrix can use
2021-06-15 22:05:13 +0200juhp(~juhp@128.106.188.66) (Ping timeout: 244 seconds)
2021-06-15 22:05:33 +0200 <dminuoso> Ah
2021-06-15 22:06:09 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-06-15 22:06:19 +0200Pickchea(~private@user/pickchea)
2021-06-15 22:07:02 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be)
2021-06-15 22:07:16 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-06-15 22:07:58 +0200juhp(~juhp@128.106.188.66)
2021-06-15 22:09:32 +0200 <dminuoso> janus: By the way, you asked about a good use of Typeable. The best and most common usage I can think of is exceptions, especially extensible dynamically-typed hierarchies of extensions. That last one is probably very underused on hackage.
2021-06-15 22:10:29 +0200iDead(~iDead@254.142.71.148.rev.vodafone.pt) (Ping timeout: 272 seconds)
2021-06-15 22:10:34 +0200 <dminuoso> `catch` fundamentally relies on Typeable to be able to check whether a bypassing exception matches the requested exception type or not.
2021-06-15 22:10:46 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-06-15 22:10:59 +0200 <janus> oh, so you're saying i can make an exception that lets itself be treated as an exception that never existed when the code catching it was written?
2021-06-15 22:11:43 +0200 <dminuoso> Are you preferrind go the "extensible dynamically-typed hierarchies of exceptions" part?
2021-06-15 22:11:50 +0200 <dminuoso> Wow. the typos are unreal today.
2021-06-15 22:13:29 +0200 <janus> i dunno if i prefer it since i havn't used exceptions in haskell yet. but i guess it could be valuable to avoid having dumb down to Either String everywhere. sounds like dynamically typed exceptions could help with that
2021-06-15 22:15:11 +0200 <janus> if i am injecting a function that can fail into a codebase that i don't want to continually bump versions for, i have the option of making it Either String, but then it is "stringly-typed". if i had my application-specific exception that it was catching, i would could make ad-hoc new "subtypes" of that exception?
2021-06-15 22:15:18 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 22:15:33 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-06-15 22:16:21 +0200 <dminuoso> janus: So under the hood, exceptions can only propagate as SomeException. So every time you do throwIO it gets wrapped (upcast) inside SomeException. At the same time, `catch` must be able to downcast it, using `fromException :: Exception e => SomeException -> Maybe e `
2021-06-15 22:16:30 +0200 <dminuoso> janus: This is how `catch` is able to catch only specific exceptions.
2021-06-15 22:16:35 +0200 <dminuoso> So far so good?
2021-06-15 22:16:54 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533) (Remote host closed the connection)
2021-06-15 22:17:27 +0200 <dminuoso> (so if catch tries to fromException it to the specified exception type, but the underlying type is a different one, it would produce Nothing and the exception is thrown again)
2021-06-15 22:17:32 +0200kayprish(~kayprish@46.240.143.86) (Quit: leaving)
2021-06-15 22:17:39 +0200ixlun(~matthew@213.205.241.86)
2021-06-15 22:17:45 +0200 <janus> right, makes sense. sounds a bit like subtyping but maybe i shouldn't think that
2021-06-15 22:17:59 +0200 <dminuoso> You should!
2021-06-15 22:18:13 +0200 <dminuoso> Using this trick we can build entire subtyping hierarchies
2021-06-15 22:18:36 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-06-15 22:18:50 +0200 <dminuoso> SomeException :> DbException :> (UniquenessViolation | NotNullViolation)
2021-06-15 22:19:27 +0200 <janus> that looks nice, but is that really code?
2021-06-15 22:19:30 +0200 <dminuoso> Allowing you to say `(catch action (\e :: DbException -> ... ))` and it would catch any DbException, including UniquenessViolation and NotNullViolation
2021-06-15 22:19:55 +0200 <dminuoso> No, it's slightly verbose to encode these exceptions - but you get the same semantics
2021-06-15 22:20:15 +0200 <dminuoso> https://simonmar.github.io/bib/papers/ext-exceptions.pdf
2021-06-15 22:20:21 +0200 <janus> oh ok, sounds like it's time to crack open TemplateHaskell :satanic_smiley:
2021-06-15 22:20:23 +0200 <dminuoso> Is the original paper that describes it, it's very readable :)
2021-06-15 22:20:33 +0200kuribas(~user@ptr-25vy0i96zxjh07ehrri.18120a2.ip6.access.telenet.be)
2021-06-15 22:20:34 +0200 <dminuoso> Im not sure you can reasonably do this with TemplateHaskell
2021-06-15 22:21:08 +0200 <janus> i'll take a look at the paper, cool beans
2021-06-15 22:21:19 +0200 <dminuoso> All of this is driven by Typeable behind the scenes. :)
2021-06-15 22:21:29 +0200gawen(~gawen@user/gawen) (Quit: cya)
2021-06-15 22:21:40 +0200 <dminuoso> base even comes with exceptions structured this way, sadly not too many packages do the same
2021-06-15 22:21:48 +0200gawen(~gawen@user/gawen)
2021-06-15 22:22:41 +0200adium(adium@user/adium) (Quit: Stable ZNC by ##bnc4you)
2021-06-15 22:22:52 +0200 <dminuoso> It'd be nice if package-foo had some FooException supertype, especially if they have stuff like `withFoo :: (Foo -> IO b) -> IO b` because without a FooException type, you can't reasonably differentiate between any exception that comes from their library and say an IOException from your own continuation
2021-06-15 22:23:09 +0200ent(entgod@kapsi.fi) (Ping timeout: 252 seconds)
2021-06-15 22:23:26 +0200 <dminuoso> At least outside the `withFoo` combinator, of course.
2021-06-15 22:23:42 +0200ent(entgod@kapsi.fi)
2021-06-15 22:24:35 +0200 <kuribas> why doesn't "foo {bar = 20}" work, when bar is a duplicate, and the type of foo is known?
2021-06-15 22:26:03 +0200 <kuribas> and how do I disambiguate?
2021-06-15 22:26:42 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
2021-06-15 22:26:57 +0200fishfinger(~fishfinge@cpc68330-cdif16-2-0-cust557.5-1.cable.virginm.net)
2021-06-15 22:27:27 +0200 <dminuoso> kuribas: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/duplicate_record_fields.html
2021-06-15 22:27:51 +0200 <kuribas> ugh, even (foo :: Foo) {bar = 20} doesn't work...
2021-06-15 22:28:19 +0200 <dminuoso> And: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/disambiguate_record_fields.html#disambigua…
2021-06-15 22:28:48 +0200Erutuon(~Erutuon@user/erutuon)
2021-06-15 22:29:59 +0200 <dminuoso> kuribas: And I guess you can use a qualified import and then specify the field with a qualifier?
2021-06-15 22:30:53 +0200 <kuribas> still doesn't work even with Disambiguate-Fields
2021-06-15 22:31:07 +0200ddellaco_(~ddellacos@86.106.121.100)
2021-06-15 22:31:20 +0200reumeth(~reumeth@user/reumeth) (Ping timeout: 272 seconds)
2021-06-15 22:31:20 +0200 <kuribas> and foo {bar = 20} :: Foo doesn't work either
2021-06-15 22:32:01 +0200AgentM(~agentm@pool-162-83-130-212.nycmny.fios.verizon.net)
2021-06-15 22:32:42 +0200ddellacosta(~ddellacos@86.106.121.100) (Ping timeout: 240 seconds)
2021-06-15 22:32:58 +0200 <kuribas> dminuoso: I could, but I'd like to understand the problem, rather than work around.
2021-06-15 22:33:42 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 22:34:11 +0200Techcable_Techcable
2021-06-15 22:35:44 +0200Topsi1(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de)
2021-06-15 22:36:38 +0200 <kuribas> ugh, ghc is just plain dumb
2021-06-15 22:36:43 +0200Topsi2(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de)
2021-06-15 22:36:51 +0200Aighearach(~paris@c-71-63-160-210.hsd1.or.comcast.net) (Ping timeout: 268 seconds)
2021-06-15 22:37:41 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-06-15 22:38:06 +0200Topsi3(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de)
2021-06-15 22:38:14 +0200adium(adium@user/adium)
2021-06-15 22:38:34 +0200Topsi(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de) (Ping timeout: 268 seconds)
2021-06-15 22:39:37 +0200Topsi(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de)
2021-06-15 22:40:00 +0200 <kuribas> Use an explicit type signature on the record expression, as in: h x = (x :: T) { foo = 3 }
2021-06-15 22:40:06 +0200 <kuribas> Tried that, it doesn't work
2021-06-15 22:40:18 +0200mikoto-chan(~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Ping timeout: 240 seconds)
2021-06-15 22:40:19 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:b9b1:9fc2:289f:a533)
2021-06-15 22:40:25 +0200Topsi1(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de) (Ping timeout: 268 seconds)
2021-06-15 22:41:08 +0200 <dminuoso> kuribas: Im guessing at the time it was too complicated to implement DisambiguateRecordFields in the type checker.
2021-06-15 22:41:25 +0200 <dminuoso> Or maybe there's some complicated interaction with other extensions?
2021-06-15 22:41:35 +0200 <kuribas> I am using RecordWildCards
2021-06-15 22:41:39 +0200Topsi2(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de) (Ping timeout: 268 seconds)
2021-06-15 22:42:53 +0200Topsi3(~Tobias@dyndsl-037-138-064-101.ewe-ip-backbone.de) (Ping timeout: 268 seconds)
2021-06-15 22:43:19 +0200 <kuribas> could be a bug in ghc
2021-06-15 22:44:41 +0200 <dolio> The help page doesn't say you're allowed to do what you're trying to do.
2021-06-15 22:44:57 +0200 <kuribas> dolio: update a record?
2021-06-15 22:45:05 +0200 <dminuoso> kuribas: https://gitlab.haskell.org/ghc/ghc/-/issues/18999
2021-06-15 22:45:20 +0200 <dminuoso> Adam and SPJ concur that this is a bug.
2021-06-15 22:45:32 +0200 <kuribas> dminuoso: ok, thanks
2021-06-15 22:45:33 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4)
2021-06-15 22:45:36 +0200 <kuribas> I'll use genericLens then
2021-06-15 22:46:00 +0200 <dolio> It says that the extension only does something for updates if there is a non-field named the same as a field.
2021-06-15 22:46:20 +0200mengu(~mengu@c188-150-13-129.bredband.tele2.se) (Remote host closed the connection)
2021-06-15 22:46:30 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 22:46:48 +0200mengu(~mengu@c188-150-13-129.bredband.tele2.se)
2021-06-15 22:48:33 +0200 <dminuoso> Oh hold on
2021-06-15 22:48:43 +0200 <dminuoso> kuribas: are both `bar` fields?
2021-06-15 22:48:49 +0200ubert(~Thunderbi@p200300ecdf259d17307db39712e8f4a3.dip0.t-ipconnect.de)
2021-06-15 22:49:08 +0200 <kuribas> dminuoso: what do you mean?
2021-06-15 22:49:22 +0200 <dminuoso> Maybe I misunderstood
2021-06-15 22:49:30 +0200 <dminuoso> 22:24:35 kuribas | why doesn't "foo {bar = 20}" work, when bar is a duplicate, and the type of foo is known?
2021-06-15 22:49:39 +0200fishfinger(~fishfinge@cpc68330-cdif16-2-0-cust557.5-1.cable.virginm.net) (Quit: Bye!)
2021-06-15 22:49:44 +0200 <dminuoso> You say "duplicate". Are both instances of `bar` fields, or is one a non-field?
2021-06-15 22:49:52 +0200 <kuribas> there is N.bar, but it is qualified
2021-06-15 22:49:54 +0200v01d4lph4(~v01d4lph4@user/v01d4lph4) (Ping timeout: 240 seconds)
2021-06-15 22:50:04 +0200fishfinger(~fishfinge@cpc68330-cdif16-2-0-cust557.5-1.cable.virginm.net)
2021-06-15 22:50:06 +0200 <kuribas> the other ones are fields
2021-06-15 22:50:09 +0200 <dminuoso> dolio is right then
2021-06-15 22:50:18 +0200 <dminuoso> And even that only applies to 9.2.1
2021-06-15 22:50:18 +0200fishfinger(~fishfinge@cpc68330-cdif16-2-0-cust557.5-1.cable.virginm.net) (Read error: Connection reset by peer)
2021-06-15 22:50:30 +0200 <dminuoso> A record update is not possible in this manner
2021-06-15 22:50:40 +0200ixlun(~matthew@213.205.241.86) (Read error: Connection reset by peer)
2021-06-15 22:50:41 +0200 <dminuoso> Im guessing there's good reason for this
2021-06-15 22:50:44 +0200 <kuribas> so genericLens then?
2021-06-15 22:50:47 +0200fishfinger(~fishfinge@cpc68330-cdif16-2-0-cust557.5-1.cable.virginm.net)
2021-06-15 22:51:07 +0200 <kuribas> or just making a new record.
2021-06-15 22:51:51 +0200fishfinger_(~fishfinge@cpc68330-cdif16-2-0-cust557.5-1.cable.virginm.net)
2021-06-15 22:51:58 +0200 <dminuoso> https://gitlab.haskell.org/ghc/ghc/-/wikis/records/overloaded-record-fields/duplicate-record-fields contains some implicit notes
2021-06-15 22:52:03 +0200 <dminuoso> `Note that we do not look up the types of variables being updated, and no constraint-solving is performed, so for example the following will be rejected as ambiguous:`
2021-06-15 22:52:09 +0200fishfinger(~fishfinge@cpc68330-cdif16-2-0-cust557.5-1.cable.virginm.net) (Remote host closed the connection)
2021-06-15 22:52:51 +0200 <dminuoso> 22:40:00 kuribas | Use an explicit type signature on the record expression, as in: h x = (x :: T) { foo = 3 }
2021-06-15 22:52:56 +0200 <dminuoso> This requires DuplicateRecordFields, mind you
2021-06-15 22:53:42 +0200mengu(~mengu@c188-150-13-129.bredband.tele2.se) (Remote host closed the connection)
2021-06-15 22:54:02 +0200 <kuribas> yes, I have DuplicateRecordFields on
2021-06-15 22:54:35 +0200 <dminuoso> In the definition sites of these data types too?
2021-06-15 22:54:37 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-06-15 22:54:42 +0200muto_(~muto@d75-159-225-7.abhsia.telus.net) (Ping timeout: 240 seconds)
2021-06-15 22:54:44 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 22:55:56 +0200 <kuribas> hmm, no
2021-06-15 22:56:06 +0200jrm(~jrm@156.34.187.65) (Ping timeout: 264 seconds)
2021-06-15 22:56:25 +0200jrm(~jrm@156.34.187.65)
2021-06-15 22:56:45 +0200tremon(~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl)
2021-06-15 22:57:49 +0200 <kuribas> that could be it
2021-06-15 22:59:32 +0200fishfinger_(~fishfinge@cpc68330-cdif16-2-0-cust557.5-1.cable.virginm.net) (Ping timeout: 268 seconds)
2021-06-15 22:59:58 +0200ephemient(uid407513@id-407513.tooting.irccloud.com)
2021-06-15 23:01:22 +0200iDead(~iDead@254.142.71.148.rev.vodafone.pt)
2021-06-15 23:03:14 +0200kmein(~weechat@user/kmein) (Quit: WeeChat 3.1)
2021-06-15 23:03:31 +0200kmein(~weechat@user/kmein)
2021-06-15 23:05:19 +0200 <kuribas> it works now :)
2021-06-15 23:05:27 +0200 <iDead> and a chalenge (yet again) turn that "div" into a "/" : https://paste.tomsmeding.com/luLC15pQ
2021-06-15 23:05:59 +0200 <kuribas> dminuoso: thanks. Seems missing the DuplicateRecordFields in this module was the problem.
2021-06-15 23:06:18 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-06-15 23:12:27 +0200 <monochrom> Use fromIntegral to convert Int to Float.
2021-06-15 23:12:33 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-06-15 23:12:35 +0200 <monochrom> or Integer to Float
2021-06-15 23:12:52 +0200 <monochrom> @quote monochrom fromIntegral
2021-06-15 23:12:53 +0200 <lambdabot> monochrom says: You've got an Int / But you want Double / Who do you call? / "fromIntegral!"
2021-06-15 23:13:20 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.1)
2021-06-15 23:13:49 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-06-15 23:14:41 +0200bilegeek(~bilegeek@2600:1008:b041:5047:48ad:ae3d:d2ea:7d42)
2021-06-15 23:15:10 +0200VictorNawothnig[(~dminuosom@2001:470:69fc:105::33bb)
2021-06-15 23:17:02 +0200 <dminuoso> There should be an emacs minor mode for lsp-haskell that randomly inserts `fromIntegral/realToFrac` whenever there's a "expected/actual" type error between two numeric types until GHC is satisfied.
2021-06-15 23:17:14 +0200 <dminuoso> It's what the user does anyway. :>
2021-06-15 23:18:05 +0200VictorNawothnig[dminuoso[m]
2021-06-15 23:18:06 +0200Guest8215(~Guest82@host-79-36-63-89.retail.telecomitalia.it)
2021-06-15 23:19:20 +0200 <monochrom> I would support that if, in the Float->Int direction, the auto-inserted function were truncate.
2021-06-15 23:19:42 +0200 <monochrom> err no, s/truncate/ceiling/
2021-06-15 23:20:11 +0200 <monochrom> Either that, or that direction is not entertained at all.
2021-06-15 23:21:55 +0200jao(jao@gateway/vpn/protonvpn/jao) (Remote host closed the connection)
2021-06-15 23:22:01 +0200 <dminuoso> On a slightly more serious note, a suggestion to insert `intCast` from int-cast wouldn't be bad
2021-06-15 23:23:21 +0200 <monochrom> I like int-case too.
2021-06-15 23:23:45 +0200 <dminuoso> What is int-case?
2021-06-15 23:24:28 +0200jao(jao@gateway/vpn/protonvpn/jao)
2021-06-15 23:24:38 +0200mengu(~mengu@c188-150-13-129.bredband.tele2.se)
2021-06-15 23:25:23 +0200dcompoze(~dcompoze@5E98D6D9.static.tld.pl)
2021-06-15 23:26:47 +0200 <monochrom> sorry, int-cast!
2021-06-15 23:26:58 +0200 <iDead> i don't know if you were talking to me but, i know about the fromInteger... i just can't figure out were...
2021-06-15 23:27:05 +0200 <iDead> where*
2021-06-15 23:27:21 +0200 <monochrom> fromIntegral, not fromInteger
2021-06-15 23:27:27 +0200funsafe(~funsafe@2601:1c1:4200:938f:4e1e:fc56:b28f:5ac7)
2021-06-15 23:27:29 +0200 <iDead> my bad sry
2021-06-15 23:27:36 +0200 <monochrom> also I don't know what you mean by "challenge".
2021-06-15 23:27:41 +0200 <iDead> java is killing me
2021-06-15 23:27:52 +0200 <iDead> it's just a mood joke =)
2021-06-15 23:28:00 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 23:33:35 +0200kayprish(~kayprish@46.240.143.86)
2021-06-15 23:37:02 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-06-15 23:40:59 +0200beka(~beka@104.193.170-244.PUBLIC.monkeybrains.net)
2021-06-15 23:41:24 +0200Ariakenom(~Ariakenom@2001:9b1:efb:fc00:c958:4e9b:6898:197c) (Read error: Connection reset by peer)
2021-06-15 23:43:20 +0200LukeHoersten(~LukeHoers@user/lukehoersten)
2021-06-15 23:44:37 +0200Guest8215(~Guest82@host-79-36-63-89.retail.telecomitalia.it) (Quit: Client closed)
2021-06-15 23:46:49 +0200forell(~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Changing host)
2021-06-15 23:46:49 +0200forell(~forell@user/forell)
2021-06-15 23:47:23 +0200acro(~acro@user/acro) (Ping timeout: 252 seconds)
2021-06-15 23:47:53 +0200quintasan(~quassel@quintasan.pl) (Remote host closed the connection)
2021-06-15 23:48:03 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-06-15 23:49:02 +0200quintasan(~quassel@quintasan.pl)
2021-06-15 23:49:19 +0200acro(~acro@user/acro)
2021-06-15 23:49:29 +0200ukari(~ukari@user/ukari) (Remote host closed the connection)
2021-06-15 23:50:04 +0200dhil(~dhil@195.213.192.47)
2021-06-15 23:50:17 +0200ukari(~ukari@user/ukari)
2021-06-15 23:51:25 +0200fabfianda(~fabfianda@net-93-148-121-206.cust.vodafonedsl.it)
2021-06-15 23:54:16 +0200mengu(~mengu@c188-150-13-129.bredband.tele2.se) (Remote host closed the connection)
2021-06-15 23:55:31 +0200jolly(~jolly@208.180.97.158) (Quit: Connection closed)
2021-06-15 23:59:21 +0200kuribas(~user@ptr-25vy0i96zxjh07ehrri.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-06-15 23:59:47 +0200mjs2600_(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)