Home freenode/#haskell: Logs Calendar

Logs on 2021-02-05 (freenode/#haskell)

00:00:25 × napping quits (~brandon@174-20-93-137.mpls.qwest.net) (Ping timeout: 276 seconds)
00:01:53 × writenix quits (~quassel@200.99.115.89.rev.vodafone.pt) (Remote host closed the connection)
00:02:50 writenix joins (~quassel@200.99.115.89.rev.vodafone.pt)
00:03:03 × writenix quits (~quassel@200.99.115.89.rev.vodafone.pt) (Client Quit)
00:05:31 Bobbias joins (~Bobbias@2605:b100:319:2b7a:7557:5f1d:69ce:bd41)
00:06:39 elliott__ joins (~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
00:07:51 × Bobbias quits (~Bobbias@2605:b100:319:2b7a:7557:5f1d:69ce:bd41) (Read error: Connection reset by peer)
00:08:10 × evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Quit: ZNC 1.8.2 - https://znc.in)
00:09:58 Ishutin joins (~Ishutin@92-249-182-126.pool.digikabel.hu)
00:10:47 shush joins (~pawn@2603-8000-3703-51f4-543f-96f4-bf63-1a0d.res6.spectrum.com)
00:10:47 evanjs joins (~evanjs@075-129-098-007.res.spectrum.com)
00:12:25 <shush> Is haskell not imperative by default? I'm hearing this idea of lazy-execution. Does that mean it does it not run one function before another unless the other function depends on the one function?
00:12:45 <Axman6> correct*
00:12:56 × Ishutin_ quits (~Ishutin@87-97-30-255.pool.digikabel.hu) (Ping timeout: 240 seconds)
00:13:21 <Axman6> depending on how the code is written. the IO executes sequentially, as so many other monads
00:13:26 <Axman6> IO monad*
00:13:36 × forgottenone quits (~forgotten@176.42.30.142) (Ping timeout: 240 seconds)
00:14:05 napping joins (~brandon@174-20-93-137.mpls.qwest.net)
00:14:51 <monochrom> You will need to split "execution" into two notions, one for I/O (still in code order as other languages, not lazy) and one for non-I/O (lambda calculus, lazy)
00:14:56 livvy joins (~livvy@gateway/tor-sasl/livvy)
00:15:23 <monochrom> Our community terminology is "execution" for the I/O part, "evaluation" for the lambda calculus part.
00:15:31 × livvy_ quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
00:15:41 <Axman6> yeah this is really the more important point
00:15:46 <monochrom> You haven't thought of this because no one needed this for other languages (puny, pfft)
00:16:36 × Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Ping timeout: 240 seconds)
00:16:40 <monochrom> In Scheme land and SML land, they can freely say "evaluation" because in their world "evaluation" = "execution" = "run". You can't do this in Haskell.
00:16:49 bgamari_ joins (~bgamari@72.65.104.37)
00:17:21 × andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
00:17:25 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
00:17:25 × bgamari quits (~bgamari@72.65.102.135) (Ping timeout: 240 seconds)
00:17:45 andreas303 joins (~andreas@gateway/tor-sasl/andreas303)
00:18:06 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
00:21:49 × napping quits (~brandon@174-20-93-137.mpls.qwest.net) (Ping timeout: 258 seconds)
00:24:39 <Axman6> shush: does that help at all?
00:24:44 <ski> shush : Haskell is not imperative, in the sense that evaluating expressions in Haskell won't cause any side-effects (e.g. evaluating `print 42' won't print anything). evaluating an expression yields its value. however, you can still *represent/encode/embed* imperative programming, by having values (called actions), that *represents* "effects" (no "side-" here, the effect is an explicit (although usually
00:24:50 <ski> rather coarse-grained) part of the result value, it's not happening "on the side" of computing a result value)
00:25:31 <shush> Axman6: That does thanks
00:25:46 <ski> and these actions can be "executed", performing the effects they describe (and also typically computing some end-value as a result of the effectful computation)
00:25:58 <Axman6> as an example of this, when we talk about evaluation, the way that sum $ map (2^) [1..100] executes is quite different to length $ map (2^) [1..100 -- the latter will not evaluate any of the items in the list, because it doesn't need to to know the length of the list, where as sum has to evaluate each item
00:26:02 <shush> It's really cool that it does this by default though
00:26:27 <shush> It leads to some really interesting things with parallel computing no?
00:26:53 <Axman6> in theory yes, but in practice getting that right is sometimes difficult.
00:27:00 <ski> @quote world's.best.imperative
00:27:00 <lambdabot> SPJ says: Haskell is the world's best imperative language.
00:27:17 <Axman6> you can always evaluate all parts of a haskell exprtession in parallel, but the overhead of that is almost never worth it
00:27:29 <shush> Axman6: All one would need to do is think about state dependencies (state B depends on state A, etc).
00:27:43 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 276 seconds)
00:27:46 <ski> Simon's referring to the great ease by which one can construct, combine, and represent actions, there
00:28:03 <shush> Axman6: Why would there be more overhead to evaluate parts in parallel?
00:28:08 <Axman6> a single thread will wvaluate sum $ map (2^) [1..100] faster than you would be able to distribute the small computations which lead to the result
00:28:46 <shush> Axman6: Wouldn't it be better for the system to do this (the hardware)?
00:28:53 <ski> (that doesn't mean imperative programming in Haskell is now easy. there's still lots of potential problems you could stumble upon. but Haskell has insulated that away from the pure evaluation of expressions part of the language)
00:29:19 <Axman6> but, we do also have very powerful ways to describe how to evaluate things in parallel, for example http://hackage.haskell.org/package/parallel/docs/Control-Parallel-Strategies.html
00:29:57 <ski> shush : perhaps, but we don't have the hardware for doing that
00:30:18 <ephemient> we have things like http://hackage.haskell.org/package/repa too
00:30:39 <ski> (perhaps FPGA things could help to some extent on that front, though)
00:30:55 <Axman6> REDUCERON!
00:31:02 ski was just about to mention ..
00:32:13 <shush> ephemient: I like your funny words functional man
00:32:18 <ski> even Lisp machines are no more ..
00:32:26 <shush> "High performance, regular, shape polymorphic parallel arrays." o.o
00:32:33 <Axman6> we also have monad-par: https://hackage.haskell.org/package/monad-par-0.3.5/docs/Control-Monad-Par.html
00:32:48 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
00:32:49 ski misses Data Parallel Haskell
00:32:53 <Axman6> which is a way to describing the dependencies between different computations to have them evaluated in parallel
00:32:57 xiinotulp joins (~q@node-usw.pool-125-24.dynamic.totinternet.net)
00:33:00 napping joins (~brandon@174-20-93-137.mpls.qwest.net)
00:33:04 <Axman6> -Odph
00:33:08 × Jd007 quits (~Jd007@162.156.11.151) (Quit: Jd007)
00:34:18 forgottenone joins (~forgotten@176.42.26.20)
00:34:49 ski . o O ( `IVar' )
00:36:16 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
00:36:25 × plutoniix quits (~q@node-upb.pool-125-24.dynamic.totinternet.net) (Ping timeout: 265 seconds)
00:37:21 <Axman6> shush: repa is about performing operations on arrays which get evaluated in parallel automatically. regular = not sparse, share polymorphic means they can have arbitrary dimensions
00:37:25 × napping quits (~brandon@174-20-93-137.mpls.qwest.net) (Ping timeout: 240 seconds)
00:37:39 × DataComputist quits (~lumeng@50.43.26.251) (Read error: Connection reset by peer)
00:37:47 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 272 seconds)
00:38:21 × Tesseraction quits (~Tesseract@unaffiliated/tesseraction) (Ping timeout: 264 seconds)
00:38:24 DataComputist joins (~lumeng@50.43.26.251)
00:38:26 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
00:38:41 × bgamari_ quits (~bgamari@72.65.104.37) (Remote host closed the connection)
00:38:46 × metreo quits (~Thunderbi@unaffiliated/metreo) (Remote host closed the connection)
00:38:57 metreo joins (~Thunderbi@unaffiliated/metreo)
00:39:04 bgamari joins (~bgamari@2001:470:e438::1)
00:39:04 desophos joins (~desophos@2601:249:1680:a570:84f9:a158:4c9:c8e9)
00:39:56 × pengjiz quits (~user@cmu-secure-128-237-82-2.nat.cmu.net) (Quit: ERC (IRC client for Emacs 27.1))
00:40:05 p8m joins (p8m@gateway/vpn/protonvpn/p8m)
00:40:09 Bobbias joins (~Bobbias@2605:b100:319:2b7a:7557:5f1d:69ce:bd41)
00:40:42 × Bobbias quits (~Bobbias@2605:b100:319:2b7a:7557:5f1d:69ce:bd41) (Read error: Connection reset by peer)
00:40:45 × puffnfresh quits (~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net) (Ping timeout: 240 seconds)
00:45:25 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
00:46:19 × p7lpa1ugixavugu quits (~atomic@2800:810:514:8155:885f:ca4:6add:b1fa) (Remote host closed the connection)
00:47:32 puffnfresh joins (~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net)
00:48:07 conal joins (~conal@64.71.133.70)
00:49:25 Bobbias joins (~Bobbias@2605:b100:319:2b7a:7557:5f1d:69ce:bd41)
00:49:55 × Bobbias quits (~Bobbias@2605:b100:319:2b7a:7557:5f1d:69ce:bd41) (Read error: Connection reset by peer)
00:50:05 salumu joins (~sMuNiX@vlnsm8-montreal02-142-122-8-233.internet.virginmobile.ca)
00:50:16 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
00:52:01 × mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew)
00:52:32 Jd007 joins (~Jd007@162.156.11.151)
00:52:37 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
00:53:20 × sMuNiX quits (~sMuNiX@vlnsm8-montreal02-142-122-8-233.internet.virginmobile.ca) (Ping timeout: 265 seconds)
00:53:56 × mrchampion quits (~mrchampio@38.18.109.23) (Ping timeout: 240 seconds)
00:55:45 brainfunnel joins (~quassel@12.23.199.146.dyn.plus.net)
00:57:29 × shush quits (~pawn@2603-8000-3703-51f4-543f-96f4-bf63-1a0d.res6.spectrum.com) (Remote host closed the connection)
00:57:33 mrchampion joins (~mrchampio@38.18.109.23)
00:58:01 jess is now known as jesspacito
00:59:33 Sgeo_ joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
00:59:48 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
01:00:25 × Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Ping timeout: 240 seconds)
01:05:04 urodna joins (~urodna@unaffiliated/urodna)
01:05:15 nbloomf joins (~nbloomf@2600:1700:ad14:3020:e9bf:1d6f:43d1:d11b)
01:06:17 × heatsink quits (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1) (Remote host closed the connection)
01:08:30 × xiinotulp quits (~q@node-usw.pool-125-24.dynamic.totinternet.net) (Quit: Leaving)
01:08:37 × kupi quits (uid212005@gateway/web/irccloud.com/x-pyrfhfaitkpiyesc) (Quit: Connection closed for inactivity)
01:09:26 × aveltras quits (uid364989@gateway/web/irccloud.com/x-wppxrrvmmzrfxdph) (Quit: Connection closed for inactivity)
01:12:50 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
01:15:38 <desophos> hi, i think i'm having an issue with quickCheckAll. i'm getting a "Variable not in scope" error that makes no sense to me and i'm not sure what its source is. maybe something to do with resolving type variables? https://gist.github.com/desophos/6f71326e351aa3c497f24e88d5aee155
01:16:05 × Neuromancer quits (~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 240 seconds)
01:16:05 × usr25 quits (~usr25@unaffiliated/usr25) (Quit: Leaving)
01:16:16 × peasynt quits (~quassel@pool-173-76-103-124.bstnma.fios.verizon.net) (Quit: quit.)
01:16:50 <Axman6> have you saved Agent.hs?
01:17:06 <desophos> yes
01:17:21 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
01:17:29 <Axman6> try using import Agent (mergeAgents)
01:17:37 <Axman6> and see if you get a different error
01:18:04 <Axman6> oh, quickCheckAll is TH, that might be problematic
01:18:34 <desophos> i'll try that, but yeah it is :/
01:19:06 × deviantfero quits (~deviantfe@190.150.27.58) (Quit: WeeChat 3.0)
01:19:33 <Axman6> it's possible you may need to put the call to quickCheckAll in a different file
01:20:18 <desophos> wow, i actually just forgot to export mergeAgents haha
01:20:22 <shiraeeshi> what's TH?
01:20:44 <ski> Template Haskell
01:21:39 <Axman6> desophos: in the file you shared it is definitely exported, which is why I asked about it being saved
01:22:33 <desophos> yes, that file doesn't reflect mine exactly. i tried to cut out everything unrelated but it appears i overlooked the export list!
01:24:16 <desophos> now i just need to figure out how to derive Show for functions
01:25:05 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:25:16 <ski> instance Show (a -> b) where showsPrec _ _ = showString "<function>" -- would do it
01:25:25 <desophos> thanks for having me explicitly import mergeAgents because that was what led me to discover it wasn't actually being exported
01:25:34 <ski> (but i wouldn't suggest using that for anything else than debugging)
01:25:59 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
01:26:13 × hyperisco quits (~hyperisco@104-195-141-253.cpe.teksavvy.com) (Ping timeout: 258 seconds)
01:26:24 <desophos> i think i'll just print the types because they're encoder/decoder functions
01:28:04 <ski> you could use something like `showsPrec p _ = showParen True $ showString "_ :: " . shows (typeOf (undefined :: a -> b))'
01:30:04 <ski> % instance (Typeable a,Typeable b) => Show (a -> b) where showsPrec _ _ = showParen True $ showString "_ :: " . shows (typeOf (undefined :: a -> b))
01:30:04 <yahb> ski:
01:30:07 <ski> % ord
01:30:07 <yahb> ski: (_ :: Char -> Int)
01:31:20 <ski> (but please don't put that instance in a library module that provides other useful functionality)
01:31:39 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
01:32:24 hackage ghc-lib-parser 9.0.1.20210205 - The GHC API, decoupled from GHC versions https://hackage.haskell.org/package/ghc-lib-parser-9.0.1.20210205 (shayne_fletcher)
01:33:24 hackage ghc-lib 9.0.1.20210205 - The GHC API, decoupled from GHC versions https://hackage.haskell.org/package/ghc-lib-9.0.1.20210205 (shayne_fletcher)
01:33:37 <desophos> if i defined an alias `type Encoder = a -> String` and wrote a Show instance for it, would that bypass the issue of including a Show instance for `a -> b`?
01:33:49 <desophos> er, for `a -> String`
01:34:07 <desophos> or would it still apply to all `a -> String`?
01:34:13 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
01:34:41 <ski> % type Encoder = a -> String
01:34:42 <yahb> ski: ; <interactive>:112:16: error: Not in scope: type variable `a'
01:34:52 <ski> where's `a' coming from ?
01:35:08 <desophos> sorry, it would be `type Encoder a = a -> String`
01:35:40 <ski> writing an instance for a type synonym is the same thing as writing an instance for what it's defined to be, since those two are the same type
01:36:03 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:e9bf:1d6f:43d1:d11b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:36:06 <desophos> alright thanks, that makes sense
01:36:12 <ski> writing `instance ..a.. => Show (Encoder a) where ...' is no different from writing `instance ..a.. => Show (a -> String) where ...'
01:36:16 <ski> it does the same thing
01:36:36 <ski> (however, the former is only allowed, with `FlexibleInstances' (a fairly benign extension)
01:36:40 <ski> )
01:37:32 <ski> if you had a `newtype' (or `data' type) though, you could have a separate instance for it
01:38:24 <desophos> well, i have a record type with fields that are those function types
01:38:54 <desophos> so i could write a Show instance for the record type that only special-cases those fields
01:38:57 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
01:39:00 <ski> like `instance Typeable a => Show (Encoder a) where showsPrec _ _ = showParen True $ showString "_ :: Encoder " . showsPrec 11 (typeOf (undefined :: a))'
01:40:26 <ski> desophos : well, that's also a possibility. but please define `showsPrec' (and not `show'), and please properly make use of `showParen',`showString',`showChar',`showsPrec',`shows'
01:40:49 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
01:43:37 <desophos> thank you, i will. i'd really rather just derive Show for those functions though. the issue is that my Show instance for `a -> String` would potentially conflict with instances defined by module importers, right?
01:44:06 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
01:45:19 Bobbias joins (~Bobbias@2605:b100:319:2b7a:7557:5f1d:69ce:bd41)
01:45:55 × zebrag quits (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
01:46:08 × Bobbias quits (~Bobbias@2605:b100:319:2b7a:7557:5f1d:69ce:bd41) (Read error: Connection reset by peer)
01:46:16 <ski> desophos : yes
01:47:09 <ski> since there's no "official instance", it may happen that some other library someone might want to use may also define an instance for (some) function types (even though they usually shouldn't !)
01:47:29 <ski> (if that happens, the two modules can't be combined into a single program)
01:47:32 × metreo quits (~Thunderbi@unaffiliated/metreo) (Quit: metreo)
01:47:47 jle` joins (~mstksg@unaffiliated/mstksg)
01:48:26 <desophos> so what's the proper thing to do in this situation?
01:48:44 <ski> `(Bounded a,Enum a,Show a,Show b) => Show (a,b)' is one possible, somewhat reasonable, instance that could be used
01:48:48 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 246 seconds)
01:49:02 <desophos> hmm, maybe my test module could define the instances
01:49:06 × polyrain quits (~polyrain@124.177.21.171) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:49:08 <ski> (e.g. `show not' would then display as `\case False -> True; True -> False')
01:49:36 × DataComputist quits (~lumeng@50.43.26.251) (Ping timeout: 240 seconds)
01:49:44 <ski> desophos : or if you have several test modules where you'd like to use it, you could make a helper test module, that you import in those that do
01:49:54 <desophos> yeah that's what i was thinking
01:50:22 <desophos> hmm that Show instance is interesting
01:50:42 Murasca joins (~Murasca@bcde0474.skybroadband.com)
01:51:41 <desophos> how would a `Show (a,b)` instance work for `not`?
01:51:52 <ski> (one could generalize `(Bounded a,Enum a)' to some constraint `Finite a', with a corresponding method `finiteEnumeration :: [a]')
01:52:05 <ski> `(a,b)' is a pair type
01:52:16 <ski> er, sorry, mea culpa
01:52:26 <ski> i meant `... => Show (a -> b)'
01:52:32 <desophos> ah yes, that makes more sense haha
01:52:43 <ski> yea, i should think so ! :p
01:52:58 <desophos> that would be a pretty useful instance though
01:53:05 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
01:53:18 polyrain joins (~polyrain@2001:8003:e4d8:4101:e942:1e05:b6e2:4ede)
01:54:40 <ski> however, it would perhaps be nicer to have `(&&)' shown as something like `\x y -> case (x,y) of (False,False) -> False; (False,True) -> False; (True,False) -> False; (True,True) -> True', rather than `\case False -> (\case False -> False; True -> False); True -> (\case False -> False; True -> True)'
01:54:54 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
01:55:10 <ski> (but one main problem then would be generation of unique variable names ..)
01:55:16 djxolar joins (~root@190.66.188.39)
01:55:51 <djxolar> Hi
01:56:14 <desophos> i think i'm fine with just showing the type for now
01:56:17 <ski> (btw, the advantage of `Finite' would be that it could work for argument types like `Either (Bool,Ordering) (Ordering -> Bool)')
01:56:32 <ski> hello djxolar
01:57:52 × djxolar quits (~root@190.66.188.39) (Client Quit)
01:57:54 hackage ghc-lib-parser-ex 9.0.0.0 - Algorithms on GHC parse trees https://hackage.haskell.org/package/ghc-lib-parser-ex-9.0.0.0 (shayne_fletcher)
01:58:19 notzmv joins (~user@unaffiliated/zmv)
01:59:20 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
02:00:27 DataComputist joins (~lumeng@50.43.26.251)
02:05:07 <koz_> Where can I find the list of packages which ship with GHC again?
02:06:16 × catt quits (~r@31.124.181.226) (Remote host closed the connection)
02:06:49 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
02:07:40 napping joins (~brandon@174-20-93-137.mpls.qwest.net)
02:08:08 <yushyin> https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history maybe?
02:08:39 <koz_> yushyin: Yep, thanks!
02:09:12 jedws joins (~jedws@101.184.202.248)
02:10:02 rajivr joins (uid269651@gateway/web/irccloud.com/x-khjufreymueqbnyt)
02:11:10 × jedws quits (~jedws@101.184.202.248) (Client Quit)
02:12:19 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
02:12:20 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
02:14:26 Bobbias joins (~Bobbias@2605:b100:319:2b7a:7557:5f1d:69ce:bd41)
02:14:49 × Bobbias quits (~Bobbias@2605:b100:319:2b7a:7557:5f1d:69ce:bd41) (Read error: Connection reset by peer)
02:15:32 × LKoen_ quits (~LKoen@252.248.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
02:17:33 nbloomf joins (~nbloomf@2600:1700:ad14:3020:e9bf:1d6f:43d1:d11b)
02:20:26 × jophish quits (~jophish@2400:8901::f03c:91ff:fe39:7a9) (Ping timeout: 264 seconds)
02:20:48 toorevitimirp joins (~tooreviti@117.182.181.186)
02:20:48 × toorevitimirp quits (~tooreviti@117.182.181.186) (Remote host closed the connection)
02:21:12 toorevitimirp joins (~tooreviti@117.182.181.186)
02:21:16 jophish joins (~jophish@2400:8901::f03c:91ff:fe39:7a9)
02:21:36 Bobbias joins (~Bobbias@2605:b100:319:2b7a:7557:5f1d:69ce:bd41)
02:22:17 × Bobbias quits (~Bobbias@2605:b100:319:2b7a:7557:5f1d:69ce:bd41) (Read error: Connection reset by peer)
02:24:23 heatsink joins (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1)
02:24:28 × forgottenone quits (~forgotten@176.42.26.20) (Quit: Konversation terminated!)
02:25:24 hackage ghc-lib-parser-ex 9.0.0.1 - Algorithms on GHC parse trees https://hackage.haskell.org/package/ghc-lib-parser-ex-9.0.0.1 (shayne_fletcher)
02:28:27 × xff0x_ quits (~xff0x@2001:1a81:53aa:1900:f90b:c43e:4a98:6d16) (Ping timeout: 260 seconds)
02:30:01 xff0x_ joins (~xff0x@2001:1a81:520c:9300:586a:55e0:d9f8:4e5c)
02:30:13 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
02:35:13 × polyrain quits (~polyrain@2001:8003:e4d8:4101:e942:1e05:b6e2:4ede) (Quit: My MacBook has gone to sleep. ZZZzzz…)
02:37:26 × raym quits (~ray@45.64.220.55) (Quit: leaving)
02:37:35 raym joins (~ray@45.64.220.55)
02:38:33 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
02:42:36 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
02:44:13 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 276 seconds)
02:48:13 × brainfunnel quits (~quassel@12.23.199.146.dyn.plus.net) (Quit: thanks, bye!)
02:48:21 rdivyanshu joins (uid322626@gateway/web/irccloud.com/x-lngcdofcaxbyafyr)
02:51:48 × nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 246 seconds)
02:52:01 falsifian joins (~falsifian@cpef81d0f9cb2f3-cmf81d0f9cb2f0.cpe.net.fido.ca)
02:53:58 <falsifian> Is there a way to list the files that were installed, or that will be installed, by cabal v2-install? I tried running "cabal v2-install --prefix=$HOME/tmp/git-annex" (in a checkout of the git-annex project) in the hope that all the files would end up in that directory and I could see what they are, but the --prefix argument had no effect.
02:54:40 <falsifian> This is Cabal 3.4.0.0.
02:59:39 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
02:59:53 quinn joins (~quinn@c-73-223-224-163.hsd1.ca.comcast.net)
03:00:25 hackage kparams 0.1.0.0 - Extracts values from /proc/cmdline. https://hackage.haskell.org/package/kparams-0.1.0.0 (mcsaucy)
03:00:51 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
03:02:50 <glguy> falsifian, install (previously v2-install) just adds the packages to the store and symlinks to the executables. You can see what was installed looking in ~/.cabal/store
03:02:53 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:e9bf:1d6f:43d1:d11b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
03:03:15 <glguy> there's probably a way to change what that path is, but I would expect if you did that it would have to install all your dependencies into that new path
03:03:42 <glguy> I haven’t played with that kind of thing much; what are you trying to do?
03:03:45 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
03:04:36 nbloomf joins (~nbloomf@2600:1700:ad14:3020:d565:4fe9:2191:8f98)
03:05:16 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
03:05:17 <falsifian> Trying to understand how the man pages are supposed to get installed. Also trying to help package it for OpenBSD.
03:05:58 <glguy> I don’t think cabal will help you install man pages
03:06:48 <falsifian> Hm, perhaps it's done outside Cabal. Maybe I'll look at how some Linux distributions do it.
03:07:16 × micro quits (~micro@unaffiliated/micro) (Ping timeout: 240 seconds)
03:08:03 <falsifian> Oh, heh, there's a Makefile.
03:08:10 <falsifian> And installation instructions.
03:09:47 <falsifian> Hm, but it looks like the man pages are installed by a postCopy hook in Setup.hs.
03:10:02 micro joins (~micro@unaffiliated/micro)
03:10:45 × theDon quits (~td@muedsl-82-207-238-046.citykom.de) (Ping timeout: 240 seconds)
03:12:39 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
03:12:44 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
03:12:49 theDon joins (~td@muedsl-82-207-238-211.citykom.de)
03:12:58 soft-warm joins (4408f588@ip68-8-245-136.sd.sd.cox.net)
03:17:05 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
03:17:05 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
03:17:16 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
03:18:30 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
03:18:39 <desophos> ski, i'm getting an error using the code you posted earlier. the gist is modified slightly but i get the same error with your code verbatim, or even passing just a `Proxy a` to `typeRep`. do i need some language extension to make this work? i don't understand what the typechecker wants from me
03:18:40 <desophos> https://gist.github.com/desophos/62603c4a120393b92941f29c60da22a8
03:20:04 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 258 seconds)
03:21:33 × shiraeeshi quits (~shiraeesh@109.166.56.2) (Ping timeout: 264 seconds)
03:22:01 Codaraxis__ joins (Codaraxis@gateway/vpn/mullvad/codaraxis)
03:22:21 desophos_ joins (~desophos@2601:249:1680:a570:401a:e62d:b79f:2b1)
03:25:44 <c_wraith> desophos: That looks like a ScopedTypeVariables issue
03:26:08 <c_wraith> the `a` and `b` in your type for p are unrelated to the types in the show instance
03:26:09 × mirrorbird quits (~psutcliff@2a00:801:2d5:848b:590:cf4f:5eeb:b49d) (Ping timeout: 272 seconds)
03:26:28 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 276 seconds)
03:26:32 <desophos_> oh, really? hmm
03:26:45 <c_wraith> desophos: so throw {-# LANGUAGE ScopedTypeVariables #-} at the start of the file
03:26:48 <desophos_> that would make sense lol
03:27:09 <desophos_> thank you! I’ll add that extension
03:28:04 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-hckhahxtjpgetknl) (Quit: Connection closed for inactivity)
03:29:27 <ski> desophos : ah, yes. i should probably have said that
03:30:14 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
03:31:20 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
03:31:36 TianGTY joins (~textual@103.116.47.198)
03:32:57 × Sgeo_ quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Ping timeout: 264 seconds)
03:33:24 <ukari> hoggle haskell returns a 502 error, https://hoogle.haskell.org/
03:34:08 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
03:34:17 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
03:37:05 FinnElija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
03:37:05 finn_elija is now known as Guest61759
03:37:05 FinnElija is now known as finn_elija
03:41:14 × Guest61759 quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds)
03:41:35 × desophos_ quits (~desophos@2601:249:1680:a570:401a:e62d:b79f:2b1) (Quit: Mutter: www.mutterirc.com)
03:46:58 Saukk joins (~Saukk@83-148-239-3.dynamic.lounea.fi)
03:48:41 Tario joins (~Tario@201.192.165.173)
03:50:22 <falsifian> ukary: Works for me.
03:50:29 <falsifian> Sorry, I mean ukari
03:51:10 × Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Ping timeout: 276 seconds)
03:51:53 × DataComputist quits (~lumeng@50.43.26.251) (Ping timeout: 258 seconds)
03:53:46 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 276 seconds)
03:53:57 djcaston joins (~djcaston@pool-71-188-85-134.cmdnnj.east.verizon.net)
03:54:36 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
03:54:54 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
03:55:24 DataComputist joins (~lumeng@50.43.26.251)
03:55:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:57:42 <ukari> falsifian, now it works for me too
04:00:39 Rudd0 joins (~Rudd0@185.189.115.103)
04:01:45 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
04:01:50 × borne quits (~fritjof@2a06:8782:ffbb:1337:a53:e188:6f13:d1a) (Ping timeout: 264 seconds)
04:02:02 chrisdotcode joins (~chrisdotc@unaffiliated/chrisdotcode)
04:03:10 × napping quits (~brandon@174-20-93-137.mpls.qwest.net) (Quit: leaving)
04:03:32 × heatsink quits (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1) (Remote host closed the connection)
04:06:49 × glguy quits (x@freenode/staff/haskell.developer.glguy) (Remote host closed the connection)
04:06:57 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
04:07:48 glguy joins (x@freenode/staff/haskell.developer.glguy)
04:08:07 heatsink joins (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1)
04:09:22 × soft-warm quits (4408f588@ip68-8-245-136.sd.sd.cox.net) (Ping timeout: 240 seconds)
04:09:39 jedws joins (~jedws@101.184.202.248)
04:09:57 × ericsagnes quits (~ericsagne@2405:6580:0:5100:6838:f94d:c1b8:154c) (Ping timeout: 260 seconds)
04:11:00 × hexfive quits (~hexfive@50.35.83.177) (Quit: i must go. my people need me.)
04:11:15 × notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection)
04:11:57 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 264 seconds)
04:13:47 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
04:14:38 dyeplexer joins (~lol@unaffiliated/terpin)
04:14:43 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
04:15:58 tuxian joins (~tuxian@2405:201:e018:998a:3041:aef8:2683:35e0)
04:18:28 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
04:19:16 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
04:22:34 ericsagnes joins (~ericsagne@2405:6580:0:5100:2bad:a6b1:9f59:3808)
04:24:07 plutoniix joins (~q@184.82.194.56)
04:28:11 <texasmynsted> Is there something special about QuasiQuotes for Text.Heredoc?
04:28:37 <texasmynsted> I keep getting an error error: parse error on input ‘|]’
04:28:54 <c_wraith> do you have the QuasiQuotes extension enabled?
04:29:21 <texasmynsted> I have template haskell extension enabled. I did not know there was a quasiquotes extension
04:30:13 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
04:30:29 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
04:31:22 <texasmynsted> do not see anything about that here either https://wiki.haskell.org/Quasiquotation
04:31:44 × tuxian quits (~tuxian@2405:201:e018:998a:3041:aef8:2683:35e0) (Remote host closed the connection)
04:33:29 <texasmynsted> hmm. So what do I need to do?
04:33:40 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 258 seconds)
04:33:45 <glguy> texasmynsted, do you have the code somewhere we can see?
04:34:23 <texasmynsted> okay. One sec. You are welcome to provide suggestions for the rest of the file also heh.
04:34:49 <c_wraith> well, ghc accepts QuasiQuotes as an extension
04:34:53 <c_wraith> I recommend turning it on
04:35:05 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
04:35:24 <texasmynsted> okay, sounds like something for my project's cabal file
04:35:57 <texasmynsted> https://gist.github.com/mmynsted/c48c648815338e55916b2ca273cf3bcf
04:36:15 <texasmynsted> oops
04:36:21 <texasmynsted> I have my host in there
04:36:28 <c_wraith> https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/template_haskell.html#template-haskell-quasi-quotation
04:36:37 <c_wraith> as always, trust the ghc manual before wiki pages
04:37:29 <c_wraith> (it's really a good resource)
04:39:31 <c_wraith> Also, fwiw, I recommend against turning on extensions in the cabal file, unless you are about 115% sure you will need it in every single file.
04:39:48 <texasmynsted> hmm. it built but it changed the way the template haskell works, or it ignored the replacement inside the heredoc.
04:40:12 × heatsink quits (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1) (Remote host closed the connection)
04:40:12 <texasmynsted> I just added extensions: QuasiQuotes, for that particular executable
04:40:37 frozenErebus joins (~frozenEre@94.128.81.133)
04:41:29 conal joins (~conal@64.71.133.70)
04:42:44 <texasmynsted> Hmm. since the template haskell replacement did not work, it looks like more trouble than it is worth for now.
04:44:45 <texasmynsted> Hmm. I suspect I just need to learn how to use it correctly. Maybe this is one to try for the moment. https://hackage.haskell.org/package/neat-interpolation
04:45:00 <texasmynsted> also any suggestions for improvement on the rest of the file?
04:45:33 heatsink joins (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1)
04:45:49 × pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!)
04:46:02 × conal quits (~conal@64.71.133.70) (Client Quit)
04:46:47 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
04:48:01 <Squarism> how do I extend cabal with resource processing as part of a build, if even possible?
04:52:18 <c_wraith> there's always build-type: custom
04:52:36 <c_wraith> But that makes building a lot slower
04:52:38 oldandwise joins (~oldandwis@49.145.174.153)
04:52:54 <c_wraith> since it makes cabal actually care about Setup.hs
04:55:09 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
04:56:21 × gienah quits (~mwright@gentoo/developer/gienah) (Quit: leaving)
04:56:51 × oldandwise quits (~oldandwis@49.145.174.153) (Client Quit)
04:58:42 notzmv joins (~user@unaffiliated/zmv)
04:58:53 oldandwise joins (~oldandwis@49.145.174.153)
04:58:55 × ByronJohnson quits (~bairyn@unaffiliated/bob0) (Ping timeout: 256 seconds)
04:59:04 ByronJohnson joins (~bairyn@unaffiliated/bob0)
04:59:06 × styledash quits (~styledash@157.230.173.136) (Quit: The Lounge - https://thelounge.chat)
04:59:25 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
04:59:54 styledash joins (~styledash@157.230.173.136)
05:00:56 × oldandwise quits (~oldandwis@49.145.174.153) (Client Quit)
05:01:03 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
05:02:30 Codaraxis_ joins (Codaraxis@gateway/vpn/mullvad/codaraxis)
05:03:45 × DataComputist quits (~lumeng@50.43.26.251) (Ping timeout: 246 seconds)
05:05:16 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
05:06:02 × zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving)
05:06:10 × alx741 quits (~alx741@186.178.110.33) (Quit: alx741)
05:06:15 × Codaraxis__ quits (Codaraxis@gateway/vpn/mullvad/codaraxis) (Ping timeout: 258 seconds)
05:08:24 DataComputist joins (~lumeng@50.43.26.251)
05:08:34 × Jd007 quits (~Jd007@162.156.11.151) (Quit: Jd007)
05:11:25 <texasmynsted> I am looking here https://www.haskell.org/cabal/release/cabal-1.18.1/doc/users-guide/developing-packages.html#example-a-package-containing-a-library-and-executable-programs
05:12:00 <texasmynsted> Why is not a hs-source-dirs for the Library?
05:12:25 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 276 seconds)
05:13:17 <texasmynsted> I see sources for program1 in prog1, and program2 in prog2, should not library be in lib or something?
05:13:45 zaquest joins (~notzaques@5.128.210.178)
05:16:21 crestfallen joins (~jvw@135-180-46-152.fiber.dynamic.sonic.net)
05:16:38 <c_wraith> that would probably be a better layout, but it doesn't actually matter. It treats it as . if it's not specified, and since module names must always be capitalized, there can't be namespace collisions
05:16:58 × frozenErebus quits (~frozenEre@94.128.81.133) (Quit: leaving)
05:17:05 <c_wraith> So, it will all work as is. But your suggestion would be nicer to work with
05:17:08 ixaxaar joins (~ixaxaar@49.207.210.215)
05:17:30 frozenErebus joins (~frozenEre@94.128.81.133)
05:19:45 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
05:19:45 <texasmynsted> okay. Thank you. I will try with lib. I expect this is the normal way to share modules across executables?
05:24:35 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
05:25:06 nineonine joins (~nineonine@50.216.62.2)
05:26:56 × greymalkin quits (~greymalki@199.180.249.79) (Ping timeout: 240 seconds)
05:27:14 <c_wraith> if they're all packaged in the same cabal file, yes
05:28:06 × elliott__ quits (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
05:28:36 × guest23 quits (~user@49.5.6.87) (Ping timeout: 240 seconds)
05:29:32 greymalkin joins (~greymalki@199.180.249.79)
05:31:55 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 276 seconds)
05:32:04 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Remote host closed the connection)
05:32:21 × djcaston quits (~djcaston@pool-71-188-85-134.cmdnnj.east.verizon.net) (Ping timeout: 256 seconds)
05:32:27 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
05:33:20 <hololeap> is there a "best" way to take some type that can be parsed with megaparsec and make an IsString instance of it? how should errors be handled?
05:33:54 × Saukk quits (~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
05:34:09 djcaston joins (~djcaston@juno.whatbox.ca)
05:34:18 × crestfallen quits (~jvw@135-180-46-152.fiber.dynamic.sonic.net) (Quit: Lost terminal)
05:34:22 <hololeap> ideally if a there is a string literal that is malformed, this would result in a compile time error
05:35:56 gienah joins (~mwright@gentoo/developer/gienah)
05:35:56 <texasmynsted> why would Cabal not find a module, say 'A', when it is exposed in library, and defined in other-modules in an executable?
05:36:10 <texasmynsted> I have the module in src/lib/
05:36:14 nineonin_ joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
05:36:22 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
05:36:28 <texasmynsted> and have hs-source-dirs defined for the library
05:37:56 <hololeap> texasmynsted: is the package name listed in build-depends?
05:38:05 <hololeap> for the executable...
05:39:21 <texasmynsted> no, it is in other-modules
05:39:57 × nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 265 seconds)
05:40:24 <hololeap> i'm fairly certain that it doesn't need to go into other-modules for the executable, but the executable needs the package name listed under build-depends
05:41:18 <texasmynsted> okay. I was just following https://www.haskell.org/cabal/release/cabal-1.18.1/doc/users-guide/developing-packages.html#example-a-package-containing-a-library-and-executable-programs
05:41:21 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
05:42:56 × nineonin_ quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Remote host closed the connection)
05:43:25 <texasmynsted> hm.
05:43:28 <hololeap> i think those are supposed to be _different_ A, B, C, etc... between the library or some executable
05:43:58 nineonine joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
05:44:14 <hololeap> so A for the lib is different than A for program1, which is different than A for program2
05:44:21 <hololeap> they just got lazy with their naming :p
05:45:17 <hololeap> here's an example: https://hackage.haskell.org/package/ghcide-0.7.3.0/ghcide.cabal
05:45:25 × styledash quits (~styledash@157.230.173.136) (Ping timeout: 240 seconds)
05:45:36 <hololeap> search for 'executable ghcide' and notice that 'ghcide' is listed under 'build-depends'
05:46:08 <hololeap> it's saying that parts of the ghcide library are needed for the executable
05:46:12 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
05:47:47 <hololeap> if an executable has 'other-modules', that would be executable-specific modules that are needed to compile Main
05:48:15 <hololeap> e.g. modules that are in the executable's source dirs
05:48:25 × nineonine quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Ping timeout: 258 seconds)
05:49:30 guest23 joins (~user@49.5.6.87)
05:50:48 styledash joins (~styledash@157.230.173.136)
05:51:33 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
05:51:52 <texasmynsted> Thank you for that link.
05:52:01 <texasmynsted> The path is part of the package name space
05:52:10 <texasmynsted> I will try that
05:52:19 × sm2n quits (~sm2n@bras-base-hmtnon1497w-grc-43-64-231-95-247.dsl.bell.ca) (Quit: Leaving)
05:52:24 × frozenErebus quits (~frozenEre@94.128.81.133) (Quit: leaving)
05:52:59 frozenErebus joins (~frozenEre@94.128.81.133)
05:53:17 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:77eb:108:ea2:a08f:6e8c) (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:54:25 sm2n joins (~sm2n@bras-base-hmtnon1497w-grc-43-64-231-95-247.dsl.bell.ca)
05:54:51 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
05:55:10 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
05:56:43 × plutoniix quits (~q@184.82.194.56) (Read error: Connection reset by peer)
05:57:43 × elfets_ quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
05:58:49 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:d565:4fe9:2191:8f98) (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:59:52 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 276 seconds)
05:59:52 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 276 seconds)
06:00:42 Neuromancer joins (~Neuromanc@unaffiliated/neuromancer)
06:00:52 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
06:01:13 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
06:02:39 plutoniix joins (~q@184.82.194.56)
06:02:57 jpds joins (~jpds@gateway/tor-sasl/jpds)
06:05:00 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 246 seconds)
06:07:48 ADG1089__ joins (~aditya@223.236.161.207)
06:07:54 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
06:11:26 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
06:13:25 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
06:15:53 da39a3ee5e6b4b0d joins (~da39a3ee5@49.228.238.55)
06:18:42 × djcaston quits (~djcaston@juno.whatbox.ca) (Ping timeout: 258 seconds)
06:20:20 × livvy quits (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 268 seconds)
06:21:33 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
06:23:39 nineonine joins (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
06:25:23 × nineonine quits (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection)
06:26:01 nineonine joins (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
06:26:18 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:27:10 × nyaomi quits (~naomi@cpe-74-75-6-125.maine.res.rr.com) (Excess Flood)
06:27:30 nyaomi joins (~naomi@cpe-74-75-6-125.maine.res.rr.com)
06:28:15 ADG1089_ joins (~aditya@171.76.188.43)
06:28:45 × ADG1089__ quits (~aditya@223.236.161.207) (Ping timeout: 240 seconds)
06:29:43 × Wuzzy quits (~Wuzzy@p57a2e44e.dip0.t-ipconnect.de) (Remote host closed the connection)
06:30:38 × nineonine quits (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 264 seconds)
06:32:09 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:32:25 × nyaomi quits (~naomi@cpe-74-75-6-125.maine.res.rr.com) (Excess Flood)
06:33:17 nyaomi joins (~naomi@cpe-74-75-6-125.maine.res.rr.com)
06:33:22 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
06:40:21 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
06:42:04 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
06:43:32 Tops2 joins (~Tobias@dyndsl-095-033-020-088.ewe-ip-backbone.de)
06:46:45 Guest9812 is now known as stilgart
06:46:45 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
06:48:00 Lowl3v3l joins (~Lowl3v3l@dslb-002-203-233-121.002.203.pools.vodafone-ip.de)
06:49:30 nineonine joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
06:51:43 × nineonine quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Remote host closed the connection)
06:52:19 nineonine joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
06:55:37 × hololeap quits (~hololeap@unaffiliated/hololeap) (Quit: KVIrc 5.0.1 Aria http://www.kvirc.net/)
06:57:02 × nineonine quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Ping timeout: 264 seconds)
06:57:32 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
07:00:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
07:00:14 × DataComputist quits (~lumeng@50.43.26.251) (Ping timeout: 256 seconds)
07:00:35 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
07:02:35 DataComputist joins (~lumeng@50.43.26.251)
07:03:12 nineonine joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
07:03:45 cfricke joins (~cfricke@unaffiliated/cfricke)
07:04:03 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 265 seconds)
07:05:55 nineonin_ joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
07:06:10 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 276 seconds)
07:06:35 × average quits (uid473595@gateway/web/irccloud.com/x-wmphahzlcegaaqct) (Quit: Connection closed for inactivity)
07:08:02 × rdivyanshu quits (uid322626@gateway/web/irccloud.com/x-lngcdofcaxbyafyr) (Quit: Connection closed for inactivity)
07:08:21 × jedws quits (~jedws@101.184.202.248) (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:09:41 × nineonine quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Ping timeout: 258 seconds)
07:10:47 × nineonin_ quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Ping timeout: 260 seconds)
07:10:54 × ADG1089_ quits (~aditya@171.76.188.43) (Read error: Connection reset by peer)
07:11:48 vchlup joins (~vchlup@nat.brnet.cz)
07:14:46 ADG1089_ joins (~aditya@223.235.245.154)
07:16:46 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
07:20:05 danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
07:21:46 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 276 seconds)
07:23:20 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
07:23:29 × xff0x_ quits (~xff0x@2001:1a81:520c:9300:586a:55e0:d9f8:4e5c) (Ping timeout: 258 seconds)
07:24:13 xff0x_ joins (~xff0x@2001:1a81:520c:9300:d376:a5ba:ccb8:29d)
07:24:34 kuribas joins (~user@ptr-25vy0i8mp067j44c045.18120a2.ip6.access.telenet.be)
07:30:21 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
07:30:44 maier joins (~maier@mue-88-130-62-190.dsl.tropolys.de)
07:31:10 vilpan joins (~0@212.117.1.172)
07:32:13 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
07:32:26 d3od joins (~nickmeno3@78-1-81-107.adsl.net.t-com.hr)
07:33:44 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
07:34:46 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0)
07:34:59 × raym quits (~ray@45.64.220.55) (Ping timeout: 265 seconds)
07:35:13 knupfer joins (~Thunderbi@200116b82c11b100f07476fffeae2c5f.dip.versatel-1u1.de)
07:36:00 cfricke joins (~cfricke@unaffiliated/cfricke)
07:37:38 × knupfer quits (~Thunderbi@200116b82c11b100f07476fffeae2c5f.dip.versatel-1u1.de) (Remote host closed the connection)
07:38:25 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
07:40:27 nineonine joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
07:40:34 × vgtw quits (~vgtw@gateway/tor-sasl/vgtw) (Remote host closed the connection)
07:40:50 vgtw joins (~vgtw@gateway/tor-sasl/vgtw)
07:40:56 × DataComputist quits (~lumeng@50.43.26.251) (Ping timeout: 240 seconds)
07:40:57 × benjamingr__ quits (uid23465@gateway/web/irccloud.com/x-hwcybnxooouhdsux) (Quit: Connection closed for inactivity)
07:41:57 DataComputist joins (~lumeng@50.43.26.251)
07:42:14 × nineonine quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Remote host closed the connection)
07:43:13 nineonine joins (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
07:45:53 <kuribas> multiple studies have shown that underscores are more readable than camelcase. Why does haskell keeps insisting on camelcase?
07:46:12 <kuribas> For example hlint warnings.
07:46:29 <kuribas> https://www.researchgate.net/publication/224159770_An_Eye_Tracking_Study_on_camelCase_and_under_score_Identifier_Styles
07:48:02 × nineonine quits (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 264 seconds)
07:48:38 <opqdonut> because most haskell libraries use camelCase, and it's hard to have to remember whether a given function is called mogrify_zoo_via or mogrifyZooVia
07:48:42 <opqdonut> or at least, that's one good reason
07:48:56 <opqdonut> I would imagine hlint is configurable
07:50:04 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
07:50:06 × andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
07:50:43 andreas303 joins (~andreas@gateway/tor-sasl/andreas303)
07:51:01 × guest23 quits (~user@49.5.6.87) (Remote host closed the connection)
07:51:13 guest23 joins (~user@49.5.6.87)
07:52:25 hackage dep-t 0.4.0.2 - Reader-like monad transformer for dependency injection. https://hackage.haskell.org/package/dep-t-0.4.0.2 (DanielDiazCarrete)
07:54:55 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 258 seconds)
07:58:52 × TianGTY quits (~textual@103.116.47.198) (Quit: Textual IRC Client: www.textualapp.com)
07:59:52 Sgeo_ joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
08:01:23 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds)
08:01:45 × Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Ping timeout: 264 seconds)
08:01:50 nineonine joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
08:03:08 × nineonine quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Remote host closed the connection)
08:04:08 nineonine joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
08:05:35 <nshepperd> hlint warnings insist many silly things
08:06:27 Major_Biscuit joins (~Major_Bis@82-169-100-198.biz.kpn.net)
08:07:39 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
08:07:41 × maier quits (~maier@mue-88-130-62-190.dsl.tropolys.de) (Quit: Lost terminal)
08:09:02 × nineonine quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Ping timeout: 264 seconds)
08:09:40 sord937 joins (~sord937@gateway/tor-sasl/sord937)
08:10:15 × frozenErebus quits (~frozenEre@94.128.81.133) (Ping timeout: 258 seconds)
08:12:16 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
08:15:42 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
08:15:59 Codaraxis__ joins (Codaraxis@gateway/vpn/mullvad/codaraxis)
08:16:23 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
08:16:40 raym joins (~ray@45.64.220.139)
08:18:39 frozenErebus joins (~frozenEre@94.128.81.133)
08:19:13 dhouthoo joins (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
08:19:28 michalz joins (~user@185.246.204.93)
08:19:37 × Codaraxis_ quits (Codaraxis@gateway/vpn/mullvad/codaraxis) (Ping timeout: 276 seconds)
08:21:15 × vgtw quits (~vgtw@gateway/tor-sasl/vgtw) (Remote host closed the connection)
08:21:29 × totoro2022 quits (~t@unaffiliated/totoro2021) (Read error: Connection reset by peer)
08:21:31 vgtw joins (~vgtw@gateway/tor-sasl/vgtw)
08:23:22 totoro2022 joins (~t@unaffiliated/totoro2021)
08:23:46 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
08:25:00 × sh9 quits (~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8)
08:26:41 × jb55 quits (~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
08:27:02 jb55 joins (~jb55@gateway/tor-sasl/jb55)
08:28:25 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
08:31:35 miguel_clean joins (~Miguel@89-72-187-203.dynamic.chello.pl)
08:32:02 <kuribas> nshepperd: I agree
08:32:48 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
08:32:54 <kuribas> like foo a b c d e f = bar $ fuga a b c => foo a b c d e = bar . fuga a b c d e
08:33:00 <kuribas> IMO that's worse
08:33:25 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
08:34:15 × d3od quits (~nickmeno3@78-1-81-107.adsl.net.t-com.hr) (Remote host closed the connection)
08:35:34 × heatsink quits (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1) (Remote host closed the connection)
08:36:55 Franciman joins (~francesco@host-95-235-155-82.retail.telecomitalia.it)
08:37:16 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
08:38:11 borne joins (~fritjof@2a06:8782:ffbb:1337:a53:e188:6f13:d1a)
08:41:45 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
08:42:49 × borne quits (~fritjof@2a06:8782:ffbb:1337:a53:e188:6f13:d1a) (Ping timeout: 272 seconds)
08:43:11 chele joins (~chele@ip5b40237d.dynamic.kabel-deutschland.de)
08:43:54 shad0w_ joins (a0ca2538@160.202.37.56)
08:44:12 <shad0w_> hi all
08:44:17 <shad0w_> in a bit of a pickle here
08:44:23 borne joins (~fritjof@200116b8645bf50038baae9ec143df07.dip.versatel-1u1.de)
08:44:26 <shad0w_> ```
08:44:27 <shad0w_> cabal.exe: No targets given and there is no package in the current directory.
08:44:27 <shad0w_> Use the target 'all' for all packages in the project or specify packages or
08:44:28 <shad0w_> components by name or location. See 'cabal build --help' for more details on
08:44:28 <shad0w_> target options.
08:44:29 <shad0w_> ```
08:44:56 nineonine joins (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
08:45:03 <shad0w_> gccemacs (compiled for windows) + haskell-mode
08:45:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:45:18 × ADG1089_ quits (~aditya@223.235.245.154) (Quit: Konversation terminated!)
08:48:32 Martinsos joins (~user@cpe-188-129-56-3.dynamic.amis.hr)
08:49:04 <shad0w_> i do have multiple executables in the project tho, could that be the problem ?
08:51:37 × Profpatsch quits (~Profpatsc@static.88-198-193-255.clients.your-server.de) (Quit: WeeChat 2.9)
08:51:37 × Narinas quits (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
08:51:39 mirrorbird joins (~psutcliff@2a00:801:2d5:848b:590:cf4f:5eeb:b49d)
08:51:46 Narinas joins (~Narinas@189.223.62.254.dsl.dyn.telnor.net)
08:53:05 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
08:53:24 gxt joins (~gxt@gateway/tor-sasl/gxt)
08:53:32 <Martinsos> Hey pplz! I have this relatively short IO function that does three IO actions sequentially, each on of them returning Either where Left might be an error. I want them to short circuit -> so if first one returns Left, the rest shouldn't execute and so on. I used ExceptT + IO on couple of places for this, but I was just reading a blog post by FPComplete where they said that is an anti-pattern, because now I have IO (Either e a) and it
08:53:32 <Martinsos> looks as if errors are returned through Either while there could still be IOExceptions. I then read the whole blog post about exceptions by FPComplete, also one by Sweag, and while I get the main ideas with the pure/impure and sync/async errors, I am still confused about what to do in particular situations in practice.
08:54:17 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
08:54:52 <Martinsos> So how would you model errors in this situation? Would you throw IO exceptions instead? If so, what does that really mean -> which function from which library would you use to throw these errors?
08:55:06 × ixian quits (~mgold@terra.bitplane.org) (Ping timeout: 258 seconds)
08:55:42 ixian joins (~mgold@terra.bitplane.org)
08:58:37 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 276 seconds)
09:00:00 × dyniec[m] quits (dyniecmatr@gateway/shell/matrix.org/x-elgmnlyadjyzxkds) (Quit: Idle for 30+ days)
09:01:17 fendor joins (~fendor@178.115.130.101.wireless.dyn.drei.com)
09:02:44 <nshepperd> just use ExceptT and don't worry about it too much imo
09:02:54 ubert joins (~Thunderbi@p548c9a44.dip0.t-ipconnect.de)
09:04:43 × Sgeo_ quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
09:04:52 <nshepperd> to throw an io exception you would use Control.Exception.throwIO though
09:05:47 thc202 joins (~thc202@unaffiliated/thc202)
09:07:31 × nineonine quits (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 272 seconds)
09:09:16 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
09:14:04 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
09:17:30 danza joins (~francesco@151.53.69.219)
09:18:54 <kuribas> Martinsos: I don't think that's a universal agreement.
09:19:02 <kuribas> ExceptT with IO is fine.
09:19:14 <Martinsos> Thanks! So I am thinking then: I could use ExceptT when I have exceptions that are kind of expected so therefore it makes sense to have them in Either, but if they are pretty exceptional, I should probably use throwIO instead, if I am in IO?
09:19:52 <Martinsos> Meaning I can combine both if I want, depending on how likely it is that I will want to handle specific exception?
09:20:09 <kuribas> Martinsos: my guideline is, use exceptions for things you don't handle (abort the computation and log the error), and Either for everything else.
09:20:43 × frozenErebus quits (~frozenEre@94.128.81.133) (Ping timeout: 256 seconds)
09:23:16 × APic quits (apic@apic.name) (Ping timeout: 240 seconds)
09:23:19 <kuribas> Exceptions is for things you need to handle on infrastructure level, missing files, bad database connections, etc, Either is for things on application level, like input validation errors, etc...
09:23:23 <Martinsos> kuribas: Makes sense! So if I think I will mostly be propagating it, I go with throwIO, if it should never happen I go with `error`, and if it is likely I will want to handle it, I go with Either/ExceptT. On thing I don't experience with though is: what type of error do you throw? I know there is some kind of hierarchy, with SomeException being on top, but how do you use that in practice? Do you often create your own type? If I am just
09:23:23 <Martinsos> throwing an error with ThrowIO and I am not particularly eager to handle it later, should I just use some existing type?
09:25:05 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
09:25:06 <kuribas> yeah, you can make a custom exception
09:25:49 <kuribas> IMO it helps making the code a bit more clear
09:25:55 × ubert quits (~Thunderbi@p548c9a44.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
09:26:41 <Martinsos> And if I don't want to make a custom exception, what would you use instead?
09:28:24 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
09:28:35 <kuribas> I don't know... the one that matches your problem?
09:29:10 <kuribas> IOException, ArrayException, ...
09:29:21 shiraeeshi joins (~shiraeesh@109.166.56.220)
09:29:28 <Martinsos> Ok, maybe I am overly complicating this. Aha got it! I wasn't sure if there are exceptions defined at that level. Ok awesome
09:29:45 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
09:29:55 <Martinsos> I am getting confused with all the different packages offering solutions for handling exceptions so I don't know where to look anymore.
09:30:06 <kuribas> I don't use exceptions all that often
09:30:13 aforemny joins (~aforemny@static.248.158.34.188.clients.your-server.de)
09:30:57 <Martinsos> np, thanks, this should be enough for me for the moment.
09:31:39 × shad0w_ quits (a0ca2538@160.202.37.56) (Quit: Connection closed)
09:32:49 APic joins (apic@apic.name)
09:33:31 frozenErebus joins (~frozenEre@94.128.81.133)
09:34:24 × dwt quits (~dwt@c-98-200-58-177.hsd1.tx.comcast.net) (Quit: bye)
09:34:41 × desophos quits (~desophos@2601:249:1680:a570:84f9:a158:4c9:c8e9) (Read error: Connection reset by peer)
09:35:58 heatsink joins (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1)
09:37:17 dwt joins (~dwt@c-98-200-58-177.hsd1.tx.comcast.net)
09:37:17 × cfricke quits (~cfricke@unaffiliated/cfricke) (Read error: Connection reset by peer)
09:38:25 × frozenErebus quits (~frozenEre@94.128.81.133) (Ping timeout: 240 seconds)
09:40:33 cfricke joins (~cfricke@unaffiliated/cfricke)
09:40:50 × heatsink quits (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1) (Ping timeout: 264 seconds)
09:41:51 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
09:46:55 × hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
09:47:22 __monty__ joins (~toonn@unaffiliated/toonn)
09:47:22 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 276 seconds)
09:47:28 hekkaidekapus[ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
09:47:39 × guest23 quits (~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1))
09:48:41 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-zomvgoemagekvvah) (Quit: Connection closed for inactivity)
09:51:35 knu42 joins (577bcec7@gateway/web/cgi-irc/kiwiirc.com/ip.87.123.206.199)
09:52:19 <knu42> does anyone know why ghc 9.0.1 isn,t bundled with bytestring 0.11 ?
09:52:28 × hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
09:54:29 <knu42> anybody?
09:55:25 <merijn> Anyone reason why it should've been?
09:55:40 × da39a3ee5e6b4b0d quits (~da39a3ee5@49.228.238.55) (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:56:32 <knu42> Hm, I thought I´ve read in 2020 that it was planned this waz.
09:56:50 <alp> https://gitlab.haskell.org/ghc/ghc/-/issues/19091
09:56:53 <knu42> I´m quite interested in the optimizations regarding string literals
09:57:07 <knu42> way
09:57:37 <knu42> ahh, thank you alp!
09:58:44 <alp> knu42, long story short, 0.11 happened a bit too late for 9.0 to ship it, with other things requiring time/attention/work with higher priority, IIRC.
09:58:55 Zetagon joins (~leo@c151-177-52-233.bredband.comhem.se)
09:59:43 × shiraeeshi quits (~shiraeesh@109.166.56.220) (Ping timeout: 276 seconds)
10:00:03 <knu42> ok, I´ll experiment backporting some of the optimizations for my lib
10:00:24 <knu42> cstringLength is at least available
10:00:25 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
10:00:37 jamm_ joins (~jamm@unaffiliated/jamm)
10:02:00 LKoen joins (~LKoen@252.248.88.92.rev.sfr.net)
10:04:24 hacxman joins (~hexo@gateway/tor-sasl/hexo)
10:04:28 sorki joins (~sorki@gateway/tor-sasl/sorki)
10:04:41 × srk quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection)
10:04:41 × hexo quits (~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection)
10:04:45 DavidEichmann joins (~david@234.109.45.217.dyn.plus.net)
10:04:45 hacxman is now known as hexo
10:05:34 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 276 seconds)
10:07:27 sorki is now known as srk
10:08:14 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:77eb:51a:84a8:6067:5428)
10:08:19 shiraeeshi joins (~shiraeesh@109.166.56.220)
10:15:32 <aforemny> What could cause `Data.Text.Encoding.decodeUtf8 ("ä" :: ByteString)` to yield the following exception? Cannot decode byte '\xe4': Data.Text.Internal.Encoding.decodeUtf8: Invalid UTF-8 stream
10:16:22 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
10:16:45 <aforemny> What is "ä" in UTF-8? Is it [0xc3, 0xa4] or is it [0xe4]?
10:17:14 <maerwald> heh, the parser change in 9.0.1 is gonna cause a lot of build failures
10:18:19 <aforemny> Note that (Data.Text.Encoding.decodeUtf8 (Data.ByteString.pack [0xc3, 0xa4])) yields "\xe4". But decoding [0xe4] yields the error above.
10:19:09 hekkaidekapus[ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
10:19:36 j2t joins (~user@84.122.202.215.dyn.user.ono.com)
10:20:09 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
10:20:51 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
10:21:54 hackage haskoin-store 0.40.18 - Storage and index for Bitcoin and Bitcoin Cash https://hackage.haskell.org/package/haskoin-store-0.40.18 (jprupp)
10:22:52 ubert joins (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
10:24:59 frozenErebus joins (~frozenEre@94.128.81.133)
10:25:08 <opqdonut> aforemny: "ä" in utf-8 is encoded as the byte sequence c3 a4. This corresponds to the unicode codepoint U+00E4
10:25:10 <Ferdirand> aforemny: "\xe4" means unicode character 0xe4
10:25:18 nineonine joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
10:25:18 <Ferdirand> yeah what opqdonut said
10:25:40 <opqdonut> somewhat relatedly, e4 is also the encoding for ä in the iso-8859 family of encodings
10:25:51 <opqdonut> (at least in iso-8859-1 and -15)
10:26:06 <aforemny> opqdonut: Ferdirand: Thanks! I have just managed to google it as well: https://stackoverflow.com/questions/27669418/aeson-does-not-decode-strings-with-unicode-characters
10:26:12 <opqdonut> I'm not even sure what ("ä" :: ByteString) should mean
10:26:35 <opqdonut> "ä" :: String is clearly the string of length 1 containing the character U+00E4
10:26:44 <opqdonut> the same for "ä" :: Text
10:26:58 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
10:27:13 <maerwald> opqdonut: "ä" :: ByteString depends on the encoding obviously
10:27:25 <opqdonut> exactly
10:27:30 <maerwald> if it's a literal
10:27:42 <maerwald> then you get Char8
10:27:44 <opqdonut> you mean the source file encoding? well let's assume that's utf-8
10:27:51 forgottenone joins (~forgotten@176.42.26.20)
10:28:06 <aforemny> opqdonut: It seems "ä" :: ByteString makes use of Data.ByteString.Char8 which is documented to truncate multi-byte UTF-8 characters. I think that was the root of my issue.
10:28:18 <aforemny> (My source file's encoding is UTF-8)
10:28:19 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Quit: WeeChat 3.0)
10:29:30 <opqdonut> yeah that's kinda what I expected actually, so you get the bytestring that contains one byte, 0xe4
10:29:52 <maerwald> https://github.com/haskell/bytestring/issues/140
10:29:56 <kuribas> IsString on bytestring is a bit of a lie
10:30:17 <maerwald> it's an embarrasment, actually
10:30:24 Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362)
10:30:58 <maerwald> it's one of those things that makes ppl write blog posts about why they don't like language X
10:31:21 × Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 246 seconds)
10:31:32 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
10:31:50 <kuribas> people can write blog posts all the want
10:31:50 × nineonine quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Ping timeout: 264 seconds)
10:31:54 <maerwald> heh
10:32:31 <maerwald> with the difference here being that they're right
10:32:39 <kuribas> according to merijn, 90% of blogposts is crap anyway :)
10:32:59 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
10:33:05 <maerwald> sounds like an academic view :p
10:33:18 Lord_of_Life_ is now known as Lord_of_Life
10:33:20 <kuribas> maerwald: what does liking or not liking a language have to do with being "right"?
10:33:24 <arahael> That sounds rather optimisic.
10:33:40 <maerwald> kuribas: sorry, I don't understand
10:33:57 <kuribas> I can make the perfect language, that will not make everyone "like" it.
10:34:14 × tzlil quits (~tzlil@unaffiliated/tzlil) (Ping timeout: 264 seconds)
10:34:41 tzlil joins (~tzlil@unaffiliated/tzlil)
10:35:30 <kuribas> there are always "reasons" for liking or not liking some language.
10:35:43 <kuribas> that in itself doesn't mean anything.
10:35:44 <maerwald> that wasn't really the point, but anyway
10:36:10 <maerwald> it needs to be fixed, but ppl aren't agreeing on how
10:36:34 <maerwald> or maybe they are, but no one is doing anything
10:37:15 heatsink joins (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1)
10:37:23 <maerwald> will probably be written into history like the AFPP
10:37:25 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
10:37:29 <arahael> Plus there's the inherent conflict between people wanting to have ultimate power and expressivity, even if they can't read it the next day, vs those who want to ensure that their hires can't shoot themselves in the foot.
10:38:05 <maerwald> arahael: don't worry, linear and dependent types are coming to ensure your new hires won't...
10:38:12 <maerwald> xD
10:38:44 <arahael> maerwald: Dependencies are bad, m'kay?
10:38:57 <maerwald> arahael: sorry?
10:39:16 <kuribas> and the issue people usually have with haskell strings, is that they don't see the difference between binary/unicode, and streaming/contiguous.
10:39:22 <arahael> maerwald: Sorry, being very flippant. Plus still somewhat drugged up.
10:39:34 <kuribas> partly the fault of naming it all "string".
10:39:40 <arahael> kuribas: That's, curiously enough, precisely the issue with python at the moment, too!
10:39:53 <kuribas> in what sense?
10:40:05 <kuribas> been a while since I did Python...
10:40:37 <arahael> kuribas: Well, python now does not automatically convert between bytestring and unicode string.
10:40:44 <maerwald> arahael: if you don't have second guesses about dependent types and linear types, I'd argue you're in the "ultimate power and expressivity" camp :p
10:40:45 <arahael> kuribas: And that's done people's heads in.
10:41:14 <arahael> maerwald: Heh. :) Honestly, I haven't really played with dependent types and definitely haven't actually used linear types yet, but they do sound good.
10:41:43 × plutoniix quits (~q@184.82.194.56) (Quit: Leaving)
10:42:02 × heatsink quits (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1) (Ping timeout: 264 seconds)
10:42:04 <kuribas> IMO types shouldn't be about preventing stupid people from doing stupid stuff.
10:42:21 <kuribas> It should be about enabling smart people do smart stuff.
10:42:38 <maerwald> right, but you don't want that smartness leak into everything...
10:42:48 <maerwald> and the only solution for that is language interoperability
10:42:56 <maerwald> like F* -> F#
10:43:05 <kuribas> maerwald: smart /= complicated.
10:43:16 Quarl joins (~Quarl@h-155-4-128-37.NA.cust.bahnhof.se)
10:43:17 <kuribas> it's harder to make something that's simple but powerful.
10:43:20 <maerwald> kuribas: most of the time they overlap heavily, especially in haskell
10:43:44 <maerwald> I haven's seen many smart APIs that don't leak type level programming
10:43:47 <kuribas> overcomplicated solutions are everywhere
10:44:51 <Philonous> Maybe the solution is better type level programming, not untyped APIs
10:45:10 <maerwald> Philonous: expressivity comes with a price
10:46:36 × shiraeeshi quits (~shiraeesh@109.166.56.220) (Ping timeout: 240 seconds)
10:46:42 <kuribas> the solution is to not treat haskell as a dependently typed language
10:46:53 <maerwald> I agree
10:47:45 <maerwald> but it's probably gonna happen
10:48:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
10:48:25 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
10:48:29 <maerwald> and it'll reinforce the "esoteric" image haskell has more. Don't think it will do much good in terms of contributors or adoption
10:48:42 <Philonous> I'm already using Haskell as a dependently typed language because (I feel that) it makes some of my programs simpler.
10:48:53 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
10:49:54 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:51:39 × notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection)
10:52:11 × Quarl quits (~Quarl@h-155-4-128-37.NA.cust.bahnhof.se) (Read error: Connection reset by peer)
10:53:21 jesspacito is now known as jess
10:53:24 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
10:53:26 <Philonous> I agree that there is a danger of using it inappropriately (and I've done my fare share of that), and there's a costs because a biger API design space means more chances to end up in a dead (or worse, some local maximum), but I'm not convinced that the advantages of being able to use it tastefully don't outweigh the costs.
10:53:29 <maerwald> I considered it seriously only once, when expressing filepaths on typelevel and it ended up so complicated and could still not express the problem properly.
10:53:47 notzmv joins (~user@unaffiliated/zmv)
10:53:52 <maerwald> Although the problem domain was fairly small
10:54:16 <maerwald> True dependent types would have helped, but the gain wasn't huge
10:54:34 <Philonous> E.g. IMO servant makes very good use of type level programming.
10:55:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
10:55:11 <kuribas> the moment you start using singletons you should seriously reconsider IMO...
10:55:20 <[exa]> +1 ^
10:55:30 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:55:51 <Taneb> I'd like to live in a world (and I'm slowly working towards this goal) where real-world programming in Agda is possible
10:56:15 <kuribas> Taneb: wouldn't you miss out on libraries then?
10:56:30 <Taneb> kuribas: part of the goal is to make the libraries exist
10:56:39 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Read error: Connection reset by peer)
10:56:56 <Taneb> But there does exist Agda <-> Haskell interop
10:56:58 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
10:57:06 <Philonous> I agree, singletons are aweful to work with.
10:57:26 <kuribas> servant is nice, as long as you don't have to write your own combinators...
10:57:27 <Philonous> At the same time I'm amazed how well they work.
10:58:05 <Philonous> kuribas, Why? I've done so multiple times and it was pretty straight-forward.
10:58:51 <kuribas> Philonous: for example, I got an obscure warning, which probably would lead to a crash if I followed it.
10:59:18 <kuribas> and dealing with the GADTs and type families is far from straigh-forward IMO...
10:59:29 <lortabac> IMHO the main factor when deciding whether to do type-level programming is whether you can provide all the types statically or they come from some external source at runtime
10:59:56 <lortabac> servant is doable because you generally know the API paths statically
11:00:21 <kuribas> lortabac: and also if the gain of the type level programming outweights the heavyness of the solution.
11:00:36 <kuribas> lortabac: like, do you really need to prove a SQL query correct at the type level?
11:00:58 Quarl joins (~Quarl@h-155-4-128-37.NA.cust.bahnhof.se)
11:01:11 son0p joins (~son0p@181.58.39.182)
11:01:11 <kuribas> I am thinking purely practical, of course it's interesting to explore this space...
11:01:56 <maerwald> SQL queries are extremely straight-forward to unit test
11:02:08 <lortabac> maerwald: how so?
11:02:23 <lortabac> to me they have always been the hardest part to test
11:02:38 <maerwald> odd
11:02:45 <kuribas> if I have a complicated query, I try it first in the mysql-workbench.
11:03:00 <lortabac> maerwald: how do you test your SQL queries?
11:03:12 <kuribas> lortabac: the thing is, proving the query well-formed, doesn't prove it does the right thing.
11:03:18 <maerwald> lortabac: I don't understand the question
11:03:25 aveltras joins (uid364989@gateway/web/irccloud.com/x-pjggritsgsigpqvj)
11:03:45 ADG1089__ joins (~aditya@223.235.245.154)
11:03:54 <lortabac> do you spawn a database? do you have an alternative interpreter for tests?
11:04:13 <maerwald> if it's sqlite, in-memory. If it's something else, it's simple with a docker container
11:04:55 <lortabac> so you actually run the query and check the state of the database afterwards?
11:05:07 <Philonous> Why wouldn't I want SQL queries to be statically checked? Isn't the whole point of having a type system that we don't have to rely on unit tests? (I mean, if you're Conor McBride you might have other ideas, but to a first approximation)
11:05:11 <maerwald> lortabac: yeah
11:05:35 <maerwald> it isn't much different from golden tests
11:05:36 <kuribas> lortabac: because statically checking doesn't imply the query is correct.
11:05:57 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
11:06:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
11:06:34 <lortabac> maerwald: I see, I would call it "simple" but it's probably the most pragmatic way
11:06:38 <lortabac> *wouldn't
11:06:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:07:08 <maerwald> so you could also dump the db to a file after each query and then use the golden test suite
11:07:19 <maerwald> although I haven't done that, it now seems logical
11:07:50 × mirrorbird quits (~psutcliff@2a00:801:2d5:848b:590:cf4f:5eeb:b49d) (Ping timeout: 264 seconds)
11:08:20 <maerwald> and golden tests are easy to update, no static data in your haskell files
11:08:29 × tzlil quits (~tzlil@unaffiliated/tzlil) (Ping timeout: 272 seconds)
11:08:43 <kuribas> lortabac: I rarely use types to prove my code correct, I use types to establish preconditions on which the semantics of my code depend.
11:08:53 tzlil joins (~tzlil@unaffiliated/tzlil)
11:09:00 <kuribas> a prerequisite for correctness.
11:09:23 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
11:09:30 <maerwald> kuribas: the relationship between query and response in some APIs seems like a reasonable use of type level programming imo
11:09:32 mirrorbird joins (~psutcliff@2a00:801:2d5:848b:590:cf4f:5eeb:b49d)
11:10:15 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
11:10:34 <kuribas> maerwald: yes, and my language handles that case.
11:10:48 <kuribas> I even have type level magick to check for nullable fields.
11:10:48 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 258 seconds)
11:10:54 <kuribas> maerwald: my library I mean
11:11:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
11:12:20 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:14:16 zebrag joins (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr)
11:17:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
11:18:14 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:20:04 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:77eb:51a:84a8:6067:5428) (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:21:13 pedrohms joins (~pedrohms@187.20.63.53)
11:21:55 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
11:22:06 × totoro2022 quits (~t@unaffiliated/totoro2021) (Ping timeout: 246 seconds)
11:23:34 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
11:23:35 totoro2022 joins (~t@unaffiliated/totoro2021)
11:24:52 × pedrohms quits (~pedrohms@187.20.63.53) (Quit: Leaving)
11:27:28 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 276 seconds)
11:27:42 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
11:28:09 pedrohms joins (~pedrohms@187.20.63.53)
11:29:03 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
11:29:17 acidjnk_new joins (~acidjnk@p200300d0c722c49675ee473ab8e6650f.dip0.t-ipconnect.de)
11:29:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:30:24 × mirrorbird quits (~psutcliff@2a00:801:2d5:848b:590:cf4f:5eeb:b49d) (Quit: Leaving)
11:30:40 <kuribas> every Monad forms a Monoid right?
11:30:55 <kuribas> at least Monad m => m ()
11:32:26 × pedrohms quits (~pedrohms@187.20.63.53) (Quit: Leaving)
11:32:32 <kuribas> ah that's Ap...
11:32:52 pedrohms joins (~pedrohms@187.20.63.53)
11:32:55 pedrosouza joins (~pedrohms@187.20.63.53)
11:32:59 × pedrosouza quits (~pedrohms@187.20.63.53) (Remote host closed the connection)
11:33:13 <kuribas> :t (<>) :: Ap m () -> Ap m () -> Ap m ()
11:33:14 <lambdabot> error:
11:33:14 <lambdabot> • No instance for (Applicative m1) arising from a use of ‘<>’
11:33:14 <lambdabot> Possible fix:
11:33:16 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
11:33:27 <kuribas> :t (<>) :: Applicative m => Ap m () -> Ap m () -> Ap m ()
11:33:28 <lambdabot> Applicative m => Ap m () -> Ap m () -> Ap m ()
11:34:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
11:35:04 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:36:38 × frozenErebus quits (~frozenEre@94.128.81.133) (Quit: leaving)
11:37:57 heatsink joins (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1)
11:38:31 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
11:40:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
11:40:11 michalz` joins (~user@185.246.204.76)
11:40:40 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:40:56 × michalz quits (~user@185.246.204.93) (Ping timeout: 240 seconds)
11:42:38 × heatsink quits (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1) (Ping timeout: 264 seconds)
11:43:23 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 258 seconds)
11:46:46 sh9 joins (~sh9@softbank060116136158.bbtec.net)
11:47:14 × finn_elija quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Remote host closed the connection)
11:47:29 × zebrag quits (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) (Read error: Connection reset by peer)
11:47:41 finn_elija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
11:47:47 zebrag joins (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr)
11:50:52 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
11:51:30 ClaudiusMaximus joins (~claude@191.123.199.146.dyn.plus.net)
11:51:38 × ClaudiusMaximus quits (~claude@191.123.199.146.dyn.plus.net) (Changing host)
11:51:38 ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus)
11:51:52 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0)
11:51:52 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:52:41 <__monty__> kuribas: You do sound like the clojurists you go on and on about re SQL : )
11:53:44 thongpv87 joins (~thongpv87@103.6.151.121)
11:54:27 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
11:56:45 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
11:56:48 × thongpv87 quits (~thongpv87@103.6.151.121) (Client Quit)
11:57:06 thongpv87 joins (~thongpv87@103.6.151.121)
11:57:22 <kuribas> __monty__: because there I think it's haskell at it's worst
11:57:40 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:59:12 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
11:59:34 <__monty__> And you consider the couple implementations so far to be sufficient proof typed SQL is a waste of time? Because your criticism doesn't seem restricted to haskell but to apply broadly to typing SQL.
11:59:41 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
12:01:21 <kuribas> __monty__: my opinion is more nuanced than that.
12:01:48 × ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection)
12:01:50 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
12:02:20 <kuribas> __monty__: I consider proving SQL queries correct in a type system a waste of mental energy
12:02:28 ukari joins (~ukari@unaffiliated/ukari)
12:03:03 <kuribas> However adding some restricted form of typesafety, if it can be done without much complexity, can be beneficial
12:03:35 <__monty__> What do you mean when you say "prove correct" though? Cause I'd probably say "proving" any code "correct" is a waste of time in 99% of cases.
12:04:28 × zebrag quits (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) (Read error: Connection reset by peer)
12:04:47 zebrag joins (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr)
12:07:07 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 276 seconds)
12:07:09 × michalz` quits (~user@185.246.204.76) (Ping timeout: 258 seconds)
12:07:48 pera joins (~pera@unaffiliated/pera)
12:07:57 <kuribas> for example a library that implements it's own way of describing queries. Not only do you need to know SQL well, but you have to also learn the mapping between that language and SQL, and usually it's only a subset of SQL.
12:08:07 <kuribas> but it's *typesafe*!
12:10:02 <kuribas> Or like squeal, implement the whole schema as a type, then prove with the type that any SQL expression is valid.
12:10:27 <__monty__> That's hardly "proving SQL correct through types" though. Unless the restriction is to facilitate 100% compatibility across database implementations, I agree SQL shouldn't be restricted.
12:10:27 <kuribas> squeal is kinda cool though, but I am not sure the complexity is warrented by the problem it solves.
12:10:46 × zebrag quits (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
12:11:07 zebrag joins (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr)
12:11:28 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
12:12:49 <kuribas> __monty__: well, if it doesn't prove the SQL correct, then it's even worse.
12:12:57 <kuribas> why have the complexity then at all?
12:14:32 × denisse quits (~spaceCat@gateway/tor-sasl/alephzer0) (Remote host closed the connection)
12:14:51 denisse joins (~spaceCat@gateway/tor-sasl/alephzer0)
12:14:57 gxt joins (~gxt@gateway/tor-sasl/gxt)
12:15:18 × danza quits (~francesco@151.53.69.219) (Ping timeout: 246 seconds)
12:15:19 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 265 seconds)
12:15:22 <__monty__> Well you're assuming two things now, that the implementation is necessarily complex *and* that it doesn't "prove" the SQL "correct" (still not clear what you mean).
12:16:21 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
12:17:25 hackage hls-splice-plugin 0.3.0.0 - HLS Plugin to expand TemplateHaskell Splices and QuasiQuotes https://hackage.haskell.org/package/hls-splice-plugin-0.3.0.0 (HiromiIshii)
12:18:27 <kuribas> __monty__: too complex: squeal, beam, opaleye, ..., too simple: any -simple
12:19:37 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:77eb:51a:84a8:6067:5428)
12:21:20 × ADG1089__ quits (~aditya@223.235.245.154) (Ping timeout: 258 seconds)
12:21:58 <merijn> Just right: Just build your own domain specific tiny wrapper on top of -simple
12:22:57 <kuribas> merijn: so reinventing the wheel everytime, and just for yourself ...
12:23:43 Tesseraction joins (~Tesseract@unaffiliated/tesseraction)
12:24:07 × Narinas quits (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
12:24:22 Narinas joins (~Narinas@189.223.62.254.dsl.dyn.telnor.net)
12:24:26 <merijn> Yes
12:25:17 <merijn> kuribas: You've talked about your approach for several months now, and tbh I'm increasingly *less* sold on the idea :p
12:25:40 <vilpan> kuribas: the camel case vs underscore paper you referenced states "subjects were trained mainly in the underscore style", so it's not surprising underscore style recognition was better.
12:25:40 <vilpan> For a counter example, https://www.academia.edu/2858174/To_camelcase_or_under_score says "all subjects are more accurate when identifying a camel-cased identifier". So I don't see a winner.
12:25:43 <kuribas> merijn: so?
12:26:27 <merijn> kuribas: I'm increasingly *less* bothered by "reinvention" if it leads to simple/predictable code that's easy to maintain
12:26:27 <kuribas> merijn: I don't care, I did this work for myself, and in I can do haskell in my team, without having them complain about complicated types.
12:27:32 <kuribas> merijn: I am also not planning to maintain the postgresql port that we don't use...
12:27:44 cfricke joins (~cfricke@unaffiliated/cfricke)
12:27:51 <merijn> kuribas: Sure, but you were arguing with __monty__ trying to convince them that your approach is better and the "wrap -simple yourself" is worse. It's reasonable to expect some sort of rationale in return :)
12:28:20 <kuribas> merijn: I feel this is pretty much proven...
12:28:32 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
12:28:35 <merijn> I was *initially* convinced by your idea, but the snippets I see seem to be becoming increasingly complicated
12:28:50 <kuribas> what's complicated about a monad?
12:29:11 <merijn> kuribas: You may feel that, but *I* am not, and neither seems __monty__
12:29:31 <merijn> kuribas: Last I saw you were talking about Generic based approaches to handle joins
12:29:43 <kuribas> that sucks a bit...
12:30:13 <kuribas> merijn: but then esqueleto solves that by not even supporting subqueries in joins...
12:30:47 <merijn> kuribas: I currently solve that by...simply writing out the query and you'd be amazed how well that maps to the underlying SQL :0
12:30:54 <merijn> s/:0/;)
12:31:06 <kuribas> merijn: then how do you compose the query?
12:31:13 <merijn> Oh, that's very easy
12:31:16 <merijn> I don't
12:31:30 <kuribas> then your usecase is different from mine.
12:32:35 <merijn> I have just embraced the simplicity custom queries for custom domain operations and using views if I truly wanna reuse things
12:33:26 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
12:33:29 <kuribas> merijn: this library solves a specific problem: expressive and composable queries, a solution that works in a team of beginners, and not getting a type error when you swap arguments (like the -simple library do). I guess you solve the last with your DSL.
12:34:49 <kuribas> merijn: what if you have different filters and pagination based on what the user provides?
12:35:06 <merijn> kuribas: Right, but you were claiming to __monty__ that you were solving a far more general problem, i.e. interaction between code and SQL in general
12:35:16 <kuribas> I am...
12:36:03 mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl)
12:36:03 × mouseghost quits (~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
12:36:03 mouseghost joins (~draco@wikipedia/desperek)
12:36:09 <merijn> kuribas: I just handle that in the where clause of whatever query
12:36:18 mouseghost is now known as desperek
12:36:35 <kuribas> merijn: then you have to write a different query for each permutation of arguments...
12:36:47 danza joins (~francesco@151.57.209.48)
12:36:55 <merijn> either by having logic that is "? OR foo < ?" which disables the filter by inserting a true when it's disabled
12:37:13 <kuribas> I really dislike having to match the "?" with my arguments.
12:37:28 <merijn> kuribas: No, I just have an input record for all possible parameterisation of a query and then return an abstract query
12:37:42 × j2t quits (~user@84.122.202.215.dyn.user.ono.com) (Ping timeout: 246 seconds)
12:38:17 <merijn> It could be nicer with named parameters, but unfortunately I'm stuck with persistent so I can't use that
12:38:20 <kuribas> what's an "abstract query"?
12:38:34 <merijn> If I'd used -simple that'd be nicer
12:38:40 heatsink joins (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1)
12:38:54 <kuribas> merijn: anyway, I have a good solution to end this discussion, I'll finish the documentation this weekend or the next, you have a look and decide if you want to use it or not :-)
12:38:58 <merijn> kuribas: "Query r" and a "runQuery :: Query r -> ConduitT () r m ()"
12:39:24 <kuribas> merijn: my guess is that you do exactly what I am doing, but I made a library for it.
12:39:37 <merijn> kuribas: So I have a bunch of "FooRecord -> Query Foo"
12:39:57 <merijn> kuribas: Well, but without the generics complications and stuff like that :p
12:40:17 <kuribas> merijn: you don't need to use generics if you don't have subqueries in joins.
12:40:20 metreo joins (~Thunderbi@unaffiliated/metreo)
12:40:30 <kuribas> merijn: in fact, the generics are only in my Typed layer...
12:41:05 <kuribas> And in another place to insert data, but that is not necessary.
12:41:47 <kuribas> merijn: I need to finish the docs with concrete examples first :)
12:42:28 × okad1 quits (~okad@ec2-18-135-78-237.eu-west-2.compute.amazonaws.com) (Quit: okad1)
12:42:47 okad joins (~okad@ec2-18-135-78-237.eu-west-2.compute.amazonaws.com)
12:43:14 × heatsink quits (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1) (Ping timeout: 264 seconds)
12:43:15 metro joins (~Thunderbi@unaffiliated/metreo)
12:44:25 × metreo quits (~Thunderbi@unaffiliated/metreo) (Ping timeout: 240 seconds)
12:44:25 metro is now known as metreo
12:44:55 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
12:46:32 average joins (uid473595@gateway/web/irccloud.com/x-skfvagfqkixoxjjm)
12:46:40 Tario joins (~Tario@201.192.165.173)
12:47:24 hackage histogram-simple 1.0 - Simple Data.Map-based histogram https://hackage.haskell.org/package/histogram-simple-1.0 (jonascarpay)
12:47:25 × zebrag quits (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
12:47:25 <kuribas> merijn: what db do you use? postgresql?
12:47:47 zebrag joins (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr)
12:49:36 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
12:49:48 <merijn> SQLite
12:49:48 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
12:50:17 <kuribas> ok, I don't plan to support that, not in the foreseable future
12:51:55 hackage bound 2.0.3 - Making de Bruijn Succ Less https://hackage.haskell.org/package/bound-2.0.3 (ryanglscott)
12:52:10 shatriff joins (~vitaliish@176-52-216-242.irishtelecom.com)
12:52:29 <opqdonut> that's a terrible pun
12:52:47 <kuribas> lol :)
12:55:42 <merijn> Blame edward :p
12:55:49 LKoen_ joins (~LKoen@252.248.88.92.rev.sfr.net)
12:55:50 <merijn> Ooh
12:56:09 <opqdonut> ah of course
12:56:20 × xsperry quits (~as@unaffiliated/xsperry) (Disconnected by services)
12:56:26 fendor_ joins (~fendor@178.115.130.101.wireless.dyn.drei.com)
12:56:38 × fendor quits (~fendor@178.115.130.101.wireless.dyn.drei.com) (Remote host closed the connection)
12:56:38 × shatriff quits (~vitaliish@176-52-216-242.irishtelecom.com) (Client Quit)
12:56:39 xsperry joins (~as@unaffiliated/xsperry)
12:56:41 <merijn> Looks I need to open a PR to bound because he forgot to include my pedantic correction of his blogpost in the package :p
12:57:45 merijn will never give up on his Quixotic quest to make the FP world capitalise De Bruijn properly
12:58:32 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:77eb:51a:84a8:6067:5428) (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:59:07 × LKoen quits (~LKoen@252.248.88.92.rev.sfr.net) (Ping timeout: 276 seconds)
13:00:56 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
13:05:00 <ij> I think I'm starting to understand why it's so hard to say whether adding strictness will help in general. There are so many options. :)
13:05:38 <knu42> I´ve just seen the char kind proposal, seems like the dawn of a new age!
13:05:47 <opqdonut> which one?
13:06:08 <kuribas> ij: it's mostly when aggregating to a strict scalar value.
13:06:16 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 276 seconds)
13:06:23 <knu42> https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0387-char-kind.rst
13:06:26 <knu42> that one
13:06:29 brainfunnel joins (~quassel@12.23.199.146.dyn.plus.net)
13:06:56 <knu42> more ways to drink coffee while type checking ^^
13:07:12 × toorevitimirp quits (~tooreviti@117.182.181.186) (Remote host closed the connection)
13:07:18 × nek0 quits (~nek0@mail.nek0.eu) (Remote host closed the connection)
13:07:21 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
13:07:49 <knu42> I´ll surely implement html escaping for symbols in my lib
13:07:57 _noblegas joins (uid91066@gateway/web/irccloud.com/x-sdhgdpxkudokvdwz)
13:08:00 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
13:08:43 <maerwald> merijn: did you have a look at the streamly/conduit file copy code?
13:09:26 <maerwald> I can only observe differences for small files (<3GB) anything more the results become unpredictable.
13:10:17 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
13:10:47 <merijn> maerwald: Not really, where's the code?
13:11:05 <maerwald> merijn: https://github.com/hasufell/streamly-bench
13:11:22 <maerwald> it's not a proper benchmark, I just timed the execution of the binaries
13:11:34 carlomagno1 joins (~cararell@148.87.23.7)
13:11:42 <merijn> I'll look at it...at some point :)
13:12:08 <merijn> i.e. when I have time or more likely when I'm procrastinating >.>
13:12:11 hekkaidekapus] joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
13:12:45 <maerwald> My suspicion is that there may be a higher initial cost of conduit and once the file size is very large, IO issues take over and you can't observe any differences anymore
13:13:54 toorevitimirp joins (~tooreviti@117.182.181.186)
13:13:55 × knu42 quits (577bcec7@gateway/web/cgi-irc/kiwiirc.com/ip.87.123.206.199) (Quit: Connection closed)
13:13:56 × carlomagno quits (~cararell@148.87.23.9) (Ping timeout: 240 seconds)
13:14:44 × hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
13:14:46 <maerwald> still weird, since it's an SSD
13:15:21 <maerwald> but CPU is quite hight (20-30%) and I don't trust my thinkpad to not mess with performance somehow
13:15:21 <merijn> maerwald: Ugh, ok, I looked anyway, because I have no self-control >.> What happens with -O/-O2?
13:16:03 <merijn> oh, wait, that's in cabal.project
13:16:26 <maerwald> the -fspec and -fmax is recommended by streamly devs
13:16:45 shatriff joins (~vitaliish@176-52-216-242.irishtelecom.com)
13:17:09 <kuribas> maerwaldaren't you prematurely optimizing?
13:17:24 <idnar> well I definitely jumped to ghc 9 too soon; so many deps to fix
13:17:35 <merijn> idnar: lol
13:17:37 urodna joins (~urodna@unaffiliated/urodna)
13:17:42 <merijn> idnar: It's been out a day
13:17:46 <merijn> What'd you expect? :p
13:17:47 <maerwald> idnar: the parser behavior changed ,yeah
13:17:54 <maerwald> gonna be a lot of bang patterns to fix
13:18:08 × gxt quits (~gxt@gateway/tor-sasl/gxt) (Quit: WeeChat 3.0)
13:19:30 <idnar> maerwald: it's mostly TH stuff; the ! and @ is mostly fixed in head.hackage
13:22:45 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 264 seconds)
13:24:43 geekosaur joins (82650c7c@130.101.12.124)
13:26:42 × finn_elija quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Remote host closed the connection)
13:27:02 <maerwald> idnar: https://github.com/haskell-hvr/regex-base/pull/3 hmm
13:27:15 <maerwald> 1 year old PR
13:27:26 finn_elija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
13:28:16 × todda7 quits (~torstein@2a02:587:1b14:d00:5ec3:abec:812c:b3e2) (Remote host closed the connection)
13:29:31 × son0p quits (~son0p@181.58.39.182) (Quit: Lost terminal)
13:29:46 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
13:30:25 × danza quits (~francesco@151.57.209.48) (Read error: Connection reset by peer)
13:30:33 <maerwald> It seems they started fixing early
13:31:02 <idnar> maerwald: yeah, and https://gitlab.haskell.org/ghc/head.hackage/-/blob/master/patches/regex-base-0.94.0.0.patch
13:32:14 <maerwald> still seems there are quite some semi-abandned repos
13:33:57 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:77eb:51a:84a8:6067:5428)
13:34:15 × metreo quits (~Thunderbi@unaffiliated/metreo) (Quit: metreo)
13:34:35 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
13:34:48 metreo joins (~Thunderbi@unaffiliated/metreo)
13:36:20 <merijn> Such is the world of open source
13:37:21 × shatriff quits (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
13:37:38 alx741 joins (~alx741@186.178.110.33)
13:37:56 shatriff joins (~vitaliish@176-52-216-242.irishtelecom.com)
13:38:01 Tario joins (~Tario@201.192.165.173)
13:38:15 × hiroaki quits (~hiroaki@ip4d17613f.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
13:39:22 heatsink joins (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1)
13:39:24 <swarmcollective> Is anyone hosting a site to list the packages that need maintenance? When I have time, I'd like to know where I could (try to) to help.
13:40:01 <merijn> swarmcollective: not really?
13:40:22 <geekosaur> isn't head.hackage kinda that site?
13:40:26 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
13:40:30 <merijn> geekosaur: No
13:40:41 <merijn> geekosaur: head.hackage includes tons of actively maintained things too
13:41:49 <merijn> geekosaur: head.hackage is just a collection of hacky compat patches so people hacking on GHC HEAD can actually, you know, compile and test libraries.
13:42:24 <geekosaur> right, but one would think actively maintained packages would get removed from it as they are updated
13:42:35 × Martinsos quits (~user@cpe-188-129-56-3.dynamic.amis.hr) (Remote host closed the connection)
13:42:38 <geekosaur> (and the hacks thereby fail to apply)
13:42:52 <merijn> geekosaur: Why would you fix and update something for GHC HEAD until it's released?
13:43:36 <merijn> You're not even sure if the final release GHC will require the exact same solution as it first is added to head.hackage
13:44:12 <geekosaur> the right time to fix and update is when it's in rc, which it has been for a month or so — unless the update renders you incompatible with older versions, maybe
13:44:14 <merijn> geekosaur: And by the time, say, 9.0 is released head.hackage already includes stuff for the current 9.2 HEAD, presumably
13:44:26 × heatsink quits (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1) (Ping timeout: 264 seconds)
13:45:15 nek0 joins (~nek0@mail.nek0.eu)
13:45:33 <merijn> Anyway, the best approach is just to offer and maintain stuff you depend on if maintenance isn't fast enough
13:45:57 <merijn> Taking up maintenance of packages you don't have a vested interest in isn't something I'd recommend
13:46:18 × LKoen_ quits (~LKoen@252.248.88.92.rev.sfr.net) (Remote host closed the connection)
13:47:25 × zebrag quits (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
13:47:40 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
13:47:45 <swarmcollective> merijn, true, motivation is even more fleeting when the outcome does not affect one in the moment.
13:47:47 zebrag joins (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr)
13:49:25 <merijn> And if you just wanna contribute to the community can I suggest just contributing to Cabal/cabal-install? :p
13:49:39 <merijn> Those always need more help/people
13:50:00 <merijn> I think Uniaika can always use help with haddock too
13:50:16 <merijn> And you're at least likely to directly use those tools :p
13:50:23 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
13:50:39 <Uniaika> ::)
13:50:45 <swarmcollective> Good ideas.
13:51:03 hiroaki joins (~hiroaki@ip4d17613f.dynamic.kabel-deutschland.de)
13:51:23 <merijn> Hell, GHC has plenty of stuff too :p
13:52:15 urodna joins (~urodna@unaffiliated/urodna)
13:53:04 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 276 seconds)
13:53:32 × mattl1 quits (~mattl@s91904426.blix.com) (Remote host closed the connection)
13:56:11 <swarmcollective> My Haskell experience is fairly shallow, though. So, I have to be realistic. :) I've just worked some Advent of Code puzzles and butchered poor lambdabot following my whims.
13:56:18 × desperek quits (~draco@wikipedia/desperek) (Quit: mew wew)
13:56:32 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
13:59:32 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
13:59:35 hyperisco joins (~hyperisco@104-195-141-253.cpe.teksavvy.com)
14:01:48 <aveltras> any idea what could be wrong here ?
14:01:53 <aveltras> https://www.irccloud.com/pastebin/vPYjai5o/
14:02:09 <aveltras> the splice shows the right output but it throws an error
14:02:47 <aveltras> User is a record with 3 Maybe fields
14:03:20 × berberman_ quits (~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
14:03:58 berberman joins (~berberman@unaffiliated/berberman)
14:04:01 <ski> it appears to say you used the type constructor rather than the data constructor ?
14:04:04 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
14:04:24 <ski> (personally, i'd `data User = MkUser ...')
14:05:01 × toorevitimirp quits (~tooreviti@117.182.181.186) (Remote host closed the connection)
14:05:37 toorevitimirp joins (~tooreviti@117.182.181.186)
14:05:54 <aveltras> user will not be used as User but will be used through a hkd mechanism
14:06:18 jamm_ joins (~jamm@unaffiliated/jamm)
14:06:23 <ski> dunno what "hkd" means
14:06:31 <aveltras> higher kinded data
14:06:39 ski sighs
14:06:42 <aveltras> basically, user here is only some kind of blueprint
14:06:54 usr25 joins (~J@48.red-83-43-188.dynamicip.rima-tde.net)
14:07:17 <ski> (i don't like the term "higher kinded")
14:07:29 <ski> what is `user' ?
14:07:37 <ski> i thought you were talking about `User'
14:08:02 <aveltras> https://www.irccloud.com/pastebin/BiFuGo7E/
14:08:31 <ski> i still see no identifier `user' in that paste ..
14:09:06 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
14:09:23 <aveltras> hmm, there's no lowercase "user" anywhere here
14:10:06 <aveltras> here im just trying to generate the following with TH, which works fine when done by hand
14:10:09 <aveltras> https://www.irccloud.com/pastebin/QWDmhB8k/
14:10:11 <ski> .. what i said, yes
14:12:15 <ski> yes, i figured (except that you're not generating a call to `$')
14:12:50 <ski> aveltras : where does `dataType' come from ?
14:13:04 <aveltras> from the mkWebComponent ''User call
14:13:10 <aveltras> that's the name User
14:13:33 vilpan parts (~0@212.117.1.172) ()
14:13:38 <ski> ah, that explains it
14:13:56 <ski> you're passing the wrong identifier to `ConE'
14:14:15 <ski> you're passing the identifier for the type constructor `User', not the identifier for the data constructor `User'
14:14:52 <ski> try having the call be
14:14:55 <aveltras> got it
14:14:58 <aveltras> thats fixed
14:15:04 × geekosaur quits (82650c7c@130.101.12.124) (Quit: Connection closed)
14:15:09 <aveltras> something like ConE $ mkName . nameBase $ dataType then
14:15:15 <ski> mkWebComponent "my-component" ''User 'User
14:15:42 geekosaur joins (82650c7c@130.101.12.124)
14:15:48 <aveltras> are there some issues with building it as i've pasted ?
14:15:55 <ski> (and then use the last parameter instead of `dataType')
14:16:43 <ski> talking about the paste, or about your last in-message snippet ?
14:16:44 <aveltras> except the lack of possibility to have a different data constructor name than type constructor
14:16:51 son0p joins (~son0p@181.58.39.182)
14:16:59 <aveltras> about "ConE $ mkName . nameBase $ dataType"
14:17:21 <aveltras> so then the user doesn't need to give an extra argument at the call site
14:17:47 <ski> well, imho, it encourages the bad practice of using the same name for the data constructort and the type constructor .. but that's my opinion
14:18:17 <aveltras> why do you think it's a bad practice ?
14:18:25 <ph88^> where can i find which variables i can use in a stack template ?
14:18:33 <ski> if you ever want anyone else to use this, then perhaps it would be nice to give them a choice about whether they want to use the same name or not
14:19:30 <aveltras> i might add another entry lik mkWebComponentNamed which accepts the extra parameter then, you're right
14:19:36 <ski> because it confuses both beginners and non-beginners (as evidenced by this exact example). because it causes complications with export and import
14:20:04 <aveltras> i get it
14:20:11 <aveltras> thanks for your help with the TH bit here
14:20:53 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
14:21:30 <ski> (oh, and i also consider what you were suggesting to be unhygienic (that's a technical term) .. and generally, macros (under which TH qualifies) tend to be better off, with less non-hygiene)
14:21:48 <__monty__> a/wg 13
14:22:24 <aveltras> ye, i know that template haskell is frowned upon but i've been spending quite some time yesterday trying to get this to work with generics only but found it too hard and gave up
14:22:54 <ski> (the generation of the name `mkUser' is also unhygienic .. but if that's a private implementation detail, that users of this TH aren't supposed to care about, that's somewhat less bad)
14:23:08 × zebrag quits (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
14:23:21 <aveltras> mkUser is here to drive inference at call site
14:23:25 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: Biab, building on a memory-poor system >.<)
14:23:27 zebrag joins (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr)
14:23:34 <aveltras> User type won't be used
14:23:54 <ski> i dunno what you mean by those two statements
14:24:23 <aveltras> the intended final use is to be able to "wrap" existing web components
14:24:40 <aveltras> which are custom html tags that exposes possible attributes to configure them
14:24:58 <aveltras> here User would be for example the datatype representing the possible configuration values
14:25:13 <ski> is the user supposed to write `mkName' anywhere manually ? or will all references to `mkName' be generated by TH ?
14:25:24 <aveltras> more like
14:25:32 <aveltras> prop @"name" "name" $ prop @"adult" True mkUser
14:25:38 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
14:25:48 <aveltras> and this would build the configuration that another lib needs
14:26:02 <aveltras> im doing this for lucid first
14:26:07 <aveltras> you'd use something like
14:26:19 <aveltras> wc_ (prop @"name" "name" $ prop @"adult" True mkUser) $ h1_ "Hello"
14:26:21 <aveltras> for example
14:26:35 <ski> if the user types that, then yes, the user is supposed to know about `mkUser'
14:26:36 <aveltras> the hkd thing is to get it to be compatible with reflex dom also
14:26:48 <aveltras> ye the goal is to only expose mkUser
14:27:48 <ski> (i would probably also pass the identifier to use as `mkUser', to `mkWebComponent' (or some version of it) .. although i haven't checked whether TH actually supports this kind of generative usage)
14:28:00 Guest_44 joins (7da1814b@125.161.129.75)
14:28:07 <aveltras> ye i cut it from the second past
14:28:11 <aveltras> the real thing is
14:28:16 <aveltras> mkWebComponent "my-component" ''User
14:28:20 <ski> (that would make it hygienic)
14:28:34 <aveltras> what do you mean by identifier here ?
14:28:39 <ski> that's what i saw in the first paste, yes
14:28:53 nineonine joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
14:29:16 <Guest_44> hi i tried to download haskell (by entering curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
14:29:17 <Guest_44> ) on my terminal in mac os 10.12 but it says ""_eghcup --cache install ghc recommended" failed!", do you guys can help:(
14:29:50 <ski> an identifier is a name that identifies some kind of entity. could be a variable, a data constructor, a type constructor, a pattern synonym, a module name, a type class, ..
14:30:10 <aveltras> ye but in that specific example you meant the following ?
14:30:11 <maerwald> Guest_44: 10.13 up is supported, 10.12 not
14:30:16 <aveltras> mkWebComponent "my-component" ''User 'User ?
14:30:25 × Major_Biscuit quits (~Major_Bis@82-169-100-198.biz.kpn.net) (Ping timeout: 240 seconds)
14:30:34 <ski> aveltras : yes
14:30:40 <ski> or possibly even
14:30:41 <aveltras> i figured i could also lookup the data constructor via the data type during template haskell no ?
14:30:47 <ski> mkWebComponent "my-component" ''User 'User 'mkUser
14:30:50 <ski> (if that's possible)
14:31:16 <aveltras> the TH calls would be on library side here
14:31:29 <ski> aveltras : what if there's more than one data constructor ?
14:31:39 <aveltras> so im not sure choosing the function name has much value since you already choose the data constructor
14:31:52 <aveltras> there wont, it only works with records
14:32:11 <ski> record syntax works (FSVO of "works") for more than one data constructor
14:32:33 <Guest_44> maerwald ahh i see i see, so i should update my software first right? then do the curl thing in my terminal :")
14:32:38 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:77eb:51a:84a8:6067:5428) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:32:39 <maerwald> yeah
14:33:04 <aveltras> as long as i can make it break during TH compilation if the data type doesn't have the right shape that's not an issue here
14:33:05 <merijn> ski: All hail our -XNoFieldSelector overlords ;)
14:33:15 <ski> `data Foo = FooBar {blah :: String,bleh :: Int} | FooBar {blah :: String,bloh :: Maybe [String]}' is quite possible
14:33:15 <Guest_44> maerwald thank you so much i didnt know they dont support mac os 10.12 ive been searching for answers for hours T__T
14:33:17 <Squarism> Anyone tried hodatime? A worthy replacement for "time" library?
14:33:38 × nineonine quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Ping timeout: 264 seconds)
14:33:39 <maerwald> Guest_44: yeah, there are problems with linking/missing symbols on 10.12
14:33:57 <aveltras> the TH thing is for user of the libraries (which will expose data type for existing web-components) but not end users (which will use those intermediate librairies with reflex or lucid in their app)
14:34:15 <ski> aveltras : ok
14:34:23 <maerwald> Guest_44: and mac makes it impossible to statically link
14:34:28 <aveltras> but if i give ''Foo to the TH call here, i think i can know that i must have a basic record behind it
14:34:38 <aveltras> and even get the data constructor name from it i guess
14:34:42 ski would still strive to make TH things hygienic
14:35:01 <aveltras> i ll first try to get something working :)
14:35:20 <ski> (i think TH should go out of its way to make people go out of their way, if they want to express unhygienic things, rather than making them too easy)
14:35:36 <Guest_44> maerwald i see i see,, if i may know also.. is the haskell languange more compatible with mac os / windows/ linux ? :o
14:35:53 × Natch quits (~natch@c-b471e255.014-297-73746f25.bbcust.telenor.se) (Remote host closed the connection)
14:35:54 <maerwald> Guest_44: I'd say linux is the easiest to support
14:35:57 <maerwald> windows the worst
14:36:03 <aveltras> the thing here, i can't handle any other thing that a basic record here
14:36:14 <ski> ok
14:36:23 <aveltras> since TH breaks at compile time, there's no real harm to just error out on something else
14:36:23 <maerwald> so: 1. linux, 2. mac, 3. freebsd, 4. windows
14:36:42 <ski> unhygienic macros are harder to reason about
14:36:44 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
14:36:57 <ski> hygiene is about keeping lexical scoping, also for macros
14:37:25 <aveltras> i get that but the goal is for user to just define a record representing the possible attributes, call some TH and be done with it
14:37:30 <aveltras> the burden's not on them
14:39:36 <ski> iow, if a macro is defined to introduce a local identifier when expanded, and then splices in some user code in the scope of that, then any references in that user code to an identifier with the same name should *not* reference the identifier introduced by the macro (but rather whatever identifier was in scope, at the macro call)
14:41:12 Natch joins (~Natch@c-b471e255.014-297-73746f25.bbcust.telenor.se)
14:41:25 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
14:41:26 <aveltras> hmm, the end user here should call something like "import Lib.Components" which expose every "mkSomething" functions, if it clashes with something existing, user can import it qualified
14:41:49 <ski> and, if the body of a macro definition references some identifier that is in scope at the macro definition site, then an expansion of that macro should still have that identifier resolve to what was in scope at the macro definition site, even if there's an identifier with the same name in scope at the macro call site, and even if the original identifier is not in scope at the macro call site (perhaps not
14:41:50 LKoen joins (~LKoen@252.248.88.92.rev.sfr.net)
14:41:55 <ski> even exported by the library providing the macro)
14:42:45 <ski> aveltras : yea, i was just trying to explain what "hygiene" even means
14:42:52 <Guest_44> maerwald ahh good gooddd,, so the mac os is pretty adequate right thank u so muchh:")) im just starting this programming languange i hope i can learn it well!! do you have recommendations on where to learn haskell for beginners?
14:42:52 × Guest_44 quits (7da1814b@125.161.129.75) (Quit: Ping timeout (120 seconds))
14:43:04 ski blinks
14:43:32 × geekosaur quits (82650c7c@130.101.12.124) (Quit: Ping timeout (120 seconds))
14:43:54 <ij> such enthusiasm
14:44:01 <ski> in short, unhygienic macros basically employ a form of dynamic scope, and hygienic macros employ static/lexical scoping
14:44:06 Guest_44 joins (7da1814b@125.161.129.75)
14:44:40 <ski> Guest_44 : well, one recommendation could be to get a nice intro textbook to start with
14:44:49 <ski> there are also some web resources, though
14:45:46 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:77eb:51a:84a8:6067:5428)
14:46:10 <ski> Guest_44 : oh .. and if you have questions (like about particular things you're wondering about, or problems you stumble upon, or want feedback/review on code), you're welcome to ask in here
14:46:58 <ski> (and lurking in here, and also trying to help others with some questions, can also be a good way to learn about and reinforce things)
14:47:05 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
14:48:11 Major_Biscuit joins (~Major_Bis@82-169-100-198.biz.kpn.net)
14:48:58 hoobop1 joins (~hoobop@217.146.82.202)
14:49:05 jil joins (~user@45.86.162.6)
14:51:15 × raym quits (~ray@45.64.220.139) (Quit: leaving)
14:51:32 raym joins (~ray@45.64.220.139)
14:52:59 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
14:53:07 <Guest_44> ski aah thank you smm for the welcomee !! alrightyy definitelyy will dooo hehee 😭🙏
14:53:45 Guest14662 joins (~Username@host-79-3-98-53.business.telecomitalia.it)
14:53:51 <ski> Guest_44 : would you like some textbook names, and some other links ?
14:54:12 × hive-mind quits (~hivemind@rrcs-67-53-148-69.west.biz.rr.com) (Ping timeout: 246 seconds)
14:55:38 <Guest_44> ski yesss pleasee !! 🥺 would love to know itt
14:55:53 <ski> well, one book that's often suggested is
14:55:56 <ski> @where PIH
14:55:56 <lambdabot> "Programming in Haskell" by Graham Hutton in 2007-01-15,2016-09-01 at <http://www.cs.nott.ac.uk/~pszgmh/pih.html>
14:56:48 <ski> i learned from "Haskell: The Craft of Functional Programming" by Simon Thompson
14:57:13 hive-mind joins (~hivemind@rrcs-67-53-148-69.west.biz.rr.com)
14:57:25 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
14:57:30 <siraben> I learned from Programming in Haskell, solid beginner book.
14:57:46 <ski> some people like
14:57:48 <ski> @where HPFFP
14:57:48 <lambdabot> "Haskell Programming: from first principles - Pure functional programming without fear or frustration" by Chistopher Allen (bitemyapp),Julie Moronuki at <http://haskellbook.com/>,#haskell-beginners
14:58:08 <ski> it's quite long and verbose, it doesn't assume any programming experience
14:58:26 <merijn> ski: tbh, I disagree with that claim ;)
14:58:38 <ski> which part ?
14:58:45 <ski> the last one, i presume ?
14:58:49 <merijn> It does not *explicitly* assume programming experience, but implicitly it kinds does in its structure
14:59:12 <ski> well, it doesn't *purport* to assume any programming experience .. is that fine by you :P ?
14:59:30 <ski> (i have not read it, i don't really have an opinion on the issue)
14:59:35 <merijn> One of the main problem my partner had is that it very quickly starts doing all sorts of exercises with lists and she was just like "but why do I care about lists?"
14:59:48 <ski> ah .. motivation
15:00:08 ski idly recalls a recent discussion about that, recently, in-channel
15:00:18 <ph88^> {-# OPTIONS_GHC -F -pgmF hspec-discover #-} what does this do ?
15:00:25 <merijn> Just the sorts of exercises that make a lot of sense when you have done some programming, where *of course* you wanna know what things match a predicate in a container!
15:00:44 <ski> there's also e.g.
15:00:46 <ski> @where SoE
15:00:46 <lambdabot> "The Haskell School of Expression: Learning Functional Programming through Multimedia" by Paul Hudak in 2000 at <http://www.cs.yale.edu/homes/hudak/SOE/>,<http://haskell.org/soe/> [broken]
15:01:12 <ski> and some other books i know even less about. presumably at least some of them are quite nice
15:01:21 <ski> (i've heard people say nice things about SoE)
15:01:31 <ski> @where HTAC
15:01:32 <lambdabot> "Haskell Tutorial and Cookbook" by Mark Watson in 2017-09-04 at <https://leanpub.com/haskell-cookbook>
15:01:35 <ski> @where wikibook
15:01:35 <lambdabot> http://en.wikibooks.org/wiki/Haskell
15:01:40 <ski> might also be useful
15:01:55 × Guest14662 quits (~Username@host-79-3-98-53.business.telecomitalia.it) (Quit: Going offline, see ya! (www.adiirc.com))
15:02:13 <ski> Guest_44 : finally, for some exercises (and some more material around it, i believe), you could possibly try
15:02:16 <ski> @where CIS192
15:02:16 <lambdabot> I know nothing about cis192.
15:02:19 <ski> er
15:02:20 <ski> @where CIS194
15:02:20 <lambdabot> https://www.seas.upenn.edu/~cis194/spring13/lectures.html
15:02:35 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
15:03:24 <ski> (some people like to try Advent of Code problems with Haskell. or Project Euler problems (if you're math-inclined). istr there may be some more collections of problems around that i forget, too)
15:03:34 × dwt quits (~dwt@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 272 seconds)
15:03:39 × denisse quits (~spaceCat@gateway/tor-sasl/alephzer0) (Remote host closed the connection)
15:03:43 <ski> merijn : makes sense. noted
15:04:00 denisse joins (~spaceCat@gateway/tor-sasl/alephzer0)
15:04:19 ArConan joins (17613c8b@23.97.60.139)
15:05:17 <jil> ,hello #haskell
15:05:40 <merijn> ski: In terms of prerequisite knowledge it seemed fine for her with minimal-to-no programming experience, but yeah, the structure/order left a bit to be desired
15:05:45 <ski> Guest_44 : perhaps i should also say that "LYAH" tends to not be recommended so much by this channel. i does have some pretty pictures, and perhaps the dialogue can be fun. but it has been criticized for not going that deep with explanations, and for lacking exercises
15:05:50 <ski> hello jil
15:06:12 × BrianZ quits (c0f3da07@gateway/web/cgi-irc/kiwiirc.com/ip.192.243.218.7) (Quit: Connection closed)
15:06:30 <ski> merijn : i wonder whether the authors would be open to such constructive criticism, for the next edition
15:07:07 <merijn> ski: eh
15:07:21 <merijn> ski: The odds of that happening are...probably 0?
15:07:21 <jil> I'm slowly working through the example of the "programming in haskell". I'm try exercices on higher order function. I have to (re)define the stanadard prelude function al, any and here's what I come up with. http://ix.io/2OqD
15:07:38 <ski> being open or a next edition happening ?
15:07:39 <merijn> ski: Given the less than amicable ending to the project
15:07:48 <merijn> ski: A new edition happening
15:07:57 <ski> oh, i dunno about any ending drama
15:08:38 <merijn> ski: "The collaboration did not end on good terms" is probably a rather substantial understatement :)
15:09:39 <ski> jil : your implementations seem correct, although the way they're defined could still be improved
15:09:44 <merijn> jil: the (commented out) takeWhile can be simplified
15:09:51 <ski> merijn : oic :/
15:09:56 <jil> It works but I'm not satisfied, because the type declaration in the book says all :: (a -> Bool) -> [ Bool] -> Bool and mine says all :: (a -> Bool) -> [a] -> Bool
15:09:57 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
15:09:57 <merijn> jil: Consider this: Do you need a special case for single element lists?
15:10:27 <ski> `all :: (a -> Bool) -> [Bool] -> Bool' is incorrect. if the book says that, that's a typo
15:10:37 marle joins (574849fe@87.72.73.254)
15:10:38 × ArConan quits (17613c8b@23.97.60.139) (Quit: Connection closed)
15:10:41 <ski> (and ditto for `any')
15:10:55 <jil> ok, thank you ski, I was realy confused.
15:11:06 <merijn> oh, wait, the 2nd case of takeWhile is rather questionable to begin with >.>
15:11:35 <jil> takeWhile is draft, please ignore it.
15:11:36 <ski> jil : oh, actually, what should `takeWhile_ even []' evaluate to ?
15:12:13 <jil> I want all an any to be clear beofre going furth with takWhile
15:12:18 <ski> jil : btw, if you define `test_and' *locally* to `all_' (using `where'), then you don't need to pass `p' as a parameter to it
15:12:29 <ski> (and ditto for `test_or' and `any_')
15:12:42 itai joins (~itai@87.70.56.140)
15:13:02 <ski> this is useful here, since you're probably not going to want to use `test_and' (/`test_or') for anything else than the definition of `all_' (`any_')
15:14:01 <ski> (sorry, the "this" here refers to defining the "helper" function locally, so that it's only visible to its "parent"/"wrapper" function. not needing to pass `p' explicitly is a separate effect of doing this)
15:14:10 Jd007 joins (~Jd007@162.156.11.151)
15:14:25 <jil> ok, I was looking f for a way to include the imn the main function indeed
15:14:35 <ski> do you know how to use `where' ?
15:14:41 <jil> yes
15:14:56 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
15:15:06 <ski> (when testing things, it can be useful at times to not have helpers in `where', so that one can test them directly, though ..)
15:15:07 Wuzzy joins (~Wuzzy@p57a2e44e.dip0.t-ipconnect.de)
15:15:15 × itai quits (~itai@87.70.56.140) (Remote host closed the connection)
15:15:27 × berberman quits (~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
15:15:39 <ski> jil : oh .. and do you need separate base cases for `all_' and `any_' ?
15:16:09 <ski> (and for `takeWhile_' .. do you know how `concat' is defined ?)
15:16:33 <ski> merijn : ah .. right
15:16:45 <jil> well they are separate question in the book.
15:16:53 berberman joins (~berberman@unaffiliated/berberman)
15:16:55 <jil> :t concat
15:16:56 <lambdabot> Foldable t => t [a] -> [a]
15:16:59 <ski> what is a separate question
15:17:06 <Uniaika> -/21
15:17:28 <ski> concat :: [[a]] -> [a] -- is what you're using here. and it's defined like :
15:17:28 × berberman quits (~berberman@unaffiliated/berberman) (Max SendQ exceeded)
15:17:36 <ski> concat [ ] = []
15:17:47 <ski> concat (xs:xss) = xs ++ concat xss
15:17:54 <jil> ski, you asked if I needed separate base case fao all_ and any_.
15:18:13 berberman joins (~berberman@unaffiliated/berberman)
15:18:17 <ski> yes. but what is the separate questions ?
15:19:22 <jil> to (re)define all and any. I'm still learning and repeating stuff for clarity is not bad for me.
15:19:24 Sheilong joins (uid293653@gateway/web/irccloud.com/x-dwqapemjrwbgflyv)
15:19:27 <merijn> jil: Oh, also
15:19:35 <merijn> jil: Your base case for all is incorrect :)
15:19:43 × Guest_44 quits (7da1814b@125.161.129.75) (Quit: Connection closed)
15:19:57 <merijn> At least, going by the definition in the standard library and the convention in logic
15:20:04 <ski> nicely spotted
15:20:14 <jil> wait wait wait.. you asked so many question. I need to digest them already.
15:20:21 <merijn> > all even [1]
15:20:22 Deide joins (~Deide@217.155.19.23)
15:20:24 <lambdabot> False
15:20:28 <merijn> > all even []
15:20:29 <lambdabot> True
15:20:38 <ski> heh, okay. let's slow down and let you process what we've suggested, so far
15:20:54 Guest_44 joins (7da1814b@125.161.129.75)
15:21:06 × berberman quits (~berberman@unaffiliated/berberman) (Max SendQ exceeded)
15:21:44 berberman joins (~berberman@unaffiliated/berberman)
15:21:45 <ski> (`all_ p (xs ++ ys)' is supposed to be the same as `all_ p xs && all_ p ys' .. what happens when `xs' is empty ?)
15:21:53 <merijn> Asking #haskell for help; like trying to take a small sip from a firehose ;)
15:22:02 ski glances around nervously
15:22:35 × berberman quits (~berberman@unaffiliated/berberman) (Max SendQ exceeded)
15:22:43 <Guest_44> ski all noted !!! thank uuu so muchhh T__T
15:23:20 berberman joins (~berberman@unaffiliated/berberman)
15:25:20 <ski> Guest_44 : anyway, different people learn in different ways. not all styles of intro suits everyone. hopefully if you pick a textbook, it won't be too bad for you, though. and you're welcome to ask particular questions here, as said. sometimes, you may have to patiently wait for a bit before anyone, who may have a clue and a willing to try, notices your question, though
15:26:45 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
15:26:56 ski may sometimes err on the side of being too complete, and also explaining why you generally don't want to do something, and then explaining how to do it anyway ..
15:28:02 <maerwald> programming made me a worse reader
15:28:12 <maerwald> books are too linear/structured
15:28:51 <ski> you want to be able to jump around, and focus on a more, or less, high level ?
15:29:02 × LKoen quits (~LKoen@252.248.88.92.rev.sfr.net) (Read error: Connection reset by peer)
15:29:16 <maerwald> yeah, when reading code you follow your intuition/interest, because everything is chaos anyway
15:29:22 <maerwald> there's no consistent story anywhere
15:29:26 <ski> (also, are you talking about books in general, or textbooks or the like ?)
15:29:52 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
15:30:13 <jil> Ok, so I've add the where http://ix.io/2OqM
15:30:22 <ski> @remember maerwald <maerwald> yeah, when reading code you follow your intuition/interest, because everything is chaos anyway <maerwald> there's no consistent story anywhere
15:30:22 <lambdabot> I will remember.
15:30:30 LKoen joins (~LKoen@252.248.88.92.rev.sfr.net)
15:30:44 <ski> jil : good
15:30:58 <ski> now, you could note that the brackets around `p x' are actually redundant
15:31:18 nineonine joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
15:31:29 <ski> (function application binds tighter than ordinary (defined) operators, like `&&' and `||')
15:31:55 × toorevitimirp quits (~tooreviti@117.182.181.186) (Remote host closed the connection)
15:32:06 <ski> (do you see what i mean ?)
15:32:13 <jil> yes
15:32:37 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 258 seconds)
15:32:42 <ski> next, since `p' is in scope in the `where', you don't need to pass `p' as a parameter
15:33:15 <jil> I see. Nice
15:33:55 hackage hedgehog-fakedata 0.0.1.4 - Use 'fakedata' with 'hedgehog' https://hackage.haskell.org/package/hedgehog-fakedata-0.0.1.4 (parsonsmatt)
15:34:04 <ski> (you don't *need* to do this either .. but i can be good to know about, that you *can* do this, if you should so choose. sometimes explicit is to be preferred, sometimes implicit. the important thing is to know about the relevant options, and make an informed choice, wrt the trade-offs, and your personal style and sense of aesthetics)
15:34:19 × nineonine quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Remote host closed the connection)
15:34:22 <ski> (er, s/but i can be/but it can be/)
15:34:31 nineonine joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
15:35:05 <ski> jil : so .. if you'd do this change, what would the code then end up looking like ?
15:36:48 × nineonine quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Remote host closed the connection)
15:37:02 <swarmcollective> I've found that inline declaration of functions in the where reduced duplication in the function, then later this pattern appeared in other functions. It was then easy to pull it out; though that does cause the parameter (`p` in this case) to become formal.
15:37:23 <ski> yes
15:37:29 nineonine joins (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
15:37:36 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 258 seconds)
15:37:55 <ski> fortunately, Haskell syntax is lightweight enough that it's usually pretty easy to do these kind of refactorings
15:38:11 berberman joins (~berberman@unaffiliated/berberman)
15:38:59 <ski> (.. at least in comparision with certain other languages which shall remain unnamed)
15:39:24 <jil> It should look like http://ix.io/2OqP
15:39:42 <ski> yes
15:39:55 <ski> (although you're still having one pair of redundant brackets)
15:40:33 <jil> Your first question was about the empty list case, but I don't see how to remove it. and keep the flodr
15:40:44 heatsink joins (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1)
15:41:04 × Guest_44 quits (7da1814b@125.161.129.75) (Quit: Connection closed)
15:41:10 <ski> > foldr (*) 1 [2,3,5]
15:41:12 <lambdabot> 30
15:41:13 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 265 seconds)
15:41:14 <ski> > foldr (*) 1 [2,3]
15:41:16 <lambdabot> 6
15:41:17 <ski> > foldr (*) 1 [2]
15:41:19 <lambdabot> 2
15:41:20 <ski> > foldr (*) 1 []
15:41:21 <lambdabot> 1
15:41:36 <ski> you'll see that `foldr' itself handles empty lists, fine
15:41:49 × nineonine quits (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 258 seconds)
15:41:50 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
15:42:10 jamm_ joins (~jamm@unaffiliated/jamm)
15:42:24 <ski> > foldr (*) 1 [a,b,c,d]
15:42:24 × ski quits (~ski@ed-3358-10.studat.chalmers.se) (Killed (Sigyn (Spam is off topic on freenode.)))
15:42:25 <lambdabot> a * (b * (c * (d * 1)))
15:42:35 <ij> yikes
15:42:47 × ystael quits (~ystael@209.6.50.55) (Quit: Lost terminal)
15:42:54 ski joins (~ski@m-1163-19.studat.chalmers.se)
15:42:55 mouseghost joins (~draco@wikipedia/desperek)
15:42:56 ski sighs
15:43:01 ChanServ sets mode +o ski
15:43:15 ski is now known as ski_
15:43:15 <jess> oops
15:43:28 <jess> sorry that the robot ate you
15:43:58 <jil> > foldr (&&) True [True, False]
15:43:59 <lambdabot> False
15:44:11 × LKoen quits (~LKoen@252.248.88.92.rev.sfr.net) (Read error: Connection reset by peer)
15:44:13 × berberman quits (~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
15:44:21 <jil> > foldr (&&) True []
15:44:23 <lambdabot> True
15:44:24 ski joins (~ski@ed-3358-10.studat.chalmers.se)
15:44:29 <jil> ok
15:44:38 <shapr> ski: what was that?
15:44:52 <ski> Sigyn misbehaves, sometimes
15:44:55 <shapr> ah
15:45:13 <ski> (i've had it happen, multiple times in the past, and have also seen it happen to others)
15:45:15 LKoen joins (~LKoen@252.248.88.92.rev.sfr.net)
15:45:38 × heatsink quits (~heatsink@2600:1700:bef1:5e10:872:5621:b6dd:f0b1) (Ping timeout: 264 seconds)
15:45:38 guest7682358928 joins (c9dbe9a1@gateway/web/cgi-irc/kiwiirc.com/ip.201.219.233.161)
15:45:53 × ski_ quits (~ski@m-1163-19.studat.chalmers.se) (Client Quit)
15:46:13 pavonia joins (~user@unaffiliated/siracusa)
15:46:28 ystael joins (~ystael@209.6.50.55)
15:46:50 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
15:47:01 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 265 seconds)
15:47:12 berberman joins (~berberman@unaffiliated/berberman)
15:47:16 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Quit: WeeChat 2.9)
15:47:24 <jil> ski the reasin you sighs is because the lambabot should have returned 1 * (a * (b * (c * (d * [])))) ?
15:47:49 <jil> reason
15:48:13 <ski> no
15:48:15 × berberman quits (~berberman@unaffiliated/berberman) (Max SendQ exceeded)
15:48:40 <ski> (the `[]' there would make no sense)
15:48:48 <jil> ok
15:48:57 berberman joins (~berberman@unaffiliated/berberman)
15:49:10 <jil> why ij yiked ?
15:49:31 rople joins (~rople@2001:8003:d44b:300:ac2a:fb0f:6f96:d286)
15:50:17 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
15:51:45 × mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 240 seconds)
15:51:58 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
15:53:37 frozenErebus joins (~frozenEre@94.128.81.133)
15:54:12 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
15:55:01 brainfunnel_ joins (~quassel@96.223.198.146.dyn.plus.net)
15:56:56 livvy joins (~livvy@gateway/tor-sasl/livvy)
15:57:21 <ski> jil : hm, anyway
15:57:40 <swarmcollective> I guess Sigyn was jealous for foldl, since foldr was getting all the attention.
15:57:49 <ski> hah :)
15:57:57 × brainfunnel quits (~quassel@12.23.199.146.dyn.plus.net) (Ping timeout: 256 seconds)
15:58:07 × rople quits (~rople@2001:8003:d44b:300:ac2a:fb0f:6f96:d286) (Quit: rople)
15:58:20 brainfunnel joins (~quassel@224.142.208.46.dyn.plus.net)
15:58:38 rople joins (~rople@2001:8003:d44b:300:ac2a:fb0f:6f96:d286)
15:58:45 <ski> jil : i was pondering whether to attach one or the other issue at first
15:59:16 × rople quits (~rople@2001:8003:d44b:300:ac2a:fb0f:6f96:d286) (Client Quit)
15:59:20 <ski> and, both from a didactive perspective, and from user perspective, i think it's better to address the bug, first
15:59:21 × ubert quits (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
15:59:24 hackage rpmbuild-order 0.4.3.2 - Order RPM packages by dependencies https://hackage.haskell.org/package/rpmbuild-order-0.4.3.2 (JensPetersen)
15:59:28 × LKoen quits (~LKoen@252.248.88.92.rev.sfr.net) (Read error: Connection reset by peer)
15:59:44 rople joins (~rople@2001:8003:d44b:300:ac2a:fb0f:6f96:d286)
16:00:21 <ski> jil : so, `all_ p xs' is supposed to give `True' in case `p' holds (/ gives `True') for all elements of `xs' (and `False' in case there's some element it doesn't hold for), do you agree ?
16:00:27 LKoen joins (~LKoen@252.248.88.92.rev.sfr.net)
16:00:34 × rople quits (~rople@2001:8003:d44b:300:ac2a:fb0f:6f96:d286) (Client Quit)
16:00:57 rople joins (~rople@2001:8003:d44b:300:ac2a:fb0f:6f96:d286)
16:01:24 mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh)
16:01:45 × brainfunnel_ quits (~quassel@96.223.198.146.dyn.plus.net) (Ping timeout: 264 seconds)
16:02:19 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Read error: Connection reset by peer)
16:02:31 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
16:03:48 × usr25 quits (~J@48.red-83-43-188.dynamicip.rima-tde.net) (Quit: Bye)
16:05:33 × frozenErebus quits (~frozenEre@94.128.81.133) (Quit: leaving)
16:06:03 × Franciman quits (~francesco@host-95-235-155-82.retail.telecomitalia.it) (Quit: Leaving)
16:09:11 shiraeeshi joins (~shiraeesh@109.166.56.99)
16:09:38 Saukk joins (~Saukk@83-148-239-3.dynamic.lounea.fi)
16:12:32 p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
16:12:33 nineonine joins (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
16:13:05 × marle quits (574849fe@87.72.73.254) (Quit: Connection closed)
16:13:27 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:77eb:51a:84a8:6067:5428) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:13:38 × borne quits (~fritjof@200116b8645bf50038baae9ec143df07.dip.versatel-1u1.de) (Ping timeout: 258 seconds)
16:13:55 × nineonine quits (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection)
16:14:40 × LKoen quits (~LKoen@252.248.88.92.rev.sfr.net) (Read error: Connection reset by peer)
16:14:57 nineonine joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
16:16:03 LKoen joins (~LKoen@252.248.88.92.rev.sfr.net)
16:19:23 × nineonine quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Ping timeout: 258 seconds)
16:20:20 × alx741 quits (~alx741@186.178.110.33) (Quit: alx741)
16:20:49 jamm_ joins (~jamm@unaffiliated/jamm)
16:25:08 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 258 seconds)
16:27:12 <swarmcollective> So, `all` appears to default to True, then looks for some reason to transition to False. Or am I understanding that wrong? Is there a version of `all` that defaults to False, therefore returning False in the [] case?
16:27:14 heatsink joins (~heatsink@2600:1700:bef1:5e10:8513:7e38:6670:2969)
16:27:39 × Zetagon quits (~leo@c151-177-52-233.bredband.comhem.se) (Remote host closed the connection)
16:28:48 conal joins (~conal@64.71.133.70)
16:28:53 × metreo quits (~Thunderbi@unaffiliated/metreo) (Quit: metreo)
16:29:15 × LKoen quits (~LKoen@252.248.88.92.rev.sfr.net) (Read error: Connection reset by peer)
16:30:53 × acidjnk_new quits (~acidjnk@p200300d0c722c49675ee473ab8e6650f.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
16:30:55 LKoen joins (~LKoen@252.248.88.92.rev.sfr.net)
16:31:25 hackage lifetimes 0.1.0.0 - Flexible manual resource management https://hackage.haskell.org/package/lifetimes-0.1.0.0 (isd)
16:31:31 <shapr> Recently I asked if there was something like filepath's </> for URIs, it turns out I wanted Network.URI.relativeTo
16:31:45 <pavonia> swarmcollective: I don't think there's an alternative version. From a mathematical perspective True is the correct result for an empty list, because any property is true for an empty set
16:32:05 <merijn> swarmcollective: The logic in logic (heh!) is that "forall x . p(x)" should be equivalent to "not (exists x . not p(x))"
16:32:38 <merijn> swarmcollective: So "something is true for all X" is the same "there is no X for which something is *not* true"
16:33:22 <pavonia> s/for an empty set/for all elements in an empty set/
16:33:35 <swarmcollective> It is easy enough to implement `not (null xs) && all xs`
16:33:48 <ephemient> all p = foldr (&&) True . map p, any p = foldr (||) False . map p
16:34:10 <ephemient> True/False make natural sense as the base cases
16:35:01 × LKoen quits (~LKoen@252.248.88.92.rev.sfr.net) (Remote host closed the connection)
16:35:57 × haritz quits (~hrtz@unaffiliated/haritz) (Ping timeout: 264 seconds)
16:36:32 david__ joins (~david@234.109.45.217.dyn.plus.net)
16:36:57 × DavidEichmann quits (~david@234.109.45.217.dyn.plus.net) (Remote host closed the connection)
16:37:07 <ski> swarmcollective : "Is there a version of `all` that defaults to False, .. ?" -- that version is called `any' ;)
16:37:08 <ski> <ski> (`all_ p (xs ++ ys)' is supposed to be the same as `all_ p xs && all_ p ys' .. what happens when `xs' is empty ?)
16:37:08 <ski> swarmcollective ^
16:37:18 <jil> ski, I came up with theses correction. http://ix.io/2Ord and http://ix.io/2Ora The second is more generic but less readable until I learn how to define my own type.
16:37:20 <ski> also see "Empty Sum, Product, Forall, Exists" by monochrom at <https://www.vex.net/~trebla/homework/empty.html>
16:38:41 haritz joins (~hrtz@62.3.70.206)
16:38:41 × haritz quits (~hrtz@62.3.70.206) (Changing host)
16:38:41 haritz joins (~hrtz@unaffiliated/haritz)
16:39:00 <ski> jil : what do you think of my question, from about forty minutes ago ?
16:39:11 <jil> ski I agree with it.
16:40:49 <ski> jil : so, if the list is a concatenation `xs ++ ys' of two lists, then `all_ p (xs ++ ys)' is supposed to check both that `p' holds for every element in `xs', and also for every element in `ys', right ?
16:41:43 <jil> right
16:42:00 <ski> iow, it should amount to the same thing as checking both `all_ p xs' and `all_ p ys'
16:42:09 <ski> that is, checking `all_ p xs && all_ p ys'
16:42:16 nineonine joins (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e)
16:42:30 <jil> yes
16:42:33 <ski> now, as i said before, what happens when `xs' is `[]' ?
16:42:54 <ski> consider both `all_ p (xs ++ ys)', and `all_ p xs && all_ p ys', in this case
16:45:58 <jil> as merijn said all p [] should be True
16:47:49 ulidtko joins (~ulidtko@31.133.98.234)
16:48:21 × Saukk quits (~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
16:48:56 <ph88^> does anyone know what i can do with this file ? https://github.com/commercialhaskell/stack-templates/blob/master/rio.hsfiles#L216-L218 ghc is showing a warning for this file: The export item ‘module Main’ is missing an export list
16:49:30 × DTZUZU quits (~DTZUZU@205.ip-149-56-132.net) (Read error: Connection reset by peer)
16:49:33 <jil> I'm not getting your last point. all_ p (xs ++ ys) and all_ p xs && all_ p ys give the same result
16:49:51 DTZUZU joins (~DTZUZU@205.ip-149-56-132.net)
16:50:51 <ulidtko> ph88^, you mean the test/Spec.hs file? that's a "test discovery" stub module, helps you to write unit tests
16:51:06 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
16:51:07 <ph88^> how am i supposed to use this stub ?
16:51:08 <ulidtko> see https://hspec.github.io/hspec-discover.html
16:51:52 <ski> jil : i'm still considering <http://ix.io/2OqP>
16:52:28 LKoen joins (~LKoen@252.248.88.92.rev.sfr.net)
16:52:32 <ski> according to that definition, we have `all_ p [] && all_ p ys = False && all_ p ys = False', agree ?
16:52:52 <ph88^> thanks ulidtko
16:52:59 <ski> otoh, `all_ p ([] ++ ys) = all_ p ys'
16:53:24 hackage stack-all 0.1.2 - CLI tool for building across Stackage major versions https://hackage.haskell.org/package/stack-all-0.1.2 (JensPetersen)
16:54:47 <ulidtko> ph88^, you don't use it directly; what you're looking at is the source for `stack new myfoobar rio`. you can fix the warning by editing the resulting scaffold files
16:55:26 <ph88^> ya thanks .. im in the process of making my own stack template
16:55:37 <ulidtko> ah, I see
16:56:08 <byorgey> sshine, polux200137: when haskell-src-exts was first written there was no way to use GHC's parser, but since then a bunch of work has gone into splitting out GHC's parser so it can be used as an external tool.
16:56:38 <byorgey> oops, just realized I was scrolled back and responded to an old topic =)
16:56:48 <ph88^> byorgey, how do you use it as external tool actually ? is there a package for it ?
16:56:52 oreoking[m]1 joins (oreokingma@gateway/shell/matrix.org/x-jcusdubzyhittdzg)
16:56:54 hackage data-fix 0.3.1 - Fixpoint data types https://hackage.haskell.org/package/data-fix-0.3.1 (AntonKholomiov)
16:57:10 borne joins (~fritjof@2a06:8782:ffbb:1337:a53:e188:6f13:d1a)
16:57:42 <c_wraith> I won't be really happy with the parsing situation until template-haskell exposes a haskell parser that parses to its representation
16:58:00 jamm_ joins (~jamm@unaffiliated/jamm)
16:58:00 <aveltras> any idea how i can generate ' field @"fieldName" ' with template Haskell ? i have the fieldName value available in a Name value
16:58:13 <aveltras> i have '$(appTypeE $(varE $ mkName "field") $(stringE fieldName))' which doesn't work
16:58:37 <jil> ski, I corrected 2OqP with http://ix.io/2Ord and `all_ p []` give True as in prelude
16:59:05 <aveltras> appE being appE :: ExpQ -> ExpQ -> ExpQ
16:59:39 <c_wraith> aveltras: the second argument of AppTypeE (the constructor, not the helper) is a Type value
16:59:50 × Kaivo quits (~Kaivo@104-200-86-99.mc.derytele.com) (Quit: WeeChat 3.0)
17:00:38 <c_wraith> aveltras: looks like you need a LitT (StrTyLit "fieldName")
17:00:54 <ph88^> c_wraith, what would you like that for ?
17:01:15 <c_wraith> aveltras: I'm just chasing types around in the Language.Haskell.TH.Syntax module
17:01:30 <oreoking[m]1> does qtah support qt6
17:02:16 <c_wraith> ph88^: writing quasiquoters that take haskell source as input
17:02:19 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 258 seconds)
17:02:29 <ph88^> that sounds like fun :D
17:02:56 <aveltras> right now its complaining about stage restriction
17:03:19 <aveltras> https://www.irccloud.com/pastebin/415esCiO/
17:03:36 × chele quits (~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
17:03:50 <ulidtko> c_wraith, re parsing situation: did you see this gem? https://www.tweag.io/blog/2021-01-07-haskell-dark-arts-part-i/ they manage to abuse GHC API to extract the internal representation, if I'm reading correctly
17:04:45 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-zmcemccamsqwqgax)
17:05:11 <ulidtko> aveltras, "TH stage restriction" means you can't use mkInstanceDeclaration in the same module where it's defined
17:05:21 <ulidtko> i.e. import it
17:05:45 <ski> jil : yes, i know. i just wanted to reinforce why `all_ p [] = False' was wrong
17:06:42 <aveltras> it s a local variable
17:06:48 <aveltras> i got a workaround for it
17:06:55 <aveltras> https://www.irccloud.com/pastebin/F7Fdpwsf/
17:06:59 <aveltras> this works now
17:07:21 <aveltras> im still not clear about the use of quasiquotes with TH
17:07:22 soft-warm joins (4408f588@ip68-8-245-136.sd.sd.cox.net)
17:07:28 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
17:08:34 poljar1 joins (~poljar@93-143-136-208.adsl.net.t-com.hr)
17:09:40 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
17:10:36 × poljar quits (~poljar@78-3-15-134.adsl.net.t-com.hr) (Ping timeout: 240 seconds)
17:11:20 nbloomf joins (~nbloomf@2600:1700:ad14:3020:a0fa:861f:7d78:346f)
17:11:42 × soft-warm quits (4408f588@ip68-8-245-136.sd.sd.cox.net) (Ping timeout: 240 seconds)
17:13:04 <c_wraith> ulidtko: looks like a simpler thing, where they're finding a hidden name to generate a reference to. Doesn't look like they're using the parser
17:13:12 geekosaur joins (82650c7c@130.101.12.124)
17:14:06 conal joins (~conal@64.71.133.70)
17:14:16 alx741 joins (~alx741@186.178.110.33)
17:14:50 jollygood2 joins (~bc8134e3@217.29.117.252)
17:16:21 <ulidtko> c_wraith, they sort of do: given just a String identifier, extracting compiler innards related to it. Not exactly parsing (as in, of complete modules/expressions), but maybe the technique extends to that too. I'm not sure myself really, just sharing a curiosity
17:16:32 soft-warm joins (4408f588@ip68-8-245-136.sd.sd.cox.net)
17:16:45 michalz joins (~user@185.246.204.49)
17:16:50 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
17:17:20 × michalz quits (~user@185.246.204.49) (Client Quit)
17:18:02 michalz joins (~user@185.246.204.48)
17:18:04 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
17:18:32 × pedrohms quits (~pedrohms@187.20.63.53) (Read error: Connection reset by peer)
17:19:04 × rople quits (~rople@2001:8003:d44b:300:ac2a:fb0f:6f96:d286) (Ping timeout: 240 seconds)
17:20:48 × rajivr quits (uid269651@gateway/web/irccloud.com/x-khjufreymueqbnyt) (Quit: Connection closed for inactivity)
17:20:53 × livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
17:20:58 mmmattyx joins (uid17782@gateway/web/irccloud.com/x-lvhktabkcjtcvpoe)
17:22:42 neiluj joins (~jco@91-167-203-101.subs.proxad.net)
17:22:53 × neiluj quits (~jco@91-167-203-101.subs.proxad.net) (Changing host)
17:22:53 neiluj joins (~jco@unaffiliated/neiluj)
17:24:23 × kuribas quits (~user@ptr-25vy0i8mp067j44c045.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
17:25:51 coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
17:26:09 __monty__ joins (~toonn@unaffiliated/toonn)
17:27:57 × NinjaTrappeur quits (~ninja@unaffiliated/ninjatrappeur) (Ping timeout: 260 seconds)
17:28:25 NinjaTrappeur joins (~ninja@unaffiliated/ninjatrappeur)
17:29:39 hexfive joins (~hexfive@50.35.83.177)
17:31:49 livvy joins (~livvy@gateway/tor-sasl/livvy)
17:32:04 × ulidtko quits (~ulidtko@31.133.98.234) (Ping timeout: 256 seconds)
17:32:15 ulidtko joins (~ulidtko@31.133.98.234)
17:37:47 kipras joins (~Kipras@78-56-235-39.static.zebra.lt)
17:44:14 × neiluj quits (~jco@unaffiliated/neiluj) (Quit: leaving)
17:46:45 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
17:48:16 rj joins (~x@204.48.95.43)
17:49:18 × vicfred quits (vicfred@gateway/vpn/mullvad/vicfred) (Quit: Leaving)
17:51:24 nineonin_ joins (~nineonine@50.216.62.2)
17:52:22 adziahel[m] joins (adziahelma@gateway/shell/matrix.org/x-lyfahhmkhzdtqzhg)
17:52:24 unlink2 joins (~unlink2@p57b854e0.dip0.t-ipconnect.de)
17:52:37 neiluj joins (~jco@91-167-203-101.subs.proxad.net)
17:52:37 × neiluj quits (~jco@91-167-203-101.subs.proxad.net) (Changing host)
17:52:37 neiluj joins (~jco@unaffiliated/neiluj)
17:52:53 × nineonine quits (~nineonine@2604:3d08:7785:9600:b847:1240:2a37:515e) (Ping timeout: 265 seconds)
17:54:14 vicfred joins (~vicfred@unaffiliated/vicfred)
17:54:27 × unlink_ quits (~unlink2@p200300ebcf12ea00013250d6b4625a26.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
17:55:36 × xff0x_ quits (~xff0x@2001:1a81:520c:9300:d376:a5ba:ccb8:29d) (Ping timeout: 258 seconds)
17:57:32 xff0x_ joins (xff0x@gateway/vpn/mullvad/xff0x)
17:58:00 × unlink2 quits (~unlink2@p57b854e0.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
17:59:01 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 268 seconds)
18:00:25 unlink2 joins (~unlink2@p57b85146.dip0.t-ipconnect.de)
18:00:30 vgtw_ joins (~vgtw@gateway/tor-sasl/vgtw)
18:00:51 sord937 joins (~sord937@gateway/tor-sasl/sord937)
18:01:17 <byorgey> ph88^: yes, https://hackage.haskell.org/package/ghc-lib-parser I think
18:01:17 × borne quits (~fritjof@2a06:8782:ffbb:1337:a53:e188:6f13:d1a) (Ping timeout: 246 seconds)
18:01:29 × vgtw quits (~vgtw@gateway/tor-sasl/vgtw) (Ping timeout: 268 seconds)
18:01:30 vgtw_ is now known as vgtw
18:02:21 × coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
18:04:18 pgib joins (~textual@lmms/pgib)
18:04:25 × livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
18:05:02 <ph88^> cool =)
18:05:40 todda7 joins (~torstein@2a02:587:1b14:d00:5ec3:abec:812c:b3e2)
18:05:59 × dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection)
18:06:07 nhs joins (~nhs@c-24-20-87-79.hsd1.or.comcast.net)
18:06:58 enya[m] joins (enyaismatr@gateway/shell/matrix.org/x-gzvrhyhbwatwuwxi)
18:06:59 × Narinas quits (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
18:07:12 Narinas joins (~Narinas@189.223.62.254.dsl.dyn.telnor.net)
18:07:58 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-dwqapemjrwbgflyv) (Quit: Connection closed for inactivity)
18:09:06 metreo joins (~Thunderbi@unaffiliated/metreo)
18:09:45 × xff0x_ quits (xff0x@gateway/vpn/mullvad/xff0x) (Ping timeout: 240 seconds)
18:10:09 × Major_Biscuit quits (~Major_Bis@82-169-100-198.biz.kpn.net) (Ping timeout: 264 seconds)
18:11:45 xff0x_ joins (~xff0x@2001:1a81:520c:9300:d376:a5ba:ccb8:29d)
18:12:35 neiluj_ joins (~jco@static.15.144.181.135.clients.your-server.de)
18:13:08 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0)
18:13:16 × neiluj_ quits (~jco@static.15.144.181.135.clients.your-server.de) (Client Quit)
18:13:17 livvy joins (~livvy@gateway/tor-sasl/livvy)
18:13:34 neiluj_ joins (~jco@static.15.144.181.135.clients.your-server.de)
18:13:52 × neiluj quits (~jco@unaffiliated/neiluj) (Quit: leaving)
18:14:04 × neiluj_ quits (~jco@static.15.144.181.135.clients.your-server.de) (Client Quit)
18:14:25 neiluj joins (~jco@static.15.144.181.135.clients.your-server.de)
18:14:26 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
18:15:04 × neiluj quits (~jco@static.15.144.181.135.clients.your-server.de) (Changing host)
18:15:04 neiluj joins (~jco@unaffiliated/neiluj)
18:15:05 × nhs quits (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
18:15:09 × tzlil quits (~tzlil@unaffiliated/tzlil) (Ping timeout: 258 seconds)
18:15:20 tzlil joins (~tzlil@unaffiliated/tzlil)
18:15:32 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Client Quit)
18:16:21 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
18:16:46 howdoi joins (uid224@gateway/web/irccloud.com/x-vwnihuzeelxrmxkz)
18:18:11 × heatsink quits (~heatsink@2600:1700:bef1:5e10:8513:7e38:6670:2969) (Remote host closed the connection)
18:19:59 × hekkaidekapus] quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
18:21:19 × kipras quits (~Kipras@78-56-235-39.static.zebra.lt) (Remote host closed the connection)
18:21:43 kipras joins (~Kipras@78-56-235-39.static.zebra.lt)
18:23:09 × hiroaki quits (~hiroaki@ip4d17613f.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
18:24:07 hekkaidekapus] joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
18:26:00 × MasseR quits (~MasseR@51.15.143.128) (Quit: The Lounge - https://thelounge.chat)
18:26:31 MasseR joins (~MasseR@51.15.143.128)
18:28:11 × LKoen quits (~LKoen@252.248.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
18:29:33 Sheilong joins (uid293653@gateway/web/irccloud.com/x-nfduencpjwoeibog)
18:31:45 × rj quits (~x@204.48.95.43) (Quit: rj)
18:32:05 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 246 seconds)
18:32:49 brisbin joins (~patrick@vps.nighter.se)
18:32:59 jesser[m] joins (jessermatr@gateway/shell/matrix.org/x-dbgtrdoqxzqcpezr)
18:34:25 × brisbin quits (~patrick@vps.nighter.se) (Client Quit)
18:35:42 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
18:35:54 <ph88^> is there a command to pull a package with stack modify it and build it ? some local unpack
18:36:17 <jil> thank you ski for you time, your comments and help
18:36:49 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:38:49 rj joins (~x@gateway/tor-sasl/rj)
18:39:05 × kipras quits (~Kipras@78-56-235-39.static.zebra.lt) (Read error: Connection reset by peer)
18:40:05 j2t joins (~user@84.122.202.215.dyn.user.ono.com)
18:42:03 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
18:42:38 <sm[m]> ph88^: stack unpack
18:42:55 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:43:01 <ph88^> thanks sm :)
18:44:41 × Arguggi quits (~Arguggi__@arguggi-do.arguggi.co.uk) (Quit: Bye)
18:48:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
18:48:25 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:50:35 harovali joins (~user@r167-56-43-57.dialup.adsl.anteldata.net.uy)
18:51:41 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
18:53:16 Arguggi joins (~Arguggi__@arguggi-do.arguggi.co.uk)
18:54:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
18:54:31 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:55:07 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
18:55:19 × alx741 quits (~alx741@186.178.110.33) (Ping timeout: 276 seconds)
18:55:50 × Yumasi quits (~guillaume@2a01:e0a:5cb:4430:e2bc:3fed:317c:3efb) (Ping timeout: 264 seconds)
19:00:22 × geekosaur quits (82650c7c@130.101.12.124) (Ping timeout: 240 seconds)
19:00:23 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
19:01:31 × rj quits (~x@gateway/tor-sasl/rj) (Quit: rj)
19:01:48 Tario joins (~Tario@201.192.165.173)
19:02:16 <ski> jil : yw :)
19:03:29 berberman_ joins (~berberman@unaffiliated/berberman)
19:03:34 rj joins (~x@gateway/tor-sasl/rj)
19:04:47 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
19:05:04 × elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 276 seconds)
19:05:04 × Narinas quits (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
19:05:11 × rj quits (~x@gateway/tor-sasl/rj) (Client Quit)
19:05:20 Narinas joins (~Narinas@189.223.62.254.dsl.dyn.telnor.net)
19:05:25 kupi joins (uid212005@gateway/web/irccloud.com/x-aaegxzeymcrafmxs)
19:05:25 × Narinas quits (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
19:05:37 Narinas joins (~Narinas@189.223.62.254.dsl.dyn.telnor.net)
19:06:02 <aveltras> is there an existing library or something to do String operations on symbols ? in particular i'd like to transform a dashed identifier to its camelCase representation
19:07:31 alx741 joins (~alx741@186.178.110.176)
19:08:03 <monochrom> I think no. GHC doesn't provide basic ones that anyone could build upon.
19:08:52 <monochrom> Theoretically one could write a GHC plugin to add this. I don't follow those things (or any type-level tricks), so I don't know if anyone actually did it.
19:09:08 <idnar> okay, fixed all my deps!
19:09:36 Kaivo joins (~Kaivo@104-200-86-99.mc.derytele.com)
19:09:48 × _noblegas quits (uid91066@gateway/web/irccloud.com/x-sdhgdpxkudokvdwz) (Quit: Connection closed for inactivity)
19:10:01 × guest7682358928 quits (c9dbe9a1@gateway/web/cgi-irc/kiwiirc.com/ip.201.219.233.161) (Ping timeout: 265 seconds)
19:10:04 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
19:10:45 × Rudd0 quits (~Rudd0@185.189.115.103) (Ping timeout: 240 seconds)
19:10:55 my_name_is_not_j joins (mynameisno@gateway/shell/matrix.org/x-vnqnlgicwqzslism)
19:11:00 <harovali> aveltras: just out of curiosity, imagine you could cast a symbol into the string, and there are the operations you need. Would you need to 'intern' the symbol back into ?
19:12:06 <monochrom> The problem with that is that the direction <term-level string -> type-level symbol> is dynamic, not static.
19:12:12 <aveltras> the use case is the following
19:12:16 <aveltras> when end user calls
19:12:17 <aveltras> mkUser & prop @"test-field" True
19:12:24 elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
19:12:29 <aveltras> transform the lookup to "_testFiekd"
19:12:34 <monochrom> The manifestation being you incur an existential type that uses the KnownSymbol constraint.
19:12:40 <aveltras> i have the underscore added with AppendSymbol already
19:13:02 <aveltras> i think it's doable with a recursive type family
19:14:07 <aveltras> in that context
19:14:09 <aveltras> https://www.irccloud.com/pastebin/CH0Hbfku/
19:14:26 usr25 joins (~usr25@unaffiliated/usr25)
19:15:55 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
19:16:12 <my_name_is_not_j> Hello, I am new and I joined since I am struggling with Haskell syntax and things. I am using the Color datatype here (https://hackage.haskell.org/package/xlsx-0.8.2/docs/Codec-Xlsx-Types-StyleSheet.html#t:Color) and trying to use the `_colorARGB` constructor, but I can't seem to get it to work. I am currently doing `color = _colorARGB "00110000"` and it says it expects a `Color` instead of `Maybe Text`, but the
19:16:12 <my_name_is_not_j> documentation says `Maybe Text`..
19:16:32 jpds joins (~jpds@gateway/tor-sasl/jpds)
19:17:04 <aveltras> you need to use _colorARGB on a Color data structure
19:17:06 <my_name_is_not_j> * Hello, I am new and I joined since I am struggling with Haskell syntax and things. I am using the Color datatype here (https://hackage.haskell.org/package/xlsx-0.8.2/docs/Codec-Xlsx-Types-StyleSheet.html#t:Color) and trying to use the `_colorARGB` constructor, but I can't seem to get it to work. I am currently doing `color:: Color; color = _colorARGB "00110000"` and it says it expects a `Color` instead of `Maybe
19:17:07 <my_name_is_not_j> Text`, but the documentation says `Maybe Text`..
19:17:11 <aveltras> here you are only using it on a text
19:17:44 <my_name_is_not_j> Doesn't `_colorARGB` give me a Color data structure when I give Maybe Text as an argument?
19:17:44 <merijn> my_name_is_not_j: Are you sure the version you're using and documentation you're looking at are the same?
19:17:51 <my_name_is_not_j> I thought that was happening
19:18:04 <aveltras> no, _colorARGB enables you to get the Maybe Text out of the Color
19:18:09 <aveltras> it's not a constructor
19:18:38 nhs joins (~nhs@c-71-238-81-158.hsd1.or.comcast.net)
19:18:44 heatsink joins (~heatsink@2600:1700:bef1:5e10:8513:7e38:6670:2969)
19:18:55 <aveltras> if you want to build a color you can do the following
19:18:59 <my_name_is_not_j> <merijn "my_name_is_not_joe: Are you sure"> I am not sure. I believed the documentation up to date... How would I make sure of this? I am just using the latest version in Haskell without anything to specify the version
19:19:14 <my_name_is_not_j> So I think the latest version would be used
19:19:43 <aveltras> Color {_colorAutomatic = Nothing, _colorTheme = Nothing, _colorTint = Nothing, _colorARGB = "00110000"}
19:19:56 <my_name_is_not_j> `_colorARGB` is not a constructor? It seems it is listed under the heading "Constructors" though...? I have no idea
19:20:07 × Tops2 quits (~Tobias@dyndsl-095-033-020-088.ewe-ip-backbone.de) (Read error: Connection reset by peer)
19:20:12 <aveltras> no its a field of the record
19:20:20 <aveltras> since Color has a Default instance
19:20:24 <aveltras> you could also just do
19:20:35 <aveltras> def {_colorARGB = "00110000"}
19:21:22 <aveltras> the constructor is Color
19:21:50 <dolio> Constructor names cannot start with underscores.
19:22:42 <my_name_is_not_j> <dolio "Constructor names cannot start w"> Wow! I didn't know that
19:22:45 <my_name_is_not_j> Thank you to everyone!
19:24:09 × heatsink quits (~heatsink@2600:1700:bef1:5e10:8513:7e38:6670:2969) (Ping timeout: 258 seconds)
19:24:45 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
19:25:54 × pgib quits (~textual@lmms/pgib) (Quit: 00 PC LOAD LETTER)
19:26:00 <my_name_is_not_j> Is the use of Default not like this: `Color def {_colorARGB = "00110000"}`?
19:26:31 <aveltras> no, just use def
19:26:45 <aveltras> font prefix with Color
19:27:06 <my_name_is_not_j> font prefix?
19:27:10 <aveltras> the compiler will already know you are asking for a Color data type because you're using _colorARGB juste after
19:27:14 × soft-warm quits (4408f588@ip68-8-245-136.sd.sd.cox.net) (Quit: Ping timeout (120 seconds))
19:27:16 <aveltras> don't prefix*
19:28:08 soft-warm joins (4408f588@ip68-8-245-136.sd.sd.cox.net)
19:28:20 <aveltras> you also need a Just before the value which i missed earlier
19:28:26 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
19:28:29 <aveltras> def {_colorARGB = Just "00110000"}
19:29:02 <my_name_is_not_j> Yes it works, thank you!
19:29:50 geekosaur joins (82650c7c@130.101.12.124)
19:30:02 jpds joins (~jpds@gateway/tor-sasl/jpds)
19:30:24 × mmmattyx quits (uid17782@gateway/web/irccloud.com/x-lvhktabkcjtcvpoe) (Quit: Connection closed for inactivity)
19:36:04 × ulidtko quits (~ulidtko@31.133.98.234) (Quit: FIN)
19:36:24 hackage product-profunctors 0.11.0.2 - product-profunctors https://hackage.haskell.org/package/product-profunctors-0.11.0.2 (tomjaguarpaw)
19:36:58 harovali parts (~user@r167-56-43-57.dialup.adsl.anteldata.net.uy) ("ERC (IRC client for Emacs 27.1)")
19:37:42 × Arguggi quits (~Arguggi__@arguggi-do.arguggi.co.uk) (Quit: Bye)
19:39:09 <exarkun> are State / StateT useful when there are intermediate values before the final state?
19:41:48 × geekosaur quits (82650c7c@130.101.12.124) (Quit: Ping timeout (120 seconds))
19:42:08 × soft-warm quits (4408f588@ip68-8-245-136.sd.sd.cox.net) (Quit: Ping timeout (120 seconds))
19:42:16 <davean> exarkun: can you explain what you mean by that sequence of words?
19:42:53 geekosaur joins (82650c7c@130.101.12.124)
19:43:11 <exarkun> I can try, anyway
19:44:25 × conal quits (~conal@64.71.133.70) (Ping timeout: 240 seconds)
19:45:08 <exarkun> Right now I have a function that returns `IO (IO (Either [B.ByteString] SomeResult))`. The outer IO is for creating an IORef to track internal state. The inner IO evaluates to Left a bunch of times and then Right when there's no more data.
19:46:08 <exarkun> The Left values are meant to be consumed as they're produced (they don't all fit in memory)
19:46:35 <merijn> exarkun: That sounds like a job for a streaming library like conduit?
19:46:41 <exarkun> So the original question is to do with replacing the outer IO and the IORef with State / StateT
19:47:12 <exarkun> merijn: yea, it might be. State seems simpler so I wouldn't mind using that instead, but maybe it's _too_ simple?
19:47:47 <merijn> exarkun: Well "get a bunch of bytestring chunks that don't fit into memory while building/computing a results" is the sorta thing all these streaming libraries are designed for? :p
19:47:53 conal joins (~conal@194.180.179.172)
19:47:59 <merijn> exarkun: What are you computing/parsing from those ByteString?
19:48:35 <merijn> (and what are you using to do said parsing/computing)
19:49:01 <exarkun> It's an encryption/erasure coding scheme - not my invention, but also pretty obscure (only one implementation that I know of).
19:49:09 × ixaxaar quits (~ixaxaar@49.207.210.215) (Ping timeout: 256 seconds)
19:49:25 <merijn> exarkun: And you just have some fold or whatever?
19:49:38 <exarkun> So the processing is almost all my code, sitting on top of a couple primitives like Crypto.Cipher.AES128.ctr and Codec.FEC.enFEC
19:50:11 <exarkun> The code ends up looking a lot more complicated than "some fold" but that might be down to my inexperience :)
19:50:49 acidjnk_new joins (~acidjnk@p200300d0c722c49675ee473ab8e6650f.dip0.t-ipconnect.de)
19:51:09 <exarkun> It's more like a map now I guess? But I might have an insufficient understanding of folds, too.
19:53:20 <merijn> ah, more like a scan
19:54:15 <exarkun> ah, yea, I think so
19:54:30 <texasmynsted> I would like to immediately exit if the branch is not correct. Then try the rest of the processes, exiting if bad things happen. Later perhaps try to recover if bad things happen...
19:54:48 <texasmynsted> In any case, this looks awkward https://gist.github.com/mmynsted/ed4d63bf5b88694e39365c407d0bb37e
19:54:48 <merijn> exarkun: Basically, with conduit you have "ConduitT a b m s" which is "something that is fed 'a's and produces 'b's, with possible effects in 'm'"
19:55:13 × fendor_ quits (~fendor@178.115.130.101.wireless.dyn.drei.com) (Remote host closed the connection)
19:55:38 <texasmynsted> Is this a good way to handle the exception? See checkBranch. It feels very procedural.
19:55:55 <merijn> exarkun: And you'd combine, like "sourceFile :: MonadResource m => FilePath -> ConduitT i ByteString m ()" (that is, something producing ByteString chunks) and compose it with ctr which you could give to, like, https://hackage.haskell.org/package/conduit-1.3.4/docs/Data-Conduit-Combinators.html#v:mapAccumWhile
19:57:16 <exarkun> Huh, interesting
19:57:17 <merijn> exarkun: 's' would be your IV
19:57:41 <merijn> exarkun: There's also things like combinators for rechunking ByteString into chunks of the right size
19:57:51 <merijn> (if you need a certain block size)
19:57:57 exarkun nods
19:58:28 fendor joins (~fendor@178.115.130.101.wireless.dyn.drei.com)
19:59:27 <merijn> exarkun: The implementation is a sorta CPS style where it reads a chunk and pass that down the pipeline until you "get stuck" needing more input, at which point it reads another chunk, so if you're reading, say, 4KB chunks you'll have at most 1 chunk == 4 KB "too much" in memory
20:00:45 <merijn> exarkun: the whole loop of feeding the new 's' (or in your case IV) is then handled by the implementation of mapAccumWhile
20:01:55 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1)
20:02:47 × tsrt^ quits (tsrt@ip98-184-89-2.mc.at.cox.net) ()
20:03:00 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
20:03:22 jpds joins (~jpds@gateway/tor-sasl/jpds)
20:05:48 <texasmynsted> No suggestions?
20:06:18 <merijn> texasmynsted: I mean, it doesn't look that awkward to me?
20:06:33 <merijn> I mean, what else are you gonna do?
20:06:45 <merijn> texasmynsted: Oh, actually
20:07:18 <merijn> You could rewrite it as "when ($(gitBranch) /= "master") $ throwM BadBranchException"
20:07:23 <merijn> But that's minor
20:07:35 <merijn> Also, you only need MonadThrow to throw, not MonadCatch :p
20:08:03 <texasmynsted> okay.
20:08:40 <ephemient> odd to see `"master" == $(gitBranch)` which looks like a compile-time constant though
20:09:10 <texasmynsted> it is
20:09:28 <exarkun> merijn: I think that all makes sense. Thanks.
20:09:29 <texasmynsted> it is pulled it with Template haskell from the GitRev module
20:10:47 geyaeb_ joins (~geyaeb@gateway/tor-sasl/geyaeb)
20:11:33 × shatriff quits (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
20:11:49 shatriff joins (~vitaliish@176-52-216-242.irishtelecom.com)
20:12:01 <texasmynsted> idea is to keep me from deploying from the wrong branch
20:12:04 <texasmynsted> thank you merijn
20:12:13 × geyaeb quits (~geyaeb@gateway/tor-sasl/geyaeb) (Ping timeout: 268 seconds)
20:12:56 <ephemient> maybe compile-time assert then
20:15:23 <texasmynsted> ephemient: What does that mean?
20:16:01 <merijn> texasmynsted: Throw the exception at compile time
20:17:06 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
20:17:08 soft-warm joins (4408f588@ip68-8-245-136.sd.sd.cox.net)
20:17:45 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
20:18:39 elfets_ joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
20:19:07 <texasmynsted> hmm. That brings up an important flaw in my thinking.
20:19:37 <ephemient> compileAssertBranch b = do branchName <- runIO readProcess "git" ["rev-parse", "--symbolic-full-name", "HEAD"] ""; when (branchName /= "refs/heads/master\n") $ reportError "wrong branch"
20:19:43 <ephemient> $(compileAssertBranch)
20:21:16 <texasmynsted> I wonder what happens if I compile this executable, one of two in the project, on the correct branch, then later change branches and compile the other executable.
20:21:55 <texasmynsted> Will branch name change in the deployment code and thus require re-build?
20:22:25 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 276 seconds)
20:23:02 <texasmynsted> ephemient: Where would that assertion go?
20:23:07 <ephemient> no, you have added a dependency on external state that GHC/Cabal/etc. does not track
20:23:40 <texasmynsted> So basically I must check at run-time
20:23:43 <geekosaur> should this even be a compile time check?
20:24:06 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:a0fa:861f:7d78:346f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:24:10 <ephemient> well, it originally was a compile-time check, just convoluted (potentially produces a binary that does nothing but error)
20:24:19 <ephemient> IMO failing to compile would be better than that
20:24:27 <texasmynsted> It is fine to check at compile time on the other executable, but I think this deployment must check at run-time.
20:24:31 <ephemient> but yeah there's a good chance the concept is just flawed
20:25:46 <texasmynsted> They other executable uses the same lib/module to produce a file containing the active hash, etc. That should be fine at compile time. This is not fine at compile time.
20:25:54 <ephemient> you can use `addDependentFile` to tell GHC that compiling this file depends on another file, e.g. ".git/HEAD" - but that won't work in detached git working trees (e.g. git worktree)
20:26:10 <merijn> Or when someone clones your git repo in Mercurial :p
20:26:50 <ephemient> branch name is just a name anyway, I think using it for anything other than stamping is flawed
20:26:51 <merijn> (I'm looking at you, old cabal-install bootstrap shell script! >:( )
20:27:15 <texasmynsted> so "compileAssertBranch b = do branchName <- runIO readProcess "git" ["rev-parse", "--symbolic-full-name", "HEAD"] ""; when (branchName /= "refs/heads/master\n") $ reportError "wrong branch"" would be a compile time condition. This looks useful for other things.
20:28:26 nbloomf joins (~nbloomf@2600:1700:ad14:3020:24d0:e3f9:2a15:71ae)
20:28:28 <texasmynsted> Hmm. It is just a name. I wonder if I can check if the current branch is the parent of all commits rather than looking for the name "master"
20:28:38 heatsink joins (~heatsink@2600:1700:bef1:5e10:8513:7e38:6670:2969)
20:29:32 <merijn> I'm imagining Jeff Goldblum, right now
20:29:45 <texasmynsted> heh
20:30:03 dwt joins (~dwt@c-98-200-58-177.hsd1.tx.comcast.net)
20:30:39 <merijn> https://media0.giphy.com/media/mCClSS6xbi8us/giphy.gif
20:31:53 napping joins (~brandon@174-20-93-137.mpls.qwest.net)
20:32:12 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
20:32:21 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
20:32:29 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
20:32:46 × conal quits (~conal@194.180.179.172) (Quit: Computer has gone to sleep.)
20:34:12 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
20:34:37 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
20:38:29 <shiraeeshi> merjin: > exarkun: 's' would be your IV
20:38:33 <shiraeeshi> what's IV?
20:40:07 <geekosaur> not related to Haskell. they're building a Conduit over an encrypted stream, IV is related to encryption
20:40:31 conal joins (~conal@64.71.133.70)
20:42:30 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
20:42:31 × Quarl quits (~Quarl@h-155-4-128-37.NA.cust.bahnhof.se) (Read error: Connection reset by peer)
20:42:33 <shiraeeshi> oh, ok
20:43:47 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
20:44:19 erh^ joins (erh@ip98-184-89-2.mc.at.cox.net)
20:44:25 <shapr> shiraeeshi: you're back! found something neat you want to write?
20:47:00 × Narinas quits (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
20:47:46 Narinas joins (~Narinas@189.223.62.254.dsl.dyn.telnor.net)
20:49:06 × heatsink quits (~heatsink@2600:1700:bef1:5e10:8513:7e38:6670:2969) (Remote host closed the connection)
20:51:30 × lockdown quits (~lockdown@unaffiliated/lockdown) (Quit: leaving)
20:52:03 × mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Read error: Connection reset by peer)
21:00:26 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
21:06:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
21:08:28 mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh)
21:08:45 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:09:54 hackage differential 0.2.0.1 - Finds out whether an entity comes from different distributions (statuses). https://hackage.haskell.org/package/differential-0.2.0.1 (GregorySchwartz)
21:11:33 heatsink joins (~heatsink@2600:1700:bef1:5e10:8513:7e38:6670:2969)
21:11:52 × acidjnk_new quits (~acidjnk@p200300d0c722c49675ee473ab8e6650f.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
21:14:08 × son0p quits (~son0p@181.58.39.182) (Quit: leaving)
21:15:59 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
21:17:36 rj joins (~x@gateway/tor-sasl/rj)
21:18:36 × jle` quits (~mstksg@unaffiliated/mstksg) (Ping timeout: 240 seconds)
21:20:05 charukiewicz joins (~charukiew@irouteince04.i.subnet.rcn.com)
21:20:15 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 246 seconds)
21:22:27 d3od joins (~nickmeno3@78-1-81-107.adsl.net.t-com.hr)
21:22:42 × heatsink quits (~heatsink@2600:1700:bef1:5e10:8513:7e38:6670:2969) (Remote host closed the connection)
21:23:50 × jonathanx quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Ping timeout: 256 seconds)
21:23:59 fendor_ joins (~fendor@178.165.131.204.wireless.dyn.drei.com)
21:24:15 qwerty2o joins (~qwerty2o@89-138-173-138.bb.netvision.net.il)
21:24:24 <qwerty2o> heyo
21:24:40 <qwerty2o> active?
21:25:09 × nhs quits (~nhs@c-71-238-81-158.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
21:26:00 ski glances around nervously
21:26:56 × rj quits (~x@gateway/tor-sasl/rj) (Quit: rj)
21:27:33 × fendor quits (~fendor@178.115.130.101.wireless.dyn.drei.com) (Ping timeout: 264 seconds)
21:28:04 × denisse quits (~spaceCat@gateway/tor-sasl/alephzer0) (Ping timeout: 268 seconds)
21:28:24 rj joins (~x@gateway/tor-sasl/rj)
21:30:29 denisse joins (~spaceCat@gateway/tor-sasl/alephzer0)
21:31:35 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0)
21:32:32 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
21:33:19 × p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core)
21:33:38 p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
21:35:21 × hoobop1 quits (~hoobop@217.146.82.202) (Remote host closed the connection)
21:36:48 nhs joins (~nhs@c-71-238-81-158.hsd1.or.comcast.net)
21:37:33 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
21:39:14 × Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
21:39:39 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
21:40:04 peeja joins (~peeja@s91904426.blix.com)
21:40:49 × nineonin_ quits (~nineonine@50.216.62.2) (Ping timeout: 265 seconds)
21:40:50 Anandamide joins (49a90352@c-73-169-3-82.hsd1.co.comcast.net)
21:40:54 hackage persistent-sqlite 2.11.1.0 - Backend for the persistent library using sqlite3. https://hackage.haskell.org/package/persistent-sqlite-2.11.1.0 (parsonsmatt)
21:41:12 frozenErebus joins (~frozenEre@94.128.81.133)
21:41:15 ski looks at qwerty2o
21:42:07 <qwerty2o> ski lol. im trying to think how to implement a numeric xor
21:42:28 <qwerty2o> like in python you could do 2 ^ 3 and 1 will come out
21:42:31 <ski> numeric, in which sense ?
21:42:36 <qwerty2o> how could that be done in hs?
21:42:47 Anandamide22 joins (49a90352@c-73-169-3-82.hsd1.co.comcast.net)
21:43:02 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0)
21:43:11 <ski> > 2 `xor` 3
21:43:13 <lambdabot> 1
21:43:21 son0p joins (~son0p@181.136.122.143)
21:43:24 × Anandamide22 quits (49a90352@c-73-169-3-82.hsd1.co.comcast.net) (Client Quit)
21:43:31 <ski> @index xor
21:43:31 <lambdabot> Data.Bits, Foreign, Foreign.Safe
21:43:52 <qwerty2o> ski, variable not in scope
21:44:03 <ski> import Data.Bits
21:44:24 <ski> if you want to implement it yourself, you could do that, as well, though ..
21:45:22 Kipras_ joins (~Kipras@78-56-235-39.static.zebra.lt)
21:45:22 ski idly wonders whether `(^^)' uses `div' on negative exponents
21:46:49 <qwerty2o> ski, ok thank you. didnt get to imports yet tho so dont really know how to proceed
21:46:58 <qwerty2o> but ill get to it later then
21:47:16 chenshen joins (~chenshen@2620:10d:c090:400::5:ccd9)
21:47:32 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
21:48:41 × geekosaur quits (82650c7c@130.101.12.124) (Quit: Connection closed)
21:49:55 hackage unix-simple 0.1.0.0 - Straightforward bindings to the posix API https://hackage.haskell.org/package/unix-simple-0.1.0.0 (isd)
21:50:48 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
21:50:52 <monochrom> ski: It probably doesn't matter because if n<0 then recip (x^(negate n))
21:52:04 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Client Quit)
21:52:31 <monochrom> But how would you implement bitwise xor yourself? Compute Int -> [Bool] and do xor on [Bool]?!
21:53:12 <monochrom> I mean yeah can be done but not a good use of one's time.
21:53:33 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
21:53:39 <ski> monochrom : i was thinking of `-1' as an infinite sequence of `1's, so both `0' and `-1' could perhaps be base cases, or something ..
21:53:59 conal joins (~conal@64.71.133.70)
21:54:02 <ski> qwerty2o : well, put the line `import Data.Bits' near the top of your source file
21:54:26 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
21:54:28 <monochrom> -1 being an infinite sequence of 1's lands you in p-adic land.
21:54:40 <ski> hehe, i was just thinking about that :p
21:55:11 <monochrom> I do not say that in a bad sense. I know a few mathematicians who consider it heaven and what God intends etc :)
21:57:11 <qwerty2o> ski, oh yeah i had a typo and thought i just didnt know how to do it
21:57:13 <qwerty2o> it works
21:57:16 <qwerty2o> ty
21:57:21 <merijn> Remind me, if I have a branch foo and I wanna merge master into foo, do I checkout foo and do "git merge master" or do I checkout master and "git merge foo" or does it not matter either way?
21:57:40 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Client Quit)
21:59:18 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
21:59:30 <ephemient> the result of the merge should be the same, but the first one is what you probably want (it'll create a merge message of "Merge branch 'master' into foo" and update the "foo" branch)
22:00:30 Rudd0 joins (~Rudd0@185.189.115.108)
22:00:36 <monochrom> merijn: checkout foo, git merge master.
22:01:12 <ephemient> if you did the second operation, you can recover from it (`git switch --force-create foo` to get back onto the "foo" branch with the current HEAD, `git reset master origin/master` to make master point to the expected thing again)
22:01:14 <monochrom> It matters. You are reading one of them and mutating the other.
22:01:28 <ephemient> and git commit --amend if you wanted to fix the commit message
22:01:55 <ephemient> but the tree objects would be the same, and the merge commit would be almost the same (it would just list the parents in the opposite order)
22:03:29 <ephemient> oh if there's merge conflicts the markers would be backwards too
22:04:24 hackage tasty-bench 0.2 - Featherlight benchmark framework https://hackage.haskell.org/package/tasty-bench-0.2 (Bodigrim)
22:05:13 <merijn> ephemient: tbh, that's more details than I care about :p I just need the bare minimum to fix my PRs to persistent :)
22:05:51 <merijn> For some reason they have some broken leftover state from using subrepos in the past that hg-git chokes on :\
22:06:06 × j2t quits (~user@84.122.202.215.dyn.user.ono.com) (Ping timeout: 246 seconds)
22:06:31 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
22:06:56 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:07:25 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
22:10:39 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
22:12:26 jle` joins (~mstksg@cpe-23-240-75-236.socal.res.rr.com)
22:12:26 × jle` quits (~mstksg@cpe-23-240-75-236.socal.res.rr.com) (Changing host)
22:12:26 jle` joins (~mstksg@unaffiliated/mstksg)
22:12:37 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
22:14:22 nineonine joins (~nineonine@50.216.62.2)
22:14:58 stef204 joins (~stef204@unaffiliated/stef-204/x-384198)
22:15:23 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
22:16:04 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Client Quit)
22:16:05 × d3od quits (~nickmeno3@78-1-81-107.adsl.net.t-com.hr) (Ping timeout: 240 seconds)
22:16:52 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
22:17:02 × p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Ping timeout: 258 seconds)
22:19:56 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
22:20:34 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
22:23:06 heatsink joins (~heatsink@2600:1700:bef1:5e10:8513:7e38:6670:2969)
22:23:53 miguel_clean parts (~Miguel@89-72-187-203.dynamic.chello.pl) ()
22:26:53 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
22:27:47 × heatsink quits (~heatsink@2600:1700:bef1:5e10:8513:7e38:6670:2969) (Ping timeout: 260 seconds)
22:28:00 jamm_ joins (~jamm@unaffiliated/jamm)
22:28:55 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
22:32:22 × jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 258 seconds)
22:32:35 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
22:32:49 × michalz quits (~user@185.246.204.48) (Remote host closed the connection)
22:33:13 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0)
22:33:29 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds)
22:34:16 conal joins (~conal@64.71.133.70)
22:35:37 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
22:39:25 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
22:41:33 borne joins (~fritjof@2a06:8782:ffbb:1337:a53:e188:6f13:d1a)
22:42:25 hackage hs-aws-lambda 0.1.0.1 - A modern and easy-to-use wrapper for Docker-based Lambda implementations https://hackage.haskell.org/package/hs-aws-lambda-0.1.0.1 (RobertFischer)
22:43:07 × nbloomf quits (~nbloomf@2600:1700:ad14:3020:24d0:e3f9:2a15:71ae) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:46:00 × pera quits (~pera@unaffiliated/pera) (Ping timeout: 246 seconds)
22:49:57 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:51:55 × jollygood2 quits (~bc8134e3@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout))
22:54:45 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
22:57:17 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
22:59:20 × hekkaidekapus] quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
23:00:12 hekkaidekapus] joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
23:00:31 × shatriff quits (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
23:01:10 earthy joins (~arthurvl@deban2.xs4all.space)
23:01:10 shatriff joins (~vitaliish@176-52-216-242.irishtelecom.com)
23:01:12 conal joins (~conal@64.71.133.70)
23:02:00 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
23:02:47 × danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 260 seconds)
23:04:05 × frozenErebus quits (~frozenEre@94.128.81.133) (Ping timeout: 240 seconds)
23:04:18 × shatriff quits (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
23:04:31 shatriff joins (~vitaliish@176-52-216-242.irishtelecom.com)
23:04:46 × kupi quits (uid212005@gateway/web/irccloud.com/x-aaegxzeymcrafmxs) (Quit: Connection closed for inactivity)
23:06:05 × Kipras_ quits (~Kipras@78-56-235-39.static.zebra.lt) (Ping timeout: 240 seconds)
23:06:48 × xsperry quits (~as@unaffiliated/xsperry) (Ping timeout: 272 seconds)
23:07:04 × dhouthoo quits (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0)
23:08:07 × napping quits (~brandon@174-20-93-137.mpls.qwest.net) (Quit: leaving)
23:09:49 × hekkaidekapus] quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
23:12:10 wildlander joins (~wildlande@unaffiliated/wildlander)
23:13:05 × Katarushisu quits (~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net) (Ping timeout: 240 seconds)
23:13:39 hekkaidekapus] joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
23:15:29 Katarushisu joins (~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net)
23:15:45 × alx741 quits (~alx741@186.178.110.176) (Quit: alx741)
23:16:07 HarveyPwca joins (~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net)
23:16:21 hololeap joins (~hololeap@unaffiliated/hololeap)
23:22:29 guest7682358928 joins (a8c4c9de@gateway/web/cgi-irc/kiwiirc.com/ip.168.196.201.222)
23:22:37 metreo parts (~Thunderbi@unaffiliated/metreo) ()
23:22:45 × Guest69009 quits (~textual@zrcout.mskcc.org) (Ping timeout: 264 seconds)
23:24:34 heatsink joins (~heatsink@2600:1700:bef1:5e10:8513:7e38:6670:2969)
23:24:45 Alleria joins (~textual@zrcout.mskcc.org)
23:25:08 Alleria is now known as Guest65369
23:29:01 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:29:26 × heatsink quits (~heatsink@2600:1700:bef1:5e10:8513:7e38:6670:2969) (Ping timeout: 264 seconds)
23:29:34 × son0p quits (~son0p@181.136.122.143) (Quit: Lost terminal)
23:32:57 × tmciver quits (~tmciver@cpe-172-101-40-226.maine.res.rr.com) (Ping timeout: 264 seconds)
23:34:27 tmciver joins (~tmciver@cpe-172-101-40-226.maine.res.rr.com)
23:34:51 heatsink joins (~heatsink@2600:1700:bef1:5e10:8513:7e38:6670:2969)
23:35:02 × rj quits (~x@gateway/tor-sasl/rj) (Quit: rj)
23:38:45 × ystael quits (~ystael@209.6.50.55) (Ping timeout: 240 seconds)
23:40:31 ystael joins (~ystael@209.6.50.55)
23:44:54 dyniec[m] joins (dyniecmatr@gateway/shell/matrix.org/x-foygrhwmdcxagcno)
23:49:05 × evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Quit: ZNC 1.8.2 - https://znc.in)
23:50:45 evanjs joins (~evanjs@075-129-098-007.res.spectrum.com)
23:52:57 tromp joins (~tromp@dhcp-077-249-230-040.chello.nl)
23:53:25 × gienah quits (~mwright@gentoo/developer/gienah) (Quit: leaving)
23:54:54 hackage hs-aws-lambda 0.1.0.2 - A modern and easy-to-use wrapper for Docker-based Lambda implementations https://hackage.haskell.org/package/hs-aws-lambda-0.1.0.2 (RobertFischer)
23:55:18 × hyperisco quits (~hyperisco@104-195-141-253.cpe.teksavvy.com) (Ping timeout: 246 seconds)
23:57:51 × tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 258 seconds)

All times are in UTC on 2021-02-05.