2021/11/30

2021-11-30 00:00:17 +0100 <EvanR> "I don't often implement text editors, but when I do, I do it in Idris"
2021-11-30 00:00:20 +0100 <dsal> In any case, step one: Figure out how to represent your data as lines. Columns *may* be less of a pain, or worse.
2021-11-30 00:00:53 +0100 <monochrom> Ugh this brings back fond memories of BASIC and the "renumber" command.
2021-11-30 00:00:57 +0100 <xcmw> I'm not making a text editor, just working on an LSP server.
2021-11-30 00:01:45 +0100 <EvanR> clearly line numbers should be Rational
2021-11-30 00:01:48 +0100pfurla(~pfurla@2804:14d:5c81:4104:f9a9:132:7129:df1c) (Quit: gone to sleep. ZZZzzz…)
2021-11-30 00:02:49 +0100 <zero> can we easily create something like (IO "somestring") ?
2021-11-30 00:03:06 +0100 <EvanR> :k IO "somestring"
2021-11-30 00:03:07 +0100 <lambdabot> error:
2021-11-30 00:03:07 +0100 <lambdabot> • Expected a type, but ‘"somestring"’ has kind ‘GHC.Types.Symbol’
2021-11-30 00:03:07 +0100 <lambdabot> • In the first argument of ‘IO’, namely ‘"somestring"’
2021-11-30 00:03:15 +0100 <EvanR> :kk IO
2021-11-30 00:03:18 +0100 <EvanR> :k IO
2021-11-30 00:03:18 +0100 <lambdabot> * -> *
2021-11-30 00:03:31 +0100 <EvanR> "somestring" is not a *
2021-11-30 00:03:39 +0100 <monochrom> Is your (IO "somestring") a type? Is it a term?
2021-11-30 00:03:39 +0100 <geekosaur> % :set -XPolyKinds
2021-11-30 00:03:41 +0100 <Axman6> zero: what value has type "something"?
2021-11-30 00:03:41 +0100 <yahb> geekosaur:
2021-11-30 00:03:47 +0100 <geekosaur> % :k IO
2021-11-30 00:03:47 +0100 <yahb> geekosaur: * -> *
2021-11-30 00:04:00 +0100 <Axman6> ?? :: "something"
2021-11-30 00:04:00 +0100 <lambdabot> :: "something"
2021-11-30 00:04:07 +0100 <Axman6> o.O
2021-11-30 00:04:11 +0100 <zero> what?
2021-11-30 00:04:13 +0100 <EvanR> lol
2021-11-30 00:04:28 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702) (Ping timeout: 264 seconds)
2021-11-30 00:04:29 +0100 <EvanR> try again, what do you mean by IO "somestring"
2021-11-30 00:04:50 +0100jeetelongname(~jeet@148.197.248.54)
2021-11-30 00:04:50 +0100 <zero> nvm, i was thinking badly
2021-11-30 00:04:51 +0100 <dsal> Wouldn't DataKinds work?
2021-11-30 00:05:17 +0100 <Axman6> "something" isn't a type level String though
2021-11-30 00:05:35 +0100 <zero> i'm so confused by that
2021-11-30 00:06:13 +0100 <xcmw> zero what are you actually trying to do?
2021-11-30 00:07:17 +0100 <Hecate> % :k "Hello"
2021-11-30 00:07:17 +0100 <yahb> Hecate: GHC.Types.Symbol
2021-11-30 00:07:20 +0100 <Hecate> % :k "Hello/32"
2021-11-30 00:07:21 +0100 <yahb> Hecate: GHC.Types.Symbol
2021-11-30 00:08:01 +0100 <xcmw> IO "somestring" doesn't mean anything
2021-11-30 00:08:10 +0100 <dsal> Surely it means something.
2021-11-30 00:08:25 +0100 <EvanR> not with that attitude
2021-11-30 00:08:47 +0100 <monochrom> Dead horse.
2021-11-30 00:09:01 +0100 <xcmw> zero do you want pure "somestring" ?
2021-11-30 00:09:23 +0100 <xcmw> or do you want IO String ?
2021-11-30 00:09:37 +0100 <jeetelongname> An IO Type is nothing but the potential for a certain type afik, there is nothing to unwrap as nothing has happened (yet)
2021-11-30 00:09:56 +0100 <xcmw> or are you trying to do something insane with types?
2021-11-30 00:12:42 +0100xsperry(~xs@user/xsperry)
2021-11-30 00:13:17 +0100 <zero> i just needed pure
2021-11-30 00:13:56 +0100 <EvanR> :t pure "somestring"
2021-11-30 00:13:57 +0100 <lambdabot> Applicative f => f [Char]
2021-11-30 00:14:15 +0100 <EvanR> bollocks that didn't get clear anything up xD
2021-11-30 00:14:22 +0100 <EvanR> answer: IO String
2021-11-30 00:15:29 +0100 <zero> i was doing: do { x <- (smething :: IO String) ; ... pure r where r | null x = ... {{etcetera}} }
2021-11-30 00:17:43 +0100jbox(~jbox@2600:1700:2196:2060:75f5:b1ad:65ea:5c0a) (Changing host)
2021-11-30 00:17:43 +0100jbox(~jbox@user/jbox)
2021-11-30 00:18:23 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2021-11-30 00:20:53 +0100 <EvanR> variable naming question... you have IORefs holding your value. What do you call the ref variable
2021-11-30 00:21:15 +0100 <EvanR> what if you have multiple refs going on, what's the formula
2021-11-30 00:25:19 +0100 <monochrom> If there is only one, I use "v" for the ref, "x" for the value inside. This doesn't scale.
2021-11-30 00:26:09 +0100 <monochrom> Hrm let me find out what I did last time I had many of them.
2021-11-30 00:28:08 +0100masterbuilder(~user@user/masterbuilder) (Remote host closed the connection)
2021-11-30 00:28:34 +0100 <jackdk> I usually stick an R on the end or an r at the beginning
2021-11-30 00:28:54 +0100 <jackdk> (similarly e/b/d when writing reflex-frp code dealing with Event/Behavior/Dynamic)
2021-11-30 00:29:02 +0100 <EvanR> sold
2021-11-30 00:29:48 +0100 <zero> can i use guards inside a do let?
2021-11-30 00:30:06 +0100 <xcmw> I'm not sure that using ropes or some better data structure helps since the string isn't persisted. I just want to apply a list of edits (sorted so it can be done it a single pass) to a file.
2021-11-30 00:30:18 +0100 <boxscape_> zero yes
2021-11-30 00:31:01 +0100 <zero> :)
2021-11-30 00:33:16 +0100ozzymcduff(~mathieu@81-234-151-21-no94.tbcn.telia.com) (Ping timeout: 245 seconds)
2021-11-30 00:36:32 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:356c:6df7:ff7f:48a3) (Remote host closed the connection)
2021-11-30 00:36:35 +0100 <xcmw> I was think about using a mealy machine or something similar.
2021-11-30 00:37:11 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 00:42:02 +0100Lycurgus(~juan@98.4.112.204)
2021-11-30 00:42:44 +0100DNH(~DNH@2a02:8108:1100:16d8:58c0:b83a:3eea:a1cf)
2021-11-30 00:43:23 +0100danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-11-30 00:45:34 +0100jeetelongnameyeet
2021-11-30 00:48:02 +0100Erutuon(~Erutuon@user/erutuon)
2021-11-30 00:48:55 +0100yeetjeetelongname
2021-11-30 00:53:04 +0100max22-(~maxime@2a01cb0883359800172da6e8deefe185.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2021-11-30 00:57:16 +0100 <wz1000> The rope just gives you an efficient way to split your input as lines. Otherwise you're going to have to iterate through the entire string to look for line boundaries after applying each edit
2021-11-30 01:00:41 +0100machinedgod(~machinedg@24.105.81.50)
2021-11-30 01:04:45 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-11-30 01:05:04 +0100ubert(~Thunderbi@p200300ecdf0ba218e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-11-30 01:05:21 +0100ozzymcduff(~mathieu@81-234-151-21-no94.tbcn.telia.com)
2021-11-30 01:05:28 +0100matijja(~matijja@193.77.181.201) (Quit: ZNC 1.8.1 - https://znc.in)
2021-11-30 01:07:21 +0100 <EvanR> newtypes don't exist at runtime right, which means evaluating a newtype evaluates the contents right
2021-11-30 01:07:22 +0100FragByte_(~christian@user/fragbyte)
2021-11-30 01:07:32 +0100FragByte(~christian@user/fragbyte) (Ping timeout: 268 seconds)
2021-11-30 01:07:50 +0100FragByte_FragByte
2021-11-30 01:08:08 +0100 <EvanR> evaluate :: a -> IO a
2021-11-30 01:08:14 +0100matijja(~matijja@193.77.181.201)
2021-11-30 01:08:16 +0100 <monochrom> Yes.
2021-11-30 01:10:24 +0100hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8)
2021-11-30 01:11:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-30 01:12:28 +0100 <xcmw> wz1000: the edits will be sorted so I can do all of the edits in one pass.
2021-11-30 01:13:30 +0100 <dsal> Unless you pre-merge all the edits, I'm not sure how much easier that'll make things.
2021-11-30 01:13:43 +0100 <xcmw> What does pre-merge mean?
2021-11-30 01:14:24 +0100 <xcmw> It isn't possible to merge two edits
2021-11-30 01:14:56 +0100 <xcmw> It is but I won't make sense to
2021-11-30 01:15:22 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:356c:6df7:ff7f:48a3)
2021-11-30 01:16:53 +0100 <geekosaur> dsal, "non-overlapping" was part of the original question/spec
2021-11-30 01:17:00 +0100 <geekosaur> so merging won't make sense
2021-11-30 01:17:35 +0100 <xcmw> https://microsoft.github.io/language-server-protocol/specification#textEditArray
2021-11-30 01:18:04 +0100 <geekosaur> if it's going directly to output, this should be doable in a streaming fashion
2021-11-30 01:18:14 +0100 <xcmw> Yes
2021-11-30 01:19:01 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2021-11-30 01:19:01 +0100 <xcmw> What is the best way to go about that?
2021-11-30 01:19:09 +0100 <dsal> Oh, I missed that part. The problem does sound a bit interesting. One of the outputs of a patch application would need to renumber subsequent patches, right?
2021-11-30 01:19:34 +0100 <geekosaur> only if an edit can cause one line to become multiple, in this case
2021-11-30 01:19:57 +0100 <geekosaur> but that would make edits potentially overlapping so I'm assuming not
2021-11-30 01:20:10 +0100 <dsal> I'd think an edit could remove or add lines.
2021-11-30 01:20:21 +0100 <xcmw> All the positions are positions in the original file
2021-11-30 01:20:44 +0100 <geekosaur> that would be harder if the edits aren't one-for-one replacements
2021-11-30 01:21:07 +0100 <geekosaur> now you have to track what the position would have been without earlier edits
2021-11-30 01:21:22 +0100 <xcmw> The positions can be easily handled by making every position relative to previous one
2021-11-30 01:21:23 +0100 <geekosaur> instead of just streaming it as you go
2021-11-30 01:22:03 +0100 <xcmw> I think that would make it so you can still stream
2021-11-30 01:22:28 +0100Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-11-30 01:25:01 +0100 <awpr> if they're sorted and non-overlapping, there's no need to apply each one successively to the whole file; I expect you can progress through both the file and the edits jointly keeping track of the position. the problem of line/column numbers being broken by past edits only exists if you start over from the beginning of the file for each edit
2021-11-30 01:25:20 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
2021-11-30 01:25:27 +0100 <xcmw> Yes
2021-11-30 01:25:54 +0100pfurla(~pfurla@2804:14d:5c81:4104:f9a9:132:7129:df1c)
2021-11-30 01:25:55 +0100 <awpr> the other trick I've heard of for applying patches like this is to work in reverse: file positions don't change when you update things _after_ them
2021-11-30 01:26:05 +0100 <awpr> but that's probably more applicable to mutable, imperative data structures
2021-11-30 01:26:26 +0100dawdler(~dawdler@user/dawdler) (Ping timeout: 256 seconds)
2021-11-30 01:27:25 +0100 <xcmw> No need to reverse anything
2021-11-30 01:28:02 +0100 <jeetelongname> :t ***
2021-11-30 01:28:03 +0100 <lambdabot> error: parse error on input ‘***’
2021-11-30 01:28:10 +0100 <jeetelongname> :t (***)
2021-11-30 01:28:11 +0100 <lambdabot> Arrow a => a b c -> a b' c' -> a (b, b') (c, c')
2021-11-30 01:28:28 +0100 <xcmw> So should I use a state monad? Or is there some better more functional way do it?
2021-11-30 01:29:31 +0100wroathe(~wroathe@user/wroathe)
2021-11-30 01:30:00 +0100slac11392(~slack1256@191.125.99.65)
2021-11-30 01:30:16 +0100jeetelongname(~jeet@148.197.248.54) (Remote host closed the connection)
2021-11-30 01:31:43 +0100slack1256(~slack1256@191.126.99.210) (Read error: Connection reset by peer)
2021-11-30 01:32:01 +0100 <awpr> `State` seems reasonable enough to me, at least. `mapAccumL` is similar to `traverse`ing with `State`, too, if you prefer that sort of thing
2021-11-30 01:32:41 +0100jkaye(~jkaye@2601:281:8300:7530:7309:f677:c771:6123) (Ping timeout: 264 seconds)
2021-11-30 01:33:21 +0100dawdler(~dawdler@user/dawdler)
2021-11-30 01:33:28 +0100 <awpr> supposing you have the input as `Text`, maybe split it with `Data.Text.lines`, use `mapAccumL` over those consuming edits as long as they're on the current line, and use some manual recursion with `splitAt` to do each edit within the line?
2021-11-30 01:34:03 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net)
2021-11-30 01:34:41 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-11-30 01:35:08 +0100random-jellyfish(~random-je@user/random-jellyfish)
2021-11-30 01:37:50 +0100 <EvanR> are you reading the whole file in as a chunk of Text
2021-11-30 01:38:07 +0100 <EvanR> or trying to stream it
2021-11-30 01:38:50 +0100 <EvanR> with Lazy Text perhaps
2021-11-30 01:38:51 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-30 01:40:18 +0100 <xcmw> Currently I am loading the file as chunk of Text but that might change.
2021-11-30 01:41:55 +0100 <xcmw> It may end up being List Text instead
2021-11-30 01:42:21 +0100 <EvanR> that's effectively what lazy text is
2021-11-30 01:42:29 +0100 <EvanR> just hidden
2021-11-30 01:44:25 +0100 <xcmw> The whole file will be read into memory (for other reasons) before this code runs so lazyness won't matter
2021-11-30 01:44:59 +0100 <awpr> "lazy Text" is a different type from from "Text" -- effectively `newtype LazyText = LazyText [Text]`
2021-11-30 01:45:03 +0100 <EvanR> ok. Though once it is in memory, laziness will still potentially matter as you write the output incrementally
2021-11-30 01:45:34 +0100 <EvanR> I was just curious about the loading par
2021-11-30 01:45:43 +0100 <awpr> along with a whole polished API for dealing with it as one long sequence of characters, so you don't have to think about the list aspect separately
2021-11-30 01:45:53 +0100 <xcmw> I am actually writing this in Idris so the details of Haskell's Text doesn't matter
2021-11-30 01:46:28 +0100Guest17(~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed)
2021-11-30 01:46:29 +0100 <EvanR> that's so annoying xD
2021-11-30 01:46:50 +0100 <EvanR> a lot of details of a lot of haskell don't matter in that case xD
2021-11-30 01:47:01 +0100 <awpr> seems like a good thing to mention early on. I'm not sure I really understand what the overall question is, then
2021-11-30 01:47:39 +0100 <xcmw> I did mention it was in Idris earlier
2021-11-30 01:47:45 +0100 <EvanR> yeah I forgot lol
2021-11-30 01:48:21 +0100 <awpr> oh yeah, that is way up there in scrollback
2021-11-30 01:50:11 +0100random-jellyfish(~random-je@user/random-jellyfish) (Ping timeout: 256 seconds)
2021-11-30 01:50:35 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep)
2021-11-30 01:51:07 +0100 <xcmw> I think I will go with List Text with State, and splitAt if I can't think of anything more functional
2021-11-30 01:51:35 +0100 <EvanR> like, in idris, String is what Text is called right xD
2021-11-30 01:51:41 +0100 <xcmw> Yes
2021-11-30 01:51:47 +0100 <EvanR> which in retrospect, would be nice
2021-11-30 01:52:34 +0100 <awpr> the point of `splitAt` in what I wrote earlier was to take advantage of a fast implementation to skip straight to the next edit, instead of scanning over each character doing `0+1+1+1+1+1+1+...` until you reach the desired position
2021-11-30 01:53:42 +0100 <xcmw> The number of characters on a line is likely to be small so it won't matter.
2021-11-30 01:54:39 +0100 <EvanR> and that's why notepad.exe freezes up on some files xD
2021-11-30 01:55:07 +0100 <awpr> sure, if you don't care about the potential performance hit of visiting each character individually, then one giant `mapAccumL` can probably do it, with the accumulator being both the input file position (increasing) and the pending edits (being incrementally consumed)
2021-11-30 01:55:35 +0100 <awpr> assuming the string API has a `mapAccumL`, or a `traverse` that can be used with `State`
2021-11-30 01:56:02 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-11-30 01:58:07 +0100 <xcmw> I don't know how efficient Idris's splitAt is
2021-11-30 01:58:52 +0100 <EvanR> At least in older versions, even though strings are implemented as a buffer of chars
2021-11-30 01:59:31 +0100 <EvanR> all the support code for it operated on it as if it was [Char] and could only cons and uncons from the beginning. Reallocating everything if necessary xD
2021-11-30 02:00:02 +0100 <EvanR> splitAt would have been implemented in type safe code
2021-11-30 02:01:46 +0100 <xcmw> Idris just has drop and take
2021-11-30 02:01:48 +0100 <awpr> yeah, I don't even see an implementation of that or take/drop on GitHub. if it exists, it may or may not be faster in practice, but the point is it has the opportunity to be faster
2021-11-30 02:02:21 +0100 <xcmw> I think Idris complied with the chez backend use code points
2021-11-30 02:03:05 +0100 <xcmw> Which likely means that it has to go character by character anyways.
2021-11-30 02:03:14 +0100 <xcmw> https://github.com/idris-lang/Idris2/blob/523c0a6d7823d2b9a614d4a30efb52da015f9367/src/Libraries/D…
2021-11-30 02:03:56 +0100 <xcmw> take and drop are in Extra. They both call substr which is a primitve.
2021-11-30 02:04:36 +0100 <EvanR> ah prim__strSubstr
2021-11-30 02:04:39 +0100 <EvanR> cool stuff
2021-11-30 02:04:53 +0100ouro_boros(~ouroboros@2804:14c:65e4:93f6::1001)
2021-11-30 02:05:02 +0100 <dsal> I've never seen a substr I could use without the documentation open.
2021-11-30 02:05:26 +0100pgib(~textual@173.38.117.87)
2021-11-30 02:05:45 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-11-30 02:05:50 +0100 <EvanR> substr : (index : Nat) -> (len : Nat) -> (subject : String) -> String
2021-11-30 02:05:55 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2021-11-30 02:05:57 +0100 <EvanR> docs xD
2021-11-30 02:05:57 +0100 <awpr> yeah, Text uses a variable length encoding too and can't do constant-time splitting. but a hand-written FFI implementation of `splitAt` peeking at bits in a loop would certainly be faster than code that calls a higher-order function to visit each character and add 1 to a counter.
2021-11-30 02:06:41 +0100 <awpr> since `substr` is implemented by a primitive, it's probably a reasonably fast implementation
2021-11-30 02:07:13 +0100 <EvanR> yes but Nat is a list xD
2021-11-30 02:07:24 +0100 <EvanR> first it needs to fold that to an int
2021-11-30 02:08:08 +0100 <xcmw> Well it depends on the backend. String length in RefC, JS, and Chez are all different.
2021-11-30 02:08:52 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-30 02:09:54 +0100 <xcmw> I wonder if I could use something like parser combinators to do this in a functional way.
2021-11-30 02:10:09 +0100 <EvanR> hell yeah
2021-11-30 02:11:44 +0100burnsidesLlama(~burnsides@dhcp168-026.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-30 02:11:46 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-11-30 02:11:50 +0100 <EvanR> the remainder of the file is like the parser context
2021-11-30 02:12:14 +0100 <EvanR> how much is split off depends on the edit
2021-11-30 02:15:51 +0100alzgh(~alzgh@user/alzgh) (Remote host closed the connection)
2021-11-30 02:16:35 +0100 <EvanR> a section that is not edited would be returned to you as is
2021-11-30 02:17:54 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-11-30 02:19:03 +0100hololeap(~hololeap@user/hololeap)
2021-11-30 02:20:29 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-11-30 02:21:16 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 264 seconds)
2021-11-30 02:25:22 +0100nautical(~nautical@2601:602:900:1630::396f) (Quit: WeeChat 3.3)
2021-11-30 02:27:24 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2021-11-30 02:28:15 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-11-30 02:32:01 +0100acidjnk_new(~acidjnk@p200300d0c7271e72fcf154b5eecf3df6.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-11-30 02:33:28 +0100DNH(~DNH@2a02:8108:1100:16d8:58c0:b83a:3eea:a1cf) (Quit: Textual IRC Client: www.textualapp.com)
2021-11-30 02:34:34 +0100justsomeguy(~justsomeg@user/justsomeguy)
2021-11-30 02:37:38 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-30 02:37:38 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-30 02:37:38 +0100wroathe(~wroathe@user/wroathe)
2021-11-30 02:41:26 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-11-30 02:42:20 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-11-30 02:43:22 +0100Erutuon(~Erutuon@user/erutuon)
2021-11-30 02:46:10 +0100Feuermagier(~Feuermagi@user/feuermagier)
2021-11-30 02:47:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-30 02:47:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-30 02:47:16 +0100wroathe(~wroathe@user/wroathe)
2021-11-30 02:47:27 +0100hexologyhexology_
2021-11-30 02:47:51 +0100hexology_hexology__
2021-11-30 02:48:03 +0100Feuermagier_(~Feuermagi@154.28.188.22) (Ping timeout: 268 seconds)
2021-11-30 02:48:07 +0100hexology__hexology`
2021-11-30 02:48:12 +0100hexology`hexology_`
2021-11-30 02:48:23 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
2021-11-30 02:48:52 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
2021-11-30 02:48:56 +0100hexology_`hexology
2021-11-30 02:53:54 +0100ec_(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2021-11-30 03:03:54 +0100 <zero> i there a more alegant way to write this? https://paste.jrvieira.com/1638237824452
2021-11-30 03:07:09 +0100 <EvanR> honestly it looks good to me
2021-11-30 03:07:41 +0100 <dibblego> let z = x <|> y
2021-11-30 03:07:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 03:08:04 +0100 <EvanR> oh didn't see two x there
2021-11-30 03:08:20 +0100 <c_wraith> that... doesn't work
2021-11-30 03:08:56 +0100 <dibblego> oh yeah, wtf
2021-11-30 03:09:10 +0100 <c_wraith> I don't think there's an easy way to do that
2021-11-30 03:09:35 +0100 <c_wraith> You can have some sort of mess of newtype wrapping and unwrapping that will get you there, but it's not better than the if/then/else
2021-11-30 03:10:22 +0100 <boxscape_> :t \someIO y -> flip bool y <*> null =<< someIO -- arguably could be called elegant, but not a good idea
2021-11-30 03:10:23 +0100 <lambdabot> (Monad m, Foldable m) => m (m b) -> m b -> m b
2021-11-30 03:10:26 +0100 <dibblego> sorry was thinking of a different "base" library
2021-11-30 03:11:23 +0100 <c_wraith> boxscape_: that doesn't look right either. that m (m b) seems wrong.
2021-11-30 03:11:30 +0100 <boxscape_> erm
2021-11-30 03:12:09 +0100 <EvanR> yeesh
2021-11-30 03:12:37 +0100 <EvanR> no, zero didn't ask for ways to make it worse xD
2021-11-30 03:12:50 +0100 <boxscape_> c_wraith I think that's because there's no return in front of the if statement in the paste
2021-11-30 03:13:18 +0100 <c_wraith> boxscape_: well, it's an incomplete do block
2021-11-30 03:13:25 +0100 <boxscape_> :t \someIO y -> someIO >>= \x -> bool x y (null x) -- AFAICT the same as the paste, and same type
2021-11-30 03:13:26 +0100 <lambdabot> (Monad m, Foldable m) => m (m b) -> m b -> m b
2021-11-30 03:13:34 +0100 <dibblego> don't think so
2021-11-30 03:14:39 +0100 <boxscape_> :t \someIO y -> do {x <- someIO; if null x then y else x}
2021-11-30 03:14:39 +0100 <lambdabot> (Monad m, Foldable m) => m (m b) -> m b -> m b
2021-11-30 03:14:42 +0100 <EvanR> zero, if you want a combinator that replaces empty list with something, you could write it separately
2021-11-30 03:14:46 +0100 <EvanR> but it looks fine as is
2021-11-30 03:15:08 +0100 <c_wraith> boxscape_: right, you're making the result of the if the result of the block, but that's not what the paste does
2021-11-30 03:15:27 +0100 <c_wraith> boxscape_: the paste uses a let to bind the result of the if for further use in the block
2021-11-30 03:15:46 +0100 <boxscape_> c_wraith I was looking at an old version of the paste
2021-11-30 03:16:20 +0100 <boxscape_> (allowing the contents of a paste URL to change seems an odd design choice)
2021-11-30 03:17:12 +0100 <jackdk> :t \someIO y -> fromMaybe y . view (from (anon [] null)) <$> someIO
2021-11-30 03:17:13 +0100 <lambdabot> Functor f => f [a] -> [a] -> f [a]
2021-11-30 03:18:09 +0100lavaman(~lavaman@98.38.249.169)
2021-11-30 03:22:33 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-11-30 03:26:16 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702)
2021-11-30 03:27:54 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2021-11-30 03:28:26 +0100mmhat(~mmh@55d431d8.access.ecotel.net) (Quit: WeeChat 3.3)
2021-11-30 03:32:51 +0100 <zero> thanks everyone! it' pretty clear i should leave it as is :)
2021-11-30 03:35:05 +0100xff0x(~xff0x@2001:1a81:527f:8300:4a2b:7ccd:5352:f2b5) (Ping timeout: 264 seconds)
2021-11-30 03:35:51 +0100x88x88x(~cheeg@gateway/vpn/pia/x88x88x)
2021-11-30 03:35:55 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net)
2021-11-30 03:36:27 +0100 <jackdk> While not literally what you asked for, parsing it into a Maybe (NonEmpty a) might be nicer
2021-11-30 03:36:27 +0100xff0x(~xff0x@2001:1a81:52c5:f300:1fcf:1bc6:be0c:348e)
2021-11-30 03:40:38 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-11-30 03:42:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-11-30 03:42:50 +0100 <Square> Im exploring a bit here. I feel this example couldve worked, but it doesnt. Someone know if there is a way to make a type family work just as a parameterized type / a type function of one argument? https://paste.tomsmeding.com/ZQL8kHP6
2021-11-30 03:44:50 +0100 <boxscape_> Can you encode a quote in a template haskell expression? I.e. [qq| foo |] would be encoded something like `QuoteQ "qq" (UnboundVarE "foo")`?
2021-11-30 03:44:58 +0100 <boxscape_> at first glance I'm not seeing anything allowing this
2021-11-30 03:45:01 +0100 <lyxia> no
2021-11-30 03:45:05 +0100 <boxscape_> okay, thanks
2021-11-30 03:45:13 +0100 <boxscape_> (I was secretly hoping that it's impossible, makes my life easier)
2021-11-30 03:45:44 +0100 <lyxia> Square: keyword is defunctionalization, the stuff first-class-families and singletons are made of
2021-11-30 03:46:30 +0100 <Square> lyxia, ok. Thanks, ill google that
2021-11-30 03:46:51 +0100 <Cajun> first class families are very fun, singletons seem scary
2021-11-30 03:46:55 +0100 <boxscape_> Square https://typesandkinds.wordpress.com/2013/04/01/defunctionalization-for-the-win/
2021-11-30 03:47:04 +0100 <lyxia> also this but it's not implemented https://www.microsoft.com/en-us/research/uploads/prod/2019/03/unsaturated-type-families-icfp-2019.…
2021-11-30 03:47:16 +0100lavaman(~lavaman@98.38.249.169)
2021-11-30 03:47:20 +0100 <lyxia> rather, not in GHC yet
2021-11-30 03:47:40 +0100 <Cajun> isnt there something about dependent haskell allowing for unsaturated type families?
2021-11-30 03:48:13 +0100 <lyxia> yes it will have to figure that out
2021-11-30 03:48:18 +0100 <boxscape_> Cajun yes, the paper lyxia linked is very much in line with dependent haskell
2021-11-30 03:48:36 +0100 <boxscape_> "in line" as in "a stepping stone towards"
2021-11-30 03:49:03 +0100 <Square> Are you guys saying this isnt something possible in now (im on ghc 8.6) or that it might be possible in the future?
2021-11-30 03:49:17 +0100 <Square> -in
2021-11-30 03:50:09 +0100 <boxscape_> Square defunctionalization is possible now, but a bit annoying. Native unsaturated type families are only implemented in an experimental branch, and not currently accepted as coming into GHC, though they likely will at some point
2021-11-30 03:50:35 +0100 <Square> boxscape_, thanks
2021-11-30 04:07:10 +0100TranquilEcho(~grom@user/tranquilecho) (Quit: WeeChat 2.8)
2021-11-30 04:07:59 +0100jkaye(~jkaye@2601:281:8300:7530:a6c:9e86:10cd:6e96)
2021-11-30 04:10:35 +0100 <lyxia> Square: what your example would look like with fcf https://paste.tomsmeding.com/EPUcybwS
2021-11-30 04:11:13 +0100iqubic(~user@2601:602:9502:c70:6765:a5f:e5b9:6c69)
2021-11-30 04:16:23 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
2021-11-30 04:18:45 +0100 <iqubic> How many people here are doing Advent Of Code this year?
2021-11-30 04:19:41 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-11-30 04:20:24 +0100 <zero> me me me
2021-11-30 04:23:06 +0100 <iqubic> Nice!
2021-11-30 04:24:53 +0100td_(~td@94.134.91.97) (Ping timeout: 268 seconds)
2021-11-30 04:26:04 +0100td_(~td@muedsl-82-207-238-126.citykom.de)
2021-11-30 04:26:18 +0100 <boxscape_> I'm planning to do AoC
2021-11-30 04:27:13 +0100 <iqubic> Do you know if there's an IRC channel for discussing the event?
2021-11-30 04:29:12 +0100 <boxscape_> oh, right, the libera switch hadn't happened yet last time
2021-11-30 04:29:15 +0100 <boxscape_> I'm not aware of a channel
2021-11-30 04:29:33 +0100 <dsal> I see the same three channels as last year.
2021-11-30 04:29:47 +0100namkeleser(~namkelese@101.175.102.188)
2021-11-30 04:29:58 +0100 <boxscape_> which are those?
2021-11-30 04:30:17 +0100 <dsal> #adventofcode #adventofcode-help #adventofcode-spoilers
2021-11-30 04:30:17 +0100 <boxscape_> ah, #adventofcode in one word
2021-11-30 04:30:21 +0100 <boxscape_> I tried dashes before
2021-11-30 04:30:28 +0100 <boxscape_> thanks
2021-11-30 04:30:50 +0100 <iqubic> And I tried two hashes because that's what it last year on the old server.
2021-11-30 04:34:26 +0100hiruji(~hiruji@user/hiruji)
2021-11-30 04:35:20 +0100bollu(uid233390@id-233390.helmsley.irccloud.com)
2021-11-30 04:36:00 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-11-30 04:36:00 +0100hololeap_(~hololeap@user/hololeap)
2021-11-30 04:37:27 +0100fluffyballoon(~user@131.93.208.196)
2021-11-30 04:37:27 +0100fluffyballoon(~user@131.93.208.196) (Read error: Connection reset by peer)
2021-11-30 04:37:49 +0100nickdaly`(~user@131.93.208.196)
2021-11-30 04:38:34 +0100 <iqubic> Alright... so, Emacs' LSP mode has been working quite well for me, for the past while. But something seems to have updated and now it doesn't work anymore.
2021-11-30 04:40:08 +0100 <iqubic> No 'hie.yaml' found. Try to discover the project type!
2021-11-30 04:40:48 +0100 <dsal> I've never had it work. Sounds like it might be pretty cool. heh
2021-11-30 04:41:26 +0100deadmarshal(~deadmarsh@95.38.228.153)
2021-11-30 04:41:32 +0100jbox(~jbox@user/jbox) (Read error: Connection reset by peer)
2021-11-30 04:41:37 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2021-11-30 04:42:00 +0100mbuf(~Shakthi@122.174.165.234)
2021-11-30 04:42:27 +0100 <iqubic> It is cool, when it works.
2021-11-30 04:42:28 +0100 <iqubic> haskell-language-server-wrapper: : changeWorkingDirectory: does not exist (No such file or directory)
2021-11-30 04:42:35 +0100terrorjack(~terrorjac@static.3.200.12.49.clients.your-server.de)
2021-11-30 04:42:36 +0100 <iqubic> But something is wrong here and it isn't working.
2021-11-30 04:43:35 +0100Guest|70(~Guest|70@c-65-50-165-29.hs.gigamonster.net) (Ping timeout: 256 seconds)
2021-11-30 04:45:16 +0100jkaye(~jkaye@2601:281:8300:7530:a6c:9e86:10cd:6e96) (Ping timeout: 264 seconds)
2021-11-30 04:47:44 +0100boxscape_(~boxscape_@p4ff0bb6c.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-11-30 04:48:33 +0100nickdaly`(~user@131.93.208.196) (Quit: ERC (IRC client for Emacs 27.1))
2021-11-30 04:48:51 +0100nickdaly`(~user@131.93.208.196)
2021-11-30 04:48:58 +0100nickdaly`(~user@131.93.208.196) (Remote host closed the connection)
2021-11-30 04:52:38 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 04:54:59 +0100nickdaly`(~user@131.93.208.196)
2021-11-30 04:57:11 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-11-30 04:57:32 +0100nickdaly(45ce440a48@2604:bf00:561:2000::e2)
2021-11-30 04:57:45 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-30 05:00:09 +0100concrete-houses(~g@209.6.150.53)
2021-11-30 05:00:19 +0100nickdaly`(~user@131.93.208.196) (ERC (IRC client for Emacs 27.1))
2021-11-30 05:00:56 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net)
2021-11-30 05:01:28 +0100 <concrete-houses> can haskell do nice business reports and big data? what about AI? happstack.com looks impressive, but can it work bahind a load balancer? or does it even need to? it is better to have sperate data on sepaerate boxes?
2021-11-30 05:02:17 +0100 <concrete-houses> is there any haskell bittorrent client? something like qbittorrent?
2021-11-30 05:02:20 +0100 <dsal> Haskell is a programming language.
2021-11-30 05:02:47 +0100 <concrete-houses> I have little programming experience
2021-11-30 05:02:54 +0100 <concrete-houses> some shell some sql
2021-11-30 05:03:03 +0100 <concrete-houses> bit of tcl forth lisp
2021-11-30 05:03:26 +0100 <dsal> @hoogle torrent
2021-11-30 05:03:27 +0100 <lambdabot> package torrent
2021-11-30 05:03:27 +0100 <lambdabot> Distribution.SPDX BitTorrent_1_0 :: LicenseId
2021-11-30 05:03:27 +0100 <lambdabot> Distribution.SPDX BitTorrent_1_1 :: LicenseId
2021-11-30 05:03:35 +0100 <dsal> That's not very useful.
2021-11-30 05:03:37 +0100 <dsal> @hackage torrent
2021-11-30 05:03:37 +0100 <lambdabot> https://hackage.haskell.org/package/torrent
2021-11-30 05:04:11 +0100Lycurgus(~juan@98.4.112.204)
2021-11-30 05:05:40 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
2021-11-30 05:06:41 +0100 <concrete-houses> hmmm
2021-11-30 05:10:17 +0100deadmarshal(~deadmarsh@95.38.228.153) (Ping timeout: 252 seconds)
2021-11-30 05:12:54 +0100 <EvanR> yeah what do you think haskell actually is here
2021-11-30 05:14:04 +0100 <EvanR> for the first few buzzwords you'd want some premium product that may possibly be written in haskell
2021-11-30 05:15:52 +0100x88x88x(~cheeg@gateway/vpn/pia/x88x88x) (Ping timeout: 264 seconds)
2021-11-30 05:16:55 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-11-30 05:27:57 +0100 <monochrom> In retrospect, people don't go to a community of Japanese language speakers and learned to ask "can you write bestsellers and blockbusters in Japanese?". Of course you can.
2021-11-30 05:28:16 +0100 <monochrom> s/learned/learners/
2021-11-30 05:30:46 +0100iqubic(~user@2601:602:9502:c70:6765:a5f:e5b9:6c69) (Remote host closed the connection)
2021-11-30 05:36:36 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net)
2021-11-30 05:37:41 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com)
2021-11-30 05:38:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 05:41:05 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-11-30 05:41:48 +0100 <Square> lyxia, walked away a bit here. Thanks a bunch for your converted example. I feel im on new journey here. =D
2021-11-30 05:41:57 +0100danso(~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 256 seconds)
2021-11-30 05:42:20 +0100danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-11-30 05:45:16 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 264 seconds)
2021-11-30 05:45:59 +0100iqubic(~user@2601:602:9502:c70:6765:a5f:e5b9:6c69)
2021-11-30 05:46:46 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-11-30 05:47:19 +0100 <arahael> concrete-houses: That depends rather much on whether a business report can be nice, and wether AI is an oxymoron. :)
2021-11-30 05:48:14 +0100slac11392(~slack1256@191.125.99.65) (Ping timeout: 252 seconds)
2021-11-30 05:48:27 +0100deadmarshal(~deadmarsh@95.38.228.153)
2021-11-30 05:48:47 +0100Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-11-30 05:50:28 +0100LittleLemon(~AdiIRC@170.55.34.132)
2021-11-30 05:51:28 +0100 <zero> i cant't have guards in let bindings inside of a do block?
2021-11-30 05:51:52 +0100 <Square> lyxia, i noticed MyClz isnt part of it. Can this be done with class level type families too?
2021-11-30 05:52:47 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-11-30 05:53:11 +0100deadmarshal(~deadmarsh@95.38.228.153) (Ping timeout: 252 seconds)
2021-11-30 05:54:46 +0100 <Square> maybe non-class and class type families are just different ways of writing the same thing?
2021-11-30 05:54:50 +0100cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 29.0.50)
2021-11-30 05:55:15 +0100 <dsal> zero: Why not? What have you tried?
2021-11-30 05:56:20 +0100 <Axman6> concrete-houses: to expand on what otyhers said above, Haskell can do all of those things, but so can pretty much any programming language. Languages aren't systems, which seems to be what you're describing. most of those things have been built in Haskell before, but whether it's the best choice for any of them depends on many, many factors.
2021-11-30 06:00:59 +0100 <zero> dsal: https://paste.jrvieira.com/1638248446308
2021-11-30 06:01:44 +0100 <zero> i'm getting a parse error on '|' on line 9
2021-11-30 06:01:54 +0100deadmarshal(~deadmarsh@95.38.228.153)
2021-11-30 06:04:54 +0100 <dsal> zero: indent harder
2021-11-30 06:05:49 +0100 <zero> what?
2021-11-30 06:06:29 +0100 <dsal> zero: https://www.irccloud.com/pastebin/1pEdvWox/zero.hs
2021-11-30 06:08:33 +0100 <zero> i don't get that
2021-11-30 06:09:17 +0100 <zero> why can't i do it the other way?
2021-11-30 06:09:23 +0100 <dsal> Because indentation matters.
2021-11-30 06:10:28 +0100 <dsal> As you can see, I used one `let` keywords for all the bindings because the indentation makes them all be the same statement. If you don't indent it correctly, it can't tell that those guards are meant to be part of that function.
2021-11-30 06:12:08 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-11-30 06:12:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-30 06:14:04 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
2021-11-30 06:14:26 +0100 <concrete-houses> how can I make a lot of money programming?
2021-11-30 06:15:12 +0100 <dsal> Make an NFT and scam people with it.
2021-11-30 06:16:53 +0100 <jle`> no programming required :)
2021-11-30 06:17:07 +0100dsrt^(~dsrt@68.101.58.90) (Remote host closed the connection)
2021-11-30 06:17:08 +0100lavaman(~lavaman@98.38.249.169)
2021-11-30 06:17:08 +0100 <arahael> You find a job posting that requires programming, and early a salary.
2021-11-30 06:20:10 +0100waleee(~waleee@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: WeeChat 3.3)
2021-11-30 06:29:33 +0100concrete-houses(~g@209.6.150.53) (Ping timeout: 256 seconds)
2021-11-30 06:31:06 +0100concrete-houses(~g@209.6.150.53)
2021-11-30 06:31:25 +0100puke(~puke@user/puke) (Quit: puke)
2021-11-30 06:32:43 +0100reumeth(~reumeth@user/reumeth)
2021-11-30 06:34:56 +0100fr33domlover(~fr33@2.53.150.205)
2021-11-30 06:34:56 +0100nrl^(~nrl@68.101.58.90)
2021-11-30 06:38:15 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2021-11-30 06:38:36 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2021-11-30 06:39:19 +0100vonfry`(~user@116.236.75.238)
2021-11-30 06:39:43 +0100vonfry`(~user@116.236.75.238) ()
2021-11-30 06:40:21 +0100vonfry(~user@116.236.75.238) (Ping timeout: 245 seconds)
2021-11-30 06:41:01 +0100 <zero> dsal: i now see what you mean, thanks
2021-11-30 06:41:06 +0100mario_(~mario@31.147.205.13)
2021-11-30 06:41:26 +0100 <zero> i wasn't mentally desugaring it
2021-11-30 06:43:57 +0100mario_(~mario@31.147.205.13) (Client Quit)
2021-11-30 06:44:55 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-30 06:48:49 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-11-30 06:49:33 +0100 <EvanR> Axman6, re what haskell can and can't do: sounds like a job for lambdabot's old command xD
2021-11-30 06:50:04 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702) (Ping timeout: 264 seconds)
2021-11-30 06:51:28 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702)
2021-11-30 06:51:48 +0100 <dsal> @undo do ()
2021-11-30 06:51:48 +0100 <lambdabot> ()
2021-11-30 06:51:55 +0100 <dsal> lambdabot cannot do, lambdabot can only undo
2021-11-30 06:52:14 +0100 <jle`> lambdabot, the great undo-er
2021-11-30 06:52:15 +0100reumeth(~reumeth@user/reumeth) (Ping timeout: 268 seconds)
2021-11-30 07:00:00 +0100 <EvanR> @botsnack Lambdabot can you do :)
2021-11-30 07:00:00 +0100 <lambdabot> :)
2021-11-30 07:00:22 +0100 <EvanR> ooooooooh
2021-11-30 07:09:58 +0100 <jle`> @undo do do do do ()
2021-11-30 07:09:58 +0100 <lambdabot> ()
2021-11-30 07:10:06 +0100 <jackdk> @botsnack
2021-11-30 07:10:06 +0100 <lambdabot> :)
2021-11-30 07:10:18 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 07:11:15 +0100 <dsal> @undo do do do do do do do do do do do do do do do do "UNDO"
2021-11-30 07:11:15 +0100 <lambdabot> "UNDO"
2021-11-30 07:11:42 +0100 <jle`> do or undo
2021-11-30 07:11:44 +0100 <jle`> there is no @try
2021-11-30 07:12:03 +0100 <jle`> @try
2021-11-30 07:12:03 +0100 <lambdabot> Maybe you meant: url thx src rc arr
2021-11-30 07:12:14 +0100 <dsal> lambdabot is the hero we deserve
2021-11-30 07:12:18 +0100 <jle`> @thx
2021-11-30 07:12:18 +0100 <lambdabot> you are welcome
2021-11-30 07:14:13 +0100 <Axman6> EvanR: yeah, what was that again?
2021-11-30 07:14:46 +0100 <Axman6> lambdabot: Can Haskell make me a millionaire?
2021-11-30 07:14:53 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-11-30 07:14:56 +0100 <EvanR> @faq Can Haskell make me a millionaire
2021-11-30 07:14:56 +0100 <lambdabot> https://wiki.haskell.org/FAQ
2021-11-30 07:15:14 +0100 <EvanR> in previous lifetimes it would say
2021-11-30 07:15:23 +0100 <EvanR> Yes! Haskell can! or something
2021-11-30 07:15:40 +0100 <Axman6> yeah, I remember that, NFI what command it was though
2021-11-30 07:15:46 +0100 <Axman6> @can Haskell do that?
2021-11-30 07:15:46 +0100 <lambdabot> Maybe you meant: wn run faq
2021-11-30 07:15:56 +0100 <EvanR> faq I think lol
2021-11-30 07:16:49 +0100LittleLemon(~AdiIRC@170.55.34.132) (Quit: Going offline, see ya! (www.adiirc.com))
2021-11-30 07:16:51 +0100alzgh(~alzgh@user/alzgh)
2021-11-30 07:17:26 +0100xkuru(~xkuru@user/xkuru)
2021-11-30 07:17:29 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl)
2021-11-30 07:18:40 +0100 <EvanR> it could be it's only crime was taking up a valuable command name
2021-11-30 07:19:18 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net)
2021-11-30 07:19:45 +0100 <jle`> i think maybe the issue was people kept on believing it
2021-11-30 07:19:52 +0100 <sm> @where can haskell do that ?
2021-11-30 07:19:52 +0100 <lambdabot> Yes, it can!
2021-11-30 07:20:04 +0100 <jle`> got to temper expectations
2021-11-30 07:21:02 +0100 <EvanR> jle`, got any war stories to put some meat on the bones of your cold water? xD
2021-11-30 07:21:44 +0100xff0x(~xff0x@2001:1a81:52c5:f300:1fcf:1bc6:be0c:348e) (Ping timeout: 252 seconds)
2021-11-30 07:22:39 +0100xff0x(~xff0x@2001:1a81:52c5:f300:a883:120f:33bf:e74b)
2021-11-30 07:22:58 +0100 <EvanR> always interesting to hear about difficulties with IRL haskell
2021-11-30 07:23:29 +0100 <jle`> ah you mean since i've been actually using haskell for a full time job the past year and a half
2021-11-30 07:23:54 +0100 <EvanR> of course? I mean of course!
2021-11-30 07:24:01 +0100 <jle`> :)
2021-11-30 07:24:19 +0100 <jle`> honestly no horror stories really. even when you write spaghetti code with haskell it's fun to clean up
2021-11-30 07:25:12 +0100 <jle`> some of the issues you run into with small projects (like monad transformers vs mtl style etc) really just get scaled linearly i think, no major second order effects i've seen so far :)
2021-11-30 07:27:14 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-11-30 07:32:24 +0100xerxesphainon[m]uploaded an image: (682KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/pZkiixrFoRBTAhBfGnDIviTK/image.png >
2021-11-30 07:32:43 +0100 <xerxesphainon[m]> why is art valued so highly among humans on earth?
2021-11-30 07:33:25 +0100 <xerxesphainon[m]> in order from least to greatest. what rank would you asign the following?: Drawung, Acting, Music, Philosophy, Science.
2021-11-30 07:33:32 +0100 <xerxesphainon[m]> 1-5
2021-11-30 07:33:38 +0100 <xerxesphainon[m]> 1 being minimum value
2021-11-30 07:33:59 +0100 <EvanR> dropping a serious profoundness bomb out of nowhere
2021-11-30 07:34:06 +0100 <xerxesphainon[m]> *con{ 1=(bullshit)}
2021-11-30 07:34:19 +0100 <xerxesphainon[m]> who did you thihnk i was?
2021-11-30 07:34:33 +0100 <xerxesphainon[m]> var
2021-11-30 07:34:34 +0100 <xerxesphainon[m]> {exec}
2021-11-30 07:34:34 +0100 <jle`> hm, question is probably off-topic. unless this referring to haskell art specifically
2021-11-30 07:34:45 +0100LittleLemon(~AdiIRC@170.55.34.132)
2021-11-30 07:34:51 +0100 <xerxesphainon[m]> 1 {
2021-11-30 07:34:51 +0100 <xerxesphainon[m]> {11}
2021-11-30 07:34:51 +0100 <xerxesphainon[m]> {1131}
2021-11-30 07:35:04 +0100 <xerxesphainon[m]> shall i leave?
2021-11-30 07:35:04 +0100xff0x(~xff0x@2001:1a81:52c5:f300:a883:120f:33bf:e74b) (Ping timeout: 264 seconds)
2021-11-30 07:35:14 +0100 <Axman6> @where ops
2021-11-30 07:35:14 +0100 <lambdabot> byorgey Cale conal copumpkin dcoutts dibblego dolio edwardk geekosaur glguy jmcarthur johnw mniip monochrom quicksilver shachaf shapr ski
2021-11-30 07:35:18 +0100 <sm> picture needs haskellizing
2021-11-30 07:35:31 +0100xerxesphainon[m](~artaxerxe@2001:470:69fc:105::f400) ()
2021-11-30 07:35:56 +0100 <EvanR> lol, the ops extended justice league
2021-11-30 07:36:35 +0100danso(~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 252 seconds)
2021-11-30 07:37:02 +0100 <EvanR> haven't seen jmcarthur in a minute
2021-11-30 07:45:08 +0100xff0x(~xff0x@2001:1a81:52c5:f300:d642:873:f292:9250)
2021-11-30 07:47:27 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-30 07:49:37 +0100lavaman(~lavaman@98.38.249.169)
2021-11-30 07:53:35 +0100danso(~danso@23-233-111-52.cpe.pppoe.ca)
2021-11-30 07:54:16 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-11-30 07:56:52 +0100atlas(~jbox@user/jbox)
2021-11-30 07:59:35 +0100vysn(~vysn@user/vysn)
2021-11-30 07:59:49 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl) (Remote host closed the connection)
2021-11-30 08:00:00 +0100atlasjbox
2021-11-30 08:00:47 +0100fr33domlover(~fr33@2.53.150.205) (Ping timeout: 256 seconds)
2021-11-30 08:05:48 +0100chele(~chele@user/chele)
2021-11-30 08:06:52 +0100xff0x(~xff0x@2001:1a81:52c5:f300:d642:873:f292:9250) (Ping timeout: 268 seconds)
2021-11-30 08:07:20 +0100xff0x(~xff0x@2001:1a81:52c5:f300:6673:fb4d:a3aa:9d2)
2021-11-30 08:07:44 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-11-30 08:09:02 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 08:13:51 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-11-30 08:14:57 +0100deadmarshal(~deadmarsh@95.38.228.153) (Ping timeout: 256 seconds)
2021-11-30 08:21:09 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:97df:ebe3:251c:f0f6)
2021-11-30 08:28:01 +0100xerxesphainon[m](~artaxerxe@2001:470:69fc:105::f400)
2021-11-30 08:28:14 +0100 <xerxesphainon[m]> hey yall that scared the shit out of me
2021-11-30 08:28:17 +0100 <xerxesphainon[m]> im sorry
2021-11-30 08:28:24 +0100gehmehgeh(~user@user/gehmehgeh)
2021-11-30 08:28:56 +0100 <xerxesphainon[m]> look
2021-11-30 08:29:04 +0100 <xerxesphainon[m]> ...................
2021-11-30 08:29:09 +0100 <xerxesphainon[m]> shit
2021-11-30 08:29:15 +0100 <xerxesphainon[m]> i dont have social skills
2021-11-30 08:29:19 +0100 <xerxesphainon[m]> uhhh
2021-11-30 08:30:24 +0100 <jle`> it's ok, you just have to try to constrain your questions to only questions related to haskell the programming language
2021-11-30 08:30:47 +0100 <jle`> anything else would be off-topic or belong in a different channel that is more suitable
2021-11-30 08:31:47 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl)
2021-11-30 08:31:52 +0100 <xerxesphainon[m]> All my life. I mean. Since i was about 5. you know. i saw other kids......with the crowd.......bullying.......i made the decision right then and there. I want to be a good person. I like it when EVERYBODY is happy. and having fun. Im a musician. also from early age. And.
2021-11-30 08:32:00 +0100 <xerxesphainon[m]> dude see that just fucked me upo
2021-11-30 08:32:52 +0100 <xerxesphainon[m]> truthfully , i was afraid i had stumbled into a shadow project under a CIA proprietary organization involving bluetooth blockchain
2021-11-30 08:33:04 +0100 <xerxesphainon[m]> please do not treat me like im stupid
2021-11-30 08:33:18 +0100 <xerxesphainon[m]> hold on guys
2021-11-30 08:33:33 +0100 <xerxesphainon[m]> please bear with me im on the virge of suicide
2021-11-30 08:33:50 +0100 <xerxesphainon[m]> i cant get a response from ant other channel
2021-11-30 08:33:54 +0100 <xerxesphainon[m]> and you know it
2021-11-30 08:34:17 +0100 <xerxesphainon[m]> everybody just stop please. look at this situation.
2021-11-30 08:34:25 +0100 <xerxesphainon[m]> observe. what just happened/
2021-11-30 08:34:31 +0100 <xerxesphainon[m]> ???
2021-11-30 08:35:07 +0100 <xerxesphainon[m]> man i had a. best speech in your life ready to come out and i apreciate you being a dick
2021-11-30 08:35:16 +0100 <xerxesphainon[m]> WOW
2021-11-30 08:35:57 +0100natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-11-30 08:36:21 +0100xerxesphainon[m]uploaded an image: (72KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/bukgdbNKYYJNqXUTLDgcarQf/BRAVE-NEW-WO… >
2021-11-30 08:36:25 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer)
2021-11-30 08:36:43 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-11-30 08:37:09 +0100deadmarshal(~deadmarsh@95.38.228.153)
2021-11-30 08:37:37 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2021-11-30 08:37:37 +0100nahcetan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2021-11-30 08:38:04 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-11-30 08:41:10 +0100 <xerxesphainon[m]> <jle`> "it's ok, you just have to try to..." <- yes you are correct sir, however an inconsisency as minute as the such, must self evidently be known to any avid user of chat-rooms
2021-11-30 08:41:29 +0100 <xerxesphainon[m]> which i obviously am not
2021-11-30 08:41:43 +0100 <xerxesphainon[m]> man........
2021-11-30 08:41:46 +0100 <xerxesphainon[m]> oh my God
2021-11-30 08:43:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-30 08:43:33 +0100yaroot(~yaroot@52.102.13.160.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat)
2021-11-30 08:44:14 +0100 <xerxesphainon[m]> A Simple Error on my part actually. And all the more Clear Evidence, indicating the pre
2021-11-30 08:44:19 +0100 <xerxesphainon[m]> DDS attack really?
2021-11-30 08:44:28 +0100yaroot(~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953)
2021-11-30 08:45:03 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-11-30 08:45:17 +0100 <xerxesphainon[m]> aye man yall boys be safe out here. keep ya up G
2021-11-30 08:45:23 +0100 <xerxesphainon[m]> keep ya head up my G
2021-11-30 08:45:29 +0100xerxesphainon[m](~artaxerxe@2001:470:69fc:105::f400) ()
2021-11-30 08:46:18 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net) (Ping timeout: 260 seconds)
2021-11-30 08:48:12 +0100atwm(~atwm@19-193-28-81.ftth.cust.kwaoo.net)
2021-11-30 08:51:42 +0100michalz(~michalz@185.246.204.62)
2021-11-30 08:53:48 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 08:55:28 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 08:55:41 +0100sunarch(uid526836@user/sunarch) (Quit: Connection closed for inactivity)
2021-11-30 08:55:45 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 08:57:11 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 08:57:28 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 08:58:43 +0100LittleLemon_2(~AdiIRC@075-112-143-124.res.spectrum.com)
2021-11-30 08:58:49 +0100yaroot(~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) (Remote host closed the connection)
2021-11-30 08:59:03 +0100yaroot(~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953)
2021-11-30 08:59:57 +0100yaroot(~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) (Remote host closed the connection)
2021-11-30 09:00:00 +0100shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-11-30 09:00:11 +0100yaroot(~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953)
2021-11-30 09:00:36 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl) (Remote host closed the connection)
2021-11-30 09:00:45 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl)
2021-11-30 09:01:59 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-11-30 09:02:04 +0100LittleLemon(~AdiIRC@170.55.34.132) (Ping timeout: 264 seconds)
2021-11-30 09:02:09 +0100LittleLemon_2LittleLemon
2021-11-30 09:03:29 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl) (Remote host closed the connection)
2021-11-30 09:05:41 +0100deadmarshal(~deadmarsh@95.38.228.153) (Ping timeout: 252 seconds)
2021-11-30 09:06:10 +0100AndrejKarpathy(~AndrejKar@2409:4053:2203:902f:95e9:1dcc:9faf:e958)
2021-11-30 09:08:21 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 09:11:36 +0100 <AndrejKarpathy> Hi everyone.
2021-11-30 09:12:49 +0100AndrejKarpathy(~AndrejKar@2409:4053:2203:902f:95e9:1dcc:9faf:e958) (Quit: Client closed)
2021-11-30 09:14:29 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 09:14:46 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 09:16:19 +0100rkrishnan(~user@122.171.76.46)
2021-11-30 09:18:23 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 09:18:41 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 09:20:21 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 09:20:27 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-11-30 09:20:39 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 09:20:48 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-11-30 09:22:20 +0100zava(~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
2021-11-30 09:23:14 +0100jbox(~jbox@user/jbox) (Read error: Connection reset by peer)
2021-11-30 09:23:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 09:26:40 +0100LittleLemon(~AdiIRC@075-112-143-124.res.spectrum.com) (Ping timeout: 264 seconds)
2021-11-30 09:29:09 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 09:29:27 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 09:31:26 +0100chomwitt(~chomwitt@2a02:587:dc16:f200:12c3:7bff:fe6d:d374)
2021-11-30 09:33:12 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-11-30 09:34:02 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
2021-11-30 09:34:18 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2021-11-30 09:35:58 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 09:36:15 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 09:36:37 +0100narendra(~user@2a02:8109:b63f:ff7c::56c2)
2021-11-30 09:37:16 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-11-30 09:42:11 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 09:42:29 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 09:43:19 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-30 09:44:03 +0100DNH(~DNH@2a02:8108:1100:16d8:f00d:18c8:3973:574b)
2021-11-30 09:46:09 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 09:46:27 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 09:48:07 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 09:48:16 +0100Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 264 seconds)
2021-11-30 09:48:25 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 09:49:29 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-11-30 09:51:09 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-30 09:52:19 +0100deadmarshal(~deadmarsh@95.38.228.153)
2021-11-30 09:54:39 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 09:54:57 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 09:55:58 +0100zaquest(~notzaques@5.130.79.72)
2021-11-30 09:56:26 +0100ChanServ+o dibblego
2021-11-30 09:56:53 +0100machinedgod(~machinedg@24.105.81.50)
2021-11-30 09:57:18 +0100dibblego+b *!~artaxerxe@*
2021-11-30 09:57:27 +0100dibblego+b *!artaxerxe@*
2021-11-30 09:57:29 +0100dibblego-b *!~artaxerxe@*
2021-11-30 09:57:50 +0100jstolarek(~jstolarek@137.220.120.162)
2021-11-30 09:58:33 +0100max22-(~maxime@2a01cb0883359800537b01ac6af61ec5.ipv6.abo.wanadoo.fr)
2021-11-30 09:59:40 +0100acidjnk_new(~acidjnk@p200300d0c7271e72fcf154b5eecf3df6.dip0.t-ipconnect.de)
2021-11-30 10:01:06 +0100_bo(~bo@217.18.216.247)
2021-11-30 10:02:37 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
2021-11-30 10:03:37 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection)
2021-11-30 10:04:09 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-11-30 10:05:49 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 10:06:06 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 10:08:16 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 245 seconds)
2021-11-30 10:08:26 +0100james[m]12(~jamesnina@2001:470:69fc:105::1:4203)
2021-11-30 10:10:06 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 10:10:23 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 10:11:42 +0100boxscape_(~boxscape_@p4ff0bb6c.dip0.t-ipconnect.de)
2021-11-30 10:13:15 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:356c:6df7:ff7f:48a3) (Remote host closed the connection)
2021-11-30 10:14:55 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 10:15:12 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 10:15:21 +0100ehamberg(sid18208@id-18208.hampstead.irccloud.com) ()
2021-11-30 10:17:11 +0100favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-11-30 10:17:36 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-11-30 10:17:36 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2021-11-30 10:17:39 +0100allbery_bgeekosaur
2021-11-30 10:20:31 +0100boxscape(~boxscape@user/boxscape)
2021-11-30 10:21:02 +0100deadmarshal(~deadmarsh@95.38.228.153) (Ping timeout: 252 seconds)
2021-11-30 10:21:36 +0100ehamberg_(sid18208@id-18208.hampstead.irccloud.com)
2021-11-30 10:22:11 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-11-30 10:23:04 +0100mvk(~mvk@2607:fea8:5cc1:fa00::4702) (Ping timeout: 264 seconds)
2021-11-30 10:25:49 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 10:26:07 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 10:26:34 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-11-30 10:27:52 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net)
2021-11-30 10:29:47 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 10:30:05 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 10:30:06 +0100mc47(~mc47@xmonad/TheMC47)
2021-11-30 10:30:09 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Quit: mikoto-chan)
2021-11-30 10:31:49 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 10:32:07 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 10:32:35 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-11-30 10:33:15 +0100deadmarshal(~deadmarsh@95.38.228.153)
2021-11-30 10:33:23 +0100max22-(~maxime@2a01cb0883359800537b01ac6af61ec5.ipv6.abo.wanadoo.fr) (Ping timeout: 250 seconds)
2021-11-30 10:35:20 +0100kuribas(~user@ptr-25vy0i8s19mxk1vvjxp.18120a2.ip6.access.telenet.be)
2021-11-30 10:35:23 +0100cfricke(~cfricke@user/cfricke)
2021-11-30 10:40:33 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 10:40:51 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 10:44:31 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 10:44:49 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 10:45:37 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net) (Quit: Leaving)
2021-11-30 10:49:47 +0100xcmw(~textual@dyn-72-33-2-173.uwnet.wisc.edu) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-30 10:53:01 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 10:53:19 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 10:54:59 +0100ubert(~Thunderbi@p200300ecdf0ba2aae6b318fffe838f33.dip0.t-ipconnect.de)
2021-11-30 10:56:19 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-11-30 10:57:37 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-30 10:59:17 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 10:59:34 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 10:59:36 +0100MaybeJustJames(~jacol@2001:981:4ea3:1:a8b4:6ac6:c93b:9bcf)
2021-11-30 11:00:05 +0100 <MaybeJustJames> Hi all
2021-11-30 11:00:26 +0100 <boxscape> hi
2021-11-30 11:01:01 +0100 <MaybeJustJames> I'm a bit of a newb and have a cabal question. Is this a good place to ask?
2021-11-30 11:01:07 +0100 <boxscape_> yeah
2021-11-30 11:01:45 +0100 <MaybeJustJames> My app depends on a library. I would like to modify the library with some `traceIO` debugging though
2021-11-30 11:02:13 +0100 <MaybeJustJames> Is `cabal install --lib` from the library thr right way to build my app against the modified library?
2021-11-30 11:02:14 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-11-30 11:02:51 +0100 <boxscape_> no, you probably want a cabal.project file in which you specify the path of your modified library
2021-11-30 11:02:59 +0100 <boxscape_> let me look up the correct syntax...
2021-11-30 11:03:08 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-11-30 11:03:09 +0100 <MaybeJustJames> Ah ok! Excellent I was hoping for that
2021-11-30 11:03:17 +0100 <MaybeJustJames> Thankyou so much!
2021-11-30 11:03:49 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2021-11-30 11:04:28 +0100Lord_of_Life_Lord_of_Life
2021-11-30 11:04:37 +0100 <boxscape_> MaybeJustJames see this answer: https://stackoverflow.com/a/49418110/17327400
2021-11-30 11:04:48 +0100 <merijn> Or just the cabal.project reference here: https://cabal.readthedocs.io/en/latest/cabal-project.html
2021-11-30 11:04:49 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-30 11:04:56 +0100 <MaybeJustJames> Brilliant! Thankyou very much!
2021-11-30 11:04:57 +0100 <[exa]> the first example here pretty much sums up what I put almost everywhere https://cabal.readthedocs.io/en/3.4/cabal-project.html
2021-11-30 11:05:09 +0100 <merijn> [exa]: Too slow :p
2021-11-30 11:05:18 +0100 <[exa]> merijn: I'm ashamed
2021-11-30 11:05:54 +0100mmhat(~mmh@55d4269f.access.ecotel.net)
2021-11-30 11:06:16 +0100deadmarshal(~deadmarsh@95.38.228.153) (Ping timeout: 264 seconds)
2021-11-30 11:07:12 +0100deadmarshal(~deadmarsh@95.38.228.153)
2021-11-30 11:08:41 +0100max22-(~maxime@2a01cb08833598007acc2e8deff42dd7.ipv6.abo.wanadoo.fr)
2021-11-30 11:10:21 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 11:10:38 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 11:12:11 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds)
2021-11-30 11:12:50 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-11-30 11:13:32 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-11-30 11:13:39 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f)
2021-11-30 11:13:58 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-30 11:18:44 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl)
2021-11-30 11:19:28 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) (Ping timeout: 264 seconds)
2021-11-30 11:21:21 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 11:21:40 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 11:21:44 +0100nschoe(~quassel@178.251.84.79)
2021-11-30 11:22:08 +0100 <arahael> I've got two issues at the moment with my Haskell:
2021-11-30 11:23:05 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl) (Ping timeout: 256 seconds)
2021-11-30 11:23:07 +0100 <arahael> 1) I can't get this line to compile: env <- newEnv Discover <&> set (field @"envLogger") lgr . set (field @"envRegion") NorthVirginia -- It seems that I'm missing some sort of very complex type. Actually I should pastebin that error.
2021-11-30 11:23:39 +0100 <arahael> https://gist.github.com/arafangion/82c31f1dfe01c9cc559bbc6abc0ce699
2021-11-30 11:24:12 +0100 <arahael> 2) And the other issue, is when I have this error, it seems to produce an 'invalid byte sequence' - I suspect because the error message has colours. Can I disable colours from 'cabal build'?
2021-11-30 11:25:52 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 11:26:09 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 11:27:18 +0100DNH(~DNH@2a02:8108:1100:16d8:f00d:18c8:3973:574b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-30 11:27:32 +0100 <kuribas> arahael: seems pretty clear: The type Env' Identity does not contain a field named 'envRegion'
2021-11-30 11:27:54 +0100 <kuribas> arahael: you are setting a field on (Env' Identity), which doesn't have that field.
2021-11-30 11:28:12 +0100 <arahael> kuribas: That doesn't make sense to me, though. Hmm, so I need to somehow make it not (Env' Identity)
2021-11-30 11:29:16 +0100 <kuribas> what's Env?
2021-11-30 11:29:36 +0100 <kuribas> maybe you miss another fmap?
2021-11-30 11:29:45 +0100 <arahael> kuribas: Possible, I'm trying to do this: https://github.com/brendanhay/amazonka/blob/develop/examples/src/Example/S3.hs#L49
2021-11-30 11:29:53 +0100cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2021-11-30 11:30:52 +0100deadmarshal(~deadmarsh@95.38.228.153) (Ping timeout: 264 seconds)
2021-11-30 11:32:04 +0100 <kuribas> arahael: try these lenses? https://hackage.haskell.org/package/amazonka-1.6.1/docs/Network-AWS.html#t:HasEnv
2021-11-30 11:32:56 +0100 <arahael> kuribas: I'm using amazonka 2.0, though, I think they've changed the way they've done those lenses.
2021-11-30 11:34:24 +0100 <kuribas> arahael: link?
2021-11-30 11:36:01 +0100 <arahael> Should be this: https://github.com/brendanhay/amazonka/tree/main though I'm not on quite exactly that revision.
2021-11-30 11:36:29 +0100cheater(~Username@user/cheater)
2021-11-30 11:38:17 +0100pfurla(~pfurla@2804:14d:5c81:4104:f9a9:132:7129:df1c) (Quit: gone to sleep. ZZZzzz…)
2021-11-30 11:39:18 +0100 <arahael> kuribas: I notice that Env is a type `Env' Identity', and yet, there is this line: https://github.com/brendanhay/amazonka/blob/aeecded1501510d607082bb9a65aa5086755251f/lib/amazonka/…
2021-11-30 11:39:22 +0100 <jackdk> arahael: what are your imports? Do you have the bulk of the example somewhere?
2021-11-30 11:39:24 +0100 <arahael> Which clearly shows the envRegion I'm attempting to set.
2021-11-30 11:39:36 +0100 <arahael> jackdk: Let me push up my changes!
2021-11-30 11:40:41 +0100 <arahael> https://github.com/arafangion/auslansocial/blob/main/Main.hs#L211 <-- 211 there is the broken line.
2021-11-30 11:41:06 +0100 <arahael> jackdk: I've noticed your PR's are now merged in, but I'm still using your PR directly.
2021-11-30 11:42:35 +0100 <arahael> jackdk: It compiles if I remove everything to the right of (and including) the '<&>' bit on that line, though I doubt it runs. (Though, I notice NorthVirginia seems to be the default, so it might well run)
2021-11-30 11:42:41 +0100 <jackdk> arahael: field names in Env start with an underscore now
2021-11-30 11:43:00 +0100 <arahael> jackdk: Oh, and I have to put the underscore in that string?
2021-11-30 11:43:04 +0100 <jackdk> I think I had to do that to avoid a name clash.
2021-11-30 11:43:05 +0100 <jackdk> yeah
2021-11-30 11:43:42 +0100 <arahael> That compiles.
2021-11-30 11:44:06 +0100 <jackdk> yeah that's right I had to move the definition of the Env' type into Amazonka.Auth for annoying hs-boot related reasons to support certain STS operations, and that module already had an envRegion variable
2021-11-30 11:44:23 +0100 <arahael> hat's that syntax again? I tried to look up type applications, but they were full of examples such as @Int, but didn't explain the @"foo" bit.
2021-11-30 11:44:54 +0100 <jackdk> "foo" there is a type of kind `Symbol` - the kind of type-level stirngs
2021-11-30 11:45:10 +0100 <jackdk> a "kind" is like the "type" of a type
2021-11-30 11:45:17 +0100 <jackdk> % :kind Maybe
2021-11-30 11:45:18 +0100 <yahb> jackdk: * -> *
2021-11-30 11:45:28 +0100 <arahael> % :kind @"foo"
2021-11-30 11:45:29 +0100 <yahb> arahael: ; <interactive>:1:2: error: Unexpected type application: "foo"
2021-11-30 11:45:43 +0100 <tomsmeding> % :set -XTypeApplications -XDataKinds
2021-11-30 11:45:43 +0100 <yahb> tomsmeding:
2021-11-30 11:45:43 +0100 <jackdk> % :set -XTypeApplications -XDataKinds
2021-11-30 11:45:44 +0100 <yahb> jackdk:
2021-11-30 11:45:49 +0100 <tomsmeding> :)
2021-11-30 11:45:53 +0100 <arahael> % :kind "foo"
2021-11-30 11:45:53 +0100 <yahb> arahael: GHC.Types.Symbol
2021-11-30 11:46:00 +0100 <arahael> Ooh, interesting.
2021-11-30 11:46:03 +0100 <jackdk> % :set -XNoStarIsType
2021-11-30 11:46:03 +0100 <yahb> jackdk:
2021-11-30 11:46:08 +0100 <arahael> But "foo" and "bar" are the same kind, I guess?
2021-11-30 11:46:09 +0100 <jackdk> % :kind Maybe
2021-11-30 11:46:09 +0100 <yahb> jackdk: Type -> Type
2021-11-30 11:46:28 +0100 <jackdk> `Type` is the kind of types taht may have values: `Int`, `Bool`, `Maybe Char`, ...
2021-11-30 11:46:38 +0100 <tomsmeding> arahael: the types "foo" and "bar" are different, but have the same kind; just like the values "foo" and "bar" are different, but have the same type
2021-11-30 11:47:18 +0100 <tomsmeding> % :k Monad
2021-11-30 11:47:18 +0100 <yahb> tomsmeding: (Type -> Type) -> Constraint
2021-11-30 11:47:25 +0100 <tomsmeding> in case you hadn't seen that before
2021-11-30 11:48:03 +0100 <arahael> tomsmeding: I've seen that before, and I believe I understand it, but... I'm a bit lost with https://gitlab.haskell.org/ghc/ghc/-/wikis/type-application
2021-11-30 11:48:41 +0100 <tomsmeding> where are you lost?
2021-11-30 11:49:26 +0100 <arahael> The syntax.
2021-11-30 11:49:46 +0100 <arahael> Consider `map @Int @Bool isEven xs`
2021-11-30 11:49:56 +0100 <tomsmeding> the part where it conflicts with as-patterns, like 'f list@(x:xs) = x : f list' ?
2021-11-30 11:49:58 +0100 <tomsmeding> or the rest :p
2021-11-30 11:50:00 +0100 <arahael> That reads like a four-argument function to me.
2021-11-30 11:50:02 +0100 <tomsmeding> ah
2021-11-30 11:50:08 +0100 <boxscape> % :set -fprint-explicit-foralls
2021-11-30 11:50:08 +0100 <yahb> boxscape:
2021-11-30 11:50:11 +0100 <tomsmeding> % :t map
2021-11-30 11:50:12 +0100 <yahb> tomsmeding: forall {a} {b}. (a -> b) -> [a] -> [b]
2021-11-30 11:50:14 +0100 <boxscape> % :t +v map
2021-11-30 11:50:15 +0100 <yahb> boxscape: forall a b. (a -> b) -> [a] -> [b]
2021-11-30 11:50:18 +0100 <tomsmeding> there are your four arguments
2021-11-30 11:50:33 +0100 <arahael> Ah, I see.
2021-11-30 11:51:10 +0100 <tomsmeding> in fact there is a proposal floating around to create syntax for defining _explicit_ type arguments; something like 'forall a ->' instead of 'forall a.'
2021-11-30 11:51:19 +0100 <arahael> Now `field @"foo"` makes more sense. It's a single-argument 'field', which requires not a value, but an explicit type.
2021-11-30 11:51:29 +0100 <arahael> And the '@' allows me to specify a type.
2021-11-30 11:51:32 +0100 <tomsmeding> and then that argument wouldn't be passed using @, but as a normal argument
2021-11-30 11:51:40 +0100 <boxscape> toms not just floating around but accepted at this point
2021-11-30 11:51:42 +0100 <tomsmeding> yes
2021-11-30 11:51:48 +0100 <jackdk> link?
2021-11-30 11:51:49 +0100 <kuribas> tomsmeding: like dependent types?
2021-11-30 11:51:51 +0100 <tomsmeding> _accepted_?
2021-11-30 11:51:55 +0100 <boxscape> (whoops I failed to press tab)
2021-11-30 11:52:03 +0100 <tomsmeding> kuribas: it's a proposal by Richard Eisenberg on the road to dependent haskell, yes :p
2021-11-30 11:52:11 +0100 <boxscape> https://github.com/ghc-proposals/ghc-proposals/pull/281
2021-11-30 11:52:37 +0100 <tomsmeding> wow!
2021-11-30 11:52:40 +0100 <arahael> My other question was...
2021-11-30 11:52:51 +0100 <arahael> How do I get 'cabal build' to stop prettifying my build errors?
2021-11-30 11:52:51 +0100 <tomsmeding> that's fresh off the press
2021-11-30 11:52:58 +0100 <tomsmeding> cabal build | cat
2021-11-30 11:53:39 +0100DNH(~DNH@2a02:8108:1100:16d8:f00d:18c8:3973:574b)
2021-11-30 11:54:01 +0100 <kuribas> In the beginning it felt weird to be able to pass types as argument, but it actually makes sense.
2021-11-30 11:54:15 +0100 <kuribas> If you think of it as a function that generates another function.
2021-11-30 11:54:28 +0100 <arahael> tomsmeding: I can't use pipes like that in a shakefile - and it's the shakefile that's tripping over the colours.
2021-11-30 11:54:30 +0100 <kuribas> So you take a polymorphic function and generate a monomorphic function.
2021-11-30 11:54:46 +0100 <arahael> kuribas: It already makes sense to me, I think.
2021-11-30 11:54:58 +0100 <tomsmeding> kuribas: I still think of it as overriding type inference, in a way (as in: being there before type inference even starts, and fixing the type beforehand)
2021-11-30 11:55:04 +0100 <kuribas> Of course in haskell you cannot use the type in the function body, since the type is erased.
2021-11-30 11:55:56 +0100 <tomsmeding> arahael: the point of the pipe is to ensure that when cabal calls isatty(STDOUT_FILENO), that returns false
2021-11-30 11:56:04 +0100 <arahael> tomsmeding: Ie, I'm using this function: https://hackage.haskell.org/package/shake-0.19.6/docs/Development-Shake.html#v:cmd_
2021-11-30 11:56:04 +0100 <kuribas> tomsmeding: yeah, that's more technically correct.
2021-11-30 11:56:49 +0100 <tomsmeding> arahael: you might actually have success running your whole shake build with | cat after it
2021-11-30 11:56:54 +0100 <tomsmeding> but that's not a solution per se
2021-11-30 11:57:35 +0100 <arahael> tomsmeding: Nah, it doesn't work, just tried it.
2021-11-30 11:57:40 +0100 <tomsmeding> oh
2021-11-30 11:57:45 +0100 <arahael> I still get: fd:7: hGetContents: invalid argument (invalid byte sequence)
2021-11-30 11:58:08 +0100 <tomsmeding> oh cabal build seems to use colour always? that'a bug
2021-11-30 11:58:45 +0100 <arahael> Ah, and yeah, it does, even when you pass it through |cat.
2021-11-30 11:59:03 +0100 <kuribas> Will DH allow unlifing of DataKinds?
2021-11-30 12:00:04 +0100 <kuribas> DH looks to me like dependent types light...
2021-11-30 12:00:13 +0100 <kuribas> It doesn't really make haskell a dependently typed language.
2021-11-30 12:00:17 +0100 <boxscape> If understand correctly what you're asking, DH will have something like `foo :: foreach (x :: Nat) -> x + x :~: 2 x`, which would indicate that the `x` is not erased and can be used in the function body
2021-11-30 12:00:43 +0100 <tomsmeding> arahael: cabal --ghc-options=-fdiagnostics-color=never build
2021-11-30 12:00:45 +0100 <boxscape> s/2 x/2 * x
2021-11-30 12:00:59 +0100 <tomsmeding> except that will only work if you remove build caches beforehand (dist-newstyle in particular)
2021-11-30 12:01:02 +0100 <kuribas> boxscape: but that wouldn't work with Types?
2021-11-30 12:01:07 +0100 <tomsmeding> because https://github.com/haskell/cabal/issues/6177#issuecomment-518307005
2021-11-30 12:01:14 +0100 <kuribas> boxscape: foo :: foreach (x :: Type) -> ...
2021-11-30 12:01:21 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-11-30 12:01:26 +0100 <boxscape> kuribas: not by default but the idea is to make it work for types eventually
2021-11-30 12:01:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-11-30 12:02:10 +0100 <boxscape> one goal is to unify type families and term-level functions
2021-11-30 12:02:20 +0100 <kuribas> I feel conflicted about this. It's nice to have more type system features, but couldn't that effort be better spend in making true dependently typed language better?
2021-11-30 12:02:23 +0100 <boxscape> so if you can write something as a type family, you should be able to write it as a regular function eventually
2021-11-30 12:02:32 +0100 <arahael> tomsmeding: Interesting.
2021-11-30 12:02:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 12:03:43 +0100 <boxscape> kuribas: Richard's thesis has some comments on this in section "3.3 Why Haskell?" https://richarde.dev/papers/2016/thesis/eisenberg-thesis.pdf#chapter.3
2021-11-30 12:03:45 +0100 <tomsmeding> ah, so it's a bug in ghc: ghc doesn't check isatty(1) before using colours
2021-11-30 12:04:28 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 264 seconds)
2021-11-30 12:04:35 +0100 <arahael> interesting. Well, I'm happy with passing that flag explicitly, do you have the bug reference, incidentally?
2021-11-30 12:05:10 +0100 <arahael> I do notice that now it seems to be reinstalling and recompiling *everything*, I guess because I've changed a ghc-option, which is unfortunate.
2021-11-30 12:05:11 +0100 <tomsmeding> arahael: not yet besides https://github.com/haskell/cabal/issues/6177 and the linked #6147
2021-11-30 12:05:19 +0100akspecs__(~akspecs@user/akspecs) (Quit: WeeChat 3.2)
2021-11-30 12:06:02 +0100 <arahael> Thanks. :)
2021-11-30 12:06:29 +0100jakalx(~jakalx@base.jakalx.net)
2021-11-30 12:07:14 +0100 <boxscape> > <kuribas> It doesn't really make haskell a dependently typed language. -- I think that's necessarily what it looks like while it's in the process of becoming a dependently typed language - I don't think the stated goal is to keep it at "dependent types light"
2021-11-30 12:07:16 +0100 <lambdabot> <hint>:1:1: error: parse error on input ‘<’
2021-11-30 12:07:36 +0100 <boxscape_> sorry lambdabot
2021-11-30 12:07:54 +0100 <arahael> boxscape_: I keep running into that frequently, myself, - I frequently quote using >
2021-11-30 12:08:03 +0100 <kuribas> "Dependent Haskell emphatically does not strive to be a proof system" <= neither does idris.
2021-11-30 12:08:44 +0100 <boxscape> "Idris embraces partiality, but then refuses to evaluate partial functions during type-checking"
2021-11-30 12:09:28 +0100 <kuribas> boxscape: you can cheat with "believe_me" :)
2021-11-30 12:09:38 +0100 <boxscape> hm fair
2021-11-30 12:09:42 +0100gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 276 seconds)
2021-11-30 12:09:57 +0100 <kuribas> boxscape: but I think the idea is that if you allow partiality, then the whole proof system collapses.
2021-11-30 12:10:21 +0100 <boxscape> which is fine if your intention is not to make a proof system ;)
2021-11-30 12:10:43 +0100 <kuribas> I disagree, you still want your type level computations to be valid.
2021-11-30 12:11:04 +0100 <tomsmeding> arahael: _something_ in GHC responds to the GHC_COLORS environment variable, but I've been able to find exactly 0 documentation on it -- good luck :p https://gitlab.haskell.org/ghc/ghc/-/issues/13718 (and I have to go now)
2021-11-30 12:11:19 +0100 <kuribas> boxscape: If I put a constraint on a type, I want the type system to ensure it holds.
2021-11-30 12:12:23 +0100 <kuribas> boxscape: I mean, the only reason to have type level computations, is to improve the consistency of the program.
2021-11-30 12:12:31 +0100gehmehgeh(~user@user/gehmehgeh)
2021-11-30 12:12:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-11-30 12:13:18 +0100 <boxscape> kuribas: That is a decent argument but Haskell already has ways that allow you to violate that, e.g. Type :: Type, so arguably it doesn't make sense to strive for soundness in one area while other areas still make the type system unsound
2021-11-30 12:13:32 +0100 <arahael> tomsmeding: Thanks for your help! :D
2021-11-30 12:13:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 12:14:16 +0100 <kuribas> boxscape: well, I guess idris *is* a proof system, but it's not the primary purpose.
2021-11-30 12:17:27 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 12:17:51 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 12:19:11 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-30 12:19:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 12:20:10 +0100 <boxscape> apropos unsoundness - I always thought it was kind of funny that this works
2021-11-30 12:20:11 +0100 <boxscape> % undefined @_ @(Proxy (_ :: Void))
2021-11-30 12:20:11 +0100 <yahb> boxscape: Proxy
2021-11-30 12:20:53 +0100 <boxscape> % Proxy @_ @(Proxy (_ :: Void)) -- this might be less confusing
2021-11-30 12:20:54 +0100 <yahb> boxscape: ; <interactive>:24:1: error:; * Cannot apply expression of type `Proxy w0'; to a visible type argument `(Proxy (_ :: Void))'; * In the expression: Proxy @_ @(Proxy (_ :: Void)); In an equation for `it': it = Proxy @_ @(Proxy (_ :: Void))
2021-11-30 12:21:00 +0100 <boxscape> arg
2021-11-30 12:21:23 +0100 <boxscape> % Proxy @(Proxy (_ :: Void)) -- this might be less confusing
2021-11-30 12:21:23 +0100 <yahb> boxscape: Proxy
2021-11-30 12:21:37 +0100deadmarshal(~deadmarsh@95.38.228.153)
2021-11-30 12:24:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-11-30 12:25:15 +0100vysn(~vysn@user/vysn) (Ping timeout: 268 seconds)
2021-11-30 12:25:25 +0100 <arahael> Curious, even with --ghc-options=-fdiagnostics-color=never, my shakefile still stumbles over the invalid byte sequence.
2021-11-30 12:25:31 +0100 <arahael> Will figure it out another day.
2021-11-30 12:25:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 12:30:50 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-11-30 12:31:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 12:35:35 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 12:35:54 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 12:36:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-11-30 12:37:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 12:37:28 +0100emf(~emf@2620:10d:c090:400::5:9a5b) (Ping timeout: 264 seconds)
2021-11-30 12:39:52 +0100emf(~emf@2620:10d:c090:400::5:d28b)
2021-11-30 12:41:48 +0100 <jackdk> it's not a utf-8 thing?
2021-11-30 12:42:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-11-30 12:43:15 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 12:44:36 +0100 <arahael> It might well be. I'll try it in binary mode - I can tell shake to use ByteStrings instead of trying to interpret whatever as whatever unicode.
2021-11-30 12:44:48 +0100 <arahael> (I think I can, anyway)
2021-11-30 12:44:56 +0100 <arahael> But not tonight. :(
2021-11-30 12:46:37 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 12:46:54 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 12:47:04 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 264 seconds)
2021-11-30 12:48:44 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 12:49:01 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 12:50:41 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 12:51:00 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 12:53:01 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 12:53:19 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 12:53:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-11-30 12:54:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 12:55:32 +0100lavaman(~lavaman@98.38.249.169)
2021-11-30 12:57:33 +0100pfurla(~pfurla@2804:14d:5c81:4104:4c11:ba21:da7d:dd69)
2021-11-30 12:57:39 +0100namkeleser(~namkelese@101.175.102.188) (Quit: Client closed)
2021-11-30 12:59:23 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 12:59:41 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 13:00:52 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-30 13:01:28 +0100 <kuribas> How do you handle non-local exits?
2021-11-30 13:01:36 +0100 <kuribas> error seems a bit harsh...
2021-11-30 13:02:00 +0100 <kuribas> I could use ExceptT, and catch the error at toplevel...
2021-11-30 13:02:42 +0100 <kuribas> Basically I have an IO function, and at an error I want to write an error message and exit the function
2021-11-30 13:03:13 +0100 <Rembane> :t throwIO -- maybe?
2021-11-30 13:03:14 +0100 <lambdabot> Exception e => e -> IO a
2021-11-30 13:03:40 +0100 <kuribas> well, I already wrote the error message to stdout...
2021-11-30 13:03:56 +0100 <kuribas> Or use the exception to format it? hmm...
2021-11-30 13:04:35 +0100 <kuribas> eventually I'll process the errors, and put them back into the input file...
2021-11-30 13:05:18 +0100 <kuribas> maybe throwIO with a custom error is not such a bad idea...
2021-11-30 13:10:42 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 13:10:59 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 13:12:39 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 13:12:57 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 13:13:52 +0100 <zero> can i make a program where i run some stuff and then exit and run a terminal command?
2021-11-30 13:14:11 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-11-30 13:14:47 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-30 13:15:00 +0100lavaman(~lavaman@98.38.249.169)
2021-11-30 13:15:08 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-30 13:15:15 +0100 <boxscape> zero is it acceptable if the haskell program exits only after the terminal command has completed?
2021-11-30 13:15:39 +0100 <yushyin> execve?
2021-11-30 13:16:25 +0100 <zero> bad description, sorry. i want to make a program that takes some input, does some stuff and then "turn into" another program
2021-11-30 13:17:29 +0100 <zero> yushyin: i think that's it, thanks
2021-11-30 13:18:23 +0100deadmarshal_(~deadmarsh@95.38.229.118)
2021-11-30 13:18:45 +0100 <zero> https://hackage.haskell.org/package/procex
2021-11-30 13:19:08 +0100 <zero> boxscape: yes i think so
2021-11-30 13:19:42 +0100 <zero> that's even better
2021-11-30 13:19:49 +0100deadmarshal(~deadmarsh@95.38.228.153) (Ping timeout: 256 seconds)
2021-11-30 13:19:51 +0100 <merijn> Why not just
2021-11-30 13:19:54 +0100 <merijn> @hackage process
2021-11-30 13:19:54 +0100 <lambdabot> https://hackage.haskell.org/package/process
2021-11-30 13:19:59 +0100 <boxscape> from your initial question I would have suggested using something like System.Process.readProcess
2021-11-30 13:20:07 +0100 <boxscape> (in the package merijn linked)
2021-11-30 13:20:29 +0100 <merijn> tbh, the high level interface of process is kinda bad, imo
2021-11-30 13:20:38 +0100 <merijn> but that procex is linux only, so also terrible >.>
2021-11-30 13:20:50 +0100 <zero> can i for instance open vim with readProcess?
2021-11-30 13:21:10 +0100 <zero> let the user do some stuff, and then exit?
2021-11-30 13:22:19 +0100 <hpc> vim is trickier than say, curl
2021-11-30 13:22:22 +0100 <hpc> but it's doable
2021-11-30 13:22:57 +0100 <geekosaur> well. not trickier idf you're not feeding inpu tor catching output
2021-11-30 13:23:22 +0100 <geekosaur> depends on what exactly you're doing
2021-11-30 13:24:56 +0100filwisher(2e6936c793@2604:bf00:561:2000::170)
2021-11-30 13:25:04 +0100narendra(~user@2a02:8109:b63f:ff7c::56c2) (Ping timeout: 268 seconds)
2021-11-30 13:26:37 +0100 <[exa]> zero: might be useful to have a look at how others do it, e.g. git with EDITOR
2021-11-30 13:28:03 +0100 <zero> i was thinking of that example precisely
2021-11-30 13:28:55 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Read error: Connection reset by peer)
2021-11-30 13:29:28 +0100 <merijn> The trick is that git doesn't interact with your editor at all
2021-11-30 13:29:41 +0100 <boxscape> or ghci with :e
2021-11-30 13:29:44 +0100 <boxscape> % :e
2021-11-30 13:29:44 +0100 <yahb> boxscape: No files to edit.
2021-11-30 13:29:45 +0100 <merijn> It just starts the editor attached (and taking over) the terminal git runs in
2021-11-30 13:29:52 +0100fr33domlover(~fr33@2.53.150.205)
2021-11-30 13:30:44 +0100 <merijn> tbh, if you want complex interactions with child programs and the user's terminal, what you should do is order a copy of "Advanced Programming in the UNIX Environment, 3rd edition" and ignore anything anybody on the internet says unless they cite that book >.>
2021-11-30 13:31:06 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-30 13:32:51 +0100 <merijn> in fact, if you even plan to do anything that interacts with other processes, terminals, network sockets or anything remotely system-y on a unix-like system you should just get that book and ignore the internet >.>
2021-11-30 13:35:05 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 13:35:23 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 13:35:33 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 268 seconds)
2021-11-30 13:37:13 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 13:37:19 +0100 <hpc> merijn: there's a who shaves the barber paradox in there somewhere :P
2021-11-30 13:37:32 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 13:39:21 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 13:39:40 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 13:41:20 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 13:41:27 +0100 <merijn> Possibly, but I'm 100% sure the average unix-y software I used would be less shitty if more people read that freaking book >.>
2021-11-30 13:41:39 +0100 <merijn> Hell, you don't even have to read it, just consult it as a reference
2021-11-30 13:41:39 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 13:41:45 +0100mario(~mario@31.147.205.13)
2021-11-30 13:41:56 +0100 <merijn> Maybe then people will finally stop using fucking fork() >.<
2021-11-30 13:43:36 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 13:43:54 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 13:45:34 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 13:45:40 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-11-30 13:45:52 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 13:47:53 +0100Codaraxis(~Codaraxis@user/codaraxis)
2021-11-30 13:49:04 +0100 <maerwald> and use the more complicated posix_spawn?
2021-11-30 13:49:17 +0100dawdler(~dawdler@user/dawdler) (Ping timeout: 256 seconds)
2021-11-30 13:49:26 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-11-30 13:49:30 +0100 <maerwald> even creating C ffi for that is hard, because there are 20 or so and they're all related
2021-11-30 13:50:40 +0100Codaraxis_(~Codaraxis@user/codaraxis) (Ping timeout: 264 seconds)
2021-11-30 13:52:47 +0100dawdler(~dawdler@user/dawdler)
2021-11-30 13:56:00 +0100 <merijn> maerwald: posix_spawn has a non-zero chance of being correct
2021-11-30 13:56:29 +0100 <merijn> My reaction to people who say they can use fork safely is the same as to the people who claim they can safely use C or C++: "I don't believe you"
2021-11-30 13:57:11 +0100 <maerwald> start by implementing the C ffi in haskell then, because it doesn't exist
2021-11-30 13:57:19 +0100 <jonathanx> I'm struggling with persistent. I've added a custom PersistField instance for a type of mine, and I've just stricted it up a bit, which means that I have db data that fail deserialization. I use selectList (https://hackage.haskell.org/package/persistent-2.13.2.1/docs/Database-Persist-Class.html#v:selectL…) to retrieve data. When the query matches db data that fail deserialization, an exception is thrown, and need to be
2021-11-30 13:57:19 +0100 <jonathanx> caught. This makes me sad, since I would prefer if the sematics of selectList was akin to catMaybes, i.e. simply discard db data that fails serialization. Is there any way to configure this? Also, being able to hook up logging to failures would be nice, but I'd prefer it if the operation didn't error out completely just because the data of one of the matching rows are faulty.
2021-11-30 13:57:44 +0100max22-(~maxime@2a01cb08833598007acc2e8deff42dd7.ipv6.abo.wanadoo.fr) (Ping timeout: 252 seconds)
2021-11-30 13:57:59 +0100 <merijn> maerwald: I don't need it at the moment and don't have the extra time
2021-11-30 13:58:08 +0100 <merijn> jonathanx: How come data is failing deserialisation?
2021-11-30 13:58:28 +0100 <maerwald> merijn: then I'm confused how you can reccomend it :p
2021-11-30 13:58:45 +0100 <merijn> jonathanx: persistent pretty much it assumes it is in control of the database and therefore erroneous data is a serious corruption
2021-11-30 13:58:58 +0100 <merijn> maerwald: process using posix_spawn and covers most usecases
2021-11-30 13:59:07 +0100 <maerwald> uhm...
2021-11-30 13:59:10 +0100 <jonathanx> I'm working in an event sourced system, and we have decided to fail some old events due to them violating an invariant that we failed to enforce previously
2021-11-30 13:59:19 +0100 <kuribas> yikes, why do haskell DB libraries assume you only want to code in haskell...
2021-11-30 13:59:29 +0100 <merijn> maerwald: Also, as I never recommended "using posix_spawn" I said "You can't use fork"
2021-11-30 13:59:52 +0100 <merijn> jonathanx: You'd have to implement the persistent typeclasses manually to handle that scenario
2021-11-30 14:00:19 +0100 <merijn> jonathanx: Instead of relying on TH to generate the PersistField and PersistEntity classes
2021-11-30 14:00:22 +0100mariospaceseller
2021-11-30 14:04:37 +0100 <merijn> maerwald: yeah, yeah, you don't like process "because you don't know what it does", but you're an outlier and I'm not gonna adjust my advice to account for your quirks :p
2021-11-30 14:04:58 +0100 <maerwald> merijn: process is also funny cross-platform
2021-11-30 14:05:08 +0100 <merijn> For 98.5% of all haskell users they're better off using process than anything else
2021-11-30 14:05:18 +0100 <geekosaur> everything is funny cross-platform
2021-11-30 14:05:21 +0100 <maerwald> stack even does some CPP, because process behaves different on windows and unix
2021-11-30 14:05:28 +0100 <merijn> maerwald: And if you truly wanna be pedantic even GHC is fucky
2021-11-30 14:05:35 +0100 <maerwald> absolutely
2021-11-30 14:05:43 +0100 <merijn> See the complete inability to specify a CLOEXEC flag for opening files
2021-11-30 14:06:49 +0100narendra(~user@2a02:8109:b63f:ff7c::56c2)
2021-11-30 14:07:02 +0100 <maerwald> merijn: uh, I thought I had fixed that
2021-11-30 14:07:19 +0100 <merijn> maerwald: Who knows? I can't find the code in base and docs say nothing
2021-11-30 14:07:25 +0100spaceseller(~mario@31.147.205.13) (Quit: Leaving)
2021-11-30 14:07:46 +0100 <maerwald> https://github.com/haskell/unix/commit/c7d88b3612fdf74a7964a670d6e79128f97f46b0
2021-11-30 14:07:57 +0100 <geekosaur> I'd expect that to be in unix, not base. it's kinda meaningless for windows
2021-11-30 14:08:13 +0100 <merijn> I don't want Dependent Haskell or LinearTypes, I want more predictable/transparent low level interfaces, exceptions, etc.
2021-11-30 14:08:16 +0100 <maerwald> it wasn't in unix for a long time
2021-11-30 14:08:34 +0100 <geekosaur> since windows has no sane way to do exec
2021-11-30 14:08:34 +0100 <maerwald> merijn: haskellers care very little about low level correctness
2021-11-30 14:08:39 +0100 <merijn> Right, so base and bytestring are still entirely broken in the presense of both fork and process due to lack of CLOEXEC
2021-11-30 14:08:55 +0100 <merijn> geekosaur: Rightfully so, because exec is dumb >.<
2021-11-30 14:09:21 +0100 <maerwald> it's more "zomg, effects systems will save us"
2021-11-30 14:09:21 +0100 <merijn> maerwald: But I don't wanna redo all GHCs optimisations to make my own low-level Haskell :(
2021-11-30 14:10:46 +0100 <merijn> maerwald: to be fair, almost no other language does either :p
2021-11-30 14:10:51 +0100 <maerwald> the last time I dealt with effects systems I ended up debugging why the unit test effect interpreter and the actual effect interpreter have diverging behavior
2021-11-30 14:10:58 +0100 <merijn> Maybe Rust, but I haven't looked at it enough to say
2021-11-30 14:11:19 +0100 <maerwald> so my tests, passed, but everything collapsed against the real thing
2021-11-30 14:11:44 +0100 <merijn> I mean, don't go around expecting python to have any sane low level behaviour, it's nightmare fuel
2021-11-30 14:11:55 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl)
2021-11-30 14:11:57 +0100 <maerwald> that's why I prototype in posix shell
2021-11-30 14:12:31 +0100ystael(~ystael@user/ystael) (Ping timeout: 256 seconds)
2021-11-30 14:13:09 +0100kadir(~kadir@88.251.54.110)
2021-11-30 14:14:03 +0100fef(~thedawn@user/thedawn)
2021-11-30 14:15:25 +0100 <maerwald> I'd have switched to rust if it wasn't that verbose... not good for your RSI, too much typing
2021-11-30 14:16:53 +0100lavaman(~lavaman@98.38.249.169)
2021-11-30 14:19:17 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 14:19:36 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 14:19:51 +0100viluon(uid453725@id-453725.helmsley.irccloud.com)
2021-11-30 14:21:31 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 14:21:48 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 14:22:09 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-11-30 14:22:53 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-11-30 14:23:16 +0100ystael(~ystael@user/ystael)
2021-11-30 14:25:31 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 14:25:50 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 14:25:54 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net)
2021-11-30 14:29:29 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 14:29:47 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 14:30:39 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-30 14:31:17 +0100deadmarshal_(~deadmarsh@95.38.229.118) (Ping timeout: 252 seconds)
2021-11-30 14:31:43 +0100 <boxscape> make a Haskell EDSL that allows you to generate rust code
2021-11-30 14:33:05 +0100deadmarshal(~deadmarsh@95.38.229.118)
2021-11-30 14:35:43 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 14:36:02 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 14:39:43 +0100deadmarshal(~deadmarsh@95.38.229.118) (Ping timeout: 256 seconds)
2021-11-30 14:40:13 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-30 14:42:09 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 14:42:27 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 14:43:43 +0100max22-(~maxime@2a01cb08833598002b3ca9ff186b1f37.ipv6.abo.wanadoo.fr)
2021-11-30 14:45:12 +0100 <tomsmeding> haskell is exceedingly flexible for making edsl's, but I'm not sure it's quite flexible enough to make something that makes writing rust code less verbose
2021-11-30 14:46:26 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Read error: Connection reset by peer)
2021-11-30 14:47:17 +0100slack1256(~slack1256@191.126.99.89)
2021-11-30 14:48:26 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-30 14:48:51 +0100cosimone(~user@93-47-231-3.ip115.fastwebnet.it)
2021-11-30 14:49:46 +0100pfurla(~pfurla@2804:14d:5c81:4104:4c11:ba21:da7d:dd69) (Quit: gone to sleep. ZZZzzz…)
2021-11-30 14:51:26 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 14:51:44 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 14:51:58 +0100shriekingnoise(~shrieking@186.137.144.80)
2021-11-30 14:53:08 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-11-30 14:53:47 +0100lavaman(~lavaman@98.38.249.169)
2021-11-30 14:55:20 +0100__monty__(~toonn@user/toonn)
2021-11-30 14:57:18 +0100deadmarshal(~deadmarsh@95.38.229.118)
2021-11-30 14:58:28 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 264 seconds)
2021-11-30 15:00:08 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 15:00:25 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 15:01:11 +0100max22-(~maxime@2a01cb08833598002b3ca9ff186b1f37.ipv6.abo.wanadoo.fr) (Ping timeout: 250 seconds)
2021-11-30 15:01:38 +0100reumeth(~reumeth@user/reumeth)
2021-11-30 15:04:21 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Remote host closed the connection)
2021-11-30 15:04:45 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-30 15:05:51 +0100narendra(~user@2a02:8109:b63f:ff7c::56c2) (Quit: ERC 5.4.1 (IRC client for GNU Emacs 29.0.50))
2021-11-30 15:06:16 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 264 seconds)
2021-11-30 15:06:50 +0100 <EvanR> with enough template haskell, you can do anything xD
2021-11-30 15:07:33 +0100 <boxscape> you can even add CPP on top
2021-11-30 15:08:10 +0100waleee(~waleee@h-82-196-111-63.na.cust.bahnhof.se)
2021-11-30 15:14:13 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-11-30 15:14:51 +0100waleee(~waleee@h-82-196-111-63.na.cust.bahnhof.se) (Ping timeout: 256 seconds)
2021-11-30 15:16:37 +0100Lycurgus(~juan@98.4.112.204)
2021-11-30 15:19:28 +0100 <tomsmeding> EvanR: at that point you're just writing a parser :p
2021-11-30 15:21:13 +0100lbseale(~ep1ctetus@user/ep1ctetus)
2021-11-30 15:21:48 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-30 15:22:19 +0100 <tomsmeding> hm, with the right EDSL design, what you _might_ gain is using the haskell metalanguage in place of macro definitions. With sufficient type-safety, you aren't going to get any more hygienic macros
2021-11-30 15:25:13 +0100 <EvanR> it says here for ghc 9.2.1: Merging of ghc-exactprint into the GHC tree, providing infrastructure for source-to-source program rewriting out-of-the-box.
2021-11-30 15:25:27 +0100 <EvanR> I dunno what that means but uh
2021-11-30 15:25:46 +0100 <EvanR> sounds like DSL stuff
2021-11-30 15:26:24 +0100lbseale_(~ep1ctetus@user/ep1ctetus)
2021-11-30 15:27:03 +0100slac11455(~slack1256@191.125.99.65)
2021-11-30 15:27:43 +0100aliosablack(~chomwitt@2a02:587:dc16:f200:12c3:7bff:fe6d:d374)
2021-11-30 15:27:47 +0100 <boxscape> there's a short talk on youtube about it https://www.youtube.com/watch?v=GkoQbJofm1A
2021-11-30 15:28:06 +0100aliosablack(~chomwitt@2a02:587:dc16:f200:12c3:7bff:fe6d:d374) (Remote host closed the connection)
2021-11-30 15:28:07 +0100chomwitt(~chomwitt@2a02:587:dc16:f200:12c3:7bff:fe6d:d374) (Read error: Connection reset by peer)
2021-11-30 15:28:31 +0100chomwitt(~chomwitt@2a02:587:dc16:f200:12c3:7bff:fe6d:d374)
2021-11-30 15:28:43 +0100 <lbseale_> I have a situation where I have a small number of objects (2 - 5 max), which have arbitrary (but guaranteed unique) labels. I want to put them in some data structure, where I can read / replace them. Is there a way to do this safely?
2021-11-30 15:28:49 +0100 <boxscape> I think it's mainly for tools that interact with Haskell source code, not DSLs
2021-11-30 15:29:01 +0100slack1256(~slack1256@191.126.99.89) (Ping timeout: 256 seconds)
2021-11-30 15:29:35 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Ping timeout: 256 seconds)
2021-11-30 15:30:42 +0100 <geekosaur> yeh, I think it's for Haskell source plugins which previously were pretty limited
2021-11-30 15:30:54 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-11-30 15:30:55 +0100 <tomsmeding> EvanR: I think that is related to source-to-source _Haskell_ rewriting, where spacing, comments etc. are preserved. Not terribly relevant to EDSLs, I think -- though I don't really know for sure
2021-11-30 15:31:22 +0100 <tomsmeding> oh, as boxscape said
2021-11-30 15:31:29 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net)
2021-11-30 15:31:32 +0100 <tomsmeding> and everyone else
2021-11-30 15:31:58 +0100 <tomsmeding> someone explain lenses to lbseale_, I don't know anything about them
2021-11-30 15:32:29 +0100 <lbseale_> tomsmeding, lol noooo I don't want that to be the answer
2021-11-30 15:32:46 +0100 <tomsmeding> lbseale_: would a simple record type be okay? data Thing = Thing { obj1 :: A, obj2 :: B, obj3 :: C }
2021-11-30 15:33:13 +0100 <EvanR> yes seems like a record question really
2021-11-30 15:33:16 +0100 <lbseale_> It would except I don't know how many objects there are or what their labels are at compile-time
2021-11-30 15:33:24 +0100 <tomsmeding> if 't :: Thing', then 'obj1 t' is the first object in it; 't { obj1 = s }' is a new thing with the first object replaced by s
2021-11-30 15:33:31 +0100 <EvanR> extensible records, or heterogeneous map
2021-11-30 15:33:54 +0100 <tomsmeding> lbseale_: https://hackage.haskell.org/package/dependent-map-0.4.0.0/docs/Data-Dependent-Map.html#t:DMap
2021-11-30 15:34:14 +0100 <tomsmeding> or, are those objects different types?
2021-11-30 15:34:31 +0100 <tomsmeding> if no, simple Data.Map
2021-11-30 15:34:35 +0100 <tomsmeding> if yes, DMAP
2021-11-30 15:34:37 +0100 <tomsmeding> * DMap
2021-11-30 15:34:54 +0100 <lbseale_> they're all the same type
2021-11-30 15:34:55 +0100 <EvanR> 2 to 5 max, hell use [(String,a)] xD
2021-11-30 15:35:09 +0100 <tomsmeding> % import qualified Data.Map.Strict as Map
2021-11-30 15:35:10 +0100 <yahb> tomsmeding:
2021-11-30 15:35:27 +0100 <tomsmeding> % data Label = Lab1 | Lab2 | Lab3
2021-11-30 15:35:28 +0100 <yahb> tomsmeding:
2021-11-30 15:35:31 +0100 <tomsmeding> % data Label = Lab1 | Lab2 | Lab3 deriving (Eq, Ord, Show)
2021-11-30 15:35:31 +0100 <yahb> tomsmeding:
2021-11-30 15:35:48 +0100 <tomsmeding> % let mp = Map.fromList [(Lab1, 123), (Lab2, 456)]
2021-11-30 15:35:49 +0100 <yahb> tomsmeding:
2021-11-30 15:35:52 +0100 <tomsmeding> % Map.lookup Lab1 mp
2021-11-30 15:35:52 +0100 <yahb> tomsmeding: Just 123
2021-11-30 15:35:54 +0100 <tomsmeding> % Map.lookup Lab3 mp
2021-11-30 15:35:54 +0100 <yahb> tomsmeding: Nothing
2021-11-30 15:36:08 +0100 <tomsmeding> % Map.insert Lab2 789 mp
2021-11-30 15:36:08 +0100 <yahb> tomsmeding: fromList [(Lab1,123),(Lab2,789)]
2021-11-30 15:36:14 +0100 <tomsmeding> lbseale_: seems like a simple map would do :p
2021-11-30 15:36:23 +0100 <lbseale_> yeah this is nice
2021-11-30 15:36:49 +0100 <tomsmeding> which is effectively [(Label, a)] except that it also scales to >5 things
2021-11-30 15:37:03 +0100 <lbseale_> I wish that I didn't have to handle the `Maybe` type from looking up values in the `Map`
2021-11-30 15:37:04 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-30 15:37:04 +0100 <tomsmeding> well, and also except that it doesn't allow duplicate labels
2021-11-30 15:37:18 +0100 <EvanR> you didn't say that all labels are occupied though?
2021-11-30 15:37:22 +0100 <lbseale_> because I pinky-promise my `Map` will always have the labels I want to look up
2021-11-30 15:37:28 +0100 <lbseale_> oh, my mistake, yes they are
2021-11-30 15:37:31 +0100 <tomsmeding> % :t (Map.!)
2021-11-30 15:37:32 +0100 <yahb> tomsmeding: forall {k} {a}. Ord k => M.Map k a -> k -> a
2021-11-30 15:37:42 +0100 <tomsmeding> % :set -fno-print-explicit-foralls
2021-11-30 15:37:42 +0100 <yahb> tomsmeding:
2021-11-30 15:37:43 +0100 <tomsmeding> % :t (Map.!)
2021-11-30 15:37:43 +0100 <yahb> tomsmeding: Ord k => M.Map k a -> k -> a
2021-11-30 15:37:44 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Remote host closed the connection)
2021-11-30 15:37:53 +0100 <tomsmeding> that will `error` if the key doesn't exist :p
2021-11-30 15:37:56 +0100 <EvanR> wait wait... you don't know how many, but they are unique and you know they are always there?
2021-11-30 15:38:08 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-30 15:38:14 +0100 <tomsmeding> % mp Map.! Lab3
2021-11-30 15:38:14 +0100 <EvanR> is this illogical
2021-11-30 15:38:15 +0100 <yahb> tomsmeding: *** Exception: Map.!: given key is not an element in the map; CallStack (from HasCallStack):; error, called at libraries/containers/containers/src/Data/Map/Internal.hs:633:17 in containers-0.6.4.1:Data.Map.Internal
2021-11-30 15:38:19 +0100 <tomsmeding> % mp Map.! Lab2
2021-11-30 15:38:20 +0100 <yahb> tomsmeding: 456
2021-11-30 15:38:49 +0100 <tomsmeding> EvanR: external program properties that are not expressed in the type system. Welcome to reality :p
2021-11-30 15:39:03 +0100 <lbseale_> tomsmeding, yeah I thought this would be the answer
2021-11-30 15:39:06 +0100 <EvanR> but how do you not crash?
2021-11-30 15:40:03 +0100 <lbseale_> EvanR, it's a library being called by code that reads in the objects and guarantees that their labels are unique. There can be an arbitrary quantity of them, but in practice there won't be many
2021-11-30 15:40:39 +0100 <EvanR> so your key set is always coming from a place that built the map
2021-11-30 15:40:51 +0100 <lbseale_> yes
2021-11-30 15:41:06 +0100 <lbseale_> so I'll just do the unsafe lookups and handle them appropriately
2021-11-30 15:41:22 +0100 <tomsmeding> you can try to make this more type-safe, but for questionable benefit
2021-11-30 15:41:49 +0100 <EvanR> i'm curious how you will do lookups with keys when they're unknown xD
2021-11-30 15:41:50 +0100 <lbseale_> that's not appealing, I'd prefer my code be simple and a little unclean
2021-11-30 15:42:06 +0100 <EvanR> more realistically it seems like you'd just spell out the whole map and use the keys that are there
2021-11-30 15:42:16 +0100 <geekosaur> presumably the keys are transmitted separately?
2021-11-30 15:42:25 +0100 <EvanR> :thonk:
2021-11-30 15:42:39 +0100 <EvanR> keys have to be in the map...
2021-11-30 15:42:55 +0100 <geekosaur> % M.keys mp
2021-11-30 15:42:55 +0100 <yahb> geekosaur: [Lab1,Lab2]
2021-11-30 15:43:03 +0100 <lbseale_> EvanR, there are times when I want to make arbitrary subsets of these objects, then update just that subset
2021-11-30 15:43:13 +0100 <lbseale_> so like, I know what keys I took out
2021-11-30 15:43:27 +0100 <lbseale_> but there could be many of them, and I don't know what they are
2021-11-30 15:43:43 +0100 <EvanR> ok well I'm not sure we made this very safe xD
2021-11-30 15:44:53 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-11-30 15:45:32 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds)
2021-11-30 15:45:49 +0100 <boxscape> seems like the sort of thing you can make type safe with existential types and Symbol. But yeah probably wouldn't result in simple code
2021-11-30 15:47:29 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 15:47:47 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 15:49:27 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 15:49:45 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 15:51:25 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 15:51:43 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 15:52:15 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-30 15:53:42 +0100DNH(~DNH@2a02:8108:1100:16d8:f00d:18c8:3973:574b) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-30 15:54:27 +0100 <lbseale_> ok, thanks guys! I think I know what to do
2021-11-30 15:54:49 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-30 15:54:49 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-30 15:54:49 +0100wroathe(~wroathe@user/wroathe)
2021-11-30 15:54:59 +0100LukeHoersten(~LukeHoers@user/lukehoersten)
2021-11-30 15:55:03 +0100 <lbseale_> I was gonig to use NonEmpty Map, since I can at least guarantee that
2021-11-30 15:55:30 +0100 <Hecate> hi lbseale_ :)
2021-11-30 15:55:37 +0100 <Hecate> how are you doing?
2021-11-30 15:55:59 +0100acidjnk_new(~acidjnk@p200300d0c7271e72fcf154b5eecf3df6.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-11-30 15:57:21 +0100 <lbseale_> Hecate, I'm well! I was just looking at your suggestions. How are you?
2021-11-30 15:57:47 +0100DNH(~DNH@2a02:8108:1100:16d8:f00d:18c8:3973:574b)
2021-11-30 15:58:27 +0100lbseale_lbseale
2021-11-30 16:00:11 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-11-30 16:02:55 +0100max22-(~maxime@2a01cb08833598007c2e741a7c59ca1a.ipv6.abo.wanadoo.fr)
2021-11-30 16:04:31 +0100AlexZenon(~alzenon@178.34.160.14)
2021-11-30 16:04:59 +0100Alex_test(~al_test@178.34.160.14)
2021-11-30 16:05:07 +0100lavaman(~lavaman@98.38.249.169)
2021-11-30 16:05:55 +0100 <boxscape> Is there an advent of code room specific to Haskell?
2021-11-30 16:06:09 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 16:06:26 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 16:08:06 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 16:09:44 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-11-30 16:10:54 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-11-30 16:11:01 +0100 <merijn> Not really?
2021-11-30 16:11:03 +0100 <merijn> Here :p
2021-11-30 16:11:22 +0100 <merijn> That reminds me, someone should update the topic to include the #haskell leaderboard
2021-11-30 16:12:20 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-11-30 16:12:49 +0100ChanServ+o geekosaur
2021-11-30 16:12:54 +0100 <geekosaur> point me to it?
2021-11-30 16:13:34 +0100geekosaurdoesn't do AoC
2021-11-30 16:13:35 +0100 <merijn> I can't, glguy created it and I don't think I can see the code?
2021-11-30 16:13:44 +0100pfurla(~pfurla@2804:14d:5c81:4104:4c11:ba21:da7d:dd69)
2021-11-30 16:14:06 +0100 <boxscape_> yep unless someone remembers it from last year (and glguy hasn't changed it) he will have to tell us
2021-11-30 16:14:59 +0100xsperry(~xs@user/xsperry) (Killed (NickServ (GHOST command used by ahahaha!~xs@cpe-188-129-101-182.dynamic.amis.hr)))
2021-11-30 16:15:22 +0100xsperry(~xs@user/xsperry)
2021-11-30 16:16:09 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 16:16:20 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
2021-11-30 16:17:25 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-11-30 16:17:25 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-11-30 16:17:25 +0100wroathe(~wroathe@user/wroathe)
2021-11-30 16:18:36 +0100 <geekosaur> bah, my logs don't include it (spent a couple years using webchat so no logs from then, sigh)
2021-11-30 16:18:42 +0100geekosaur-o geekosaur
2021-11-30 16:19:31 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f)
2021-11-30 16:20:35 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-11-30 16:21:07 +0100retroid_(~retro@97e2ba2e.skybroadband.com)
2021-11-30 16:21:50 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-11-30 16:23:08 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 16:24:16 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) (Ping timeout: 264 seconds)
2021-11-30 16:25:00 +0100 <Hecate> lbseale: fairly good, thank you very much. :) Managed to get the Functions lesson merged after many months of review :')
2021-11-30 16:25:08 +0100retro_(~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds)
2021-11-30 16:25:45 +0100retroid_(~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds)
2021-11-30 16:26:27 +0100retroid_(~retro@97e2ba2e.skybroadband.com)
2021-11-30 16:26:46 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-11-30 16:27:23 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-11-30 16:30:28 +0100x88x88x(~cheeg@gateway/vpn/pia/x88x88x)
2021-11-30 16:31:46 +0100jeetelongname(~jeet@eduroam-public-46.nat.port.ac.uk)
2021-11-30 16:32:26 +0100xkuru(~xkuru@user/xkuru)
2021-11-30 16:36:40 +0100 <zincy> Can someone help me with this type error? https://gist.github.com/therewillbecode/34b38f409c8cdf2b92f4edc0a417c734
2021-11-30 16:37:00 +0100 <zincy> Ill kinded expression whilst playing with Hedgehog state machine testing
2021-11-30 16:39:02 +0100 <tomsmeding> zincy: does PSitDown take two arguments here? pure $ PSitDown (GNewPlayer (T.pack $ show $ length ps) cs)
2021-11-30 16:39:13 +0100 <tomsmeding> oh I'm blind
2021-11-30 16:39:36 +0100 <tomsmeding> zincy: what's the type of Command
2021-11-30 16:40:19 +0100 <tomsmeding> zincy: also, don't those Nothings in 'gen' need to be 'pure Nothing' or something?
2021-11-30 16:44:29 +0100hgolden(~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Quit: Konversation terminated!)
2021-11-30 16:44:52 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
2021-11-30 16:46:10 +0100hgolden(~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
2021-11-30 16:46:16 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-11-30 16:49:14 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-30 16:54:38 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-11-30 16:59:30 +0100 <EvanR> two lines of code that satisfy the type checker but are wildly different xD
2021-11-30 16:59:44 +0100 <EvanR> putC c 0 "" = [c]
2021-11-30 16:59:49 +0100 <EvanR> putC c 0 "" = "c"
2021-11-30 16:59:56 +0100 <EvanR> I guess that's why we need tests xD
2021-11-30 17:00:54 +0100 <boxscape> EvanR: or just turn on -Wall
2021-11-30 17:03:05 +0100deadmarshal(~deadmarsh@95.38.229.118) (Ping timeout: 256 seconds)
2021-11-30 17:04:54 +0100ouro_boros(~ouroboros@2804:14c:65e4:93f6::1001) (Remote host closed the connection)
2021-11-30 17:04:57 +0100ec_(~ec@gateway/tor-sasl/ec)
2021-11-30 17:05:17 +0100ouro_boros(~ouroboros@2804:14c:65e4:93f6:a589:7295:b475:5b03)
2021-11-30 17:05:50 +0100 <janus> does the version of ghc used imply which version of bytestring is used?
2021-11-30 17:06:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-11-30 17:08:14 +0100 <davean> janus: not past very vaguely
2021-11-30 17:10:20 +0100 <janus> ok so all this breakage is just happening because 0.10 was long-lived and isn't compatible with base 4.16. so almost noone has encountered the error because nobody uses ghc 9.2 yet
2021-11-30 17:10:26 +0100slac11455(~slack1256@191.125.99.65) (Remote host closed the connection)
2021-11-30 17:11:17 +0100 <davean> what breakage?
2021-11-30 17:11:39 +0100 <davean> 0.11 came out over a year ago
2021-11-30 17:12:05 +0100 <janus> i just had to send lots of patches for this. for tzdata, HaTeX, wuss
2021-11-30 17:12:26 +0100 <janus> and sendfile
2021-11-30 17:12:40 +0100 <davean> Huh, I've been on bytestring 0.11 for ages
2021-11-30 17:12:49 +0100 <davean> what caused the breaks?
2021-11-30 17:13:17 +0100 <janus> people have 'bytestring < 0.11' in their cabal files
2021-11-30 17:13:28 +0100 <EvanR> I'll get back to you when I figure out how to do that with cabal, for now moving on
2021-11-30 17:14:02 +0100 <davean> EvanR: you need to know how to turn on -Wall with cabal? jsut --ghc-option=-Wall
2021-11-30 17:14:02 +0100 <janus> even ftp-client has bytestring < 0.11 even though its source repository doesn't have it. does it come from the trustees?
2021-11-30 17:14:19 +0100 <janus> @package ftp-client
2021-11-30 17:14:19 +0100 <lambdabot> https://hackage.haskell.org/package/ftp-client
2021-11-30 17:14:56 +0100 <davean> no, but it would be bad if there wasn't such a requirement
2021-11-30 17:15:24 +0100 <janus> Megan Robinson must have uploaded a package with constraints that aren't in the source repo... how rare
2021-11-30 17:15:24 +0100 <EvanR> what... I turned on -Wall somehow... cool
2021-11-30 17:16:10 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-11-30 17:16:32 +0100 <sclv> janus are you aware of —allow-newer?
2021-11-30 17:16:49 +0100 <janus> sclv: yes :P but it's a hack. i shame myself for using it
2021-11-30 17:17:05 +0100 <davean> I shame you for using FTP, but here we are
2021-11-30 17:17:20 +0100 <janus> i usually just use source-repository-package because then i can send a PR once it compiles
2021-11-30 17:17:24 +0100shaprenables PASV
2021-11-30 17:17:34 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-11-30 17:17:44 +0100 <janus> except for sendfile, i had to learn to use darcs :P
2021-11-30 17:17:45 +0100 <zincy> tomsmeding: https://hackage.haskell.org/package/hedgehog-1.0.5/docs/Hedgehog.html#t:Command
2021-11-30 17:18:08 +0100 <zincy> tomsmeding: Don't think it needs to be pure Nothing according to the examples I have seen
2021-11-30 17:18:33 +0100 <tomsmeding> zincy: but gen returns something in the Gen monad, right?
2021-11-30 17:18:42 +0100 <tomsmeding> or otherwise that do block makes no sense
2021-11-30 17:19:26 +0100 <janus> davean: can't make the freight forwarders implement new stuff...
2021-11-30 17:19:57 +0100 <zincy> tomsmeding: Yeah you are right, https://github.com/hedgehogqa/haskell-hedgehog/blob/f8247c1519df37bc324caf8f8af8849816433332/hedge…
2021-11-30 17:20:19 +0100 <zincy> look there in the examples I think for gen you need to put it in Var
2021-11-30 17:20:57 +0100 <davean> janus: just tell them sftp is super ftp
2021-11-30 17:21:54 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 17:22:02 +0100 <davean> janus: packages that just have constraints that turn out to be tighter than required can just do a revision though, no new version required.
2021-11-30 17:22:39 +0100 <janus> davean: but i am only supposed to ask for revisions if the maintainer isn't responding, right? i was thinking to wait 2 weeks
2021-11-30 17:23:07 +0100 <zincy> tomsmeding: I think var is for something else. Actually look at the command type again
2021-11-30 17:23:08 +0100 <zincy> Maybe (gen (input Symbolic))
2021-11-30 17:24:15 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:97df:ebe3:251c:f0f6) (Quit: WeeChat 2.8)
2021-11-30 17:24:32 +0100 https://www.reddit.com/r/haskell | Admin: #haskell-ops | Offtopic: #haskell-offtopic | https://downloads.haskell.org | Paste code/errors: https://paste.tomsmeding.com | Logs: https://ircbrowse.tomsmeding.com/browse/lchaskell | AoC Leaderboard: 43100-84040706
2021-11-30 17:25:12 +0100 <davean> janus: you can ask the maintainer to do a revision
2021-11-30 17:25:16 +0100lavaman(~lavaman@98.38.249.169)
2021-11-30 17:25:41 +0100jeetelongname(~jeet@eduroam-public-46.nat.port.ac.uk) (Remote host closed the connection)
2021-11-30 17:25:50 +0100 <janus> aaah right. i just think it is so confusing when the repo is out of sync with hackage
2021-11-30 17:26:03 +0100 <janus> took me a long time to notice what was happening with ftp-client...
2021-11-30 17:26:19 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-11-30 17:26:21 +0100 <shapr> janus: darcs taught me about ControlMaster for ssh
2021-11-30 17:26:44 +0100_bo(~bo@217.18.216.247) (Ping timeout: 252 seconds)
2021-11-30 17:27:49 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net)
2021-11-30 17:30:10 +0100ub(~Thunderbi@p200300ecdf0ba2aaa54fdd1e9768c0b5.dip0.t-ipconnect.de)
2021-11-30 17:32:06 +0100 <sclv> i think for stack repos sometimes they use stack to generate the bounds _on upload_
2021-11-30 17:32:33 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-30 17:33:58 +0100 <janus> oooh that explains it
2021-11-30 17:34:57 +0100 <janus> shapr: i wanna use darcs, it's just so few people using it
2021-11-30 17:35:07 +0100 <janus> if i had to choose between sourcehut and darcs, i'd choose sourcehut
2021-11-30 17:36:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 17:37:31 +0100 <Franciman> haskell has punished me
2021-11-30 17:37:41 +0100 <Franciman> the interpreter in haskell takes 1.9s to compute the sum of the first 10M numbers
2021-11-30 17:37:48 +0100 <Franciman> my zig version takes 3.1s
2021-11-30 17:38:01 +0100 <Franciman> I feel I can overperform haskell though
2021-11-30 17:38:06 +0100 <Franciman> I literally have no optimization
2021-11-30 17:38:15 +0100 <Franciman> and haskell is packed with strange quirks to make things super fast
2021-11-30 17:38:21 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-11-30 17:38:28 +0100 <boxscape> but not in the interpreter
2021-11-30 17:38:37 +0100 <boxscape> unless "the interpreter" does not refer to ghci
2021-11-30 17:38:45 +0100 <Franciman> it refers to my software
2021-11-30 17:38:46 +0100jeetelongname(~jeet@eduroam-public-46.nat.port.ac.uk)
2021-11-30 17:38:51 +0100 <Franciman> my software in haskell is faster than my software in zig
2021-11-30 17:38:51 +0100 <boxscape> ah, I see
2021-11-30 17:39:07 +0100 <janus> Franciman: do you need bignum for that?
2021-11-30 17:39:14 +0100 <Franciman> nono, plain int64
2021-11-30 17:39:31 +0100 <davean> Why is your Haskell version so slow?
2021-11-30 17:39:43 +0100 <Franciman> it's an interpreter for my programming language
2021-11-30 17:39:52 +0100 <Franciman> so it's my language that is slow
2021-11-30 17:40:02 +0100 <davean> Ah, must be doing a lot of extra work
2021-11-30 17:40:08 +0100 <Franciman> https://github.com/Franciman/ellipse/blob/stable/src/Eval.hs
2021-11-30 17:40:28 +0100 <davean> Oh my yes it is
2021-11-30 17:41:08 +0100 <Franciman> like where?
2021-11-30 17:41:10 +0100Francimanwants to learn
2021-11-30 17:41:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-30 17:42:01 +0100 <[exa]> Franciman: what's the zig version out of curiosity?
2021-11-30 17:42:35 +0100 <Franciman> I want to make clear that it's Franciman's zig version, as that one is Franciman's haskell version
2021-11-30 17:42:36 +0100 <davean> well you seem to have no persistent property for your datastructure, from the evaluator's code, and you leave your valeus as references to thunks
2021-11-30 17:42:39 +0100 <Franciman> so this does not mean much
2021-11-30 17:42:45 +0100 <davean> you probably want to be leaf strict, spine lazy here
2021-11-30 17:42:50 +0100ncopa3(~ncopa@gbr2-dev1.alpinelinux.org)
2021-11-30 17:42:51 +0100 <Franciman> one sec [exa]
2021-11-30 17:43:22 +0100haskl(~haskl@user/haskl) (Ping timeout: 256 seconds)
2021-11-30 17:43:51 +0100OscarH_(~OscarH@90.201.86.195)
2021-11-30 17:43:52 +0100codolio(~dolio@130.44.130.54)
2021-11-30 17:43:54 +0100dwt__(~dwt_@c-98-200-58-177.hsd1.tx.comcast.net)
2021-11-30 17:43:55 +0100haskl(~haskl@user/haskl)
2021-11-30 17:43:56 +0100madnight(~madnight@static.59.103.201.195.clients.your-server.de)
2021-11-30 17:43:56 +0100OscarH(~OscarH@90.201.86.195) (Ping timeout: 256 seconds)
2021-11-30 17:43:56 +0100dwt_(~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 256 seconds)
2021-11-30 17:44:01 +0100bgamari_(~bgamari@64.223.235.131)
2021-11-30 17:44:01 +0100oats_(~thomas@user/oats)
2021-11-30 17:44:25 +0100aforemny_(~aforemny@static.248.158.34.188.clients.your-server.de)
2021-11-30 17:44:30 +0100bcoppens_(~bartcopp@vpn2.bartcoppens.be) (Ping timeout: 256 seconds)
2021-11-30 17:44:30 +0100dolio(~dolio@130.44.130.54) (Ping timeout: 256 seconds)
2021-11-30 17:44:30 +0100dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-11-30 17:44:30 +0100hiredman(~hiredman@frontier1.downey.family) (Ping timeout: 256 seconds)
2021-11-30 17:44:31 +0100heath(~heath@user/heath) (Ping timeout: 256 seconds)
2021-11-30 17:44:31 +0100Patternmaster(~georg@li1192-118.members.linode.com) (Ping timeout: 256 seconds)
2021-11-30 17:44:31 +0100jackhill(~jackhill@kalessin.dragonsnail.net) (Ping timeout: 256 seconds)
2021-11-30 17:44:34 +0100dtman34_(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
2021-11-30 17:44:57 +0100 <Franciman> oh btw, haskell version takes 0.9s
2021-11-30 17:45:01 +0100x88x88x(~cheeg@gateway/vpn/pia/x88x88x) (Ping timeout: 256 seconds)
2021-11-30 17:45:04 +0100piele(~piele@tbonesteak.creativeserver.net) (Ping timeout: 256 seconds)
2021-11-30 17:45:04 +0100ncopa(~ncopa@gbr2-dev1.alpinelinux.org) (Ping timeout: 256 seconds)
2021-11-30 17:45:05 +0100anderson(~ande@user/anderson) (Ping timeout: 256 seconds)
2021-11-30 17:45:05 +0100dminuoso(~dminuoso@user/dminuoso) (Ping timeout: 256 seconds)
2021-11-30 17:45:05 +0100aforemny(~aforemny@static.248.158.34.188.clients.your-server.de) (Ping timeout: 256 seconds)
2021-11-30 17:45:05 +0100madnight_(~madnight@static.59.103.201.195.clients.your-server.de) (Ping timeout: 256 seconds)
2021-11-30 17:45:05 +0100Teacup(~teacup@user/teacup) (Ping timeout: 256 seconds)
2021-11-30 17:45:05 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 256 seconds)
2021-11-30 17:45:05 +0100nisstyre(~wes@user/nisstyre) (Ping timeout: 256 seconds)
2021-11-30 17:45:05 +0100cods(~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 256 seconds)
2021-11-30 17:45:05 +0100bgamari(~bgamari@64.223.235.131) (Ping timeout: 256 seconds)
2021-11-30 17:45:05 +0100oats(~thomas@user/oats) (Ping timeout: 256 seconds)
2021-11-30 17:45:05 +0100caubert(~caubert@136.244.111.235) (Ping timeout: 256 seconds)
2021-11-30 17:45:05 +0100spoofer(~spoofer@64.185.111.205) (Ping timeout: 256 seconds)
2021-11-30 17:45:05 +0100mmaruseacph2(~mihai@198.199.100.72) (Ping timeout: 256 seconds)
2021-11-30 17:45:08 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.3)
2021-11-30 17:45:13 +0100Teacup_(~teacup@user/teacup)
2021-11-30 17:45:17 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection)
2021-11-30 17:45:19 +0100 <Franciman> just updating libraries
2021-11-30 17:45:21 +0100dminuoso(~dminuoso@user/dminuoso)
2021-11-30 17:45:24 +0100 <Franciman> lol
2021-11-30 17:45:24 +0100piele(~piele@tbonesteak.creativeserver.net)
2021-11-30 17:45:36 +0100oats_oats
2021-11-30 17:46:08 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2021-11-30 17:46:11 +0100bcoppens(~bartcopp@vpn2.bartcoppens.be)
2021-11-30 17:46:12 +0100jackhill(~jackhill@kalessin.dragonsnail.net)
2021-11-30 17:46:13 +0100hiredman(~hiredman@frontier1.downey.family)
2021-11-30 17:46:20 +0100Patternmaster(~georg@li1192-118.members.linode.com)
2021-11-30 17:46:22 +0100heath(~heath@user/heath)
2021-11-30 17:46:35 +0100spoofer(~spoofer@64.185.111.205)
2021-11-30 17:46:37 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-30 17:46:39 +0100cods(~fred@82-65-232-44.subs.proxad.net)
2021-11-30 17:46:50 +0100mmaruseacph2(~mihai@198.199.100.72)
2021-11-30 17:46:55 +0100caubert(~caubert@136.244.111.235)
2021-11-30 17:47:05 +0100anderson(~ande@user/anderson)
2021-11-30 17:47:43 +0100 <Franciman> [exa]: https://github.com/Franciman/telescope/blob/main/src/machine/machine.zig
2021-11-30 17:47:45 +0100madnight_(~madnight@static.59.103.201.195.clients.your-server.de)
2021-11-30 17:47:47 +0100bgamari(~bgamari@2001:470:e438::1)
2021-11-30 17:47:49 +0100dwt_(~dwt_@c-98-200-58-177.hsd1.tx.comcast.net)
2021-11-30 17:48:12 +0100madnight(~madnight@static.59.103.201.195.clients.your-server.de) (Read error: Connection reset by peer)
2021-11-30 17:48:25 +0100dwt__(~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 256 seconds)
2021-11-30 17:48:25 +0100dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
2021-11-30 17:48:59 +0100dtman34_(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-11-30 17:48:59 +0100bgamari_(~bgamari@64.223.235.131) (Ping timeout: 256 seconds)
2021-11-30 17:50:44 +0100niko(~niko@libera/staff/niko) (Ping timeout: 606 seconds)
2021-11-30 17:51:00 +0100 <Franciman> let's see how many cache misses I do
2021-11-30 17:51:02 +0100 <Franciman> that may be relevant
2021-11-30 17:51:11 +0100 <davean> Franciman: high - thats part of what I was refering to
2021-11-30 17:51:29 +0100 <davean> not as high as real code would see though because you have a tiny working set
2021-11-30 17:51:30 +0100 <Franciman> it's astonishing that in haskell I can do tree walking without getting infinitely many cache misses
2021-11-30 17:51:35 +0100 <davean> so whats really more relivent is the conditional branches
2021-11-30 17:52:22 +0100 <Franciman> uhm I understand
2021-11-30 17:52:52 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 17:53:33 +0100codoliodolio
2021-11-30 17:53:48 +0100 <davean> Franciman: so in Haskell you're mostly doing a tree walk instead of a tree walk of a tree walk
2021-11-30 17:54:07 +0100 <Franciman> lol in zig I have 51% of cache misses
2021-11-30 17:54:17 +0100 <Franciman> I am sure I can get this under haskell
2021-11-30 17:54:25 +0100 <Franciman> well I am cheating hard, I have no memory management
2021-11-30 17:54:41 +0100 <Franciman> but that may cause cache misses T.T
2021-11-30 17:55:17 +0100 <Franciman> davean: I am not sure I understand what's slow with the environment, though
2021-11-30 17:55:33 +0100 <Franciman> you want me to have strict leaves in a lazy tree
2021-11-30 17:55:38 +0100 <Franciman> isn't that what is happening already?
2021-11-30 17:56:51 +0100 <[exa]> Franciman: is it allocating stuff?
2021-11-30 17:56:58 +0100 <Franciman> yep
2021-11-30 17:56:59 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl) (Remote host closed the connection)
2021-11-30 17:57:01 +0100 <Franciman> I use an arena allocator
2021-11-30 17:57:14 +0100 <Franciman> I first request a page of memory from the OS
2021-11-30 17:57:21 +0100 <[exa]> why do you need to allocate stuff for sum(1..10M) ?
2021-11-30 17:57:22 +0100 <Franciman> then fill it
2021-11-30 17:57:28 +0100 <Franciman> I need to allocate call frames
2021-11-30 17:57:34 +0100 <Franciman> which contain pointers and arguments
2021-11-30 17:57:38 +0100 <[exa]> oh is that recursive?
2021-11-30 17:57:40 +0100 <Franciman> yep
2021-11-30 17:57:49 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi)
2021-11-30 17:58:18 +0100nisstyre(~wes@user/nisstyre)
2021-11-30 17:58:21 +0100niko(~niko@libera/staff/niko)
2021-11-30 17:58:44 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-11-30 17:58:49 +0100 <[exa]> so it basically makes some O(10M) of stack?
2021-11-30 17:59:13 +0100 <[exa]> that might just explain all of the cache misses.
2021-11-30 18:00:26 +0100 <davean> Franciman: how do you run your test in your repository?
2021-11-30 18:00:32 +0100fef(~thedawn@user/thedawn) (Quit: Leaving)
2021-11-30 18:00:54 +0100 <Franciman> [exa]: in haskell it does very few cache misses though, ghc working its magic
2021-11-30 18:01:11 +0100 <Franciman> davean: cabal run ellipse tree
2021-11-30 18:01:14 +0100 <Franciman> ah wait
2021-11-30 18:01:20 +0100 <Franciman> I also have abenchmerak
2021-11-30 18:01:43 +0100 <Franciman> with criterion
2021-11-30 18:01:57 +0100 <Franciman> note that what you run dependds on the file example.ll
2021-11-30 18:02:05 +0100 <Franciman> so one sec, let me update with sum
2021-11-30 18:02:11 +0100 <Franciman> (now it computes fibonacci 40)
2021-11-30 18:03:37 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 18:03:54 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 18:04:01 +0100 <[exa]> Franciman: there's a nice GC trick with nursery
2021-11-30 18:06:49 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-11-30 18:08:15 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-11-30 18:08:22 +0100dawdler(~dawdler@user/dawdler) (Remote host closed the connection)
2021-11-30 18:08:30 +0100lbseale_(~ep1ctetus@user/ep1ctetus)
2021-11-30 18:09:22 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f)
2021-11-30 18:09:26 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-11-30 18:11:55 +0100 <Franciman> oh I see
2021-11-30 18:12:04 +0100 <Franciman> what does it do?
2021-11-30 18:12:26 +0100 <Franciman> davean: now if you run `cabal build ellipse && time cabal run ellipse tree`
2021-11-30 18:12:30 +0100 <Franciman> you get a timing
2021-11-30 18:12:30 +0100 <EvanR> why does hp2ps output for heap profiles (-hc) always show a time axis from 0 to 0.8 seconds regardless of how long the program runs
2021-11-30 18:12:52 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Ping timeout: 264 seconds)
2021-11-30 18:12:58 +0100 <EvanR> the graph seems to look like a time graph
2021-11-30 18:13:42 +0100 <Franciman> if you want more precise measures there is the benchmark using criterion,
2021-11-30 18:13:46 +0100 <Franciman> cabal bench bench
2021-11-30 18:13:49 +0100 <Franciman> but it takes a lot of time :P
2021-11-30 18:14:05 +0100 <Franciman> ah ok no, cool
2021-11-30 18:15:42 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-11-30 18:15:56 +0100jakalx(~jakalx@base.jakalx.net)
2021-11-30 18:16:47 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
2021-11-30 18:17:06 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl)
2021-11-30 18:18:13 +0100jeetelongname(~jeet@eduroam-public-46.nat.port.ac.uk) (Remote host closed the connection)
2021-11-30 18:18:16 +0100Lycurgus(~juan@98.4.112.204) (Ping timeout: 264 seconds)
2021-11-30 18:18:53 +0100chele(~chele@user/chele) (Remote host closed the connection)
2021-11-30 18:23:32 +0100xff0x(~xff0x@2001:1a81:52c5:f300:6673:fb4d:a3aa:9d2) (Remote host closed the connection)
2021-11-30 18:24:03 +0100xff0x(~xff0x@2001:1a81:52c5:f300:8200:618:b8e3:ab90)
2021-11-30 18:24:23 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl) (Remote host closed the connection)
2021-11-30 18:24:58 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl)
2021-11-30 18:25:16 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl) (Remote host closed the connection)
2021-11-30 18:25:25 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl)
2021-11-30 18:27:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 18:31:58 +0100cv(~cv@202.164.130.248)
2021-11-30 18:32:14 +0100cvalmight
2021-11-30 18:32:40 +0100concrete-houses(~g@209.6.150.53) (Ping timeout: 264 seconds)
2021-11-30 18:33:14 +0100 <almight> Beginner here
2021-11-30 18:33:15 +0100 <almight> Why do most modules in haskell start with Data.Something is that a convention
2021-11-30 18:33:15 +0100 <almight> is this a practice for projects as well or just for libraries
2021-11-30 18:34:07 +0100concrete-houses(~g@209.6.150.53)
2021-11-30 18:34:37 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 18:35:37 +0100Erutuon(~Erutuon@user/erutuon)
2021-11-30 18:36:01 +0100 <davean> almight: Who said they did?
2021-11-30 18:36:14 +0100 <almight> I saw a lot many
2021-11-30 18:36:18 +0100 <almight> Data.Aeson
2021-11-30 18:36:19 +0100pfurla(~pfurla@2804:14d:5c81:4104:4c11:ba21:da7d:dd69) (Quit: gone to sleep. ZZZzzz…)
2021-11-30 18:37:04 +0100 <lyxia> almight: it is an old convention, many modern packages don't follow it anymore.
2021-11-30 18:37:04 +0100 <maerwald> maybe it means "Datastructure"
2021-11-30 18:37:07 +0100 <maerwald> e.g. Data.List
2021-11-30 18:39:04 +0100 <almight> lyxia so what is the convention now
2021-11-30 18:39:05 +0100 <almight> is it to go package names similar to java
2021-11-30 18:39:05 +0100 <almight> like if I have a project haskell-api I go with Haskell.API. etc etc
2021-11-30 18:40:42 +0100 <davean> almight: module names are heirarchical (in practice), they categorize - packages categorized as Data related start with Data
2021-11-30 18:40:50 +0100 <davean> many start with other things
2021-11-30 18:41:27 +0100 <davean> I assure you you also saw Control.
2021-11-30 18:41:46 +0100 <almight> yeah you are right
2021-11-30 18:42:18 +0100 <davean> Network., HTTP., they start with what groups them
2021-11-30 18:45:03 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 18:45:21 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 18:45:45 +0100gehmehgeh(~user@user/gehmehgeh)
2021-11-30 18:47:02 +0100fr33domlover(~fr33@2.53.150.205) (Ping timeout: 252 seconds)
2021-11-30 18:51:17 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 18:51:18 +0100 <geekosaur> whne hierarchical module names were introduced they went a bit wild with the hierarchies, and the result made little sense
2021-11-30 18:51:36 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 18:52:05 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-11-30 18:53:07 +0100jeetelongname(~jeet@148.197.248.46)
2021-11-30 18:55:15 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 18:55:22 +0100 <boxscape> Is there a simple way to take an instance of Data.Data and produce a String similar to what a derived Show instance would produce?
2021-11-30 18:55:34 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 18:55:40 +0100jeetelongname(~jeet@148.197.248.46) (Client Quit)
2021-11-30 18:57:20 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 18:57:37 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 18:57:50 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
2021-11-30 18:58:22 +0100jeetelongname(~jeet@148.197.248.46)
2021-11-30 18:59:22 +0100johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0)
2021-11-30 18:59:52 +0100jeetelongname(~jeet@148.197.248.46) (Read error: Connection reset by peer)
2021-11-30 18:59:58 +0100 <jle`> hm .. probably not
2021-11-30 19:00:08 +0100 <jle`> you can print the constructor easily though
2021-11-30 19:00:13 +0100 <jle`> but the contents are a different story
2021-11-30 19:00:45 +0100 <boxscape> hm, okay, thanks
2021-11-30 19:00:48 +0100 <jle`> hm, but i do wonder now how close you can get
2021-11-30 19:01:19 +0100 <jle`> hm...
2021-11-30 19:01:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-30 19:01:38 +0100 <jle`> if all of the contents have types that are ADT's
2021-11-30 19:01:47 +0100 <jle`> all the way down to the bottom
2021-11-30 19:01:55 +0100 <jle`> then you could probably get there
2021-11-30 19:02:26 +0100 <boxscape> (The type I'm interested in is HsExpr from ghc)
2021-11-30 19:02:54 +0100jeetelongname(~jeet@eduroam-public-46.nat.port.ac.uk)
2021-11-30 19:03:19 +0100 <jle`> oh, you can also do it with Integer, Char, but not String
2021-11-30 19:03:27 +0100 <jle`> ooh, you can maybe special-case string
2021-11-30 19:03:40 +0100 <Tisoxin> or rather, expand it?
2021-11-30 19:03:40 +0100 <boxscape> yeah
2021-11-30 19:03:41 +0100 <Tisoxin> What utilities are there to test Template Haskell?
2021-11-30 19:04:13 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-11-30 19:04:35 +0100 <jle`> boxscape: so uh, there is a way for many cases, but not necessarily simple unless someone has already written out the library
2021-11-30 19:04:46 +0100 <boxscape> yeah, okay
2021-11-30 19:05:36 +0100 <boxscape> (showing just the constructor gets me about 80% of the value, so that's probably good enough for now)
2021-11-30 19:05:41 +0100 <jle`> this might be helpful for inspection, if it still builds https://hackage.haskell.org/package/data-tree-print
2021-11-30 19:05:53 +0100 <geekosaur> I thought HsExpr came with an instance of Pretty or whatever ghc calls it
2021-11-30 19:05:59 +0100 <boxscape> oh, neat
2021-11-30 19:06:16 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds)
2021-11-30 19:06:33 +0100 <boxscape> geekosaur: yes but that just prints out Haskell source code, not very useful when what I'm interested in is the structure of the HsExpr
2021-11-30 19:06:43 +0100 <boxscape> as a Haskell type
2021-11-30 19:07:37 +0100 <jle`> if you're just doing it for debugging you can probably standlone deriving it
2021-11-30 19:08:10 +0100almight(~cv@202.164.130.248) (Quit: Client closed)
2021-11-30 19:08:11 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-30 19:08:17 +0100 <boxscape> I tried, I spend 15 minutes adding ever more complex constraints ghc asked me to add to the derived instances before giving up
2021-11-30 19:08:41 +0100 <boxscape> the "Trees that grow" structure doesn't make it very obvious which types ultimately need an instance
2021-11-30 19:08:51 +0100 <boxscape> s/spend/spent
2021-11-30 19:08:53 +0100nschoe(~quassel@178.251.84.79) (Ping timeout: 256 seconds)
2021-11-30 19:09:07 +0100 <jle`> fair enough
2021-11-30 19:09:16 +0100pfurla(~pfurla@201.17.118.230)
2021-11-30 19:09:21 +0100kadir(~kadir@88.251.54.110) (WeeChat 3.3)
2021-11-30 19:09:54 +0100 <boxscape> (on the other hand, adding adding a standalone derived Show instance to CoreExpr was pretty straightforward)
2021-11-30 19:09:56 +0100 <boxscape> s/adding//
2021-11-30 19:10:27 +0100jakalx(~jakalx@base.jakalx.net)
2021-11-30 19:11:54 +0100LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-30 19:13:38 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 19:13:55 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 19:15:05 +0100LukeHoersten(~LukeHoers@user/lukehoersten)
2021-11-30 19:18:31 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-11-30 19:18:37 +0100mbuf(~Shakthi@122.174.165.234) (Quit: Leaving)
2021-11-30 19:19:48 +0100LukeHoersten(~LukeHoers@user/lukehoersten) (Client Quit)
2021-11-30 19:21:36 +0100LukeHoersten(~LukeHoers@user/lukehoersten)
2021-11-30 19:26:43 +0100jonatanb(~accio@31-178-144-108.dynamic.chello.pl) (Quit: Leaving...)
2021-11-30 19:27:38 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) (Remote host closed the connection)
2021-11-30 19:29:04 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 264 seconds)
2021-11-30 19:29:56 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net)
2021-11-30 19:34:26 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-30 19:34:28 +0100cheater(~Username@user/cheater) (Ping timeout: 264 seconds)
2021-11-30 19:40:23 +0100rkrishnan(~user@122.171.76.46) (Ping timeout: 252 seconds)
2021-11-30 19:41:33 +0100ub(~Thunderbi@p200300ecdf0ba2aaa54fdd1e9768c0b5.dip0.t-ipconnect.de) (Quit: ub)
2021-11-30 19:41:56 +0100ub(~Thunderbi@p200300ecdf0ba2aaa54fdd1e9768c0b5.dip0.t-ipconnect.de)
2021-11-30 19:42:02 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-11-30 19:44:05 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.3)
2021-11-30 19:44:14 +0100 <Franciman> ok, I tried a sum 100
2021-11-30 19:44:22 +0100 <Franciman> and I crush, totally destroy the haskell implementation
2021-11-30 19:44:28 +0100 <Franciman> so it's all about memory management
2021-11-30 19:44:29 +0100 <Franciman> T.T
2021-11-30 19:44:33 +0100zebrag(~chris@user/zebrag)
2021-11-30 19:44:45 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 19:45:10 +0100 <EvanR> @src 100
2021-11-30 19:45:10 +0100 <lambdabot> Source not found. You type like i drive.
2021-11-30 19:45:13 +0100 <EvanR> @src sum
2021-11-30 19:45:13 +0100 <lambdabot> sum = foldl (+) 0
2021-11-30 19:45:20 +0100 <EvanR> oof xD
2021-11-30 19:45:34 +0100 <EvanR> I hope you didn't beat that implementation
2021-11-30 19:45:44 +0100 <EvanR> it would be so sad
2021-11-30 19:46:07 +0100 <dsal> The real sum is similar.
2021-11-30 19:46:36 +0100 <dsal> Oh, maybe I'm thinking of an older one: sum = getSum #. foldMap' Sum
2021-11-30 19:47:03 +0100 <dsal> This is why I get so annoyed when people are like, "OMG! Don't use `sum` it's a very bad idea!"
2021-11-30 19:47:08 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-30 19:47:52 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-30 19:48:02 +0100 <dsal> Yeah, the previous release was: sum = getSum #. foldMap Sum
2021-11-30 19:48:52 +0100 <EvanR> maybe there is magic strictness analysis
2021-11-30 19:49:08 +0100 <dsal> They added a ' in the latest release.
2021-11-30 19:52:59 +0100 <EvanR> for all Foldables?
2021-11-30 19:53:19 +0100 <dsal> That's what sum says.
2021-11-30 19:53:40 +0100_bo(~bo@217.18.216.247)
2021-11-30 19:53:41 +0100 <EvanR> o_O
2021-11-30 19:53:48 +0100 <dsal> product also uses foldMap'
2021-11-30 19:54:12 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-11-30 19:54:24 +0100 <oats> I was tweaking my advent of code framework project, and discovered a trick with GADTs that lets me put `Day` records with different "internal" types into the same list. I thought it would be cool if a Day were just a record with a day number, a parser, and the part1 & part2 functions, but quickly realized you couldn't put different `Day a` values in the same list.
2021-11-30 19:54:24 +0100 <oats> But GADTs let you hide the `a` somehow??? I'm not 100% sure why this is valid, any insight would be nice: https://github.com/oatberry/aoc2021-haskell/blob/main/src/Common.hs#L18
2021-11-30 19:54:32 +0100zebrag(~chris@user/zebrag)
2021-11-30 19:55:16 +0100 <awpr> those are "existential types"
2021-11-30 19:55:35 +0100 <EvanR> GADTs + RankN = existential
2021-11-30 19:55:57 +0100 <dsal> Oh, I was just about to ask that question.
2021-11-30 19:56:07 +0100 <dsal> I don't know the weird dependency graph these extensions have.
2021-11-30 19:56:20 +0100 <dsal> I expected to see ExistentialQuantification turned on there.
2021-11-30 19:56:30 +0100 <oats> dsal, seems to work without that
2021-11-30 19:56:33 +0100 <EvanR> that's something else
2021-11-30 19:56:37 +0100 <oats> assuming you're responding to me :P
2021-11-30 19:56:44 +0100 <EvanR> data Foo = forall a . Bar a
2021-11-30 19:57:00 +0100 <EvanR> and is weird xD
2021-11-30 19:57:00 +0100 <awpr> when matching the `Day` constructor, type variables come into existence that can't be related to anything outside the GADT pattern match (except to the extent the other things in the GADT help you do that)
2021-11-30 19:57:13 +0100pragma-stares at "You type like i drive."
2021-11-30 19:57:39 +0100 <awpr> `data Foo = forall a. Bar a` that's just the non-GADT syntax for the same thing as `data Foo where Bar :: forall a. a -> Foo a`
2021-11-30 19:57:57 +0100 <awpr> GADTs the extension enables that by default IIRC
2021-11-30 19:58:24 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f)
2021-11-30 19:58:57 +0100 <oats> so am I going to get a unique specialization of `runDay` for each of the different `Day` values it gets run on?
2021-11-30 19:59:08 +0100 <awpr> er, `forall a. a -> Foo` I mean
2021-11-30 19:59:11 +0100 <EvanR> I think you need rankN types too
2021-11-30 19:59:20 +0100 <oats> again, this compiles as is :P
2021-11-30 19:59:28 +0100 <EvanR> whu
2021-11-30 19:59:47 +0100 <EvanR> whatever I wish like 19 extensions were just always on xD
2021-11-30 19:59:58 +0100 <oats> haha
2021-11-30 20:00:16 +0100 <awpr> the file enables GADTs, that should be sufficient to allow this (and it seemingly is)
2021-11-30 20:01:15 +0100 <dsal> GADTs isn't documented to imply existential quantification. I'm just going to be confused and try to see if I can get my package delivered.
2021-11-30 20:01:16 +0100 <EvanR> you can hide the different a, but then the burden is on you to figure out how to do anything with them after the type is forgotten
2021-11-30 20:01:20 +0100 <awpr> I'm not sure I'd call the `runDay`s applied to different records "specializations" exactly, but they do have "different" types internally for the parsed input and part1/part2 results
2021-11-30 20:01:22 +0100 <EvanR> you're right
2021-11-30 20:02:04 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2021-11-30 20:02:04 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-11-30 20:02:04 +0100finn_elijaFinnElija
2021-11-30 20:02:13 +0100 <dsal> How I haskell: Write code I want. Follow errors until GHC says my code is perfect.
2021-11-30 20:02:21 +0100max22-(~maxime@2a01cb08833598007c2e741a7c59ca1a.ipv6.abo.wanadoo.fr) (Ping timeout: 250 seconds)
2021-11-30 20:02:58 +0100 <EvanR> gutter bumper programming
2021-11-30 20:03:41 +0100 <awpr> GHC user guide: "`ExistentialQuantification` | Enables liberalized type synonyms"
2021-11-30 20:04:30 +0100LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-11-30 20:06:18 +0100 <awpr> okay from a quick experiment it looks like `GADTs` does not enable the non-GADT `ExistentialQuantification` syntax, but GADT constructors can still have existentials (by having a forall in their type). so it seems like `ExistentialQuantification` is specifically about the non-GADT syntax for existentials
2021-11-30 20:06:37 +0100kennyd(~bc8165b6@cerf.good1.com)
2021-11-30 20:08:44 +0100 <hololeap_> what was the CPP "macro" or whatever that checks to see if you're on linux or windows, and is there a reference somewhere for these?
2021-11-30 20:08:52 +0100hololeap_hololeap
2021-11-30 20:09:02 +0100 <tomsmeding> yeah, looking in compiler/GHC/Driver/Session.hs in the ghc source, ExistentialQuantification is really not implied by anything
2021-11-30 20:09:15 +0100 <tomsmeding> hololeap: there is no standard for that
2021-11-30 20:09:21 +0100 <tomsmeding> there is only convention
2021-11-30 20:09:29 +0100 <tomsmeding> __linux__ works IIRC
2021-11-30 20:10:00 +0100 <tomsmeding> hololeap: https://stackoverflow.com/questions/4605842/how-to-identify-platform-compiler-from-preprocessor-ma…
2021-11-30 20:10:25 +0100 <tomsmeding> (see also the link for other windows compilers)
2021-11-30 20:11:06 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) (Remote host closed the connection)
2021-11-30 20:11:28 +0100 <monochrom> But it does on my GHC 8.10.7. I have: {-# language GADTs #-} module N where data X = forall a. X a
2021-11-30 20:13:08 +0100 <monochrom> Also 9.2.1
2021-11-30 20:13:12 +0100 <hololeap> ok. I'm trying to patch a library so that it doesn't use the deprecated system-filepath package, and I _think_ they are trying to do some path manipulations in a portable way. it isn't entirely clear why they're still using that package
2021-11-30 20:14:21 +0100 <hololeap> https://github.com/hololeap/happstack-server/commit/4cd5dc843f300a8f0ef9eec42f347088141e121a
2021-11-30 20:15:08 +0100 <hololeap> so I was considering adding some check to import System.FilePath.Posix or System.FilePath.Windows
2021-11-30 20:15:49 +0100 <geekosaur> doesn't System.Filepath do that check?
2021-11-30 20:15:58 +0100 <awpr> hmm, indeed it does on 8.10.4. replit.com has 8.6, so apparently it was changed between then
2021-11-30 20:16:07 +0100 <hololeap> oh, maybe it does
2021-11-30 20:16:31 +0100 <hololeap> it just says that it re-exports System.Filepath.Posix on my local docs, but that's probably because I'm on linux
2021-11-30 20:17:03 +0100 <hololeap> geekosaur: yeah it does. thanks for that info
2021-11-30 20:17:12 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
2021-11-30 20:18:05 +0100 <hololeap> cool. that means my patch will be portable as-is
2021-11-30 20:19:38 +0100 <hololeap> I had to re-create the commonPrefix function because it doesn't have any equivalent in the filepath package that I can find
2021-11-30 20:19:39 +0100 <hololeap> https://github.com/hololeap/happstack-server/commit/4cd5dc843f300a8f0ef9eec42f347088141e121a#diff-…
2021-11-30 20:20:32 +0100pfurla(~pfurla@201.17.118.230) (Quit: gone to sleep. ZZZzzz…)
2021-11-30 20:22:02 +0100 <hololeap> just curious if anyone can find any improvements on that, or if it's premade somewhere I didn't notice. I don't want to add any new packages to the .cabal file, so no dlist or unordered-containers
2021-11-30 20:23:43 +0100 <hololeap> it doesn't seem like it's used anywhere but that one function, so it's probably fine
2021-11-30 20:26:58 +0100MoC(~moc@user/moc)
2021-11-30 20:27:24 +0100 <zero> there is no better way to indent this? https://paste.jrvieira.com/1638300408372
2021-11-30 20:28:54 +0100 <monochrom> I put "let args" on the same line.
2021-11-30 20:28:58 +0100 <geekosaur> I'd probably "cuddle" `args` and the first following guard, and reindent the others accordingly
2021-11-30 20:29:15 +0100 <monochrom> Optionally, I put "let args | null d = Right (ny, nd)" on the same line.
2021-11-30 20:29:28 +0100 <geekosaur> are you using a formatter? I think this is one of the things people complain about with ormolu?
2021-11-30 20:29:42 +0100 <janus> hololeap: what's the point of `commonPrefix [a, b] == a`? couldn't you just have 'a `isPrefixOf` b'?
2021-11-30 20:30:04 +0100 <monochrom> <cynical>ormolu would also put "=" on its own line </cynical>
2021-11-30 20:30:12 +0100viluon(uid453725@id-453725.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-11-30 20:30:28 +0100 <hololeap> janus: that's just what they had originally, and you're right
2021-11-30 20:30:35 +0100 <geekosaur> and I think it prefers 2 to 3
2021-11-30 20:30:46 +0100 <geekosaur> (spaces indentation that is)
2021-11-30 20:31:27 +0100 <janus> hololeap: well since we're touching the code we may as well simplify it... i can't see how commonPrefix could be superior in any sense, this is not even specific to paths
2021-11-30 20:32:46 +0100 <monochrom> This can go deep into algebra thinking (equations) vs analysis thinking (<='s).
2021-11-30 20:33:03 +0100 <hololeap> the system-filepath package doesn't treat FilePath as a type synonym for String, so I think they had to do things a little differently
2021-11-30 20:33:14 +0100 <monochrom> You are looking at "meet(a,b)=a iff a<=b".
2021-11-30 20:33:17 +0100 <zero> let args | ... works but let args\n | ... gives me a syntax errr
2021-11-30 20:34:27 +0100 <geekosaur> check your indentation
2021-11-30 20:34:32 +0100 <zero> https://paste.jrvieira.com/1638300858476
2021-11-30 20:34:36 +0100 <zero> ^ this errors
2021-11-30 20:34:36 +0100 <Franciman> I just need to understand haskell's memory tricks
2021-11-30 20:34:58 +0100 <geekosaur> right, it has to be indented past the start of `args` by at least one space
2021-11-30 20:35:12 +0100 <geekosaur> layout is a bit finicky
2021-11-30 20:35:54 +0100 <geekosaur> so if you have the | under the `r` or further right it'll work
2021-11-30 20:35:55 +0100 <janus> hololeap: btw will you be sending a PR? we also use happstack
2021-11-30 20:36:20 +0100deadmarshal(~deadmarsh@95.38.229.118)
2021-11-30 20:36:34 +0100 <zero> geekosaur: hate layout -.-
2021-11-30 20:36:43 +0100 <Franciman> +1 zero
2021-11-30 20:36:45 +0100 <Franciman> +1 zero
2021-11-30 20:36:56 +0100 <monochrom> You can always use {;} to override layout.
2021-11-30 20:37:21 +0100 <hololeap> janus: yes, I will
2021-11-30 20:37:22 +0100max22-(~maxime@2a01cb088335980070cf7b273a01dbc1.ipv6.abo.wanadoo.fr)
2021-11-30 20:37:24 +0100 <monochrom> do { ny <- ... ; nd <- ...; let {args | ... }; run args }
2021-11-30 20:37:31 +0100 <Franciman> ;)
2021-11-30 20:38:11 +0100 <hololeap> and I don't use it. I'm trying to get rid of system-file{io,path} from gentoo-haskell and there are a few packages that still use it
2021-11-30 20:38:23 +0100 <hololeap> so I've been doing some janitorial work ;)
2021-11-30 20:39:12 +0100 <yushyin> layout is fine, you just need to learn the rules
2021-11-30 20:39:17 +0100 <hololeap> volunteer janitorial work
2021-11-30 20:40:07 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-11-30 20:41:11 +0100 <janus> hololeap: oh nice, let's hope maintainers will be responsive! thanks for doing the work
2021-11-30 20:42:55 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 20:43:13 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 20:44:35 +0100zincy_(~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186)
2021-11-30 20:48:27 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
2021-11-30 20:48:56 +0100 <zero> yushyin: the rules are not fine
2021-11-30 20:49:10 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-30 20:50:25 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-11-30 20:50:38 +0100 <zero> losing the indentation level context significance is a mistake from a visual interface design prespective. basic gestalt
2021-11-30 20:51:44 +0100 <zero> but that's a talk for another time
2021-11-30 20:52:45 +0100 <dsal> zero: if the compiler can't tell what you mean, would another programmer?
2021-11-30 20:53:40 +0100 <monochrom> dsal, I think that this is a lost cause because in zero's anecdotal example, yes I can.
2021-11-30 20:53:49 +0100 <zero> i'm not excusing my mistake, i'm criticizing layout rules
2021-11-30 20:54:09 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-11-30 20:54:36 +0100 <monochrom> Generally, if someone who doesn't know the whole picture argues from armchair high horse, don't engage.
2021-11-30 20:54:56 +0100 <monochrom> Recall my memoized randomization model!
2021-11-30 20:55:28 +0100 <monochrom> memoized randomization post-mortem rationalization
2021-11-30 20:56:10 +0100 <dolio> Every programming language has examples where a programmer can figure out what was meant, but the compiler can't because of its particular rules.
2021-11-30 20:56:11 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net)
2021-11-30 20:56:39 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 20:56:44 +0100 <boxscape> that means it's time to replace parsers by neural networks :P
2021-11-30 20:56:45 +0100 <zero> i would argue that the inverse is also true
2021-11-30 20:56:50 +0100zincy_(~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) (Remote host closed the connection)
2021-11-30 20:56:56 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 20:57:02 +0100 <zero> monochrom: you've lost me there
2021-11-30 20:57:14 +0100cheater(~Username@user/cheater)
2021-11-30 20:57:19 +0100zincy_(~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186)
2021-11-30 20:57:36 +0100 <monochrom> No, you lost me first with your "context" "significance" "visual" "design" high horse.
2021-11-30 20:58:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 20:59:22 +0100trcc(~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Client Quit)
2021-11-30 21:01:08 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 21:02:53 +0100econo(uid147250@user/econo)
2021-11-30 21:03:52 +0100 <zero> ah
2021-11-30 21:04:22 +0100 <int-e> boxscape: that's okay if your model of programming is to write something and run it so that *something* happens.
2021-11-30 21:04:31 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f)
2021-11-30 21:04:46 +0100 <int-e> personally I want to have more control than that
2021-11-30 21:05:05 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 252 seconds)
2021-11-30 21:05:11 +0100 <geekosaur> shades of watfiv
2021-11-30 21:07:02 +0100juhp(~juhp@128.106.188.82)
2021-11-30 21:07:15 +0100 <zero> monochrom: tldr having the level of indentation signify context (having similar contexts vertically align) is a powerful psychvisual tool. misalignment (as layout not only permits but incentivies) difficults interpretation
2021-11-30 21:07:27 +0100 <zero> (sorry if my english is too broken)
2021-11-30 21:08:28 +0100 <zero> *pychovisual *incentivizes
2021-11-30 21:08:42 +0100 <monochrom> But the Haskell layout rules does not encourage misalignment.
2021-11-30 21:09:04 +0100 <zero> i disagree
2021-11-30 21:09:08 +0100 <monochrom> It just doesn't accept certain alignments you think are "intuitive".
2021-11-30 21:10:03 +0100 <geekosaur> personally I think the alignment you wanted to use makes little sense
2021-11-30 21:10:12 +0100 <yushyin> layout enforces this even more, imo. if something is not further indented than the previous lexeme, why should it be part of it?
2021-11-30 21:10:18 +0100 <monochrom> And it has to reject them because the layout decoding algorithm is working under restrictions. It cannot afford to be smarter.
2021-11-30 21:10:27 +0100 <geekosaur> try adding a second binding after the first and see how much sense your indentation makes
2021-11-30 21:10:33 +0100 <yushyin> ^ this
2021-11-30 21:12:00 +0100 <zero> i'm not focused on my earlier example. i agree with you there
2021-11-30 21:12:21 +0100 <zero> again, i'm not defending my mistake
2021-11-30 21:12:48 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-30 21:13:25 +0100kuribas(~user@ptr-25vy0i8s19mxk1vvjxp.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-11-30 21:14:22 +0100 <boxscape> zero do you have an example in mind of something that you are criticizing?
2021-11-30 21:15:09 +0100lavaman(~lavaman@98.38.249.169)
2021-11-30 21:15:56 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 21:16:03 +0100pfurla(~pfurla@2804:14d:5c81:4104:f9a9:132:7129:df1c)
2021-11-30 21:16:10 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-11-30 21:16:45 +0100lavaman(~lavaman@98.38.249.169)
2021-11-30 21:19:45 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 21:20:04 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 21:21:02 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-11-30 21:23:43 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 21:24:02 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 21:25:05 +0100 <Franciman> can I use cachegrind on an haskell executable?
2021-11-30 21:27:41 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 21:28:00 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 21:29:40 +0100 <Hecate> Franciman: I think you should be able to do so
2021-11-30 21:30:02 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2021-11-30 21:30:33 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-11-30 21:31:34 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net)
2021-11-30 21:31:38 +0100 <geekosaur> you may find that +RTS -V0 makes the output more sane
2021-11-30 21:32:21 +0100 <sm> there was a blog post on it recently, perhaps from tweag
2021-11-30 21:32:41 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) (Remote host closed the connection)
2021-11-30 21:32:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-11-30 21:34:10 +0100Erutuon(~Erutuon@user/erutuon)
2021-11-30 21:35:53 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-11-30 21:37:11 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-11-30 21:38:52 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 21:39:10 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 21:40:24 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net) (Remote host closed the connection)
2021-11-30 21:40:51 +0100kmein(~weechat@user/kmein) (Quit: ciao kakao)
2021-11-30 21:41:11 +0100kmein(~weechat@user/kmein)
2021-11-30 21:42:40 +0100 <Franciman> thanks y'all
2021-11-30 21:43:29 +0100 <Franciman> now what's left is making sense of the output
2021-11-30 21:43:31 +0100 <Franciman> AHAH
2021-11-30 21:49:05 +0100zincy_(~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) (Remote host closed the connection)
2021-11-30 21:49:21 +0100zincy_(~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186)
2021-11-30 21:49:28 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Read error: Connection reset by peer)
2021-11-30 21:50:13 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
2021-11-30 21:51:17 +0100MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-11-30 21:56:35 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 21:56:40 +0100_bo(~bo@217.18.216.247) (Ping timeout: 256 seconds)
2021-11-30 21:56:54 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 21:58:34 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 21:58:53 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 22:02:07 +0100LukeHoersten(~LukeHoers@user/lukehoersten)
2021-11-30 22:03:41 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net)
2021-11-30 22:03:56 +0100zincy_(~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) (Remote host closed the connection)
2021-11-30 22:05:10 +0100zincy_(~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186)
2021-11-30 22:05:54 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-11-30 22:06:48 +0100maroloccio(~marolocci@151.53.155.184)
2021-11-30 22:07:24 +0100zincy_(~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) (Remote host closed the connection)
2021-11-30 22:08:15 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f)
2021-11-30 22:10:32 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
2021-11-30 22:12:12 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 22:12:16 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-11-30 22:12:29 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 22:13:37 +0100deadmarshal(~deadmarsh@95.38.229.118) (Ping timeout: 256 seconds)
2021-11-30 22:13:37 +0100alx741(~alx741@181.196.69.176) (Ping timeout: 256 seconds)
2021-11-30 22:14:16 +0100acidjnk_new(~acidjnk@p200300d0c7271e72351a12a888efd4cb.dip0.t-ipconnect.de)
2021-11-30 22:14:18 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-11-30 22:16:02 +0100zincy_(~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186)
2021-11-30 22:17:24 +0100lavaman(~lavaman@98.38.249.169)
2021-11-30 22:20:26 +0100 <dsal> My new MacBook arrived. Has twice as much ram as my Thinkpad. In an hour, I might be able to start setting up nix...
2021-11-30 22:20:45 +0100zincy_(~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) (Remote host closed the connection)
2021-11-30 22:21:05 +0100 <dsal> Lots of memory means I don't have to learn to write good code.
2021-11-30 22:21:15 +0100Guest17(~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-11-30 22:21:33 +0100 <geekosaur> there's something about the nature of programmers in there somewhere
2021-11-30 22:21:33 +0100 <dolio> You should program in Agda, then.
2021-11-30 22:22:49 +0100 <sm> congrats!
2021-11-30 22:23:47 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-11-30 22:24:22 +0100sshine_sshine
2021-11-30 22:24:30 +0100MaybeJustJames(~jacol@2001:981:4ea3:1:a8b4:6ac6:c93b:9bcf) (Remote host closed the connection)
2021-11-30 22:26:25 +0100michalz(~michalz@185.246.204.62) (Remote host closed the connection)
2021-11-30 22:26:30 +0100alx741(~alx741@186.178.109.129)
2021-11-30 22:28:07 +0100pavonia(~user@user/siracusa)
2021-11-30 22:29:26 +0100 <ephemient> is https://stackage.org down for everybody or just me?
2021-11-30 22:29:53 +0100 <janus> ephemient: down for me too
2021-11-30 22:30:02 +0100 <sm> responding slowly at least
2021-11-30 22:30:12 +0100 <geekosaur> down/very slow here too
2021-11-30 22:30:19 +0100 <maerwald> dsal: and lots of storage means you can use resource hogs like nix
2021-11-30 22:30:29 +0100LukeHoersten(~LukeHoers@user/lukehoersten) (Quit: Textual IRC Client: www.textualapp.com)
2021-11-30 22:31:21 +0100 <geekosaur> just loaded
2021-11-30 22:31:26 +0100reumeth(~reumeth@user/reumeth) (Ping timeout: 252 seconds)
2021-11-30 22:32:44 +0100 <sm> I feel a disturbance in the Force.. like a sudden influx of new haskell users
2021-11-30 22:33:01 +0100zincy_(~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186)
2021-11-30 22:33:06 +0100jgeerds(~jgeerds@55d45b75.access.ecotel.net)
2021-11-30 22:33:06 +0100 <Rembane> New semester perhaps?
2021-11-30 22:33:13 +0100 <sm> it's dsal.
2021-11-30 22:33:26 +0100 <EvanR> Like a billion python users suddenly just... gone
2021-11-30 22:33:27 +0100 <sm> unleashing the new macbook
2021-11-30 22:33:45 +0100 <EvanR> (to haskell)
2021-11-30 22:34:06 +0100jeetelongname(~jeet@eduroam-public-46.nat.port.ac.uk) (Ping timeout: 245 seconds)
2021-11-30 22:35:13 +0100 <Rembane> 's gonna be legendary
2021-11-30 22:35:34 +0100 <Franciman> is there any known trick to force things to go in the cache?
2021-11-30 22:35:43 +0100 <dsal> maerwald: I do use resource hogs like nix. :)
2021-11-30 22:35:49 +0100 <Rembane> Franciman: What cache? What things?
2021-11-30 22:36:07 +0100 <ephemient> ok hmm it *is* responding, but taking like a minute per request. I wonder what's going on with it.
2021-11-30 22:36:11 +0100 <dsal> I didn't go crazy on storage, though. 1TB goes pretty far.
2021-11-30 22:36:56 +0100alx741(~alx741@186.178.109.129) (Ping timeout: 252 seconds)
2021-11-30 22:37:11 +0100 <EvanR> heh, cache wisperer
2021-11-30 22:37:16 +0100 <Franciman> Rembane: L1 cache
2021-11-30 22:37:24 +0100 <Franciman> of the CPU
2021-11-30 22:38:07 +0100 <sm> I think reading and optimising the generated core would be one important step
2021-11-30 22:39:12 +0100 <maerwald> dsal: that's quickly full with nix and docker
2021-11-30 22:40:07 +0100 <dsal> I gc'd 100GB of nix last week.
2021-11-30 22:40:25 +0100 <dsal> I don't do much docking
2021-11-30 22:40:57 +0100 <maerwald> oh, gc actually worked for you?
2021-11-30 22:40:58 +0100 <dsal> Docker seems so much worse than nix where they overlap.
2021-11-30 22:41:10 +0100 <dsal> gc always works for me, but it overshot
2021-11-30 22:41:19 +0100Guest17(~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed)
2021-11-30 22:41:20 +0100 <maerwald> I think last time I tried it just busted everything
2021-11-30 22:41:44 +0100 <dsal> There were two requirements of ghc that apparently weren't declared
2021-11-30 22:41:51 +0100 <dsal> Oh, maybe that's what you meant. :)
2021-11-30 22:42:13 +0100 <maerwald> ah well... my expectations when using nix are very low
2021-11-30 22:45:22 +0100 <maerwald> GCing docker is less dangerous
2021-11-30 22:45:39 +0100 <maerwald> but I usually just delete the entire store
2021-11-30 22:45:59 +0100 <maerwald> because GC takes half an hour, doing who knows what
2021-11-30 22:46:17 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Ping timeout: 252 seconds)
2021-11-30 22:48:04 +0100pfurla(~pfurla@2804:14d:5c81:4104:f9a9:132:7129:df1c) (Quit: Textual IRC Client: www.textualapp.com)
2021-11-30 22:49:29 +0100pfurla(~pfurla@2804:14d:5c81:4104:b590:8966:cd38:8f41)
2021-11-30 22:50:11 +0100alx741(~alx741@181.196.69.153)
2021-11-30 22:51:59 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-11-30 22:53:51 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-11-30 22:55:08 +0100 <monochrom> dsal: Congrats! Lots of RAM means you can run JHC in its default mode which doesn't do GC at all bwahahaha
2021-11-30 22:55:47 +0100 <monochrom> Enjoy GCless hard real-time Haskell!
2021-11-30 22:56:14 +0100 <energizer> i want to find a correct implementation of complex duration comparisons like "years 1 + days 1 < years 1 + days 2". does haskell have something like that?
2021-11-30 22:56:32 +0100 <dsal> Which year?
2021-11-30 22:57:05 +0100a6a45081-2b83(~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507)
2021-11-30 22:57:08 +0100vysn(~vysn@user/vysn)
2021-11-30 22:57:17 +0100 <energizer> *i want to find a correct implementation of complex duration comparisons like "years 1 + days 1 < years 1 + days 99". does haskell have something like that?
2021-11-30 22:57:21 +0100 <janus> even without a GC, is it possible to do constant-time memory allocation? only with no heap usage, right?
2021-11-30 22:57:50 +0100 <geekosaur> you can do it the way the nursery does it
2021-11-30 22:57:51 +0100 <monochrom> Allocation has always been constant-time IIUC.
2021-11-30 22:58:27 +0100 <monochrom> including heap allocation. (What else is there in the context of Haskell?)
2021-11-30 22:58:34 +0100 <geekosaur> it's only gc of and into generations > 0 that are slower
2021-11-30 22:58:56 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-11-30 22:59:26 +0100 <geekosaur> energizer, how much do you care about things like leap years?
2021-11-30 22:59:34 +0100 <dsal> energizer: you'd have to define "year" more rigidly than generally useful. Even "day" isn't necessarily the same duration all the time
2021-11-30 22:59:41 +0100 <geekosaur> time is *hard* to do right
2021-11-30 22:59:55 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-11-30 22:59:58 +0100 <energizer> i dont think any answer to those questions will result in "years 1 + days 1 < years 1 + days 99" being false
2021-11-30 23:00:02 +0100 <dsal> Nobody understands time
2021-11-30 23:00:02 +0100chomwitt(~chomwitt@2a02:587:dc16:f200:12c3:7bff:fe6d:d374) (Ping timeout: 252 seconds)
2021-11-30 23:00:26 +0100 <geekosaur> https://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time
2021-11-30 23:00:40 +0100 <monochrom> OK, I can see that a malloc-free pair of C, if it uses a free-list implementation, could be non-constant because the 1st node of the free list is too small and you have to walk through the whole list looking for a big one.
2021-11-30 23:00:43 +0100 <energizer> i dont think this is a falsehood
2021-11-30 23:01:38 +0100 <monochrom> But without any notion of free or GC, you can have a much dumber allocator. It can be just "heap_pointer += n".
2021-11-30 23:01:51 +0100sprout(~quassel@2a02:a467:ccd6:1:14f6:792c:9624:6b14)
2021-11-30 23:02:09 +0100 <monochrom> (which GHC does, too, at the price of needing a much smarter GCer)
2021-11-30 23:03:16 +0100a6a45081-2b83(~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507) (Remote host closed the connection)
2021-11-30 23:03:43 +0100deadmarshal(~deadmarsh@95.38.115.243)
2021-11-30 23:03:49 +0100 <monochrom> energizer: I think I will just refer you to the "time" library package, which comes with GHC, and look into all those Data.Time.* modules and find what you need.
2021-11-30 23:04:37 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2021-11-30 23:04:47 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-11-30 23:05:15 +0100sprout_(~quassel@2a02:a467:ccd6:1:4de4:2055:b8c4:f1e) (Ping timeout: 264 seconds)
2021-11-30 23:06:18 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) (Remote host closed the connection)
2021-11-30 23:06:35 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-11-30 23:08:07 +0100ub(~Thunderbi@p200300ecdf0ba2aaa54fdd1e9768c0b5.dip0.t-ipconnect.de) (Quit: ub)
2021-11-30 23:08:10 +0100 <energizer> looks like a nice time library. how correct is it, on a scale from normal to formally verified?
2021-11-30 23:08:14 +0100 <monochrom> And in case you feel information overload, the two most important types are UTCTime (for an absolute point in time) and NominalDiffTime (for a duration).
2021-11-30 23:08:30 +0100 <monochrom> Normal.
2021-11-30 23:08:47 +0100 <energizer> thanks
2021-11-30 23:08:49 +0100AlexNoo(~AlexNoo@178.34.160.14)
2021-11-30 23:09:10 +0100 <EvanR> time is relative
2021-11-30 23:09:23 +0100 <EvanR> not everything needs to care about leap seconds, or even time zones
2021-11-30 23:09:51 +0100 <energizer> relative?
2021-11-30 23:10:03 +0100 <EvanR> times not only a construct but there are many to choose from xD
2021-11-30 23:10:27 +0100 <energizer> sure, like anything
2021-11-30 23:10:27 +0100 <sm> energizer: the time library is very good and probably more correct than most things out there
2021-11-30 23:10:35 +0100 <EvanR> https://i.imgur.com/g6rTcZK.png
2021-11-30 23:10:45 +0100 <janus> i guess the my question is confusing because of the haskell heap not being equal to the c heap
2021-11-30 23:11:13 +0100 <monochrom> Yeah :)
2021-11-30 23:11:32 +0100 <janus> the runtime may not even start if it requests too much stack space. and if overcommitting is off, there would be some limit at which it can't malloc
2021-11-30 23:11:43 +0100 <monochrom> Heap implementation is very different between a malloc-free language and a GCed language.
2021-11-30 23:12:20 +0100 <energizer> nice diagram EvanR
2021-11-30 23:13:37 +0100 <monochrom> Or rather, a language with transparent pointers and a language with opague pointers.
2021-11-30 23:14:15 +0100 <monochrom> Transparent pointers forbidding compaction, while opague pointers allowing compaction, for example.
2021-11-30 23:15:33 +0100 <janus> but haskell has both, no?
2021-11-30 23:15:48 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-11-30 23:16:10 +0100 <janus> the ffi suggests that it has, i think?
2021-11-30 23:16:10 +0100 <monochrom> Haskell 2010 doesn't. GHC does, in terms of primitive pinned byte arrays.
2021-11-30 23:16:26 +0100 <monochrom> Yeah, it has C malloc.
2021-11-30 23:16:42 +0100slack1256(~slack1256@191.126.99.71)
2021-11-30 23:18:11 +0100 <monochrom> FFI's C malloc really uses your libc. So it is a different heap space from the GC'ed heap for normal Haskell code.
2021-11-30 23:18:52 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-11-30 23:19:24 +0100deadmarshal(~deadmarsh@95.38.115.243) (Ping timeout: 256 seconds)
2021-11-30 23:20:22 +0100 <hpc> what i read from that diagram is in practice, always use UTC and ZonedTime
2021-11-30 23:20:26 +0100 <janus> if i give something a Storable instance, is it copied to the C heap when needed? and then copied back?
2021-11-30 23:20:32 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-11-30 23:20:59 +0100 <monochrom> Orthogonal.
2021-11-30 23:21:16 +0100 <monochrom> If the space was obtained from malloc then it's already in the C heap.
2021-11-30 23:21:38 +0100mestre(~mestre@191.177.175.57)
2021-11-30 23:21:52 +0100 <monochrom> Storable does not specify how to allocate, at all. It only specifies size, peek, poke.
2021-11-30 23:21:55 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-11-30 23:22:23 +0100 <monochrom> But OK, peeking and poking do not cause copying.
2021-11-30 23:24:25 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 23:24:43 +0100 <monochrom> err, do not cause copying between two heaps.
2021-11-30 23:24:44 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 23:24:57 +0100 <monochrom> (Clearly, copying between memory and registers, yes.)
2021-11-30 23:25:29 +0100 <monochrom> You do not even know that the address is in the heap space, and it should not matter.
2021-11-30 23:26:19 +0100lavaman(~lavaman@98.38.249.169)
2021-11-30 23:26:40 +0100 <monochrom> Suppose the C side has "int xxx;" at the top level. A certain piece of C code decides to call a certain piece of Haskell code with &xxx. The Haskell side should still be able to peek and poke it. Totally not heap.
2021-11-30 23:26:41 +0100 <janus> hmm yeah i guess i imagined it the wrong way around. the usual style is to write a haskell wrapper for a c struct, which can then be filled from haskell. then i can pick any allocation strategy and pass that pointer into C, and C won't care where it is
2021-11-30 23:26:50 +0100 <boxscape> are there any reasons to believe that this shouldn't work? https://github.com/ghc-proposals/ghc-proposals/discussions/463
2021-11-30 23:26:51 +0100 <boxscape> (Allowing type family applications in instances if they can be fully evaluated)
2021-11-30 23:26:58 +0100slack1256(~slack1256@191.126.99.71) (Remote host closed the connection)
2021-11-30 23:27:44 +0100 <janus> i don't even need to know about the haskell heaps to do that, i just need to know the pointer is stable as long as i am inside my withForeignPtr block
2021-11-30 23:28:29 +0100 <hpc> boxscape: type families always felt like a logical extension of type aliases to me
2021-11-30 23:28:37 +0100 <hpc> and you can write instance Num String just fine
2021-11-30 23:28:39 +0100 <hpc> +1 from me
2021-11-30 23:28:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-11-30 23:28:54 +0100 <boxscape> yeah, that's true
2021-11-30 23:29:10 +0100 <awpr> aren't they often referred to as "type synonym families", too?
2021-11-30 23:29:21 +0100 <hpc> a partially applied type family is like a partially applied type alias, it just doesn't work
2021-11-30 23:29:38 +0100 <boxscape> awpr yep, in fact the error message mentioned in the discussion does
2021-11-30 23:29:43 +0100 <hpc> type X a b = Y a b is very different from type X a = Y a
2021-11-30 23:32:55 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-11-30 23:33:07 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net)
2021-11-30 23:33:12 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-11-30 23:33:28 +0100 <janus> it just seems intuitively to me like, if i have that previous model with a C struct with hsc2hs or something, and I have a matching haskell record that i use to fill that struct, copying will be needed, these are two separate data structures
2021-11-30 23:34:14 +0100 <monochrom> Yeah that kind of copying has to happen.
2021-11-30 23:34:46 +0100 <monochrom> I worded "peeking and poking does not cause copying" wrong. Oops. I meant something else.
2021-11-30 23:35:56 +0100 <janus> i thought Daan Leijnen's new "functional but in-place" paradigm is meant to prevent copying
2021-11-30 23:36:07 +0100 <janus> maybe it also makes it easier to treat records like C structs
2021-11-30 23:36:28 +0100 <janus> *Leijen
2021-11-30 23:37:16 +0100 <geekosaur> you still have the problem of data representation
2021-11-30 23:37:32 +0100yauhsien(~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-11-30 23:37:50 +0100 <geekosaur> linked lists just aren't going to match up with anything useful C-side
2021-11-30 23:38:34 +0100 <monochrom> In the case of Haskell, laziness causes a necessary difference between Haskell types and C types.
2021-11-30 23:40:46 +0100 <janus> why can't linked list match up with anything useful on the C side? if the linked list is instantiated with a particular type that maps to a struct, the linked list can be compiled to a tag and an optional pointer to the next element.
2021-11-30 23:41:46 +0100 <monochrom> Hrm I forgot polymorphism too. Parametric polymorphic also gets in the way.
2021-11-30 23:42:16 +0100 <hpc> janus: laziness
2021-11-30 23:42:32 +0100 <janus> ah ok, i thought monochrom and geekosaur were making different points
2021-11-30 23:43:13 +0100 <monochrom> Actually I don't know geekosaur's point :)
2021-11-30 23:43:27 +0100 <monochrom> But your "instantiated" reminds me.
2021-11-30 23:43:36 +0100 <geekosaur> no, they're different aspects of the same point. (and "anything useful" here means in part that there is no *standard* linked list representation in C)
2021-11-30 23:46:27 +0100 <janus> that just means a standard needs to be written ;)
2021-11-30 23:46:53 +0100 <janus> we could argue that C is impossible to link because there is no universal ABI. but no, we just have decide on an ABI and be consistent, then it can work
2021-11-30 23:48:41 +0100 <janus> i suspect that doesn't address the laziness point. as far as i understood, it is related to how C doesn't have sum types? so different constructors need to reuse the same space and C doesn't provide an elegant way to do that
2021-11-30 23:49:25 +0100 <janus> hence the 'tag' which is not a language level construct, but just some ad-hoc way
2021-11-30 23:50:04 +0100 <monochrom> So, what you said works for C++, which takes the stance of "you don't have a parametric polymorphic function, you have a template, compiler does code duplication (even at the source level) at monomorphic use sites".
2021-11-30 23:50:23 +0100 <monochrom> But FPers tend not to do that.
2021-11-30 23:50:31 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-11-30 23:50:38 +0100sproso(~sproso@d137-186-73-215.abhsia.telus.net)
2021-11-30 23:50:47 +0100 <monochrom> FPers do this: If you have "f :: a -> a", it's compiled to "void *f(void *)"
2021-11-30 23:50:52 +0100 <geekosaur> janus, laziness requires that a value be represented as a pointer
2021-11-30 23:51:23 +0100 <geekosaur> we have a strict (or C/machine style if you prefer) Int# (or Int64# as of 9.2.1), and a lazy Int
2021-11-30 23:51:35 +0100 <geekosaur> which is an I# Int64# under the hood
2021-11-30 23:52:03 +0100 <monochrom> So even if you call it as "f (4 :: Int)" it goes as "allocate heap object to store 4, pass address to f".
2021-11-30 23:52:29 +0100 <monochrom> And then laziness doubles down on that because the void* can point to either thunk or value.
2021-11-30 23:52:32 +0100 <geekosaur> and laziness comes in because we always work with a pointer to that, so that pointer could be undefined
2021-11-30 23:52:37 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f)
2021-11-30 23:52:41 +0100 <geekosaur> or a pointer to an unrealized computation
2021-11-30 23:52:50 +0100 <janus> right, i don't know how to address laziness . Leijen probably punted on that :P
2021-11-30 23:53:17 +0100 <monochrom> I don't think FBIP does laziness at all. Does Koka do laziness?
2021-11-30 23:54:18 +0100 <janus> i don't know, maybe it could have something like idris where you can opt-in to laziness.
2021-11-30 23:55:23 +0100 <monochrom> I'm dumb, it's very easy to see. Just look at the APP rule :)
2021-11-30 23:56:35 +0100 <monochrom> Hrm, maybe not this one. "expression e1 is translated to ref-counted expression e2". Now I know nothing haha.
2021-11-30 23:57:18 +0100zincy_(~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) (Remote host closed the connection)
2021-11-30 23:58:15 +0100 <maerwald> let's get rid of laziness
2021-11-30 23:59:55 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)