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 +0100 | pfurla | (~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 +0100 | mvk | (~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 +0100 | jeetelongname | (~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 +0100 | xsperry | (~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 +0100 | jbox | (~jbox@2600:1700:2196:2060:75f5:b1ad:65ea:5c0a) (Changing host) |
2021-11-30 00:17:43 +0100 | jbox | (~jbox@user/jbox) |
2021-11-30 00:18:23 +0100 | machinedgod | (~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 +0100 | masterbuilder | (~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 +0100 | ozzymcduff | (~mathieu@81-234-151-21-no94.tbcn.telia.com) (Ping timeout: 245 seconds) |
2021-11-30 00:36:32 +0100 | eggplantade | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-30 00:42:02 +0100 | Lycurgus | (~juan@98.4.112.204) |
2021-11-30 00:42:44 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:58c0:b83a:3eea:a1cf) |
2021-11-30 00:43:23 +0100 | danso | (~danso@23-233-111-52.cpe.pppoe.ca) |
2021-11-30 00:45:34 +0100 | jeetelongname | yeet |
2021-11-30 00:48:02 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2021-11-30 00:48:55 +0100 | yeet | jeetelongname |
2021-11-30 00:53:04 +0100 | max22- | (~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 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2021-11-30 01:04:45 +0100 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
2021-11-30 01:05:04 +0100 | ubert | (~Thunderbi@p200300ecdf0ba218e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2021-11-30 01:05:21 +0100 | ozzymcduff | (~mathieu@81-234-151-21-no94.tbcn.telia.com) |
2021-11-30 01:05:28 +0100 | matijja | (~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 +0100 | FragByte_ | (~christian@user/fragbyte) |
2021-11-30 01:07:32 +0100 | FragByte | (~christian@user/fragbyte) (Ping timeout: 268 seconds) |
2021-11-30 01:07:50 +0100 | FragByte_ | FragByte |
2021-11-30 01:08:08 +0100 | <EvanR> | evaluate :: a -> IO a |
2021-11-30 01:08:14 +0100 | matijja | (~matijja@193.77.181.201) |
2021-11-30 01:08:16 +0100 | <monochrom> | Yes. |
2021-11-30 01:10:24 +0100 | hughjfchen | (~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8) |
2021-11-30 01:11:39 +0100 | merijn | (~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 +0100 | eggplantade | (~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 +0100 | Erutuon | (~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 +0100 | Lycurgus | (~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 +0100 | Gurkenglas | (~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 +0100 | pfurla | (~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 +0100 | dawdler | (~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 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-30 01:30:00 +0100 | slac11392 | (~slack1256@191.125.99.65) |
2021-11-30 01:30:16 +0100 | jeetelongname | (~jeet@148.197.248.54) (Remote host closed the connection) |
2021-11-30 01:31:43 +0100 | slack1256 | (~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 +0100 | jkaye | (~jkaye@2601:281:8300:7530:7309:f677:c771:6123) (Ping timeout: 264 seconds) |
2021-11-30 01:33:21 +0100 | dawdler | (~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 +0100 | yauhsien | (~yauhsien@61-231-58-114.dynamic-ip.hinet.net) |
2021-11-30 01:34:41 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds) |
2021-11-30 01:35:08 +0100 | random-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 +0100 | yauhsien | (~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 +0100 | Guest17 | (~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 +0100 | random-jellyfish | (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds) |
2021-11-30 01:50:35 +0100 | Midjak | (~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 +0100 | Tuplanolla | (~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 +0100 | ouro_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 +0100 | pgib | (~textual@173.38.117.87) |
2021-11-30 02:05:45 +0100 | chexum | (~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 +0100 | chexum | (~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 +0100 | bollu | (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 +0100 | burnsidesLlama | (~burnsides@dhcp168-026.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-11-30 02:11:46 +0100 | albet70 | (~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 +0100 | alzgh | (~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 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-11-30 02:19:03 +0100 | hololeap | (~hololeap@user/hololeap) |
2021-11-30 02:20:29 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-11-30 02:21:16 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 264 seconds) |
2021-11-30 02:25:22 +0100 | nautical | (~nautical@2601:602:900:1630::396f) (Quit: WeeChat 3.3) |
2021-11-30 02:27:24 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2021-11-30 02:28:15 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-11-30 02:32:01 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e72fcf154b5eecf3df6.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2021-11-30 02:33:28 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:58c0:b83a:3eea:a1cf) (Quit: Textual IRC Client: www.textualapp.com) |
2021-11-30 02:34:34 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-11-30 02:37:38 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-30 02:37:38 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-30 02:37:38 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-30 02:41:26 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3) |
2021-11-30 02:42:20 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-11-30 02:43:22 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2021-11-30 02:46:10 +0100 | Feuermagier | (~Feuermagi@user/feuermagier) |
2021-11-30 02:47:16 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-30 02:47:16 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-30 02:47:16 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-30 02:47:27 +0100 | hexology | hexology_ |
2021-11-30 02:47:51 +0100 | hexology_ | hexology__ |
2021-11-30 02:48:03 +0100 | Feuermagier_ | (~Feuermagi@154.28.188.22) (Ping timeout: 268 seconds) |
2021-11-30 02:48:07 +0100 | hexology__ | hexology` |
2021-11-30 02:48:12 +0100 | hexology` | hexology_` |
2021-11-30 02:48:23 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 252 seconds) |
2021-11-30 02:48:52 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer) |
2021-11-30 02:48:56 +0100 | hexology_` | hexology |
2021-11-30 02:53:54 +0100 | ec_ | (~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 +0100 | merijn | (~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 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-30 03:22:33 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2021-11-30 03:26:16 +0100 | mvk | (~mvk@2607:fea8:5cc1:fa00::4702) |
2021-11-30 03:27:54 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3) |
2021-11-30 03:28:26 +0100 | mmhat | (~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 +0100 | xff0x | (~xff0x@2001:1a81:527f:8300:4a2b:7ccd:5352:f2b5) (Ping timeout: 264 seconds) |
2021-11-30 03:35:51 +0100 | x88x88x | (~cheeg@gateway/vpn/pia/x88x88x) |
2021-11-30 03:35:55 +0100 | yauhsien | (~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 +0100 | xff0x | (~xff0x@2001:1a81:52c5:f300:1fcf:1bc6:be0c:348e) |
2021-11-30 03:40:38 +0100 | yauhsien | (~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
2021-11-30 03:42:17 +0100 | merijn | (~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 +0100 | lavaman | (~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 +0100 | TranquilEcho | (~grom@user/tranquilecho) (Quit: WeeChat 2.8) |
2021-11-30 04:07:59 +0100 | jkaye | (~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 +0100 | iqubic | (~user@2601:602:9502:c70:6765:a5f:e5b9:6c69) |
2021-11-30 04:16:23 +0100 | Erutuon | (~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 +0100 | lavaman | (~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 +0100 | td_ | (~td@94.134.91.97) (Ping timeout: 268 seconds) |
2021-11-30 04:26:04 +0100 | td_ | (~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 +0100 | namkeleser | (~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 +0100 | hiruji | (~hiruji@user/hiruji) |
2021-11-30 04:35:20 +0100 | bollu | (uid233390@id-233390.helmsley.irccloud.com) |
2021-11-30 04:36:00 +0100 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
2021-11-30 04:36:00 +0100 | hololeap_ | (~hololeap@user/hololeap) |
2021-11-30 04:37:27 +0100 | fluffyballoon | (~user@131.93.208.196) |
2021-11-30 04:37:27 +0100 | fluffyballoon | (~user@131.93.208.196) (Read error: Connection reset by peer) |
2021-11-30 04:37:49 +0100 | nickdaly` | (~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 +0100 | deadmarshal | (~deadmarsh@95.38.228.153) |
2021-11-30 04:41:32 +0100 | jbox | (~jbox@user/jbox) (Read error: Connection reset by peer) |
2021-11-30 04:41:37 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
2021-11-30 04:42:00 +0100 | mbuf | (~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 +0100 | terrorjack | (~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 +0100 | Guest|70 | (~Guest|70@c-65-50-165-29.hs.gigamonster.net) (Ping timeout: 256 seconds) |
2021-11-30 04:45:16 +0100 | jkaye | (~jkaye@2601:281:8300:7530:a6c:9e86:10cd:6e96) (Ping timeout: 264 seconds) |
2021-11-30 04:47:44 +0100 | boxscape_ | (~boxscape_@p4ff0bb6c.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-11-30 04:48:33 +0100 | nickdaly` | (~user@131.93.208.196) (Quit: ERC (IRC client for Emacs 27.1)) |
2021-11-30 04:48:51 +0100 | nickdaly` | (~user@131.93.208.196) |
2021-11-30 04:48:58 +0100 | nickdaly` | (~user@131.93.208.196) (Remote host closed the connection) |
2021-11-30 04:52:38 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 04:54:59 +0100 | nickdaly` | (~user@131.93.208.196) |
2021-11-30 04:57:11 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
2021-11-30 04:57:32 +0100 | nickdaly | (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 +0100 | concrete-houses | (~g@209.6.150.53) |
2021-11-30 05:00:19 +0100 | nickdaly` | (~user@131.93.208.196) (ERC (IRC client for Emacs 27.1)) |
2021-11-30 05:00:56 +0100 | yauhsien | (~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 +0100 | Lycurgus | (~juan@98.4.112.204) |
2021-11-30 05:05:40 +0100 | yauhsien | (~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 +0100 | deadmarshal | (~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 +0100 | x88x88x | (~cheeg@gateway/vpn/pia/x88x88x) (Ping timeout: 264 seconds) |
2021-11-30 05:16:55 +0100 | takuan | (~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 +0100 | iqubic | (~user@2601:602:9502:c70:6765:a5f:e5b9:6c69) (Remote host closed the connection) |
2021-11-30 05:36:36 +0100 | yauhsien | (~yauhsien@61-231-58-114.dynamic-ip.hinet.net) |
2021-11-30 05:37:41 +0100 | jmorris | (uid433911@id-433911.hampstead.irccloud.com) |
2021-11-30 05:38:25 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-30 05:41:05 +0100 | yauhsien | (~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 +0100 | danso | (~danso@23-233-111-52.cpe.pppoe.ca) (Ping timeout: 256 seconds) |
2021-11-30 05:42:20 +0100 | danso | (~danso@23-233-111-52.cpe.pppoe.ca) |
2021-11-30 05:45:16 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 264 seconds) |
2021-11-30 05:45:59 +0100 | iqubic | (~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 +0100 | slac11392 | (~slack1256@191.125.99.65) (Ping timeout: 252 seconds) |
2021-11-30 05:48:27 +0100 | deadmarshal | (~deadmarsh@95.38.228.153) |
2021-11-30 05:48:47 +0100 | Lycurgus | (~juan@98.4.112.204) (Quit: Exeunt) |
2021-11-30 05:50:28 +0100 | LittleLemon | (~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 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2021-11-30 05:53:11 +0100 | deadmarshal | (~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 +0100 | cjb | (~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 +0100 | deadmarshal | (~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 +0100 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
2021-11-30 06:12:33 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-11-30 06:14:04 +0100 | shapr | (~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 +0100 | dsrt^ | (~dsrt@68.101.58.90) (Remote host closed the connection) |
2021-11-30 06:17:08 +0100 | lavaman | (~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 +0100 | waleee | (~waleee@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: WeeChat 3.3) |
2021-11-30 06:29:33 +0100 | concrete-houses | (~g@209.6.150.53) (Ping timeout: 256 seconds) |
2021-11-30 06:31:06 +0100 | concrete-houses | (~g@209.6.150.53) |
2021-11-30 06:31:25 +0100 | puke | (~puke@user/puke) (Quit: puke) |
2021-11-30 06:32:43 +0100 | reumeth | (~reumeth@user/reumeth) |
2021-11-30 06:34:56 +0100 | fr33domlover | (~fr33@2.53.150.205) |
2021-11-30 06:34:56 +0100 | nrl^ | (~nrl@68.101.58.90) |
2021-11-30 06:38:15 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2021-11-30 06:38:36 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2021-11-30 06:39:19 +0100 | vonfry` | (~user@116.236.75.238) |
2021-11-30 06:39:43 +0100 | vonfry` | (~user@116.236.75.238) () |
2021-11-30 06:40:21 +0100 | vonfry | (~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 +0100 | mario_ | (~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 +0100 | mario_ | (~mario@31.147.205.13) (Client Quit) |
2021-11-30 06:44:55 +0100 | bollu | (uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-30 06:48:49 +0100 | lavaman | (~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 +0100 | mvk | (~mvk@2607:fea8:5cc1:fa00::4702) (Ping timeout: 264 seconds) |
2021-11-30 06:51:28 +0100 | mvk | (~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 +0100 | reumeth | (~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 +0100 | hskpractice | (~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 +0100 | hskpractice | (~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 +0100 | LittleLemon | (~AdiIRC@170.55.34.132) (Quit: Going offline, see ya! (www.adiirc.com)) |
2021-11-30 07:16:51 +0100 | alzgh | (~alzgh@user/alzgh) |
2021-11-30 07:17:26 +0100 | xkuru | (~xkuru@user/xkuru) |
2021-11-30 07:17:29 +0100 | jonatanb | (~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 +0100 | yauhsien | (~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 +0100 | xff0x | (~xff0x@2001:1a81:52c5:f300:1fcf:1bc6:be0c:348e) (Ping timeout: 252 seconds) |
2021-11-30 07:22:39 +0100 | xff0x | (~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 +0100 | yauhsien | (~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
2021-11-30 07:32:24 +0100 | xerxesphainon[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 +0100 | LittleLemon | (~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 +0100 | xff0x | (~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 +0100 | xerxesphainon[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 +0100 | danso | (~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 +0100 | xff0x | (~xff0x@2001:1a81:52c5:f300:d642:873:f292:9250) |
2021-11-30 07:47:27 +0100 | jmorris | (uid433911@id-433911.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-30 07:49:37 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-30 07:53:35 +0100 | danso | (~danso@23-233-111-52.cpe.pppoe.ca) |
2021-11-30 07:54:16 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 264 seconds) |
2021-11-30 07:56:52 +0100 | atlas | (~jbox@user/jbox) |
2021-11-30 07:59:35 +0100 | vysn | (~vysn@user/vysn) |
2021-11-30 07:59:49 +0100 | jonatanb | (~accio@31-178-144-108.dynamic.chello.pl) (Remote host closed the connection) |
2021-11-30 08:00:00 +0100 | atlas | jbox |
2021-11-30 08:00:47 +0100 | fr33domlover | (~fr33@2.53.150.205) (Ping timeout: 256 seconds) |
2021-11-30 08:05:48 +0100 | chele | (~chele@user/chele) |
2021-11-30 08:06:52 +0100 | xff0x | (~xff0x@2001:1a81:52c5:f300:d642:873:f292:9250) (Ping timeout: 268 seconds) |
2021-11-30 08:07:20 +0100 | xff0x | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-30 08:13:51 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2021-11-30 08:14:57 +0100 | deadmarshal | (~deadmarsh@95.38.228.153) (Ping timeout: 256 seconds) |
2021-11-30 08:21:09 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:97df:ebe3:251c:f0f6) |
2021-11-30 08:28:01 +0100 | xerxesphainon[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 +0100 | gehmehgeh | (~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 +0100 | jonatanb | (~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 +0100 | natechan | (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
2021-11-30 08:36:21 +0100 | xerxesphainon[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 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Read error: Connection reset by peer) |
2021-11-30 08:36:43 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2021-11-30 08:37:09 +0100 | deadmarshal | (~deadmarsh@95.38.228.153) |
2021-11-30 08:37:37 +0100 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
2021-11-30 08:37:37 +0100 | nahcetan | (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2021-11-30 08:38:04 +0100 | abhixec | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-11-30 08:43:33 +0100 | yaroot | (~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 +0100 | yaroot | (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) |
2021-11-30 08:45:03 +0100 | zebrag | (~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 +0100 | xerxesphainon[m] | (~artaxerxe@2001:470:69fc:105::f400) () |
2021-11-30 08:46:18 +0100 | atwm | (~atwm@19-193-28-81.ftth.cust.kwaoo.net) (Ping timeout: 260 seconds) |
2021-11-30 08:48:12 +0100 | atwm | (~atwm@19-193-28-81.ftth.cust.kwaoo.net) |
2021-11-30 08:51:42 +0100 | michalz | (~michalz@185.246.204.62) |
2021-11-30 08:53:48 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 08:55:28 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 08:55:41 +0100 | sunarch | (uid526836@user/sunarch) (Quit: Connection closed for inactivity) |
2021-11-30 08:55:45 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 08:57:11 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 08:57:28 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 08:58:43 +0100 | LittleLemon_2 | (~AdiIRC@075-112-143-124.res.spectrum.com) |
2021-11-30 08:58:49 +0100 | yaroot | (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) (Remote host closed the connection) |
2021-11-30 08:59:03 +0100 | yaroot | (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) |
2021-11-30 08:59:57 +0100 | yaroot | (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) (Remote host closed the connection) |
2021-11-30 09:00:00 +0100 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2021-11-30 09:00:11 +0100 | yaroot | (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) |
2021-11-30 09:00:36 +0100 | jonatanb | (~accio@31-178-144-108.dynamic.chello.pl) (Remote host closed the connection) |
2021-11-30 09:00:45 +0100 | jonatanb | (~accio@31-178-144-108.dynamic.chello.pl) |
2021-11-30 09:01:59 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
2021-11-30 09:02:04 +0100 | LittleLemon | (~AdiIRC@170.55.34.132) (Ping timeout: 264 seconds) |
2021-11-30 09:02:09 +0100 | LittleLemon_2 | LittleLemon |
2021-11-30 09:03:29 +0100 | jonatanb | (~accio@31-178-144-108.dynamic.chello.pl) (Remote host closed the connection) |
2021-11-30 09:05:41 +0100 | deadmarshal | (~deadmarsh@95.38.228.153) (Ping timeout: 252 seconds) |
2021-11-30 09:06:10 +0100 | AndrejKarpathy | (~AndrejKar@2409:4053:2203:902f:95e9:1dcc:9faf:e958) |
2021-11-30 09:08:21 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 09:11:36 +0100 | <AndrejKarpathy> | Hi everyone. |
2021-11-30 09:12:49 +0100 | AndrejKarpathy | (~AndrejKar@2409:4053:2203:902f:95e9:1dcc:9faf:e958) (Quit: Client closed) |
2021-11-30 09:14:29 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 09:14:46 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 09:16:19 +0100 | rkrishnan | (~user@122.171.76.46) |
2021-11-30 09:18:23 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 09:18:41 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 09:20:21 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 09:20:27 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-11-30 09:20:39 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 09:20:48 +0100 | trcc | (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
2021-11-30 09:22:20 +0100 | zava | (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) |
2021-11-30 09:23:14 +0100 | jbox | (~jbox@user/jbox) (Read error: Connection reset by peer) |
2021-11-30 09:23:40 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-30 09:26:40 +0100 | LittleLemon | (~AdiIRC@075-112-143-124.res.spectrum.com) (Ping timeout: 264 seconds) |
2021-11-30 09:29:09 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 09:29:27 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 09:31:26 +0100 | chomwitt | (~chomwitt@2a02:587:dc16:f200:12c3:7bff:fe6d:d374) |
2021-11-30 09:33:12 +0100 | neurocyte0132889 | (~neurocyte@user/neurocyte) |
2021-11-30 09:34:02 +0100 | cosimone | (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) |
2021-11-30 09:34:18 +0100 | zaquest | (~notzaques@5.130.79.72) (Remote host closed the connection) |
2021-11-30 09:35:58 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 09:36:15 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 09:36:37 +0100 | narendra | (~user@2a02:8109:b63f:ff7c::56c2) |
2021-11-30 09:37:16 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-11-30 09:42:11 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 09:42:29 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 09:43:19 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-11-30 09:44:03 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:f00d:18c8:3973:574b) |
2021-11-30 09:46:09 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 09:46:27 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 09:48:07 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 09:48:16 +0100 | Feuermagier | (~Feuermagi@user/feuermagier) (Ping timeout: 264 seconds) |
2021-11-30 09:48:25 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 09:49:29 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2021-11-30 09:51:09 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-30 09:52:19 +0100 | deadmarshal | (~deadmarsh@95.38.228.153) |
2021-11-30 09:54:39 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 09:54:57 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 09:55:58 +0100 | zaquest | (~notzaques@5.130.79.72) |
2021-11-30 09:56:26 +0100 | ChanServ | +o dibblego |
2021-11-30 09:56:53 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2021-11-30 09:57:18 +0100 | dibblego | +b *!~artaxerxe@* |
2021-11-30 09:57:27 +0100 | dibblego | +b *!artaxerxe@* |
2021-11-30 09:57:29 +0100 | dibblego | -b *!~artaxerxe@* |
2021-11-30 09:57:50 +0100 | jstolarek | (~jstolarek@137.220.120.162) |
2021-11-30 09:58:33 +0100 | max22- | (~maxime@2a01cb0883359800537b01ac6af61ec5.ipv6.abo.wanadoo.fr) |
2021-11-30 09:59:40 +0100 | acidjnk_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 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
2021-11-30 10:03:37 +0100 | trcc | (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Remote host closed the connection) |
2021-11-30 10:04:09 +0100 | trcc | (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
2021-11-30 10:05:49 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 10:06:06 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 10:08:16 +0100 | trcc | (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Ping timeout: 245 seconds) |
2021-11-30 10:08:26 +0100 | james[m]12 | (~jamesnina@2001:470:69fc:105::1:4203) |
2021-11-30 10:10:06 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 10:10:23 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 10:11:42 +0100 | boxscape_ | (~boxscape_@p4ff0bb6c.dip0.t-ipconnect.de) |
2021-11-30 10:13:15 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:356c:6df7:ff7f:48a3) (Remote host closed the connection) |
2021-11-30 10:14:55 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 10:15:12 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 10:15:21 +0100 | ehamberg | (sid18208@id-18208.hampstead.irccloud.com) () |
2021-11-30 10:17:11 +0100 | favonia | (~favonia@user/favonia) (Ping timeout: 252 seconds) |
2021-11-30 10:17:36 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-11-30 10:17:36 +0100 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-11-30 10:17:39 +0100 | allbery_b | geekosaur |
2021-11-30 10:20:31 +0100 | boxscape | (~boxscape@user/boxscape) |
2021-11-30 10:21:02 +0100 | deadmarshal | (~deadmarsh@95.38.228.153) (Ping timeout: 252 seconds) |
2021-11-30 10:21:36 +0100 | ehamberg_ | (sid18208@id-18208.hampstead.irccloud.com) |
2021-11-30 10:22:11 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2021-11-30 10:23:04 +0100 | mvk | (~mvk@2607:fea8:5cc1:fa00::4702) (Ping timeout: 264 seconds) |
2021-11-30 10:25:49 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 10:26:07 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 10:26:34 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2021-11-30 10:27:52 +0100 | yauhsien | (~yauhsien@61-231-58-114.dynamic-ip.hinet.net) |
2021-11-30 10:29:47 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 10:30:05 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 10:30:06 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2021-11-30 10:30:09 +0100 | mikoto-chan | (~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Quit: mikoto-chan) |
2021-11-30 10:31:49 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 10:32:07 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 10:32:35 +0100 | yauhsien | (~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
2021-11-30 10:33:15 +0100 | deadmarshal | (~deadmarsh@95.38.228.153) |
2021-11-30 10:33:23 +0100 | max22- | (~maxime@2a01cb0883359800537b01ac6af61ec5.ipv6.abo.wanadoo.fr) (Ping timeout: 250 seconds) |
2021-11-30 10:35:20 +0100 | kuribas | (~user@ptr-25vy0i8s19mxk1vvjxp.18120a2.ip6.access.telenet.be) |
2021-11-30 10:35:23 +0100 | cfricke | (~cfricke@user/cfricke) |
2021-11-30 10:40:33 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 10:40:51 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 10:44:31 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 10:44:49 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 10:45:37 +0100 | curiousgay | (~curiousga@77-120-141-90.kha.volia.net) (Quit: Leaving) |
2021-11-30 10:49:47 +0100 | xcmw | (~textual@dyn-72-33-2-173.uwnet.wisc.edu) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-11-30 10:53:01 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 10:53:19 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 10:54:59 +0100 | ubert | (~Thunderbi@p200300ecdf0ba2aae6b318fffe838f33.dip0.t-ipconnect.de) |
2021-11-30 10:56:19 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-11-30 10:57:37 +0100 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-11-30 10:59:17 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 10:59:34 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 10:59:36 +0100 | MaybeJustJames | (~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 +0100 | pretty_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 +0100 | Lord_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 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
2021-11-30 11:04:28 +0100 | Lord_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 +0100 | raehik | (~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 +0100 | mmhat | (~mmh@55d4269f.access.ecotel.net) |
2021-11-30 11:06:16 +0100 | deadmarshal | (~deadmarsh@95.38.228.153) (Ping timeout: 264 seconds) |
2021-11-30 11:07:12 +0100 | deadmarshal | (~deadmarsh@95.38.228.153) |
2021-11-30 11:08:41 +0100 | max22- | (~maxime@2a01cb08833598007acc2e8deff42dd7.ipv6.abo.wanadoo.fr) |
2021-11-30 11:10:21 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 11:10:38 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 11:12:11 +0100 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds) |
2021-11-30 11:12:50 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-11-30 11:13:32 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-11-30 11:13:39 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) |
2021-11-30 11:13:58 +0100 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-11-30 11:18:44 +0100 | jonatanb | (~accio@31-178-144-108.dynamic.chello.pl) |
2021-11-30 11:19:28 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) (Ping timeout: 264 seconds) |
2021-11-30 11:21:21 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 11:21:40 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 11:21:44 +0100 | nschoe | (~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 +0100 | jonatanb | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 11:26:09 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 11:27:18 +0100 | DNH | (~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 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 256 seconds) |
2021-11-30 11:30:52 +0100 | deadmarshal | (~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 +0100 | cheater | (~Username@user/cheater) |
2021-11-30 11:38:17 +0100 | pfurla | (~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 +0100 | DNH | (~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 +0100 | jakalx | (~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 +0100 | merijn | (~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 +0100 | merijn | (~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 +0100 | waleee | (~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 +0100 | akspecs__ | (~akspecs@user/akspecs) (Quit: WeeChat 3.2) |
2021-11-30 12:06:02 +0100 | <arahael> | Thanks. :) |
2021-11-30 12:06:29 +0100 | jakalx | (~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 +0100 | gehmehgeh | (~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 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2021-11-30 12:12:41 +0100 | merijn | (~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 +0100 | merijn | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 12:17:51 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 12:19:11 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-11-30 12:19:37 +0100 | merijn | (~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 +0100 | deadmarshal | (~deadmarsh@95.38.228.153) |
2021-11-30 12:24:47 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-11-30 12:25:15 +0100 | vysn | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-30 12:30:50 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-11-30 12:31:37 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-30 12:35:35 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 12:35:54 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 12:36:53 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-11-30 12:37:26 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-30 12:37:28 +0100 | emf | (~emf@2620:10d:c090:400::5:9a5b) (Ping timeout: 264 seconds) |
2021-11-30 12:39:52 +0100 | emf | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-11-30 12:43:15 +0100 | merijn | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 12:46:54 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 12:47:04 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 264 seconds) |
2021-11-30 12:48:44 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 12:49:01 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 12:50:41 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 12:51:00 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 12:53:01 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 12:53:19 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 12:53:23 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-11-30 12:54:40 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-30 12:55:32 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-30 12:57:33 +0100 | pfurla | (~pfurla@2804:14d:5c81:4104:4c11:ba21:da7d:dd69) |
2021-11-30 12:57:39 +0100 | namkeleser | (~namkelese@101.175.102.188) (Quit: Client closed) |
2021-11-30 12:59:23 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 12:59:41 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 13:00:52 +0100 | waleee | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 13:10:59 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 13:12:39 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 13:12:57 +0100 | hskpractice | (~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 +0100 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-11-30 13:14:47 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-11-30 13:15:00 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-30 13:15:08 +0100 | lavaman | (~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 +0100 | deadmarshal_ | (~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 +0100 | deadmarshal | (~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 +0100 | filwisher | (2e6936c793@2604:bf00:561:2000::170) |
2021-11-30 13:25:04 +0100 | narendra | (~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 +0100 | raehik | (~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 +0100 | fr33domlover | (~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 +0100 | raehik | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 13:35:23 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 13:35:33 +0100 | cosimone | (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 268 seconds) |
2021-11-30 13:37:13 +0100 | hskpractice | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 13:39:21 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 13:39:40 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 13:41:20 +0100 | hskpractice | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 13:41:45 +0100 | mario | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 13:43:54 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 13:45:34 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 13:45:40 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-11-30 13:45:52 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 13:47:53 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) |
2021-11-30 13:49:04 +0100 | <maerwald> | and use the more complicated posix_spawn? |
2021-11-30 13:49:17 +0100 | dawdler | (~dawdler@user/dawdler) (Ping timeout: 256 seconds) |
2021-11-30 13:49:26 +0100 | jonathanx | (~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 +0100 | Codaraxis_ | (~Codaraxis@user/codaraxis) (Ping timeout: 264 seconds) |
2021-11-30 13:52:47 +0100 | dawdler | (~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 +0100 | max22- | (~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 +0100 | mario | spaceseller |
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 +0100 | narendra | (~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 +0100 | spaceseller | (~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 +0100 | jonatanb | (~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 +0100 | ystael | (~ystael@user/ystael) (Ping timeout: 256 seconds) |
2021-11-30 14:13:09 +0100 | kadir | (~kadir@88.251.54.110) |
2021-11-30 14:14:03 +0100 | fef | (~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 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-30 14:19:17 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 14:19:36 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 14:19:51 +0100 | viluon | (uid453725@id-453725.helmsley.irccloud.com) |
2021-11-30 14:21:31 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 14:21:48 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 14:22:09 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2021-11-30 14:22:53 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2021-11-30 14:23:16 +0100 | ystael | (~ystael@user/ystael) |
2021-11-30 14:25:31 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 14:25:50 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 14:25:54 +0100 | yauhsien | (~yauhsien@61-231-58-114.dynamic-ip.hinet.net) |
2021-11-30 14:29:29 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 14:29:47 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 14:30:39 +0100 | yauhsien | (~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2021-11-30 14:31:17 +0100 | deadmarshal_ | (~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 +0100 | deadmarshal | (~deadmarsh@95.38.229.118) |
2021-11-30 14:35:43 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 14:36:02 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 14:39:43 +0100 | deadmarshal | (~deadmarsh@95.38.229.118) (Ping timeout: 256 seconds) |
2021-11-30 14:40:13 +0100 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-11-30 14:42:09 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 14:42:27 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 14:43:43 +0100 | max22- | (~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 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Read error: Connection reset by peer) |
2021-11-30 14:47:17 +0100 | slack1256 | (~slack1256@191.126.99.89) |
2021-11-30 14:48:26 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-11-30 14:48:51 +0100 | cosimone | (~user@93-47-231-3.ip115.fastwebnet.it) |
2021-11-30 14:49:46 +0100 | pfurla | (~pfurla@2804:14d:5c81:4104:4c11:ba21:da7d:dd69) (Quit: gone to sleep. ZZZzzz…) |
2021-11-30 14:51:26 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 14:51:44 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 14:51:58 +0100 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-11-30 14:53:08 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-11-30 14:53:47 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-30 14:55:20 +0100 | __monty__ | (~toonn@user/toonn) |
2021-11-30 14:57:18 +0100 | deadmarshal | (~deadmarsh@95.38.229.118) |
2021-11-30 14:58:28 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 264 seconds) |
2021-11-30 15:00:08 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 15:00:25 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 15:01:11 +0100 | max22- | (~maxime@2a01cb08833598002b3ca9ff186b1f37.ipv6.abo.wanadoo.fr) (Ping timeout: 250 seconds) |
2021-11-30 15:01:38 +0100 | reumeth | (~reumeth@user/reumeth) |
2021-11-30 15:04:21 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Remote host closed the connection) |
2021-11-30 15:04:45 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-11-30 15:05:51 +0100 | narendra | (~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 +0100 | waleee | (~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 +0100 | waleee | (~waleee@h-82-196-111-63.na.cust.bahnhof.se) |
2021-11-30 15:14:13 +0100 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-11-30 15:14:51 +0100 | waleee | (~waleee@h-82-196-111-63.na.cust.bahnhof.se) (Ping timeout: 256 seconds) |
2021-11-30 15:16:37 +0100 | Lycurgus | (~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 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) |
2021-11-30 15:21:48 +0100 | waleee | (~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 +0100 | lbseale_ | (~ep1ctetus@user/ep1ctetus) |
2021-11-30 15:27:03 +0100 | slac11455 | (~slack1256@191.125.99.65) |
2021-11-30 15:27:43 +0100 | aliosablack | (~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 +0100 | aliosablack | (~chomwitt@2a02:587:dc16:f200:12c3:7bff:fe6d:d374) (Remote host closed the connection) |
2021-11-30 15:28:07 +0100 | chomwitt | (~chomwitt@2a02:587:dc16:f200:12c3:7bff:fe6d:d374) (Read error: Connection reset by peer) |
2021-11-30 15:28:31 +0100 | chomwitt | (~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 +0100 | slack1256 | (~slack1256@191.126.99.89) (Ping timeout: 256 seconds) |
2021-11-30 15:29:35 +0100 | lbseale | (~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 +0100 | shapr | (~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 +0100 | curiousgay | (~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 +0100 | burnsidesLlama | (~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 +0100 | raehik | (~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 +0100 | raehik | (~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 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-11-30 15:45:32 +0100 | waleee | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 15:47:47 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 15:49:27 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 15:49:45 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 15:51:25 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 15:51:43 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 15:52:15 +0100 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-11-30 15:53:42 +0100 | DNH | (~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 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-30 15:54:49 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-30 15:54:49 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-30 15:54:59 +0100 | LukeHoersten | (~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 +0100 | acidjnk_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 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:f00d:18c8:3973:574b) |
2021-11-30 15:58:27 +0100 | lbseale_ | lbseale |
2021-11-30 16:00:11 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2021-11-30 16:02:55 +0100 | max22- | (~maxime@2a01cb08833598007c2e741a7c59ca1a.ipv6.abo.wanadoo.fr) |
2021-11-30 16:04:31 +0100 | AlexZenon | (~alzenon@178.34.160.14) |
2021-11-30 16:04:59 +0100 | Alex_test | (~al_test@178.34.160.14) |
2021-11-30 16:05:07 +0100 | lavaman | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 16:06:26 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 16:08:06 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 16:09:44 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-11-30 16:10:54 +0100 | burnsidesLlama | (~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 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3) |
2021-11-30 16:12:49 +0100 | ChanServ | +o geekosaur |
2021-11-30 16:12:54 +0100 | <geekosaur> | point me to it? |
2021-11-30 16:13:34 +0100 | geekosaur | doesn'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 +0100 | pfurla | (~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 +0100 | xsperry | (~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 +0100 | xsperry | (~xs@user/xsperry) |
2021-11-30 16:16:09 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 16:16:20 +0100 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 252 seconds) |
2021-11-30 16:17:25 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-30 16:17:25 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-30 16:17:25 +0100 | wroathe | (~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 +0100 | geekosaur | -o geekosaur |
2021-11-30 16:19:31 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) |
2021-11-30 16:20:35 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
2021-11-30 16:21:07 +0100 | retroid_ | (~retro@97e2ba2e.skybroadband.com) |
2021-11-30 16:21:50 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-11-30 16:23:08 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 16:24:16 +0100 | eggplantade | (~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 +0100 | retro_ | (~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds) |
2021-11-30 16:25:45 +0100 | retroid_ | (~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds) |
2021-11-30 16:26:27 +0100 | retroid_ | (~retro@97e2ba2e.skybroadband.com) |
2021-11-30 16:26:46 +0100 | xkuru | (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
2021-11-30 16:27:23 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
2021-11-30 16:30:28 +0100 | x88x88x | (~cheeg@gateway/vpn/pia/x88x88x) |
2021-11-30 16:31:46 +0100 | jeetelongname | (~jeet@eduroam-public-46.nat.port.ac.uk) |
2021-11-30 16:32:26 +0100 | xkuru | (~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 +0100 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Quit: Konversation terminated!) |
2021-11-30 16:44:52 +0100 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds) |
2021-11-30 16:46:10 +0100 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) |
2021-11-30 16:46:16 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-11-30 16:49:14 +0100 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-11-30 16:54:38 +0100 | cfricke | (~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 +0100 | deadmarshal | (~deadmarsh@95.38.229.118) (Ping timeout: 256 seconds) |
2021-11-30 17:04:54 +0100 | ouro_boros | (~ouroboros@2804:14c:65e4:93f6::1001) (Remote host closed the connection) |
2021-11-30 17:04:57 +0100 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-11-30 17:05:17 +0100 | ouro_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 +0100 | merijn | (~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 +0100 | slac11455 | (~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 +0100 | mjs2600 | (~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 +0100 | shapr | enables PASV |
2021-11-30 17:17:34 +0100 | mjs2600 | (~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 +0100 | hskpractice | (~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 +0100 | lortabac | (~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 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-30 17:25:41 +0100 | jeetelongname | (~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 +0100 | hskpractice | (~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 +0100 | yauhsien | (~yauhsien@61-231-58-114.dynamic-ip.hinet.net) |
2021-11-30 17:30:10 +0100 | ub | (~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 +0100 | yauhsien | (~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 +0100 | merijn | (~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 +0100 | burnsidesLlama | (~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 +0100 | jeetelongname | (~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 +0100 | Franciman | wants to learn |
2021-11-30 17:41:37 +0100 | merijn | (~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 +0100 | ncopa3 | (~ncopa@gbr2-dev1.alpinelinux.org) |
2021-11-30 17:42:51 +0100 | <Franciman> | one sec [exa] |
2021-11-30 17:43:22 +0100 | haskl | (~haskl@user/haskl) (Ping timeout: 256 seconds) |
2021-11-30 17:43:51 +0100 | OscarH_ | (~OscarH@90.201.86.195) |
2021-11-30 17:43:52 +0100 | codolio | (~dolio@130.44.130.54) |
2021-11-30 17:43:54 +0100 | dwt__ | (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) |
2021-11-30 17:43:55 +0100 | haskl | (~haskl@user/haskl) |
2021-11-30 17:43:56 +0100 | madnight | (~madnight@static.59.103.201.195.clients.your-server.de) |
2021-11-30 17:43:56 +0100 | OscarH | (~OscarH@90.201.86.195) (Ping timeout: 256 seconds) |
2021-11-30 17:43:56 +0100 | dwt_ | (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 256 seconds) |
2021-11-30 17:44:01 +0100 | bgamari_ | (~bgamari@64.223.235.131) |
2021-11-30 17:44:01 +0100 | oats_ | (~thomas@user/oats) |
2021-11-30 17:44:25 +0100 | aforemny_ | (~aforemny@static.248.158.34.188.clients.your-server.de) |
2021-11-30 17:44:30 +0100 | bcoppens_ | (~bartcopp@vpn2.bartcoppens.be) (Ping timeout: 256 seconds) |
2021-11-30 17:44:30 +0100 | dolio | (~dolio@130.44.130.54) (Ping timeout: 256 seconds) |
2021-11-30 17:44:30 +0100 | dtman34 | (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
2021-11-30 17:44:30 +0100 | hiredman | (~hiredman@frontier1.downey.family) (Ping timeout: 256 seconds) |
2021-11-30 17:44:31 +0100 | heath | (~heath@user/heath) (Ping timeout: 256 seconds) |
2021-11-30 17:44:31 +0100 | Patternmaster | (~georg@li1192-118.members.linode.com) (Ping timeout: 256 seconds) |
2021-11-30 17:44:31 +0100 | jackhill | (~jackhill@kalessin.dragonsnail.net) (Ping timeout: 256 seconds) |
2021-11-30 17:44:34 +0100 | dtman34_ | (~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 +0100 | x88x88x | (~cheeg@gateway/vpn/pia/x88x88x) (Ping timeout: 256 seconds) |
2021-11-30 17:45:04 +0100 | piele | (~piele@tbonesteak.creativeserver.net) (Ping timeout: 256 seconds) |
2021-11-30 17:45:04 +0100 | ncopa | (~ncopa@gbr2-dev1.alpinelinux.org) (Ping timeout: 256 seconds) |
2021-11-30 17:45:05 +0100 | anderson | (~ande@user/anderson) (Ping timeout: 256 seconds) |
2021-11-30 17:45:05 +0100 | dminuoso | (~dminuoso@user/dminuoso) (Ping timeout: 256 seconds) |
2021-11-30 17:45:05 +0100 | aforemny | (~aforemny@static.248.158.34.188.clients.your-server.de) (Ping timeout: 256 seconds) |
2021-11-30 17:45:05 +0100 | madnight_ | (~madnight@static.59.103.201.195.clients.your-server.de) (Ping timeout: 256 seconds) |
2021-11-30 17:45:05 +0100 | Teacup | (~teacup@user/teacup) (Ping timeout: 256 seconds) |
2021-11-30 17:45:05 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 256 seconds) |
2021-11-30 17:45:05 +0100 | nisstyre | (~wes@user/nisstyre) (Ping timeout: 256 seconds) |
2021-11-30 17:45:05 +0100 | cods | (~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 256 seconds) |
2021-11-30 17:45:05 +0100 | bgamari | (~bgamari@64.223.235.131) (Ping timeout: 256 seconds) |
2021-11-30 17:45:05 +0100 | oats | (~thomas@user/oats) (Ping timeout: 256 seconds) |
2021-11-30 17:45:05 +0100 | caubert | (~caubert@136.244.111.235) (Ping timeout: 256 seconds) |
2021-11-30 17:45:05 +0100 | spoofer | (~spoofer@64.185.111.205) (Ping timeout: 256 seconds) |
2021-11-30 17:45:05 +0100 | mmaruseacph2 | (~mihai@198.199.100.72) (Ping timeout: 256 seconds) |
2021-11-30 17:45:08 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.3) |
2021-11-30 17:45:13 +0100 | Teacup_ | (~teacup@user/teacup) |
2021-11-30 17:45:17 +0100 | abhixec | (~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 +0100 | dminuoso | (~dminuoso@user/dminuoso) |
2021-11-30 17:45:24 +0100 | <Franciman> | lol |
2021-11-30 17:45:24 +0100 | piele | (~piele@tbonesteak.creativeserver.net) |
2021-11-30 17:45:36 +0100 | oats_ | oats |
2021-11-30 17:46:08 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2021-11-30 17:46:11 +0100 | bcoppens | (~bartcopp@vpn2.bartcoppens.be) |
2021-11-30 17:46:12 +0100 | jackhill | (~jackhill@kalessin.dragonsnail.net) |
2021-11-30 17:46:13 +0100 | hiredman | (~hiredman@frontier1.downey.family) |
2021-11-30 17:46:20 +0100 | Patternmaster | (~georg@li1192-118.members.linode.com) |
2021-11-30 17:46:22 +0100 | heath | (~heath@user/heath) |
2021-11-30 17:46:35 +0100 | spoofer | (~spoofer@64.185.111.205) |
2021-11-30 17:46:37 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-11-30 17:46:39 +0100 | cods | (~fred@82-65-232-44.subs.proxad.net) |
2021-11-30 17:46:50 +0100 | mmaruseacph2 | (~mihai@198.199.100.72) |
2021-11-30 17:46:55 +0100 | caubert | (~caubert@136.244.111.235) |
2021-11-30 17:47:05 +0100 | anderson | (~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 +0100 | madnight_ | (~madnight@static.59.103.201.195.clients.your-server.de) |
2021-11-30 17:47:47 +0100 | bgamari | (~bgamari@2001:470:e438::1) |
2021-11-30 17:47:49 +0100 | dwt_ | (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) |
2021-11-30 17:48:12 +0100 | madnight | (~madnight@static.59.103.201.195.clients.your-server.de) (Read error: Connection reset by peer) |
2021-11-30 17:48:25 +0100 | dwt__ | (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 256 seconds) |
2021-11-30 17:48:25 +0100 | dtman34 | (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) |
2021-11-30 17:48:59 +0100 | dtman34_ | (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
2021-11-30 17:48:59 +0100 | bgamari_ | (~bgamari@64.223.235.131) (Ping timeout: 256 seconds) |
2021-11-30 17:50:44 +0100 | niko | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 17:53:33 +0100 | codolio | dolio |
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 +0100 | jonatanb | (~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 +0100 | mikoto-chan | (~mikoto-ch@esm-84-240-99-143.netplaza.fi) |
2021-11-30 17:58:18 +0100 | nisstyre | (~wes@user/nisstyre) |
2021-11-30 17:58:21 +0100 | niko | (~niko@libera/staff/niko) |
2021-11-30 17:58:44 +0100 | perrierjouet | (~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 +0100 | fef | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 18:03:54 +0100 | hskpractice | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
2021-11-30 18:08:22 +0100 | dawdler | (~dawdler@user/dawdler) (Remote host closed the connection) |
2021-11-30 18:08:30 +0100 | lbseale_ | (~ep1ctetus@user/ep1ctetus) |
2021-11-30 18:09:22 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) |
2021-11-30 18:09:26 +0100 | jakalx | (~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 +0100 | lbseale | (~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 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2021-11-30 18:15:56 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2021-11-30 18:16:47 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 252 seconds) |
2021-11-30 18:17:06 +0100 | jonatanb | (~accio@31-178-144-108.dynamic.chello.pl) |
2021-11-30 18:18:13 +0100 | jeetelongname | (~jeet@eduroam-public-46.nat.port.ac.uk) (Remote host closed the connection) |
2021-11-30 18:18:16 +0100 | Lycurgus | (~juan@98.4.112.204) (Ping timeout: 264 seconds) |
2021-11-30 18:18:53 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2021-11-30 18:23:32 +0100 | xff0x | (~xff0x@2001:1a81:52c5:f300:6673:fb4d:a3aa:9d2) (Remote host closed the connection) |
2021-11-30 18:24:03 +0100 | xff0x | (~xff0x@2001:1a81:52c5:f300:8200:618:b8e3:ab90) |
2021-11-30 18:24:23 +0100 | jonatanb | (~accio@31-178-144-108.dynamic.chello.pl) (Remote host closed the connection) |
2021-11-30 18:24:58 +0100 | jonatanb | (~accio@31-178-144-108.dynamic.chello.pl) |
2021-11-30 18:25:16 +0100 | jonatanb | (~accio@31-178-144-108.dynamic.chello.pl) (Remote host closed the connection) |
2021-11-30 18:25:25 +0100 | jonatanb | (~accio@31-178-144-108.dynamic.chello.pl) |
2021-11-30 18:27:26 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-30 18:31:58 +0100 | cv | (~cv@202.164.130.248) |
2021-11-30 18:32:14 +0100 | cv | almight |
2021-11-30 18:32:40 +0100 | concrete-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 +0100 | concrete-houses | (~g@209.6.150.53) |
2021-11-30 18:34:37 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 18:35:37 +0100 | Erutuon | (~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 +0100 | pfurla | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 18:45:21 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 18:45:45 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2021-11-30 18:47:02 +0100 | fr33domlover | (~fr33@2.53.150.205) (Ping timeout: 252 seconds) |
2021-11-30 18:51:17 +0100 | hskpractice | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 18:52:05 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-11-30 18:53:07 +0100 | jeetelongname | (~jeet@148.197.248.46) |
2021-11-30 18:55:15 +0100 | hskpractice | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 18:55:40 +0100 | jeetelongname | (~jeet@148.197.248.46) (Client Quit) |
2021-11-30 18:57:20 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 18:57:37 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 18:57:50 +0100 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in) |
2021-11-30 18:58:22 +0100 | jeetelongname | (~jeet@148.197.248.46) |
2021-11-30 18:59:22 +0100 | johnw | (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) |
2021-11-30 18:59:52 +0100 | jeetelongname | (~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 +0100 | merijn | (~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 +0100 | jeetelongname | (~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 +0100 | jakalx | (~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 +0100 | raehik | (~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 +0100 | almight | (~cv@202.164.130.248) (Quit: Client closed) |
2021-11-30 19:08:11 +0100 | raehik | (~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 +0100 | nschoe | (~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 +0100 | pfurla | (~pfurla@201.17.118.230) |
2021-11-30 19:09:21 +0100 | kadir | (~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 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2021-11-30 19:11:54 +0100 | LukeHoersten | (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-11-30 19:13:38 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 19:13:55 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 19:15:05 +0100 | LukeHoersten | (~LukeHoers@user/lukehoersten) |
2021-11-30 19:18:31 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
2021-11-30 19:18:37 +0100 | mbuf | (~Shakthi@122.174.165.234) (Quit: Leaving) |
2021-11-30 19:19:48 +0100 | LukeHoersten | (~LukeHoers@user/lukehoersten) (Client Quit) |
2021-11-30 19:21:36 +0100 | LukeHoersten | (~LukeHoers@user/lukehoersten) |
2021-11-30 19:26:43 +0100 | jonatanb | (~accio@31-178-144-108.dynamic.chello.pl) (Quit: Leaving...) |
2021-11-30 19:27:38 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) (Remote host closed the connection) |
2021-11-30 19:29:04 +0100 | neurocyte0132889 | (~neurocyte@user/neurocyte) (Ping timeout: 264 seconds) |
2021-11-30 19:29:56 +0100 | yauhsien | (~yauhsien@61-231-58-114.dynamic-ip.hinet.net) |
2021-11-30 19:34:26 +0100 | yauhsien | (~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2021-11-30 19:34:28 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 264 seconds) |
2021-11-30 19:40:23 +0100 | rkrishnan | (~user@122.171.76.46) (Ping timeout: 252 seconds) |
2021-11-30 19:41:33 +0100 | ub | (~Thunderbi@p200300ecdf0ba2aaa54fdd1e9768c0b5.dip0.t-ipconnect.de) (Quit: ub) |
2021-11-30 19:41:56 +0100 | ub | (~Thunderbi@p200300ecdf0ba2aaa54fdd1e9768c0b5.dip0.t-ipconnect.de) |
2021-11-30 19:42:02 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds) |
2021-11-30 19:44:05 +0100 | waleee | (~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 +0100 | zebrag | (~chris@user/zebrag) |
2021-11-30 19:44:45 +0100 | hskpractice | (~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 +0100 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-11-30 19:47:52 +0100 | raehik | (~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 +0100 | zebrag | (~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 +0100 | zebrag | (~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 +0100 | pragma- | 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 +0100 | eggplantade | (~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 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2021-11-30 20:02:04 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2021-11-30 20:02:04 +0100 | finn_elija | FinnElija |
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 +0100 | max22- | (~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 +0100 | LukeHoersten | (~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 +0100 | kennyd | (~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 +0100 | hololeap_ | 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 +0100 | eggplantade | (~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 +0100 | dhouthoo | (~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 +0100 | pfurla | (~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 +0100 | MoC | (~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 +0100 | viluon | (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 +0100 | deadmarshal | (~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 +0100 | max22- | (~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 +0100 | raehik | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 20:43:13 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 20:44:35 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) |
2021-11-30 20:48:27 +0100 | waleee | (~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 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-11-30 20:50:25 +0100 | waleee | (~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 +0100 | hololeap | (~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 +0100 | trcc | (~trcc@2-104-60-169-cable.dk.customer.tdc.net) |
2021-11-30 20:56:39 +0100 | hskpractice | (~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 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) (Remote host closed the connection) |
2021-11-30 20:56:56 +0100 | hskpractice | (~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 +0100 | cheater | (~Username@user/cheater) |
2021-11-30 20:57:19 +0100 | zincy_ | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-30 20:59:22 +0100 | trcc | (~trcc@2-104-60-169-cable.dk.customer.tdc.net) (Client Quit) |
2021-11-30 21:01:08 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 21:02:53 +0100 | econo | (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 +0100 | eggplantade | (~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 +0100 | juhp | (~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 +0100 | juhp | (~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 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-11-30 21:13:25 +0100 | kuribas | (~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 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-30 21:15:56 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 21:16:03 +0100 | pfurla | (~pfurla@2804:14d:5c81:4104:f9a9:132:7129:df1c) |
2021-11-30 21:16:10 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-11-30 21:16:45 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-30 21:19:45 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 21:20:04 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 21:21:02 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2021-11-30 21:23:43 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 21:24:02 +0100 | hskpractice | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 21:28:00 +0100 | hskpractice | (~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 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2021-11-30 21:30:33 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2021-11-30 21:31:34 +0100 | yauhsien | (~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 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) (Remote host closed the connection) |
2021-11-30 21:32:53 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-11-30 21:34:10 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2021-11-30 21:35:53 +0100 | yauhsien | (~yauhsien@61-231-58-114.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
2021-11-30 21:37:11 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-11-30 21:38:52 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 21:39:10 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 21:40:24 +0100 | curiousgay | (~curiousga@77-120-141-90.kha.volia.net) (Remote host closed the connection) |
2021-11-30 21:40:51 +0100 | kmein | (~weechat@user/kmein) (Quit: ciao kakao) |
2021-11-30 21:41:11 +0100 | kmein | (~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 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) (Remote host closed the connection) |
2021-11-30 21:49:21 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) |
2021-11-30 21:49:28 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Read error: Connection reset by peer) |
2021-11-30 21:50:13 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
2021-11-30 21:51:17 +0100 | MoC | (~moc@user/moc) (Quit: Konversation terminated!) |
2021-11-30 21:56:35 +0100 | hskpractice | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 21:58:34 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 21:58:53 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 22:02:07 +0100 | LukeHoersten | (~LukeHoers@user/lukehoersten) |
2021-11-30 22:03:41 +0100 | curiousgay | (~curiousga@77-120-141-90.kha.volia.net) |
2021-11-30 22:03:56 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) (Remote host closed the connection) |
2021-11-30 22:05:10 +0100 | zincy_ | (~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 +0100 | maroloccio | (~marolocci@151.53.155.184) |
2021-11-30 22:07:24 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) (Remote host closed the connection) |
2021-11-30 22:08:15 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) |
2021-11-30 22:10:32 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 252 seconds) |
2021-11-30 22:12:12 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 22:12:16 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-11-30 22:12:29 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) |
2021-11-30 22:13:37 +0100 | deadmarshal | (~deadmarsh@95.38.229.118) (Ping timeout: 256 seconds) |
2021-11-30 22:13:37 +0100 | alx741 | (~alx741@181.196.69.176) (Ping timeout: 256 seconds) |
2021-11-30 22:14:16 +0100 | acidjnk_new | (~acidjnk@p200300d0c7271e72351a12a888efd4cb.dip0.t-ipconnect.de) |
2021-11-30 22:14:18 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-11-30 22:16:02 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) |
2021-11-30 22:17:24 +0100 | lavaman | (~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 +0100 | zincy_ | (~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 +0100 | Guest17 | (~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 +0100 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-11-30 22:24:22 +0100 | sshine_ | sshine |
2021-11-30 22:24:30 +0100 | MaybeJustJames | (~jacol@2001:981:4ea3:1:a8b4:6ac6:c93b:9bcf) (Remote host closed the connection) |
2021-11-30 22:26:25 +0100 | michalz | (~michalz@185.246.204.62) (Remote host closed the connection) |
2021-11-30 22:26:30 +0100 | alx741 | (~alx741@186.178.109.129) |
2021-11-30 22:28:07 +0100 | pavonia | (~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 +0100 | LukeHoersten | (~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 +0100 | reumeth | (~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 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:4cc1:c671:40b5:6186) |
2021-11-30 22:33:06 +0100 | jgeerds | (~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 +0100 | jeetelongname | (~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 +0100 | alx741 | (~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 +0100 | Guest17 | (~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 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Ping timeout: 252 seconds) |
2021-11-30 22:48:04 +0100 | pfurla | (~pfurla@2804:14d:5c81:4104:f9a9:132:7129:df1c) (Quit: Textual IRC Client: www.textualapp.com) |
2021-11-30 22:49:29 +0100 | pfurla | (~pfurla@2804:14d:5c81:4104:b590:8966:cd38:8f41) |
2021-11-30 22:50:11 +0100 | alx741 | (~alx741@181.196.69.153) |
2021-11-30 22:51:59 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-11-30 22:53:51 +0100 | tzh | (~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 +0100 | a6a45081-2b83 | (~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507) |
2021-11-30 22:57:08 +0100 | vysn | (~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 +0100 | lavaman | (~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 +0100 | burnsidesLlama | (~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 +0100 | chomwitt | (~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 +0100 | sprout | (~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 +0100 | a6a45081-2b83 | (~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507) (Remote host closed the connection) |
2021-11-30 23:03:43 +0100 | deadmarshal | (~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 +0100 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
2021-11-30 23:04:47 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2021-11-30 23:05:15 +0100 | sprout_ | (~quassel@2a02:a467:ccd6:1:4de4:2055:b8c4:f1e) (Ping timeout: 264 seconds) |
2021-11-30 23:06:18 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:41f2:b4d5:142e:946f) (Remote host closed the connection) |
2021-11-30 23:06:35 +0100 | burnsidesLlama | (~burnsides@dhcp168-019.wadham.ox.ac.uk) |
2021-11-30 23:08:07 +0100 | ub | (~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 +0100 | AlexNoo | (~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 +0100 | albet70 | (~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 +0100 | slack1256 | (~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 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2021-11-30 23:19:24 +0100 | deadmarshal | (~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 +0100 | raehik | (~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 +0100 | mestre | (~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 +0100 | albet70 | (~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 +0100 | hskpractice | (~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 +0100 | hskpractice | (~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 +0100 | lavaman | (~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 +0100 | slack1256 | (~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 +0100 | merijn | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-30 23:33:07 +0100 | yauhsien | (~yauhsien@61-231-58-114.dynamic-ip.hinet.net) |
2021-11-30 23:33:12 +0100 | hskpractice | (~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 +0100 | yauhsien | (~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 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2021-11-30 23:50:38 +0100 | sproso | (~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 +0100 | eggplantade | (~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 +0100 | zincy_ | (~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 +0100 | hskpractice | (~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |