2022-11-28 00:00:43 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-28 00:02:13 +0100 | sus | (~zeromomen@user/zeromomentum) |
2022-11-28 00:05:50 +0100 | hgolden | (~hgolden@cpe-172-251-233-141.socal.res.rr.com) |
2022-11-28 00:10:05 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
2022-11-28 00:11:03 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-11-28 00:13:45 +0100 | Guest30 | (~Guest30@59-102-33-166.tpgi.com.au) |
2022-11-28 00:13:54 +0100 | <Guest30> | Hi |
2022-11-28 00:14:38 +0100 | <Guest30> | I am getting the following error Variable not in scope: (+) :: Int -> Int -> Int |
2022-11-28 00:14:38 +0100 | <Guest30> | | |
2022-11-28 00:14:39 +0100 | <Guest30> | 29 | sum a b = a + b |
2022-11-28 00:14:39 +0100 | <Guest30> | | ^ |
2022-11-28 00:14:40 +0100 | <Guest30> | Failed, no modules loaded. |
2022-11-28 00:14:49 +0100 | <Guest30> | Any ideas? |
2022-11-28 00:15:08 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-11-28 00:15:13 +0100 | <Hecate> | did you somehow prevent the Prelude from being imported? |
2022-11-28 00:15:14 +0100 | <Guest30> | Source code is sum :: Int -> Int -> Int |
2022-11-28 00:15:15 +0100 | <Guest30> | sum a b = a + b |
2022-11-28 00:15:30 +0100 | <Hecate> | can you try with "import Prelude" at the top of your file after the module name? |
2022-11-28 00:15:31 +0100 | <Guest30> | Do I have to import Prelude |
2022-11-28 00:15:34 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-11-28 00:15:37 +0100 | <Hecate> | no you shouldn't have to do it |
2022-11-28 00:15:48 +0100 | <c_wraith> | funny things can happen if your project has a module named Prelude in it |
2022-11-28 00:15:55 +0100 | <Hecate> | aye |
2022-11-28 00:15:58 +0100 | <Hecate> | that too |
2022-11-28 00:16:02 +0100 | <c_wraith> | alternatively you might have a line like "import Prelude ()" |
2022-11-28 00:16:25 +0100 | <c_wraith> | As yet another alternative.. If you're using the GHC api, it doesn't import Prelude by default |
2022-11-28 00:17:00 +0100 | <Guest30> | Awsome |
2022-11-28 00:17:05 +0100 | <Guest30> | what is Prelude? |
2022-11-28 00:17:16 +0100 | <c_wraith> | It's just a module that is imported by default |
2022-11-28 00:17:20 +0100 | <monochrom> | Preloaded library stuff. |
2022-11-28 00:17:30 +0100 | <Guest30> | It didn't get imported by Default |
2022-11-28 00:17:41 +0100 | <Guest30> | I had to put it in the import Definition |
2022-11-28 00:17:59 +0100 | <c_wraith> | it gets imported by default unless you're using the GHC api (or things that wrap it, like hint) |
2022-11-28 00:18:07 +0100 | <monochrom> | Is this "Definition" something your prof dictates and restricts you to? |
2022-11-28 00:18:09 +0100 | <Guest30> | I am in Ghci |
2022-11-28 00:18:23 +0100 | <Guest30> | Loading a file using :h |
2022-11-28 00:18:31 +0100 | <Guest30> | :l |
2022-11-28 00:18:34 +0100 | <Guest30> | I mean |
2022-11-28 00:18:38 +0100 | <c_wraith> | do you have a .ghci file that includes something like -XNoImplicitPrelude ? |
2022-11-28 00:18:39 +0100 | <Guest30> | Loading a file |
2022-11-28 00:18:45 +0100 | <monochrom> | Frankly and bluntly if I can't reproduce it I can't diagnose it. And I refuse to play guessing games like other people love it. |
2022-11-28 00:18:53 +0100 | <Guest30> | {-# LANGUAGE NoImplicitPrelude #-} |
2022-11-28 00:18:56 +0100 | <Guest30> | THat would do it |
2022-11-28 00:19:39 +0100 | <c_wraith> | monochrom: yes, often problems have a small enough causal space that you can enumerate it |
2022-11-28 00:20:32 +0100 | <c_wraith> | Guest30: I'd get rid of that language pragma. If you don't know why you need it, you don't need it. |
2022-11-28 00:20:51 +0100 | <Guest30> | I just copied the code from somewhere |
2022-11-28 00:21:04 +0100 | <Guest30> | Wasn't sure what it idid |
2022-11-28 00:21:09 +0100 | <Guest30> | Now I do |
2022-11-28 00:21:14 +0100 | <monochrom> | No, we need to train querents to stop expecting miraculous gurus and telepathy --- anti-theses to STEM. |
2022-11-28 00:21:59 +0100 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) |
2022-11-28 00:22:17 +0100 | <monochrom> | BTW that's why there is a great monad tutorial that I decided not to recommend, because it also does NoImplicitPrelude. |
2022-11-28 00:22:28 +0100 | <monochrom> | (and other factors) |
2022-11-28 00:22:48 +0100 | <c_wraith> | I'd never recommend anything with NoImplicitPrelude to a beginner. It's a pretty advanced feature. |
2022-11-28 00:23:06 +0100 | <Guest30> | Ok |
2022-11-28 00:24:13 +0100 | <c_wraith> | It does so much more subtle stuff than merely not importing Prelude by default. In rare occasions, that might be what you want, but the value is in very narrow cases of advanced DSL use. |
2022-11-28 00:24:52 +0100 | <monochrom> | It's for very specialized library internals, yeah. |
2022-11-28 00:25:47 +0100 | <monochrom> | Anything you show to a beginner you need to ask yourself "is this idiomatic code?" because beginners just assumes it. |
2022-11-28 00:25:49 +0100 | <Guest30> | Thanks for the help. |
2022-11-28 00:25:50 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-28 00:26:22 +0100 | <monochrom> | or rather, beginners actually learn from everything you show. |
2022-11-28 00:26:36 +0100 | <monochrom> | Bloggers do not take that responsibility seriously. |
2022-11-28 00:26:43 +0100 | <c_wraith> | that's a good way to state it |
2022-11-28 00:27:04 +0100 | kraftwerk28 | (~kraftwerk@178.62.210.83) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-11-28 00:28:42 +0100 | kraftwerk28 | (~kraftwerk@178.62.210.83) |
2022-11-28 00:42:23 +0100 | <Guest30> | Given my implementation below -- 3. Find the K'th element of a list. The first element in the list is number 1. |
2022-11-28 00:42:23 +0100 | <Guest30> | tryGetElementAt :: [a] -> Int -> Maybe a |
2022-11-28 00:42:24 +0100 | <Guest30> | tryGetElementAt (x:_) 1 = Just x |
2022-11-28 00:42:24 +0100 | <Guest30> | tryGetElementAt [] _ = Nothing |
2022-11-28 00:42:25 +0100 | <Guest30> | tryGetElementAt (_:xs) k |
2022-11-28 00:42:25 +0100 | <Guest30> | | k < 1 = Nothing |
2022-11-28 00:42:26 +0100 | <Guest30> | | otherwise = tryGetElementAt xs (k - 1) |
2022-11-28 00:46:34 +0100 | <Guest30> | Why do I get these warning messages |
2022-11-28 00:46:36 +0100 | <Guest30> | Defined but not used: `tryGetElementAt' |
2022-11-28 00:46:37 +0100 | <Guest30> | | |
2022-11-28 00:46:37 +0100 | <Guest30> | 22 | tryGetElementAt (x:_) 1 = Just x |
2022-11-28 00:46:38 +0100 | <Guest30> | | ^^^^^^^^^^^^^^^ |
2022-11-28 00:47:28 +0100 | <jackdk> | Can you put your entire file into a pastebin? I suspect the module header is the culprit. @where paste |
2022-11-28 00:47:29 +0100 | bobbingbob | (~bobbingbo@S010610561191f5d6.lb.shawcable.net) |
2022-11-28 00:47:32 +0100 | <Guest30> | It clearly gets used becase if if it didn't it would be fail |
2022-11-28 00:47:37 +0100 | <jackdk> | @where paste |
2022-11-28 00:47:37 +0100 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
2022-11-28 00:48:41 +0100 | <Guest30> | Done |
2022-11-28 00:48:54 +0100 | <jackdk> | Link? |
2022-11-28 00:49:31 +0100 | <Axman6> | ... |
2022-11-28 00:49:45 +0100 | <Axman6> | Guest30: uoi have to give us the link |
2022-11-28 00:49:48 +0100 | <Axman6> | you* |
2022-11-28 00:49:52 +0100 | <Guest30> | I think it works now |
2022-11-28 00:50:02 +0100 | <Guest30> | The error message is missleading |
2022-11-28 00:50:19 +0100 | <Guest30> | The error was that I didn't include tryGetElementAt |
2022-11-28 00:50:26 +0100 | <Guest30> | And also I had to remove the imports |
2022-11-28 00:50:46 +0100 | chomwitt | (~chomwitt@ppp-94-67-236-76.home.otenet.gr) (Ping timeout: 268 seconds) |
2022-11-28 00:51:08 +0100 | <jackdk> | GHC will consider a definition "used" only if it is exported by the module, or used by a function exported from the module. |
2022-11-28 00:51:23 +0100 | <Axman6> | Guest30: You know how when you go to the mechanic, you just say "My car is broken, can you fix it?" And the mechanic magically knows you need a net alternator and timing belt? |
2022-11-28 00:51:27 +0100 | <Axman6> | No? |
2022-11-28 00:52:18 +0100 | <Axman6> | Because that never happens, if you need help, you need to explain what is going on - we're happy to help you but we need to see a) _all_ the code and b) the actual error |
2022-11-28 00:52:25 +0100 | Kaiepi | (~Kaiepi@108.175.84.104) (Ping timeout: 265 seconds) |
2022-11-28 00:53:54 +0100 | mmhat | (~mmh@p200300f1c72545bdee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7.1) |
2022-11-28 00:54:06 +0100 | <Guest30> | Thanks, I will try to debug it more next time. Also if I have isse I will put the source code and warning message |
2022-11-28 00:54:08 +0100 | <monochrom> | I bought a headphone. I was unlucky, got a defective unit. I went back to the store but I didn't just say "no workie". |
2022-11-28 00:54:40 +0100 | <monochrom> | I specifically said "left side is dead", and most importantly, I brought the headphone and let the staff test it for themselves. |
2022-11-28 00:55:02 +0100 | <monochrom> | If they can't reproduce it, it didn't happen. Simple as that. |
2022-11-28 00:55:15 +0100 | <monochrom> | Or at least, if I can't reproduce it. |
2022-11-28 00:56:31 +0100 | <Axman6> | learning how to ask for help is a skill of its own, and worth learning. "X is broken, how do I fix it" is impossible to answer, "I'm trying to do Y, and I have this code https://... I'm getting the error in the comment in that paste, I've tried Z Q and W and I can't get it to work" will help us narrow down the issue, and not make everyone think you're asking us to do your work for you, particularly since this is clearly homework/coursework |
2022-11-28 00:56:31 +0100 | <monochrom> | Programmers, of all people, are supposed to know this the hard way. |
2022-11-28 00:57:03 +0100 | <monochrom> | A non-programmer can legit find it counterintuitive. I don't blame them. |
2022-11-28 00:57:05 +0100 | jespada | (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) |
2022-11-28 00:57:26 +0100 | <jackdk> | Few words fill me with more dead than "intermittent fault", except perhaps "important update to your $FOO account" |
2022-11-28 00:57:33 +0100 | <monochrom> | Programmers? They are the receiving end of that. They have already had clients saying unspecific vague things. |
2022-11-28 00:57:47 +0100 | <monochrom> | They already know it doesn't work that way. |
2022-11-28 00:58:34 +0100 | <monochrom> | Oh uh "important update to your $FOO account" in emails implies phishing, that's easy, "junk" button. :) |
2022-11-28 00:59:08 +0100 | <EvanR> | it's not working sometimes, no other information, and it's currently working = problem doesn't exist in some sense xD |
2022-11-28 00:59:10 +0100 | <Axman6> | "We take the security of our customer's data very seriously" |
2022-11-28 00:59:34 +0100 | <EvanR> | in the same realm as, this is totally broken but if you know no user ever triggers the error, it's not broken |
2022-11-28 00:59:45 +0100 | <jackdk> | good one Axman6 - that almost always heralds disaster |
2022-11-28 01:00:06 +0100 | <EvanR> | "no one knows security better than microsoft" -- ballmer |
2022-11-28 01:00:09 +0100 | <Axman6> | well, there's always a silent "... now, because we fucken didn't before today lol" |
2022-11-28 01:01:22 +0100 | P1RATEZ | (piratez@user/p1ratez) (Remote host closed the connection) |
2022-11-28 01:03:46 +0100 | <Guest60> | Is it possible to express this case expression as pattern matching and/or with reduction? |
2022-11-28 01:03:47 +0100 | <Guest60> | case optCommand opts of |
2022-11-28 01:03:47 +0100 | <Guest60> | CommandA o -> runA o |
2022-11-28 01:03:48 +0100 | <Guest60> | CommandB o -> runB o |
2022-11-28 01:04:52 +0100 | <Guest60> | data Command |
2022-11-28 01:04:52 +0100 | <Guest60> | = CommandA OptionsA |
2022-11-28 01:04:53 +0100 | <Guest60> | | CommandB OptionsB |
2022-11-28 01:05:32 +0100 | <geekosaur> | that is pattern matching already. what do you really mean? |
2022-11-28 01:05:34 +0100 | ozkutuk5 | (~ozkutuk@176.240.173.153) (Ping timeout: 268 seconds) |
2022-11-28 01:05:52 +0100 | <Axman6> | you can make a catamorphism for Command to make that simpler if it's something you do often: command :: (OptionaA -> r) -> (OptionsB -> r) -> Command -> r; command ca cb = \case CommandA o -> ca; CommandB o -> cb o |
2022-11-28 01:06:03 +0100 | <jackdk> | geekosaur: I think "can I define this function using multiple equations, like `map _ [] = []; map f (x:xs) = f x : map f xs"? |
2022-11-28 01:06:11 +0100 | <Axman6> | then you can write command runA runB |
2022-11-28 01:06:35 +0100 | jmorris | (uid537181@id-537181.uxbridge.irccloud.com) |
2022-11-28 01:06:39 +0100 | <jackdk> | Also, please please use a pastebin if you want to send half a dozen related lines of code to the channel. It keeps it coherently indented and add syntax highlighting. |
2022-11-28 01:06:47 +0100 | Xeroine | (~Xeroine@user/xeroine) (Ping timeout: 264 seconds) |
2022-11-28 01:06:51 +0100 | <Axman6> | geekosaur: your question is fairly confusing though, can you explain what you're trying to do? |
2022-11-28 01:06:57 +0100 | <Axman6> | uh, Guest60 |
2022-11-28 01:07:06 +0100 | <Axman6> | geekosaur's questions are never confusing |
2022-11-28 01:07:19 +0100 | <geekosaur> | if you're trying to combine the cases, ask yourself what the type of `o` would be |
2022-11-28 01:07:50 +0100 | Xeroine | (~Xeroine@user/xeroine) |
2022-11-28 01:07:56 +0100 | <EvanR> | you can't eta reduce that case because it's not a lambda |
2022-11-28 01:08:28 +0100 | <Axman6> | Guest60: As you can see from all these very different answers, we're all confused what your question is |
2022-11-28 01:09:22 +0100 | acidjnk_new | (~acidjnk@p200300d6e7137a29d8c876154004b86e.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2022-11-28 01:11:45 +0100 | inversed | (~inversed@bcdcac82.skybroadband.com) |
2022-11-28 01:11:50 +0100 | <EvanR> | if the Options associated with each command are different types, Axman6's "deconstructor" is really the only way |
2022-11-28 01:12:05 +0100 | <EvanR> | other than case analysis |
2022-11-28 01:12:29 +0100 | <Guest60> | I'm sorry. The case expression works but I'm wondering if there's an alternative syntax to the case |
2022-11-28 01:13:19 +0100 | <EvanR> | you could write it in the form of a function if you want |
2022-11-28 01:13:24 +0100 | perrierjouet | (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
2022-11-28 01:13:25 +0100 | <EvanR> | with one equation for each command |
2022-11-28 01:13:32 +0100 | <Guest60> | I thought perhaps pattern matching a function would be an option where I can define `Run :: Command -> IO ()` |
2022-11-28 01:14:09 +0100 | <EvanR> | note you can write it in function form pretty easily within another function, in a where clause |
2022-11-28 01:14:23 +0100 | <EvanR> | myCoolFunction x y z = f command where |
2022-11-28 01:14:31 +0100 | <EvanR> | f (CommandA o) = runA o |
2022-11-28 01:14:36 +0100 | <EvanR> | f (CommandB o) = runB o |
2022-11-28 01:14:54 +0100 | <EvanR> | viola, "alternative syntax" |
2022-11-28 01:15:50 +0100 | <Guest60> | ah I see, I need to do the brackets |
2022-11-28 01:15:58 +0100 | <Guest60> | thank you |
2022-11-28 01:21:37 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 01:23:51 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.) |
2022-11-28 01:26:22 +0100 | zmt00 | (~zmt00@user/zmt00) |
2022-11-28 01:32:49 +0100 | adium | (adium@user/adium) |
2022-11-28 01:36:14 +0100 | money_ | (~money@pool-100-11-18-203.phlapa.fios.verizon.net) |
2022-11-28 01:37:35 +0100 | perrierjouet | (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
2022-11-28 01:46:54 +0100 | pera | (~pera@user/pera) (Quit: leaving) |
2022-11-28 01:48:11 +0100 | shailangsa | (~shailangs@host86-186-177-178.range86-186.btcentralplus.com) (Ping timeout: 264 seconds) |
2022-11-28 01:48:56 +0100 | Topsi | (~Topsi@dyndsl-091-096-150-101.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
2022-11-28 01:56:13 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-28 02:00:11 +0100 | perrierjouet | (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Killed (ozone (No Spam))) |
2022-11-28 02:02:40 +0100 | nate4 | (~nate@98.45.169.16) |
2022-11-28 02:07:59 +0100 | nate4 | (~nate@98.45.169.16) (Ping timeout: 264 seconds) |
2022-11-28 02:15:55 +0100 | bjourne2 | (~bjorn@94.191.152.122) (Read error: Connection reset by peer) |
2022-11-28 02:19:38 +0100 | xff0x | (~xff0x@2405:6580:b080:900:79da:1471:7416:e736) (Ping timeout: 256 seconds) |
2022-11-28 02:20:32 +0100 | Techcable | (~Techcable@user/Techcable) |
2022-11-28 02:35:14 +0100 | Guest60 | (~Guest60@101.98.118.246) (Quit: Client closed) |
2022-11-28 02:47:58 +0100 | Feuermagier_ | (~Feuermagi@2a02:2488:4211:3400:6419:933b:46e0:8942) |
2022-11-28 02:49:23 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds) |
2022-11-28 02:50:28 +0100 | tomokojun | (~tomokojun@97-120-65-27.ptld.qwest.net) |
2022-11-28 02:50:35 +0100 | Feuermagier | (~Feuermagi@user/feuermagier) (Ping timeout: 264 seconds) |
2022-11-28 02:50:44 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-11-28 02:51:48 +0100 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
2022-11-28 02:52:09 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 02:54:28 +0100 | talismanick | (~user@76.133.152.122) |
2022-11-28 03:00:13 +0100 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2022-11-28 03:00:29 +0100 | notzmv | (~zmv@user/notzmv) (Remote host closed the connection) |
2022-11-28 03:01:13 +0100 | perrierjouet | (~perrier-j@185.234.70.63) |
2022-11-28 03:04:45 +0100 | money_ | (~money@pool-100-11-18-203.phlapa.fios.verizon.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-11-28 03:06:26 +0100 | perrierjouet | (~perrier-j@185.234.70.63) (Quit: WeeChat 3.7.1) |
2022-11-28 03:07:27 +0100 | perrierjouet | (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
2022-11-28 03:07:40 +0100 | notzmv | (~zmv@user/notzmv) |
2022-11-28 03:11:12 +0100 | causal | (~user@50.35.83.177) |
2022-11-28 03:19:05 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
2022-11-28 03:23:13 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-11-28 03:26:47 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
2022-11-28 03:28:04 +0100 | sammelweis_ | (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Ping timeout: 260 seconds) |
2022-11-28 03:28:07 +0100 | sammelweis | (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Read error: Connection reset by peer) |
2022-11-28 03:28:36 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 03:36:05 +0100 | perrierjouet | (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
2022-11-28 03:38:03 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2022-11-28 03:38:03 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2022-11-28 03:38:03 +0100 | finn_elija | FinnElija |
2022-11-28 03:47:11 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-28 03:48:18 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 03:50:35 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-11-28 03:59:51 +0100 | jero98772 | (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection) |
2022-11-28 04:04:13 +0100 | Kaiepi | (~Kaiepi@108.175.84.104) |
2022-11-28 04:04:16 +0100 | perrierjouet | (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
2022-11-28 04:05:38 +0100 | bobbingbob | (~bobbingbo@S010610561191f5d6.lb.shawcable.net) (Ping timeout: 268 seconds) |
2022-11-28 04:05:52 +0100 | <Inst_> | wait, why is Aeson alphabetizing the entries in my JSON objects? |
2022-11-28 04:06:19 +0100 | <Axman6> | the order in json objects is arbitrary and should never be relied on |
2022-11-28 04:06:43 +0100 | <Axman6> | (and duplicate fields are valid according to the spec, IIRC) |
2022-11-28 04:07:32 +0100 | <Inst_> | first, the freaking thing eats my non-nullary data constructors |
2022-11-28 04:07:34 +0100 | zmt00 | (~zmt00@user/zmt00) (Read error: Connection reset by peer) |
2022-11-28 04:07:40 +0100 | <Inst_> | then it scrambles my field order |
2022-11-28 04:08:03 +0100 | <Axman6> | that first one sounds very unlikely |
2022-11-28 04:08:03 +0100 | <EvanR> | when you turn json into a Value objects become HashMaps which don't have any obvious order |
2022-11-28 04:08:22 +0100 | <Axman6> | is that still true for recent aeson? |
2022-11-28 04:08:24 +0100 | <EvanR> | so if you render a Value as json who knows what happens |
2022-11-28 04:08:40 +0100 | <EvanR> | no idea my knowledge of aeson is probably ancient |
2022-11-28 04:08:41 +0100 | gentauro | (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
2022-11-28 04:09:09 +0100 | zmt00 | (~zmt00@user/zmt00) |
2022-11-28 04:09:21 +0100 | <Inst_> | i mean i've always wanted untyped aeson |
2022-11-28 04:09:22 +0100 | <Inst_> | ugh |
2022-11-28 04:09:24 +0100 | <Inst_> | i just lost a convert |
2022-11-28 04:09:34 +0100 | <Inst_> | guy wants to use Python fastAPI instead of servant |
2022-11-28 04:09:46 +0100 | <EvanR> | by untyped do you mean like, operating on the underlying ByteString data |
2022-11-28 04:09:55 +0100 | <Inst_> | yeah |
2022-11-28 04:09:58 +0100 | Inst_ | Inst |
2022-11-28 04:10:16 +0100 | <Axman6> | lens-aeson does fun stuff with json encoded bytestrings |
2022-11-28 04:10:16 +0100 | <Inst> | without going through the class stuff, to make it more competitive with Python's JSON handlers |
2022-11-28 04:10:46 +0100 | <Axman6> | Something is pretty wrong if your json stuff isn't faster than python IMO |
2022-11-28 04:14:29 +0100 | gentauro | (~gentauro@user/gentauro) |
2022-11-28 04:22:51 +0100 | merijn | (~merijn@86.86.29.250) |
2022-11-28 04:22:54 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
2022-11-28 04:26:08 +0100 | <Inst> | he's a pythonista, non-professional programmer |
2022-11-28 04:26:24 +0100 | <Inst> | and it'll probably end up having to be python in the end anyways, because i'm building software as a gift to him and his friends |
2022-11-28 04:26:29 +0100 | <Inst> | he can't maintain the haskell servant version |
2022-11-28 04:27:48 +0100 | merijn | (~merijn@86.86.29.250) (Ping timeout: 260 seconds) |
2022-11-28 04:28:14 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-11-28 04:31:19 +0100 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-11-28 04:33:59 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-11-28 04:34:18 +0100 | <jackdk> | Axman6: no, it uses Data.Map internally, there's a flag in the cabal file |
2022-11-28 04:34:49 +0100 | <Axman6> | thought so, which would explain the ordered object keys |
2022-11-28 04:37:20 +0100 | zant | (~zant@62.214.20.26) (Ping timeout: 256 seconds) |
2022-11-28 04:38:21 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-28 04:39:59 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 04:43:11 +0100 | zant | (~zant@62.214.20.26) |
2022-11-28 04:43:58 +0100 | <c_wraith> | That was their solution to hash flooding against unordered-containers |
2022-11-28 04:45:25 +0100 | money | Guest625 |
2022-11-28 04:45:25 +0100 | Guest625 | (Guest3481@user/polo) (Killed (cadmium.libera.chat (Nickname regained by services))) |
2022-11-28 04:45:41 +0100 | shapr | (~user@68.54.166.125) (Remote host closed the connection) |
2022-11-28 04:46:31 +0100 | <c_wraith> | which... to be fair, hash flooding is a tough problem to deal with in Haskell. |
2022-11-28 04:47:16 +0100 | money | (~money@user/polo) |
2022-11-28 04:47:21 +0100 | <c_wraith> | The natural ways to avoid it are to use mutable hash tables where you're already initializing them in IO, or just not use hashing. |
2022-11-28 04:47:35 +0100 | zant | (~zant@62.214.20.26) (Ping timeout: 264 seconds) |
2022-11-28 04:51:40 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 265 seconds) |
2022-11-28 04:55:35 +0100 | td_ | (~td@83.135.9.37) (Ping timeout: 268 seconds) |
2022-11-28 04:57:22 +0100 | td_ | (~td@83.135.9.9) |
2022-11-28 05:03:36 +0100 | <Clinton[m]> | if anyone has any ideas on this StackOverflow question regarding role annotations it will be much appreciated: https://stackoverflow.com/questions/74595848/how-to-restrict-roles-on-class-parameters |
2022-11-28 05:05:16 +0100 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) |
2022-11-28 05:15:16 +0100 | <[Leary]> | Clinton[m]: This is a fundamental weakness in the design of the role system and it can't be fixed with annotations; those only allow you to further restrict coercions. You may be able to work around the issue with a quantified superclass constraint like `(forall a b. Coercible a b => Coercible (f a) (f b))`. |
2022-11-28 05:16:26 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 256 seconds) |
2022-11-28 05:18:42 +0100 | ddellacosta | (~ddellacos@143.244.47.73) (Ping timeout: 256 seconds) |
2022-11-28 05:20:24 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 05:21:29 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2022-11-28 05:21:37 +0100 | phma | (phma@2001:5b0:2143:94c8:f94a:d451:43a6:db0a) (Read error: Connection reset by peer) |
2022-11-28 05:22:42 +0100 | phma | (phma@2001:5b0:2172:df88:b30a:8f7e:93b0:e277) |
2022-11-28 05:23:29 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 05:31:05 +0100 | money | (~money@user/polo) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-11-28 05:33:07 +0100 | Guest625 | (Guest625@user/polo) |
2022-11-28 05:45:22 +0100 | mud | (~mud@user/kadoban) |
2022-11-28 05:50:45 +0100 | alfonsox | (~quassel@103.87.57.102) |
2022-11-28 05:51:11 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 264 seconds) |
2022-11-28 05:53:19 +0100 | iqubic | (~iqubic@2601:602:9502:c70:4937:ec1d:8679:10f2) |
2022-11-28 05:55:23 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 264 seconds) |
2022-11-28 05:57:05 +0100 | <iqubic> | I'm having some difficulties getting jle's advent-of-code-ocr package to compile with GHC 9.0..2 Is this a known issue? |
2022-11-28 05:57:07 +0100 | <iqubic> | https://dpaste.com/4YYXGKYQ9 |
2022-11-28 05:57:44 +0100 | <iqubic> | BRB one moment, changing IRC clients |
2022-11-28 05:57:50 +0100 | iqubic | (~iqubic@2601:602:9502:c70:4937:ec1d:8679:10f2) (Client Quit) |
2022-11-28 05:57:59 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
2022-11-28 05:58:21 +0100 | iqubic | (~user@2601:602:9502:c70:4937:ec1d:8679:10f2) |
2022-11-28 06:00:07 +0100 | <iqubic> | Back now |
2022-11-28 06:01:31 +0100 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2022-11-28 06:01:36 +0100 | <iqubic> | Anyone know what's going on with advent-of-code-ocr there? |
2022-11-28 06:01:54 +0100 | <iqubic> | https://hackage.haskell.org/package/advent-of-code-ocr is the think I'm trying to build |
2022-11-28 06:04:11 +0100 | nate4 | (~nate@98.45.169.16) |
2022-11-28 06:07:40 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-11-28 06:09:00 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-11-28 06:09:11 +0100 | nate4 | (~nate@98.45.169.16) (Ping timeout: 264 seconds) |
2022-11-28 06:09:54 +0100 | Guest625 | money |
2022-11-28 06:12:40 +0100 | <c_wraith> | iqubic: oh, that's the typed template haskell change in GHC 9 |
2022-11-28 06:14:25 +0100 | <iqubic> | I see. Is there a way I can fix this, or do I need to file an issue on the github page? |
2022-11-28 06:15:28 +0100 | <c_wraith> | It's a real pain to write code that's compatible with either version. |
2022-11-28 06:16:25 +0100 | <iqubic> | Hmm... That's a shame. So, should I just plan on not using this package during AOC? |
2022-11-28 06:16:39 +0100 | <c_wraith> | or use GHC 8.10.7 |
2022-11-28 06:16:50 +0100 | <c_wraith> | that's a perfectly fine approach |
2022-11-28 06:17:20 +0100 | <iqubic> | That's probably the easier thing to do. Let me just tell Nix to use GHC 8.10.7 real quick, and see if that works |
2022-11-28 06:18:00 +0100 | jargon | (~jargon@184.101.188.35) (Remote host closed the connection) |
2022-11-28 06:18:07 +0100 | <iqubic> | I don't forsee Advent of Code requiring and fancy GHC 9.x.x features. |
2022-11-28 06:18:15 +0100 | <iqubic> | Nor do I forsee myself needing those features. |
2022-11-28 06:19:13 +0100 | <iqubic> | c_wraith: Thanks for the input. I didn't know that TH stuff had changed in GHC 9 |
2022-11-28 06:19:21 +0100 | titibandit | (~titibandi@xdsl-78-34-153-165.nc.de) |
2022-11-28 06:19:35 +0100 | <c_wraith> | only typed template haskell. And yeah... the change *wasn't documented*. |
2022-11-28 06:19:41 +0100 | <c_wraith> | that was a huge surprise. |
2022-11-28 06:20:00 +0100 | <c_wraith> | I mean, I guess the new way it worked was documented. But there was nothing in the changelist. |
2022-11-28 06:22:40 +0100 | <dsal> | Isn't writing your own tools part of the fun? |
2022-11-28 06:22:43 +0100 | <iqubic> | That's such an annoying thing. |
2022-11-28 06:22:49 +0100 | <c_wraith> | Probably worth mentioning to jle that it's not working on GHC 9. And then let him deal with it whenever. :) |
2022-11-28 06:25:50 +0100 | <iqubic> | jle is not in the IRC right now. |
2022-11-28 06:26:54 +0100 | <iqubic> | I'll make an issue on the github |
2022-11-28 06:27:14 +0100 | <iqubic> | I'm not sure exactly what is breaking though. |
2022-11-28 06:28:03 +0100 | <iqubic> | c_wraith: Can you tell me what sort of things I should list in the github issue? Clearly I'm gonna be posting the complete GHC error message. What else? |
2022-11-28 06:28:37 +0100 | <c_wraith> | You can say that I thought it's the change in GHC 9. Along with the error messages, that should suffice. |
2022-11-28 06:29:13 +0100 | <iqubic> | Specifically the Typed Template Haskell stuff? Yeah? |
2022-11-28 06:29:35 +0100 | jinsl | (~jinsl@2408:8207:2559:28e0:211:32ff:fec8:6ae7) (Ping timeout: 264 seconds) |
2022-11-28 06:29:56 +0100 | jinsl | (~jinsl@123.120.168.177) |
2022-11-28 06:30:28 +0100 | <c_wraith> | yeah |
2022-11-28 06:33:53 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 06:37:41 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2022-11-28 06:38:58 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds) |
2022-11-28 06:38:59 +0100 | Lord_of_Life_ | Lord_of_Life |
2022-11-28 06:39:11 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
2022-11-28 06:59:04 +0100 | <iqubic> | I've just created a github issue for this. If the library gets updated during Advent of Code, I'll happily switch to GHC 9. |
2022-11-28 06:59:21 +0100 | <iqubic> | But for now, I'm fine using 8.10.7 |
2022-11-28 06:59:45 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 265 seconds) |
2022-11-28 07:08:56 +0100 | jinsl | (~jinsl@123.120.168.177) (Ping timeout: 265 seconds) |
2022-11-28 07:11:41 +0100 | chomwitt | (~chomwitt@2a02:587:7a0d:dd00:1ac0:4dff:fedb:a3f1) |
2022-11-28 07:16:21 +0100 | random-jellyfish | (~random-je@user/random-jellyfish) |
2022-11-28 07:17:12 +0100 | Xeroine | (~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in) |
2022-11-28 07:18:30 +0100 | jinsl | (~jinsl@123.120.168.177) |
2022-11-28 07:18:34 +0100 | hrberg | (~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2022-11-28 07:23:15 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-11-28 07:36:39 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 07:38:12 +0100 | hrberg | (~quassel@171.79-160-161.customer.lyse.net) |
2022-11-28 07:46:23 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
2022-11-28 07:48:24 +0100 | <JensPetersen[m]> | Is there better/nicer way of deconstructing a Maybe inside a list comprehension than using `Just thing <- [msomething]` ? |
2022-11-28 07:49:47 +0100 | <int-e> | :t catMaybes |
2022-11-28 07:49:48 +0100 | <lambdabot> | [Maybe a] -> [a] |
2022-11-28 07:50:00 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 256 seconds) |
2022-11-28 07:50:09 +0100 | <int-e> | Personally I think the Just foo <- ... thing is nice enough. |
2022-11-28 07:50:17 +0100 | <int-e> | Oh |
2022-11-28 07:50:36 +0100 | <int-e> | it's a singleton list. |
2022-11-28 07:50:54 +0100 | Xeroine | (~Xeroine@user/xeroine) |
2022-11-28 07:51:26 +0100 | <int-e> | There's maybeToList too |
2022-11-28 07:51:33 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 07:51:56 +0100 | <int-e> | > map maybeToList [Nothing, Just 42] |
2022-11-28 07:51:57 +0100 | <lambdabot> | [[],[42]] |
2022-11-28 07:55:14 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-11-28 07:57:08 +0100 | <sus> | hey all, could anyone point me to some good beginner resources for haskell (and possibly just fp in general)? |
2022-11-28 07:58:04 +0100 | <sus> | also, what does haskell really shine at? i've heard it's good for prototyping/rapid development (source has been forgotten) but not much else except for things like xmonad |
2022-11-28 07:58:55 +0100 | jinsl | (~jinsl@123.120.168.177) (Quit: ZNC - https://znc.in) |
2022-11-28 07:59:13 +0100 | jinsl | (~jinsl@123.120.168.177) |
2022-11-28 08:07:36 +0100 | <iqubic> | c_wraith: I'm either using Nix wrong, or advent-of-code-ocr is still broken when using GHC 8.10.7 |
2022-11-28 08:07:53 +0100 | <iqubic> | I suspect it's the former, but it might be the later. |
2022-11-28 08:08:01 +0100 | <c_wraith> | it's possible it's still broken. I didn't test it myself. |
2022-11-28 08:08:34 +0100 | <iqubic> | Oh, I see. |
2022-11-28 08:08:35 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2022-11-28 08:08:50 +0100 | <iqubic> | I remember using this package last year. |
2022-11-28 08:10:54 +0100 | <iqubic> | This is annoying |
2022-11-28 08:18:32 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 265 seconds) |
2022-11-28 08:20:47 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-11-28 08:29:16 +0100 | michalz | (~michalz@185.246.204.73) |
2022-11-28 08:30:27 +0100 | <mauke> | sus: free book: http://book.realworldhaskell.org/read/ |
2022-11-28 08:31:01 +0100 | <mauke> | sus: more resources: https://www.haskell.org/documentation/ |
2022-11-28 08:35:08 +0100 | tomokojun | (~tomokojun@97-120-65-27.ptld.qwest.net) (Read error: Connection reset by peer) |
2022-11-28 08:35:16 +0100 | shriekingnoise | (~shrieking@186.137.167.202) (Quit: Quit) |
2022-11-28 08:36:06 +0100 | jmorris | (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2022-11-28 08:37:18 +0100 | <jackdk> | I find it fantastic for backend web services |
2022-11-28 08:41:40 +0100 | fserucas | (~fserucas@212.157.222.2) |
2022-11-28 08:43:31 +0100 | <opqdonut> | sus: my course has been pretty liked: https://haskell.mooc.fi/ |
2022-11-28 08:43:44 +0100 | jinsl- | (~jinsl@123.120.168.177) |
2022-11-28 08:44:37 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:5ce5:bc7f:bfbf:ad95) |
2022-11-28 08:45:07 +0100 | jinsl | (~jinsl@123.120.168.177) (Ping timeout: 265 seconds) |
2022-11-28 08:45:16 +0100 | random-jellyfish | (~random-je@user/random-jellyfish) (Quit: Client closed) |
2022-11-28 08:45:18 +0100 | mmhat | (~mmh@p200300f1c72545bdee086bfffe095315.dip0.t-ipconnect.de) |
2022-11-28 08:53:01 +0100 | zeenk | (~zeenk@2a02:2f04:a208:3600::7fe) |
2022-11-28 08:54:18 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 265 seconds) |
2022-11-28 08:55:39 +0100 | acidjnk_new | (~acidjnk@p200300d6e7137a29041d3977bca620cd.dip0.t-ipconnect.de) |
2022-11-28 08:56:47 +0100 | Me-me | (~me-me@user/me-me) (Quit: Disconnecting on purpose.) |
2022-11-28 08:59:10 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-11-28 09:00:23 +0100 | Me-me | (~Me-me@146.102.215.218.dyn.iprimus.net.au) |
2022-11-28 09:00:24 +0100 | Me-me | (~Me-me@146.102.215.218.dyn.iprimus.net.au) (Changing host) |
2022-11-28 09:00:24 +0100 | Me-me | (~Me-me@user/me-me) |
2022-11-28 09:00:39 +0100 | <peddie> | @where learn |
2022-11-28 09:00:39 +0100 | <lambdabot> | https://wiki.haskell.org/Learning_Haskell |
2022-11-28 09:00:46 +0100 | <peddie> | sus: ^ |
2022-11-28 09:02:57 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-28 09:04:14 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 09:11:36 +0100 | kenran | (~user@user/kenran) |
2022-11-28 09:13:27 +0100 | kenran | (~user@user/kenran) (Remote host closed the connection) |
2022-11-28 09:17:34 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-11-28 09:19:35 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
2022-11-28 09:19:45 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 09:20:03 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-11-28 09:20:28 +0100 | akegalj | (~akegalj@93-138-187-169.adsl.net.t-com.hr) |
2022-11-28 09:21:46 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-11-28 09:25:48 +0100 | cyphase_eviltwin | cyphase |
2022-11-28 09:30:32 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-11-28 09:37:51 +0100 | razetime | (~quassel@49.207.211.219) |
2022-11-28 09:41:43 +0100 | tomokojun | (~tomokojun@97-120-65-27.ptld.qwest.net) |
2022-11-28 09:41:50 +0100 | tomokojun | (~tomokojun@97-120-65-27.ptld.qwest.net) (Remote host closed the connection) |
2022-11-28 09:42:46 +0100 | jinsl- | (~jinsl@123.120.168.177) (Ping timeout: 256 seconds) |
2022-11-28 09:43:49 +0100 | aliosablack | (~chomwitt@2a02:587:7a0d:dd00:1ac0:4dff:fedb:a3f1) |
2022-11-28 09:44:08 +0100 | chomwitt | (~chomwitt@2a02:587:7a0d:dd00:1ac0:4dff:fedb:a3f1) (Read error: Connection reset by peer) |
2022-11-28 09:44:10 +0100 | tomokojun | (~tomokojun@97-120-65-27.ptld.qwest.net) |
2022-11-28 09:45:45 +0100 | <albet70> | how to generate tags for vim? |
2022-11-28 09:45:57 +0100 | <albet70> | or emacs? |
2022-11-28 09:48:29 +0100 | <maerwald[m]> | albet70: hasktags and codex |
2022-11-28 09:49:38 +0100 | jinsl | (~jinsl@123.120.168.177) |
2022-11-28 09:50:50 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2022-11-28 09:52:44 +0100 | <albet70> | hasktags needs to be installed with cabal? |
2022-11-28 09:53:53 +0100 | <maerwald[m]> | No |
2022-11-28 09:53:57 +0100 | <maerwald[m]> | But it can |
2022-11-28 09:54:58 +0100 | <albet70> | your system package source has it? |
2022-11-28 09:55:09 +0100 | <albet70> | I mean like apt, pacman, etc |
2022-11-28 09:55:11 +0100 | MajorBiscuit | (~MajorBisc@c-001-025-055.client.tudelft.eduvpn.nl) |
2022-11-28 09:55:32 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
2022-11-28 09:56:40 +0100 | <maerwald[m]> | Mine? No |
2022-11-28 09:56:46 +0100 | <maerwald[m]> | Don't know about yours |
2022-11-28 09:57:17 +0100 | mbuf | (~Shakthi@49.204.116.36) |
2022-11-28 09:57:51 +0100 | <albet70> | so how you installed it? |
2022-11-28 09:58:01 +0100 | <maerwald[m]> | Cabal |
2022-11-28 10:01:00 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
2022-11-28 10:01:55 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 10:03:54 +0100 | tomokojun | (~tomokojun@97-120-65-27.ptld.qwest.net) (Ping timeout: 265 seconds) |
2022-11-28 10:04:23 +0100 | aliosablack | (~chomwitt@2a02:587:7a0d:dd00:1ac0:4dff:fedb:a3f1) (Ping timeout: 265 seconds) |
2022-11-28 10:05:16 +0100 | titibandit | (~titibandi@xdsl-78-34-153-165.nc.de) (Remote host closed the connection) |
2022-11-28 10:05:44 +0100 | nate4 | (~nate@98.45.169.16) |
2022-11-28 10:10:59 +0100 | nate4 | (~nate@98.45.169.16) (Ping timeout: 264 seconds) |
2022-11-28 10:14:48 +0100 | Bocaneri | (~sauvin@user/Sauvin) |
2022-11-28 10:15:12 +0100 | Bocaneri | Guest9581 |
2022-11-28 10:15:41 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 255 seconds) |
2022-11-28 10:16:24 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 10:17:34 +0100 | Sauvin | (~sauvin@user/Sauvin) (Ping timeout: 260 seconds) |
2022-11-28 10:19:23 +0100 | kuribas | (~user@ptr-17d51en6r1xh6ck9pgx.18120a2.ip6.access.telenet.be) |
2022-11-28 10:19:39 +0100 | chomwitt | (~chomwitt@2a02:587:7a0d:dd00:1ac0:4dff:fedb:a3f1) |
2022-11-28 10:21:19 +0100 | lisbeths | (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-11-28 10:25:03 +0100 | rembo10 | (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-11-28 10:25:44 +0100 | chele | (~chele@user/chele) |
2022-11-28 10:26:57 +0100 | Guest9581 | Sauvin |
2022-11-28 10:27:15 +0100 | rembo10 | (~rembo10@main.remulis.com) |
2022-11-28 10:28:19 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
2022-11-28 10:32:50 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-11-28 10:33:21 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-11-28 10:33:45 +0100 | rembo10 | (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-11-28 10:35:26 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-11-28 10:35:35 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2022-11-28 10:35:55 +0100 | rembo10 | (~rembo10@main.remulis.com) |
2022-11-28 10:37:24 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
2022-11-28 10:38:30 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 10:41:29 +0100 | <dminuoso> | Why cant I have a simple and yet efficient postgresql library. :( |
2022-11-28 10:42:05 +0100 | Kaiepi | (~Kaiepi@108.175.84.104) (Ping timeout: 265 seconds) |
2022-11-28 10:43:05 +0100 | <Franciman> | try with sql? |
2022-11-28 10:43:09 +0100 | <Franciman> | sqlite3* |
2022-11-28 10:43:11 +0100 | <Franciman> | sorry xd |
2022-11-28 10:43:24 +0100 | <Franciman> | it's usually good enough, and i like the lib |
2022-11-28 10:43:32 +0100 | <dminuoso> | No I do want postgresql. |
2022-11-28 10:43:36 +0100 | <Franciman> | i see |
2022-11-28 10:44:08 +0100 | <dminuoso> | I think I may have to actually write this myself. Something like hasql, except without that crazy deep dependency footprint. |
2022-11-28 10:44:15 +0100 | mokee | (~mokee@37.228.215.235) |
2022-11-28 10:45:20 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
2022-11-28 10:45:28 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 10:46:28 +0100 | <maerwald[m]> | dminuoso: hasql |
2022-11-28 10:46:45 +0100 | <dminuoso> | maerwald[m]: Yes, hasql has a crazy depdendency footprint. |
2022-11-28 10:46:57 +0100 | <dminuoso> | You get the kmettiverse, the aesonverse and the volkoverse. |
2022-11-28 10:49:06 +0100 | <dminuoso> | maerwald[m]: https://i.imgur.com/WXxSFcc.png |
2022-11-28 10:49:12 +0100 | <dminuoso> | That's hasql just all by itself. |
2022-11-28 10:49:26 +0100 | rembo10 | (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-11-28 10:49:30 +0100 | <dminuoso> | I feel like hackage should display this at the landing page of each package. |
2022-11-28 10:50:32 +0100 | ubert | (~Thunderbi@p200300ecdf264e08a6416b558e153d18.dip0.t-ipconnect.de) |
2022-11-28 10:51:28 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
2022-11-28 10:51:40 +0100 | rembo10 | (~rembo10@main.remulis.com) |
2022-11-28 10:52:24 +0100 | lawt | (~lawtonmat@2001:470:69fc:105::2:97b8) (Quit: issued !quit command) |
2022-11-28 10:53:43 +0100 | <dminuoso> | This is like what, 90 dependencies? |
2022-11-28 10:57:11 +0100 | irrgit__ | (~irrgit@86.106.90.226) |
2022-11-28 10:58:42 +0100 | irrgit_ | (~irrgit@146.70.27.250) (Ping timeout: 256 seconds) |
2022-11-28 11:00:58 +0100 | son0p | (~ff@2604:3d08:5b7f:5540::c531) (Ping timeout: 256 seconds) |
2022-11-28 11:01:27 +0100 | alfonsox | (~quassel@103.87.57.102) (Read error: Connection reset by peer) |
2022-11-28 11:02:22 +0100 | MajorBiscuit | (~MajorBisc@c-001-025-055.client.tudelft.eduvpn.nl) (Ping timeout: 252 seconds) |
2022-11-28 11:02:24 +0100 | CiaoSen | (~Jura@p200300c95716a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-11-28 11:03:48 +0100 | <int-e> | 73 on top of what ghc ships with |
2022-11-28 11:04:07 +0100 | zant | (~zant@62.96.232.178) |
2022-11-28 11:04:20 +0100 | teo | (~teo@user/teo) |
2022-11-28 11:05:23 +0100 | <int-e> | oh and not counting hsc2hs deps |
2022-11-28 11:11:03 +0100 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
2022-11-28 11:13:59 +0100 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 265 seconds) |
2022-11-28 11:14:46 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-11-28 11:15:57 +0100 | <kuribas> | dminuoso: what do you mean by efficient? |
2022-11-28 11:16:07 +0100 | <kuribas> | fast generation of queries? fast serialization? |
2022-11-28 11:16:13 +0100 | <kuribas> | Or just good ergonomics? |
2022-11-28 11:16:23 +0100 | <dminuoso> | Fast serialization |
2022-11-28 11:16:32 +0100 | __monty__ | (~toonn@user/toonn) |
2022-11-28 11:16:58 +0100 | <dminuoso> | postgresql-simple uses the text interface of libpq, and it does some home-made query interpolation that Im not happy with. |
2022-11-28 11:18:37 +0100 | <chreekat> | If you're gonna write your own, maybe add postgres-native serialization to (a fork of?) postgres-simple :D |
2022-11-28 11:18:38 +0100 | <chreekat> | It would be welcome |
2022-11-28 11:19:05 +0100 | <kuribas> | or you can port my hasqlator-mysql to postgresql, but with fast serialization ;-) |
2022-11-28 11:20:55 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
2022-11-28 11:21:10 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 11:23:33 +0100 | aeroplane | (~user@user/aeroplane) |
2022-11-28 11:25:05 +0100 | <kuribas> | a Protocal in python is like (forall a. Intrface a), not Intrface a => a ..., right? |
2022-11-28 11:25:43 +0100 | <kuribas> | meaning, you cannot get the same class back? |
2022-11-28 11:26:29 +0100 | <kuribas> | But I suppose it's the same with java interfaces. |
2022-11-28 11:26:39 +0100 | Wstfgl0 | (~me-me@v.working.name) |
2022-11-28 11:26:47 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 255 seconds) |
2022-11-28 11:26:49 +0100 | <maerwald[m]> | dminuoso: if you don't like dependency footprints, haskell is the wrong language anyway |
2022-11-28 11:27:02 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2022-11-28 11:27:05 +0100 | <dminuoso> | maerwald[m]: For the most part I can manage just fine, though. |
2022-11-28 11:27:19 +0100 | <dminuoso> | There's just a few libraries that are on the extreme side of dependencies. |
2022-11-28 11:27:36 +0100 | <kuribas> | dminuoso: you are likely importing the kmettiverse anyway :) |
2022-11-28 11:27:46 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 11:29:16 +0100 | Wstfgl0 | (~me-me@v.working.name) (Client Quit) |
2022-11-28 11:29:39 +0100 | <maerwald[m]> | Volkov writes some pretty cool stuff though, like https://hackage.haskell.org/package/stm-containers |
2022-11-28 11:30:13 +0100 | Me-m| | (~me-me@v.working.name) |
2022-11-28 11:30:46 +0100 | Me-me | (~Me-me@user/me-me) (Remote host closed the connection) |
2022-11-28 11:31:15 +0100 | Me-m| | Me-me |
2022-11-28 11:31:31 +0100 | <maerwald[m]> | But has never attended to any of my bug reports/PRs. |
2022-11-28 11:31:52 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 11:32:04 +0100 | <maerwald[m]> | That might be a factor against using hasql. |
2022-11-28 11:33:22 +0100 | Me-me | (~me-me@v.working.name) (Changing host) |
2022-11-28 11:33:22 +0100 | Me-me | (~me-me@user/me-me) |
2022-11-28 11:34:35 +0100 | accord | (uid568320@id-568320.hampstead.irccloud.com) |
2022-11-28 11:36:28 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2022-11-28 11:37:08 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 255 seconds) |
2022-11-28 11:37:17 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 11:39:00 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
2022-11-28 11:41:19 +0100 | <aeroplane> | hello everyone, I was implementing the my_filter function from the book "yet another haskell tutorial", but it gives an error - "non-exhaustive patterns". I did not know how to resolve this error, please help! |
2022-11-28 11:41:21 +0100 | <aeroplane> | https://paste.rs/9MK |
2022-11-28 11:41:44 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) (Remote host closed the connection) |
2022-11-28 11:41:50 +0100 | <dminuoso> | aeroplane: Multi-line definitions dont work in GHCi like that. |
2022-11-28 11:42:10 +0100 | <aeroplane> | ok |
2022-11-28 11:42:11 +0100 | <kuribas> | I don't even think repeating let works in ghc |
2022-11-28 11:42:15 +0100 | <dminuoso> | First, you have to use the two definitions in the same let-block, and for GHCi you have to use :{ :} |
2022-11-28 11:42:23 +0100 | <mauke> | two 'let', two different functions |
2022-11-28 11:42:28 +0100 | <kuribas> | in the same function I mean |
2022-11-28 11:42:32 +0100 | <aeroplane> | ok i'll try |
2022-11-28 11:42:52 +0100 | <mauke> | > let f _ = "one" in let f [] = "two" in f [1,2,3] |
2022-11-28 11:42:53 +0100 | <lambdabot> | "*Exception: <interactive>:3:24-35: Non-exhaustive patterns in function f |
2022-11-28 11:42:55 +0100 | <dminuoso> | aeroplane: Right now, the second definition replaces the first, and as such when you apply my_filter to a list, it will not have a definition for a non-empty list, giving you the error you are seeing |
2022-11-28 11:43:18 +0100 | <dminuoso> | aeroplane: https://gist.github.com/dminuoso/04a8f69c6950babafa1c0ad869213e56 |
2022-11-28 11:44:48 +0100 | <mauke> | for that kind of stuff it's easier to put the code in a file and just load it into ghci |
2022-11-28 11:45:30 +0100 | Neuromancer | (~Neuromanc@user/neuromancer) |
2022-11-28 11:46:59 +0100 | Kaiepi | (~Kaiepi@108.175.84.104) |
2022-11-28 11:52:12 +0100 | <aeroplane> | dminuoso: thanks, it's working. |
2022-11-28 11:56:07 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) |
2022-11-28 12:03:09 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-11-28 12:04:17 +0100 | xff0x | (~xff0x@2405:6580:b080:900:534a:4597:1af5:4190) |
2022-11-28 12:05:24 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-11-28 12:05:29 +0100 | jinsl | (~jinsl@123.120.168.177) (Ping timeout: 260 seconds) |
2022-11-28 12:06:51 +0100 | jinsl | (~jinsl@123.120.168.177) |
2022-11-28 12:08:19 +0100 | <aeroplane> | I also have one more question, Is having real world experience in an imperative language a prerequisite for learning Haskell. WOuld it be too early to start learning haskell if you don't have the same. |
2022-11-28 12:08:36 +0100 | <dminuoso> | Not at all. |
2022-11-28 12:08:52 +0100 | <dminuoso> | I might argue, imperative programming experience probably slows down your progress. |
2022-11-28 12:09:13 +0100 | <dminuoso> | Partly because learning Haskell requires a fair bit of unlearning habits and mind models. If you dont have imperative programming experience, that step is foregone. |
2022-11-28 12:10:07 +0100 | <dminuoso> | While its not common, we repeatedly heard success stories of beginners learning Haskell as their first langauge. |
2022-11-28 12:10:28 +0100 | <dminuoso> | Arguably, we have a lot of things that might make more sense to a beginner than someone with an imperative background. |
2022-11-28 12:12:15 +0100 | <dminuoso> | For instance, many programming languages have a notion of writing to a mutable reference by writing `a = 3`. So if you write something like a = 3; a = 4` that can be mindbending and strangely confusing because you might have some notion of writing equations from mathematics. In Haskell the equal signs does denote a similar kind of equality as mathematics does. |
2022-11-28 12:12:49 +0100 | <dminuoso> | If we want to write to a mutable reference, we would write `writeIORef mut 3` instead, which I think is much easier to explain to a beginner. |
2022-11-28 12:13:15 +0100 | <mauke> | even worse, x = x + 1 makes no mathematical sense, but this kind of code is super common in imperative |
2022-11-28 12:16:06 +0100 | <dminuoso> | aeroplane: So conversely, because = denotes a kind of substitution equality (that is if you read `x = expr`, then all occurences of `x` can be replaced with `expr` without change of meaning to the program), it gives you access to something we call equational reasoning. |
2022-11-28 12:16:20 +0100 | <dminuoso> | In many imperative langauges you cant even do that, which I think can complicate the learning process |
2022-11-28 12:16:45 +0100 | <dminuoso> | (oh and similarly, all occurences of `expr` can be replaced with `x` without changing the meaning of the program too) |
2022-11-28 12:17:05 +0100 | <dminuoso> | So yeah. I do think Haskell is very suitable as a first language. |
2022-11-28 12:19:57 +0100 | <aeroplane> | dminuoso: Thanks, I agree Haskell is true as Mathematics, there is no hidden features like closures (Javascript) and no destructive behaviour and also succint. I started liking it. |
2022-11-28 12:20:15 +0100 | <mauke> | heh |
2022-11-28 12:20:20 +0100 | <mauke> | Haskell is full of closures |
2022-11-28 12:20:28 +0100 | <dminuoso> | not exactly. |
2022-11-28 12:20:39 +0100 | <dminuoso> | a closure is an implementation detail, so its not Haskell that has closures, its GHC |
2022-11-28 12:20:54 +0100 | <mauke> | I disagree; I don't define "closure" like that |
2022-11-28 12:21:15 +0100 | <dminuoso> | You are free to make your own definition of course, but it is a widely common and accepted definition. |
2022-11-28 12:21:55 +0100 | zant | (~zant@62.96.232.178) (Read error: Connection reset by peer) |
2022-11-28 12:21:58 +0100 | <mauke> | only in Haskell land |
2022-11-28 12:22:06 +0100 | <dminuoso> | No, not really. |
2022-11-28 12:22:10 +0100 | king_gs | (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) |
2022-11-28 12:22:14 +0100 | <mauke> | the one that's more common elsewhere is "a function that uses local variables from an outer scope" |
2022-11-28 12:22:16 +0100 | zant | (~zant@62.96.232.178) |
2022-11-28 12:23:11 +0100 | <dminuoso> | I know a lot of self taught programmers play lose cannon with terminology. But in compsci that is not the definition of closure. |
2022-11-28 12:23:24 +0100 | <mauke> | comp.sci = "Haskell land" |
2022-11-28 12:23:54 +0100 | <dminuoso> | No, this ranges back all the way to LISP, and is used in literature everywhere. |
2022-11-28 12:23:59 +0100 | king_gs | (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Client Quit) |
2022-11-28 12:24:16 +0100 | <mauke> | I'm not disputing that |
2022-11-28 12:24:20 +0100 | <dminuoso> | Haskell is only a small subset of computational science. |
2022-11-28 12:25:01 +0100 | <mauke> | https://en.wikipedia.org/wiki/Synecdoche |
2022-11-28 12:25:41 +0100 | <dminuoso> | It is so incredibly well estasbliedh, even in modern programming languages. |
2022-11-28 12:25:46 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-11-28 12:25:49 +0100 | <dminuoso> | https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures |
2022-11-28 12:26:31 +0100 | <mauke> | yeah, that uses both definitions :-) |
2022-11-28 12:26:40 +0100 | <mauke> | "// displayName() is the inner function, a closure" |
2022-11-28 12:26:48 +0100 | <lyxia> | dminuoso: what's your definition of closure? so far you only said "it's an implementation detail" |
2022-11-28 12:26:49 +0100 | ub | (~Thunderbi@p548c9ce5.dip0.t-ipconnect.de) |
2022-11-28 12:26:59 +0100 | <mauke> | right after "a closure is the combination of a function with something else" |
2022-11-28 12:27:15 +0100 | ubert | (~Thunderbi@p200300ecdf264e08a6416b558e153d18.dip0.t-ipconnect.de) (Remote host closed the connection) |
2022-11-28 12:27:15 +0100 | ub | ubert |
2022-11-28 12:27:24 +0100 | <mauke> | lyxia: a tuple of (environment, code) |
2022-11-28 12:28:18 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-11-28 12:28:28 +0100 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-11-28 12:28:47 +0100 | <mauke> | personally, I don't think the name "closure" makes any sense in this context |
2022-11-28 12:30:00 +0100 | <dminuoso> | lyxia: It is a technique to implement first class functions that allow binding names from outside a lambda. |
2022-11-28 12:30:26 +0100 | zant | (~zant@62.96.232.178) (Ping timeout: 246 seconds) |
2022-11-28 12:30:39 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-11-28 12:31:17 +0100 | <mauke> | what's a lambda? :-) |
2022-11-28 12:32:49 +0100 | <aeroplane> | With closure(javascript), I meant that we need not to be aware of how Haskell works inside while writing code, I think. |
2022-11-28 12:32:57 +0100 | <aeroplane> | like Event loops in JS |
2022-11-28 12:33:21 +0100 | <dminuoso> | Or more compactly, a way to implement first class functions with free variables, by closing it. |
2022-11-28 12:33:42 +0100 | <dminuoso> | The thing is, the fact that your runtime *can* do this, does not mean `\x -> x + y` is a closed expression. |
2022-11-28 12:33:51 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer) |
2022-11-28 12:33:59 +0100 | <dminuoso> | On a language semantics point of view, its an open expression. |
2022-11-28 12:34:25 +0100 | <dminuoso> | Closures really are something that happens on the implementation side of things. |
2022-11-28 12:34:35 +0100 | <mauke> | non sequitur |
2022-11-28 12:34:57 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 12:35:35 +0100 | merijn | (~merijn@86.86.29.250) |
2022-11-28 12:35:36 +0100 | <mauke> | (that, is it does not follow as a conclusion from the preceding statements, but I may have missed your point) |
2022-11-28 12:35:52 +0100 | <dminuoso> | Let me take another stab |
2022-11-28 12:35:54 +0100 | <dminuoso> | 12:27:24 mauke | lyxia: a tuple of (environment, code) |
2022-11-28 12:35:58 +0100 | <dminuoso> | This right there. That's implementation. |
2022-11-28 12:36:03 +0100 | <mauke> | yes |
2022-11-28 12:36:29 +0100 | <dminuoso> | Closures do not exist on a language level, they are an implementation artifact. I think you can implement name binding and first class functions with different techniques too. |
2022-11-28 12:36:42 +0100 | <mauke> | true, under your definition |
2022-11-28 12:36:53 +0100 | <dminuoso> | Well, it is the definition shared in virtually all of literature. |
2022-11-28 12:37:01 +0100 | <mauke> | all of comp.sci literature |
2022-11-28 12:37:27 +0100 | <mauke> | i.e. academics, i.e. Haskell land |
2022-11-28 12:38:02 +0100 | <dminuoso> | Since closure is a comp sci term, I think comp sci literature is most applicable. |
2022-11-28 12:38:20 +0100 | <dminuoso> | But like I said, I dont mind if others make up their own arbitrary definitions. |
2022-11-28 12:38:29 +0100 | <lyxia> | lol I'm lost about what mauke is disagreeing with |
2022-11-28 12:38:32 +0100 | <mauke> | https://en.wiktionary.org/wiki/closure |
2022-11-28 12:38:42 +0100 | <mauke> | it's far older than computing :-) |
2022-11-28 12:39:13 +0100 | <mauke> | lyxia: my point is that there is another definition of "closure", which is not an implementation detail |
2022-11-28 12:39:25 +0100 | <mauke> | and I like it better because it makes more sense to me |
2022-11-28 12:39:56 +0100 | <mauke> | that is, it seems more useful in practice |
2022-11-28 12:40:22 +0100 | <dminuoso> | Im a bit lost now. You started this discussion with `Haskell is full of closures`, but your recent wiktionary reference makes it clear you do not mean `closure` in the comp sci sense, but one of the etymologically older definitions. |
2022-11-28 12:40:30 +0100 | <mauke> | no |
2022-11-28 12:40:43 +0100 | merijn | (~merijn@86.86.29.250) (Ping timeout: 260 seconds) |
2022-11-28 12:40:52 +0100 | <mauke> | my definition: <mauke> the one that's more common elsewhere is "a function that uses local variables from an outer scope" |
2022-11-28 12:41:25 +0100 | <dminuoso> | Where is "elsewhere"? |
2022-11-28 12:41:49 +0100 | <mauke> | that's a good question |
2022-11-28 12:41:58 +0100 | <lyxia> | I think both definitions have their uses |
2022-11-28 12:42:09 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) |
2022-11-28 12:42:36 +0100 | <mauke> | I've encountered it in various online communities, like programming forums, usenet, etc |
2022-11-28 12:43:01 +0100 | <dminuoso> | mauke: the comp sci expression for that is "lambda/function expression with free variables". |
2022-11-28 12:43:17 +0100 | <dminuoso> | (or open lambda/function expression) |
2022-11-28 12:43:23 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-11-28 12:44:00 +0100 | <mauke> | that's too limiting, though |
2022-11-28 12:44:08 +0100 | <mauke> | it doesn't have to be called "lambda" or be an expression |
2022-11-28 12:44:52 +0100 | <mauke> | heh, I just noticed that this wiktionary definition, "An abstraction that represents a function within an environment, a context consisting of the variables that are both bound at a particular time during the execution of the program and that are within the function's scope." ... kind of straddles the two meanings |
2022-11-28 12:45:42 +0100 | <dminuoso> | I tend to not like wiktionary/wikipedia as basis for definitions, because its incredibly biased by the authors who can be anyone. |
2022-11-28 12:45:56 +0100 | <dminuoso> | They are good vehicles for finding primary or secondary literature, though. |
2022-11-28 12:46:18 +0100 | <mauke> | yes |
2022-11-28 12:46:23 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 264 seconds) |
2022-11-28 12:46:31 +0100 | <dminuoso> | That being said, using different, less principled definitions for words is very common in programming, especially amongst those without a formal education or interest thereof. It is a bit problematic because it leads to misconceptions and confusion. |
2022-11-28 12:46:40 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) (Ping timeout: 260 seconds) |
2022-11-28 12:46:46 +0100 | <mauke> | inb4 functor |
2022-11-28 12:46:49 +0100 | <dminuoso> | Making up your own definition is valid, but it does beg the question why one would not stick to well established standardized terminology |
2022-11-28 12:46:54 +0100 | <dminuoso> | Or function. |
2022-11-28 12:46:56 +0100 | <dminuoso> | :) |
2022-11-28 12:47:18 +0100 | <mauke> | "well established" is relative, and all definitions are made up |
2022-11-28 12:47:26 +0100 | <lyxia> | I mean you are both claiming that your definition is well established |
2022-11-28 12:47:47 +0100 | <lyxia> | good luck figuring out who's right |
2022-11-28 12:47:58 +0100 | <mauke> | ... both? |
2022-11-28 12:48:31 +0100 | <lyxia> | aren't you? |
2022-11-28 12:48:35 +0100 | <dminuoso> | I think principle mauke and I do understand each other. Perhaps we should discuss the real crux. |
2022-11-28 12:48:42 +0100 | <kuribas> | closure is a fairly common term |
2022-11-28 12:48:47 +0100 | <dminuoso> | And that's: whose definition is better to use |
2022-11-28 12:49:20 +0100 | <kuribas> | saying haskell doesn't have closures is fairly deceptive |
2022-11-28 12:49:23 +0100 | <mauke> | obviously, mine :-) |
2022-11-28 12:49:26 +0100 | <dminuoso> | Especially in the Haskell community there tends to be a preference in using terminology that aligns with what you find publications of. |
2022-11-28 12:49:54 +0100 | <dminuoso> | kuribas: Haskell has as much closures as it has stack pushing. |
2022-11-28 12:49:57 +0100 | <dminuoso> | Its just not part of the langauge. |
2022-11-28 12:50:00 +0100 | <dminuoso> | Its part of the implementation |
2022-11-28 12:50:32 +0100 | zant | (~zant@62.96.232.178) |
2022-11-28 12:50:36 +0100 | <mauke> | Haskell doesn't have a profiler |
2022-11-28 12:50:37 +0100 | <kuribas> | I disagree, closure is about semantics, not implementation |
2022-11-28 12:51:05 +0100 | <mauke> | technically correct, but deceptive |
2022-11-28 12:51:26 +0100 | <dminuoso> | kuribas: its an implementation technique to provide semantics. |
2022-11-28 12:51:37 +0100 | <dminuoso> | its not the only one either |
2022-11-28 12:51:49 +0100 | <kuribas> | "A closure is the combination of a function bundled together (enclosed) with references to its surrounding state (the lexical environment)." |
2022-11-28 12:51:55 +0100 | <aeroplane> | A function after execution is deleted from the entirety of existence. |
2022-11-28 12:51:55 +0100 | <aeroplane> | Closure: Hold my beer 🍺!! |
2022-11-28 12:52:04 +0100 | <kuribas> | that doesn't say how the surrounding state is implemented. |
2022-11-28 12:52:13 +0100 | <dminuoso> | kuribas: its that bundling itself, that is the implementation technique. |
2022-11-28 12:52:20 +0100 | <dminuoso> | in simple terms in GHC you might have: |
2022-11-28 12:52:38 +0100 | <dminuoso> | `data Closure = Closure FuncRef Env` with `data Env = Env (Map Id Value)` as a gross oversimplification |
2022-11-28 12:53:08 +0100 | <dminuoso> | That isnt saying how that is exactly done, but the idea of having a function reference along with an environment defining what names bind to what values - thats what a closure is. |
2022-11-28 12:53:14 +0100 | <kuribas> | closure means you can use a variable even when it went out of scope. |
2022-11-28 12:53:32 +0100 | <mauke> | kuribas: no, that's my definition, not the dminuoso uses :-) |
2022-11-28 12:53:36 +0100 | <mauke> | er, the one* |
2022-11-28 12:53:55 +0100 | <kuribas> | I believe it's the commonly used one, prove me wrong :) |
2022-11-28 12:53:59 +0100 | <mauke> | hahaha |
2022-11-28 12:54:27 +0100 | <mauke> | dminuoso: /* C */ int n = 42; void foo(void) { return n; } -- is foo a "lambda/function expression with free variables"? |
2022-11-28 12:54:50 +0100 | zant | (~zant@62.96.232.178) (Ping timeout: 260 seconds) |
2022-11-28 12:55:44 +0100 | <lyxia> | Aren't you mauke and dminuoso both agreeing with the definition kuribas gave? So you agree on the words but not on the interpretation? |
2022-11-28 12:55:53 +0100 | acidjnk_new | (~acidjnk@p200300d6e7137a29041d3977bca620cd.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-11-28 12:56:07 +0100 | <dminuoso> | lyxia: So essentially this is another version of `what is a function` |
2022-11-28 12:56:14 +0100 | <lyxia> | yes |
2022-11-28 12:56:16 +0100 | <mauke> | ... kind of? |
2022-11-28 12:56:29 +0100 | <mauke> | I don't particularly like those words, though |
2022-11-28 12:57:18 +0100 | <dminuoso> | The more interesting question is: do we care about the definition that is a) historically correct and b) used in pubications, or c) by the broad masses of users without formal education in that respect. |
2022-11-28 12:57:25 +0100 | Lycurgus | (~juan@user/Lycurgus) |
2022-11-28 12:57:33 +0100 | <dminuoso> | I do not have a good answer. |
2022-11-28 12:57:36 +0100 | <mauke> | (and note that the MDN article immediately contradicts its own definition when it talks about closures) |
2022-11-28 12:58:02 +0100 | <dminuoso> | Just to provide a starting point: https://dspace.mit.edu/handle/1721.1/5854 |
2022-11-28 12:58:23 +0100 | <dminuoso> | This is the point where closures originated from. |
2022-11-28 12:58:23 +0100 | CiaoSen | (~Jura@p200300c95716a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2022-11-28 12:58:27 +0100 | <dminuoso> | The term, that is. |
2022-11-28 12:58:44 +0100 | <dminuoso> | Not citing this as basis for authority on what to call a closure, but I do want to at least provide that for context. |
2022-11-28 12:59:25 +0100 | <mauke> | I'm going to read that paper, but up front I'd just like to say that Lispers are terrible at naming things :-) |
2022-11-28 12:59:38 +0100 | <dminuoso> | Having browsed google scholar a bit now, its hard to find publications using closure in mauke's sense. |
2022-11-28 12:59:49 +0100 | <dminuoso> | mauke: actually closure is named quite appropriately. |
2022-11-28 12:59:56 +0100 | <dminuoso> | it closes what is otherwise an open expression. |
2022-11-28 13:00:16 +0100 | <dminuoso> | and that uses `open` and `close` in the lambda calculus sense. |
2022-11-28 13:00:29 +0100 | <mauke> | "expressions" are part of the surface language, not the implementation |
2022-11-28 13:00:41 +0100 | <mauke> | there are no expressions in asm |
2022-11-28 13:02:16 +0100 | <mauke> | that's why I think it makes sense to define "closure" in terms of language features/syntax |
2022-11-28 13:02:30 +0100 | <dminuoso> | Implementations implement the language. As such they can easily think about open and close of the language they implement just fine. |
2022-11-28 13:02:53 +0100 | <dminuoso> | So for instance, in GHC you have functions that will tell you whether a given expression is open or free. |
2022-11-28 13:02:59 +0100 | <dminuoso> | *open or closed. |
2022-11-28 13:03:13 +0100 | akegalj | (~akegalj@93-138-187-169.adsl.net.t-com.hr) (Ping timeout: 265 seconds) |
2022-11-28 13:03:17 +0100 | <mauke> | (with variables that are bound or free. right.) |
2022-11-28 13:03:40 +0100 | rendar | (~Paxman@user/rendar) |
2022-11-28 13:03:44 +0100 | <dminuoso> | the implementation is not the generated asssembly |
2022-11-28 13:03:53 +0100 | <rendar> | can i insert multiple key/values into a map, in oneliner? |
2022-11-28 13:03:53 +0100 | <dminuoso> | the implementation is the machinery that does, potentially, generate assembly |
2022-11-28 13:04:04 +0100 | <mauke> | I still feel it's a bit of a misnomer because you're essentially naming a fairly generic technique after one particular application |
2022-11-28 13:04:11 +0100 | <dminuoso> | rendar: Use `union` |
2022-11-28 13:04:21 +0100 | <dminuoso> | Or a fold |
2022-11-28 13:04:33 +0100 | FragByte | (~christian@user/fragbyte) (Quit: Quit) |
2022-11-28 13:04:49 +0100 | <mauke> | like, say, you come up with a generic lookup data structure (a finite map), but you call it a "symbol table" because your compiler uses it to implement symbol tables |
2022-11-28 13:05:04 +0100 | <dminuoso> | mauke: well the idea is, is you conceptually turn `\x -> x + y` into `\let y = 1 in \x -> x + 1`, you *close* the expression. |
2022-11-28 13:05:11 +0100 | <dminuoso> | Uh small typo there. |
2022-11-28 13:05:19 +0100 | <dminuoso> | `\x -> x + y` into `let y = 1 in \x -> x + y` |
2022-11-28 13:05:36 +0100 | <dminuoso> | From an analysis point of view, this seems appropriately named |
2022-11-28 13:06:22 +0100 | <mauke> | OK, you're making some good points. I'll have to think about this |
2022-11-28 13:06:58 +0100 | <mauke> | dminuoso: but about my C example; would you call foo a lambda/function expression with free variables? |
2022-11-28 13:07:02 +0100 | <dminuoso> | Of course implementations tend to blur the lines a bit, since it tends to be less efficient to explicitly define such constructs. So you will rather just carry an environment alongside, under the assumption there is going to be some highly efficient implementation, while it to be equivalent to `let y = 1 = \x -> x + y` |
2022-11-28 13:07:56 +0100 | FragByte | (~christian@user/fragbyte) |
2022-11-28 13:09:14 +0100 | jonathanx | (~jonathan@h-178-174-176-109.a357.priv.bahnhof.se) |
2022-11-28 13:09:58 +0100 | <mauke> | (my intuition says that it's not an expression, but 'n' is free in 'foo') |
2022-11-28 13:10:28 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 260 seconds) |
2022-11-28 13:11:08 +0100 | <dminuoso> | mauke: sure, I mean different languages have different semantics, and they tend to burrow terminology on the basis of being similar or a resemblance. |
2022-11-28 13:11:42 +0100 | son0p | (~ff@2604:3d08:5b7f:5540::ebf0) |
2022-11-28 13:12:05 +0100 | <lyxia> | rendar: can you give an example of what you are trying to do? |
2022-11-28 13:12:33 +0100 | <mauke> | dminuoso: my point is, 'foo' is not a closure in my sense, so "a lambda/function expression with free variables" is not a suitable replacement |
2022-11-28 13:12:39 +0100 | <dminuoso> | mauke: and to be fair, expression tends to be something grammatical. |
2022-11-28 13:12:54 +0100 | <dminuoso> | which differs between languages |
2022-11-28 13:12:57 +0100 | <rendar> | lyxia, let's say i have a map, i want to insert multiple keys into one line, e.g. in python: map = {}; map["a"]=12; map["b"]=55; |
2022-11-28 13:12:59 +0100 | <mauke> | also wow, this algol(ish?) code is giving me perl4 flashbacks |
2022-11-28 13:13:11 +0100 | <mauke> | dynamically scoped everything, a 'local' keyword that is not local |
2022-11-28 13:13:22 +0100 | <dminuoso> | mauke: I would say `foo` gets implicitly compiled as a closure. The environment is implicitly available because its global. |
2022-11-28 13:13:30 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
2022-11-28 13:13:45 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 13:13:57 +0100 | <dminuoso> | But this is a matter of what one is trying to say |
2022-11-28 13:14:02 +0100 | <mauke> | dminuoso: right. I would say 'foo' is not a closure because it doesn't use local variables from a surrounding scope (n is global, not local) |
2022-11-28 13:14:17 +0100 | <dminuoso> | there's no requirement about "local" or "global" in the original sense |
2022-11-28 13:14:25 +0100 | <dminuoso> | its merely about free and non-free variables |
2022-11-28 13:14:37 +0100 | <dminuoso> | and `n` is definitely not free under foo. |
2022-11-28 13:14:43 +0100 | <dminuoso> | *definitely free! |
2022-11-28 13:15:09 +0100 | <dminuoso> | mauke: but yeah the lines are getting blurry |
2022-11-28 13:15:28 +0100 | <dminuoso> | I dont think there's necessarily a right perspective here |
2022-11-28 13:15:43 +0100 | <dminuoso> | pick one that is suitable for whatever point it is you are trying to make |
2022-11-28 13:16:01 +0100 | <dminuoso> | if we're talking about how closrues are implemented from a compiler, this would not something you would pick as an example |
2022-11-28 13:16:28 +0100 | <dminuoso> | if we took closure by a very literal interpretation of the original sense, there would be a kind (implicit) closure here |
2022-11-28 13:17:13 +0100 | <mauke> | I'm only on page 4 of this paper, but so far Haskell doesn't qualify because it doesn't allow modification of variables |
2022-11-28 13:17:37 +0100 | <mauke> | and they explicitly rule out substitution as inefficient and semantically wrong, I think |
2022-11-28 13:18:03 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
2022-11-28 13:18:04 +0100 | <dminuoso> | Im not citing this as the authoritative definition on what a closure is. |
2022-11-28 13:18:30 +0100 | <dminuoso> | IT's merely where the term `closure` was originally invented. |
2022-11-28 13:18:34 +0100 | <dminuoso> | The principle idea is a bit older |
2022-11-28 13:19:34 +0100 | <dminuoso> | The idea derives directly from lambda calculus: https://www.cs.kent.ac.uk/people/staff/dat/tfp12/tfp12.pdf - but the term `closure` was, at least as far as I can find in literature, defined by the paper you are reading. |
2022-11-28 13:19:41 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 13:21:18 +0100 | <mauke> | rendar: let map = Map.fromList [("a", 12), ("b", 55)] |
2022-11-28 13:21:31 +0100 | <dminuoso> | mauke: mmm, strike what I said last here. I need to revisit it later |
2022-11-28 13:21:34 +0100 | <dminuoso> | Gotta do some more work |
2022-11-28 13:21:38 +0100 | <mauke> | rendar: let map = Map.insert "b" 55 (Map.insert "a" 12 Map.empty) |
2022-11-28 13:22:03 +0100 | <rendar> | mauke, here we go, i see |
2022-11-28 13:22:16 +0100 | <dminuoso> | rendar: map `union` Map.fromList [("a", 12), ("b", 13), ("c", 14)] |
2022-11-28 13:22:25 +0100 | Lycurgus | (~juan@user/Lycurgus) (Quit: Exeunt https://tinyurl.com/4m8d4kd5) |
2022-11-28 13:22:29 +0100 | <dminuoso> | Gives you a way to insert a bunch of keys in one go. |
2022-11-28 13:22:31 +0100 | <mauke> | rendar: let map1 = Map.empty; map2 = Map.insert "a" 12 map1; map3 = Map.insert "b" 55 map2 |
2022-11-28 13:22:44 +0100 | <dminuoso> | Or you can do: |
2022-11-28 13:25:21 +0100 | <dminuoso> | % let m = M.fromList [("x", 20), ("y", 21)] in foldr (uncurry M.insert) m [("a", 12), ("b", 13), ("c", 14) -- rendar |
2022-11-28 13:25:21 +0100 | <yahb2> | <interactive>:32:116: error: ; parse error (possibly incorrect indentation or mismatched brackets) |
2022-11-28 13:25:26 +0100 | <dminuoso> | % let m = M.fromList [("x", 20), ("y", 21)] in foldr (uncurry M.insert) m [("a", 12), ("b", 13), ("c", 14)] -- rendar |
2022-11-28 13:25:26 +0100 | <yahb2> | fromList [("a",12),("b",13),("c",14),("x",20),("y",21)] |
2022-11-28 13:25:57 +0100 | zant | (~zant@62.96.232.178) |
2022-11-28 13:25:58 +0100 | <rendar> | i see |
2022-11-28 13:26:05 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-11-28 13:26:44 +0100 | <dminuoso> | So feel free to define `insertMany ls m = foldr (uncurry M.insert) m ls` yourself perhaps |
2022-11-28 13:27:21 +0100 | <rendar> | yes, interesting, thanks |
2022-11-28 13:28:16 +0100 | <mauke> | :mind_blown: I just understood where Common Lisp's FUNCTION comes from, I think |
2022-11-28 13:28:34 +0100 | <mauke> | that's bizarre |
2022-11-28 13:30:44 +0100 | <dminuoso> | mauke: what part are you referring to? |
2022-11-28 13:34:03 +0100 | <mauke> | the stuff about binding environments vs. activation environments and the difference between passing (QUOTE f) and (FUNCTION f) to another function |
2022-11-28 13:34:45 +0100 | <mauke> | FUNCTION explicitly captures the current environment |
2022-11-28 13:35:01 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-28 13:35:32 +0100 | <mauke> | it's funny to me that they keep talking about FUNARGs and function scopes, seemingly without consideration of ordinary (non-function) scopes |
2022-11-28 13:35:58 +0100 | <dminuoso> | I think much of the background is really lost in time. |
2022-11-28 13:36:11 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 13:36:35 +0100 | <dminuoso> | What we perceive as `scope` is something that has arisen from decades of research and implementation. |
2022-11-28 13:36:51 +0100 | <mauke> | but you'd have the same problems with block scopes, so "the binding environment is where the function is passed as an argument" is not universally useful |
2022-11-28 13:37:58 +0100 | <mauke> | in their syntax: define f(x) = begin; return x + a; end; begin local a; a = 1; begin local a; a = 2; z = f(3); end; end; |
2022-11-28 13:39:03 +0100 | <mauke> | or maybe the definition of f should be moved into the first "local a" block |
2022-11-28 13:39:47 +0100 | <mauke> | anyway, the point is that there's possible confusion about which environment to use for 'a' (which is free in f), regardless of whether we're passing f around as an argument or not |
2022-11-28 13:41:25 +0100 | <mauke> | also, it's nice to be vindicated in claiming that C does not have a stack :-) |
2022-11-28 13:41:39 +0100 | <mauke> | (which is like saying that Haskell does not have closures) |
2022-11-28 13:42:48 +0100 | <mauke> | the language spec doesn't require a stack, and my suggested alternative implementation technique was a garbage-collected chain of call frames |
2022-11-28 13:43:14 +0100 | <mauke> | which is pretty much what they're describing in fig. 4 |
2022-11-28 13:43:46 +0100 | <dminuoso> | I mean in todays context, evaluating a function in the activation environment is for most languages a really strange thing. |
2022-11-28 13:44:03 +0100 | <dminuoso> | It's something that only surfaces in the context of meta programming. |
2022-11-28 13:45:07 +0100 | <dminuoso> | Say in LISP, but also in languages like Ruby. |
2022-11-28 13:46:17 +0100 | <mauke> | perl4 essentially uses the "shallow" technique described in the paper |
2022-11-28 13:46:35 +0100 | <mauke> | which is dynamic scope |
2022-11-28 13:50:25 +0100 | <mauke> | ! |
2022-11-28 13:50:33 +0100 | <mauke> | "A useful metaphor for the difference between FUNCTION and QUOTE in LISP is to think of QUOTE as a porous or an open covering of the function since free variables escape to the current environment. FUNCTION acts as a closed or nonporous covering (hence the term "closure" used by Landin)." |
2022-11-28 13:50:34 +0100 | acidjnk_new | (~acidjnk@p200300d6e7137a02d08b41b0bf630fa5.dip0.t-ipconnect.de) |
2022-11-28 13:51:25 +0100 | razetime | (~quassel@49.207.211.219) (Ping timeout: 260 seconds) |
2022-11-28 13:51:29 +0100 | <mauke> | I hereby claim that comp.sci has been misusing the term "closure" because ^that reads exactly like my version |
2022-11-28 13:51:43 +0100 | opticblast | (~Thunderbi@172.58.84.42) |
2022-11-28 13:51:50 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Quit: Lost terminal) |
2022-11-28 13:52:01 +0100 | <mauke> | (also, it's a description of semantics, not an implementation technique) |
2022-11-28 13:52:20 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2022-11-28 13:53:27 +0100 | nattiestnate | (~nate@114.122.106.30) |
2022-11-28 13:54:47 +0100 | akegalj | (~akegalj@180-237.dsl.iskon.hr) |
2022-11-28 13:55:26 +0100 | Feuermagier_ | (~Feuermagi@2a02:2488:4211:3400:6419:933b:46e0:8942) (Quit: Leaving) |
2022-11-28 13:55:38 +0100 | Feuermagier | (~Feuermagi@user/feuermagier) |
2022-11-28 13:56:23 +0100 | opticblast | (~Thunderbi@172.58.84.42) (Ping timeout: 265 seconds) |
2022-11-28 13:59:25 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Remote host closed the connection) |
2022-11-28 14:05:33 +0100 | nattiestnate | (~nate@114.122.106.30) (Read error: Connection reset by peer) |
2022-11-28 14:05:48 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2022-11-28 14:07:13 +0100 | nate4 | (~nate@98.45.169.16) |
2022-11-28 14:09:00 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-11-28 14:09:00 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-11-28 14:09:19 +0100 | dsrt^ | (~dsrt@76.145.185.103) (Remote host closed the connection) |
2022-11-28 14:10:26 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-11-28 14:10:35 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds) |
2022-11-28 14:10:39 +0100 | thyriaen | (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) |
2022-11-28 14:12:18 +0100 | nate4 | (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
2022-11-28 14:12:39 +0100 | tabaqui | (~root@88.231.62.215) |
2022-11-28 14:13:23 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-11-28 14:14:08 +0100 | o | (niko@libera/staff/niko) |
2022-11-28 14:14:08 +0100 | o | niko |
2022-11-28 14:14:57 +0100 | <mauke> | dangit, why does it cost 53€ just to read a single chapter ("A λ-Calculus Approach") of a book from 1966? |
2022-11-28 14:16:01 +0100 | <thyriaen> | mauke, supply and demand set the price |
2022-11-28 14:16:05 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
2022-11-28 14:19:51 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-11-28 14:21:26 +0100 | <Hecate> | mauke: because it's a damn oligopoly and we ought to break it |
2022-11-28 14:22:10 +0100 | <Hecate> | this why Aaron Swartz died |
2022-11-28 14:22:48 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 260 seconds) |
2022-11-28 14:26:04 +0100 | <mauke> | supply is effectively infinite; it's small digital file |
2022-11-28 14:27:47 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
2022-11-28 14:30:20 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-11-28 14:30:20 +0100 | {-d0t-} | (~q_q@user/-d0t-/x-7915216) |
2022-11-28 14:31:02 +0100 | <{-d0t-}> | ohai! What's the best way to check for a cabal flag value in code? Are there any autogenerated CPP macros? |
2022-11-28 14:34:44 +0100 | <dminuoso> | Yes. |
2022-11-28 14:36:31 +0100 | <dminuoso> | Or well, no. But you can just declare them yourself,. |
2022-11-28 14:36:48 +0100 | <dminuoso> | if flag(Debug) cpp-options: -DDEBUG |
2022-11-28 14:36:58 +0100 | <{-d0t-}> | Huh.. i thought there was something ready to use. |
2022-11-28 14:37:00 +0100 | <{-d0t-}> | :( |
2022-11-28 14:37:07 +0100 | <dminuoso> | I think this is better since its less magical |
2022-11-28 14:37:20 +0100 | merijn | (~merijn@86.86.29.250) |
2022-11-28 14:37:43 +0100 | nschoe | (~q@141.101.51.197) |
2022-11-28 14:37:47 +0100 | <dminuoso> | {-d0t-}: Do take note, that cabal flags dont transend to dependencies. |
2022-11-28 14:37:56 +0100 | Xeroine | (~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in) |
2022-11-28 14:38:00 +0100 | <{-d0t-}> | Yeah, I know. |
2022-11-28 14:38:13 +0100 | <{-d0t-}> | In my case, I'm making some dependencies (and associated modules) conditional. |
2022-11-28 14:38:36 +0100 | <dminuoso> | It is a bit sad we have to resort to CPP to make this happen. :( |
2022-11-28 14:38:44 +0100 | Xeroine | (~Xeroine@user/xeroine) |
2022-11-28 14:38:49 +0100 | <{-d0t-}> | Yup. |
2022-11-28 14:38:56 +0100 | <{-d0t-}> | Someone ought to fix this |
2022-11-28 14:39:06 +0100 | <dminuoso> | But if you have some interface module in the middle, you can nicely decouple it and keep CPP in just that interface module. |
2022-11-28 14:39:11 +0100 | <dminuoso> | So there is at least a workable approach |
2022-11-28 14:39:21 +0100 | <{-d0t-}> | That's exactly what I'm doing. |
2022-11-28 14:39:38 +0100 | <{-d0t-}> | I just thought Cabal defined some macros for me so that I wouldn't have to. |
2022-11-28 14:39:56 +0100 | <dminuoso> | https://gitlab.haskell.org/haskell/filepath/-/blob/master/System/FilePath.hs |
2022-11-28 14:40:03 +0100 | <dminuoso> | This is how filepath does it. |
2022-11-28 14:40:09 +0100 | <dminuoso> | (Which I think is the only sane approach) |
2022-11-28 14:40:15 +0100 | <dminuoso> | {-d0t-}: It does some, but not that. |
2022-11-28 14:41:02 +0100 | <dminuoso> | https://cabal.readthedocs.io/en/stable/cabal-package.html?highlight=CURRENT_COMPONENT_ID#condition… |
2022-11-28 14:43:42 +0100 | <{-d0t-}> | Oh boy.. |
2022-11-28 14:43:59 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds) |
2022-11-28 14:44:41 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-11-28 14:45:02 +0100 | <dminuoso> | __HADDOCK_VERSION__ this looks useful for imposing terror on my unsuspecting users. |
2022-11-28 14:45:47 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 264 seconds) |
2022-11-28 14:46:43 +0100 | merijn | (~merijn@86.86.29.250) (Ping timeout: 260 seconds) |
2022-11-28 14:48:07 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 14:50:17 +0100 | <mauke> | having stared at https://en.wikipedia.org/wiki/Man_or_boy_test for a while, I now think I understand ALGOL |
2022-11-28 14:51:20 +0100 | <mauke> | I wrote a Perl translation: https://paste.tomsmeding.com/kXUEBIrQ |
2022-11-28 14:51:34 +0100 | <mauke> | it produces the expected results, so that is nice |
2022-11-28 14:55:23 +0100 | razetime | (~quassel@49.207.211.219) |
2022-11-28 14:59:07 +0100 | shapr | (~user@68.54.166.125) |
2022-11-28 14:59:47 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2022-11-28 15:01:38 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-28 15:03:05 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 265 seconds) |
2022-11-28 15:03:51 +0100 | <pavonia> | There's even an OEIS entry for the expected values :D |
2022-11-28 15:04:22 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-11-28 15:05:29 +0100 | shriekingnoise | (~shrieking@186.137.167.202) |
2022-11-28 15:12:17 +0100 | zant | (~zant@62.96.232.178) (Read error: Connection reset by peer) |
2022-11-28 15:12:29 +0100 | <mauke> | I have now translated the Perl code to Haskell: https://paste.tomsmeding.com/p73ggnJX |
2022-11-28 15:12:39 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 15:13:13 +0100 | zant | (~zant@62.96.232.178) |
2022-11-28 15:13:46 +0100 | Guest70 | (~Guest70@217.64.164.1) |
2022-11-28 15:13:49 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer) |
2022-11-28 15:14:06 +0100 | AlexNoo_ | (~AlexNoo@178.34.163.118) |
2022-11-28 15:14:25 +0100 | CiaoSen | (~Jura@p200300c95716a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-11-28 15:14:35 +0100 | <mauke> | actually, this is stupid. I should've just moved the runST into man_or_boy and have it return Int |
2022-11-28 15:16:26 +0100 | sammelweis | (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) |
2022-11-28 15:16:37 +0100 | AlexZenon | (~alzenon@94.233.240.159) (Ping timeout: 265 seconds) |
2022-11-28 15:17:35 +0100 | Alex_test | (~al_test@94.233.240.159) (Ping timeout: 264 seconds) |
2022-11-28 15:17:38 +0100 | AlexNoo | (~AlexNoo@94.233.240.159) (Ping timeout: 260 seconds) |
2022-11-28 15:22:06 +0100 | AlexZenon | (~alzenon@178.34.163.118) |
2022-11-28 15:22:21 +0100 | AlexNoo_ | AlexNoo |
2022-11-28 15:22:38 +0100 | Alex_test | (~al_test@178.34.163.118) |
2022-11-28 15:26:17 +0100 | <mauke> | dminuoso: https://www.cs.cmu.edu/~crary/819-f09/Landin64.pdf is the paper you want, I think. it introduces closure exactly as you described |
2022-11-28 15:32:52 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-28 15:33:57 +0100 | accord | (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2022-11-28 15:39:05 +0100 | kenran | (~user@user/kenran) |
2022-11-28 15:41:16 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Quit: Client closed) |
2022-11-28 15:41:58 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-11-28 15:42:14 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-28 15:45:21 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-28 15:49:23 +0100 | zeenk | (~zeenk@2a02:2f04:a208:3600::7fe) (Ping timeout: 264 seconds) |
2022-11-28 15:49:57 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 15:50:41 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-11-28 15:50:43 +0100 | kenran | (~user@user/kenran) (Remote host closed the connection) |
2022-11-28 16:02:12 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
2022-11-28 16:12:38 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
2022-11-28 16:20:44 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
2022-11-28 16:22:12 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-11-28 16:23:52 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
2022-11-28 16:25:23 +0100 | <JensPetersen[m]> | int-e: sorry missed your response - ya would like something simpler like pseudocode: `["--some-opt=dir" </> subdir | subdir <- maybeSubdir]` - but ya I could get most of that with a list instead it is true |
2022-11-28 16:27:11 +0100 | td_ | (~td@83.135.9.9) (Ping timeout: 264 seconds) |
2022-11-28 16:27:25 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-11-28 16:28:41 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 16:34:35 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.7.1) |
2022-11-28 16:36:59 +0100 | bobbingbob | (~bobbingbo@s010610561191f5d6.lb.shawcable.net) |
2022-11-28 16:39:10 +0100 | acidjnk_new | (~acidjnk@p200300d6e7137a02d08b41b0bf630fa5.dip0.t-ipconnect.de) (Remote host closed the connection) |
2022-11-28 16:39:32 +0100 | acidjnk_new | (~acidjnk@p200300d6e7137a02d08b41b0bf630fa5.dip0.t-ipconnect.de) |
2022-11-28 16:42:15 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-11-28 16:44:40 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) |
2022-11-28 16:45:39 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) |
2022-11-28 16:50:30 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) (Ping timeout: 260 seconds) |
2022-11-28 16:51:50 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2022-11-28 16:53:14 +0100 | td_ | (~td@83.135.9.9) |
2022-11-28 16:54:22 +0100 | <JensPetersen[m]> | s/dir/defaultdir/ |
2022-11-28 16:54:40 +0100 | <JensPetersen[m]> | s/opt/dir/, s/dir/defaultdir/ |
2022-11-28 16:54:47 +0100 | akegalj | (~akegalj@180-237.dsl.iskon.hr) (Quit: leaving) |
2022-11-28 17:01:30 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-28 17:08:31 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-11-28 17:08:58 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-11-28 17:11:07 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-11-28 17:14:39 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 17:14:44 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds) |
2022-11-28 17:19:54 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
2022-11-28 17:20:44 +0100 | Guest|28 | (~Guest|28@static.142.45.203.116.clients.your-server.de) |
2022-11-28 17:26:09 +0100 | CiaoSen | (~Jura@p200300c95716a5002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
2022-11-28 17:29:20 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) |
2022-11-28 17:29:22 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2022-11-28 17:29:46 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-11-28 17:30:26 +0100 | nate4 | (~nate@98.45.169.16) |
2022-11-28 17:31:36 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 17:32:51 +0100 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) (Read error: Connection reset by peer) |
2022-11-28 17:34:50 +0100 | Guest70 | (~Guest70@217.64.164.1) (Quit: Client closed) |
2022-11-28 17:36:11 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2022-11-28 17:37:03 +0100 | Kaiepi | (~Kaiepi@108.175.84.104) (Ping timeout: 260 seconds) |
2022-11-28 17:37:25 +0100 | cafkafk | (~cafkafk@fsf/member/cafkafk) (Remote host closed the connection) |
2022-11-28 17:38:13 +0100 | cafkafk | (~cafkafk@fsf/member/cafkafk) |
2022-11-28 17:39:20 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-11-28 17:40:01 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) (Remote host closed the connection) |
2022-11-28 17:41:35 +0100 | teo | (~teo@user/teo) (Ping timeout: 264 seconds) |
2022-11-28 17:43:43 +0100 | teo | (~teo@user/teo) |
2022-11-28 17:43:57 +0100 | mbuf | (~Shakthi@49.204.116.36) (Ping timeout: 268 seconds) |
2022-11-28 17:44:27 +0100 | mbuf | (~Shakthi@49.204.114.228) |
2022-11-28 17:45:18 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-11-28 17:45:59 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.7.1) |
2022-11-28 17:46:08 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-11-28 17:46:58 +0100 | kadobanana | (~mud@user/kadoban) |
2022-11-28 17:47:18 +0100 | mbuf | (~Shakthi@49.204.114.228) (Client Quit) |
2022-11-28 17:47:35 +0100 | mud | (~mud@user/kadoban) (Ping timeout: 264 seconds) |
2022-11-28 17:48:07 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 17:48:22 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-11-28 17:49:53 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-11-28 17:52:44 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-28 17:55:20 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-11-28 17:56:04 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-28 17:56:23 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:5ce5:bc7f:bfbf:ad95) (Quit: WeeChat 2.8) |
2022-11-28 17:58:28 +0100 | fserucas | (~fserucas@212.157.222.2) (Ping timeout: 248 seconds) |
2022-11-28 18:13:48 +0100 | acidjnk_new | (~acidjnk@p200300d6e7137a02d08b41b0bf630fa5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-11-28 18:14:28 +0100 | merijn | (~merijn@86.86.29.250) |
2022-11-28 18:17:17 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
2022-11-28 18:19:03 +0100 | merijn | (~merijn@86.86.29.250) (Ping timeout: 260 seconds) |
2022-11-28 18:19:47 +0100 | acidjnk_new | (~acidjnk@p200300d6e7137a0209d789e407054230.dip0.t-ipconnect.de) |
2022-11-28 18:23:42 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-11-28 18:24:38 +0100 | bjourne2 | (~bjorn@94.191.152.191) |
2022-11-28 18:28:44 +0100 | Player205[m] | (~rootsandw@2001:470:69fc:105::2:ca2e) (Quit: Reconnecting) |
2022-11-28 18:28:47 +0100 | razetime | (~quassel@49.207.211.219) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2022-11-28 18:28:58 +0100 | Player205[m] | (~rootsandw@2001:470:69fc:105::2:ca2e) |
2022-11-28 18:29:56 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) |
2022-11-28 18:33:50 +0100 | euandreh | (~Thunderbi@179.214.113.107) |
2022-11-28 18:33:54 +0100 | nate4 | (~nate@98.45.169.16) (Ping timeout: 268 seconds) |
2022-11-28 18:36:41 +0100 | ubert | (~Thunderbi@p548c9ce5.dip0.t-ipconnect.de) (Quit: ubert) |
2022-11-28 18:38:10 +0100 | zant | (~zant@62.96.232.178) (Ping timeout: 265 seconds) |
2022-11-28 18:39:07 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2022-11-28 18:39:45 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 18:43:28 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) (Remote host closed the connection) |
2022-11-28 18:44:20 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds) |
2022-11-28 18:44:36 +0100 | Kaiepi | (~Kaiepi@108.175.84.104) |
2022-11-28 18:46:37 +0100 | zant | (~zant@62.96.232.178) |
2022-11-28 18:48:51 +0100 | causal | (~user@50.35.83.177) (Quit: WeeChat 3.7.1) |
2022-11-28 18:50:47 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Quit: Client closed) |
2022-11-28 18:55:37 +0100 | <shapr> | howdy JensPetersen[m] , how's code? |
2022-11-28 18:56:44 +0100 | zant | (~zant@62.96.232.178) (Ping timeout: 260 seconds) |
2022-11-28 18:56:52 +0100 | <JensPetersen[m]> | shapr: hey shapr - mostly good - some up and downs haha - how are you? |
2022-11-28 18:57:33 +0100 | nschoe | (~q@141.101.51.197) (Ping timeout: 260 seconds) |
2022-11-28 19:00:24 +0100 | teo | (~teo@user/teo) (Ping timeout: 265 seconds) |
2022-11-28 19:02:26 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-28 19:03:11 +0100 | gff_ | (~gff@user/gff) (Ping timeout: 264 seconds) |
2022-11-28 19:10:19 +0100 | kuribas | (~user@ptr-17d51en6r1xh6ck9pgx.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1)) |
2022-11-28 19:11:45 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-11-28 19:12:06 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) |
2022-11-28 19:16:27 +0100 | aeroplane | (~user@user/aeroplane) (Ping timeout: 268 seconds) |
2022-11-28 19:17:39 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 19:18:12 +0100 | econo | (uid147250@user/econo) |
2022-11-28 19:21:12 +0100 | tomokojun | (~tomokojun@97-120-65-27.ptld.qwest.net) |
2022-11-28 19:23:12 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) (Remote host closed the connection) |
2022-11-28 19:25:49 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-28 19:32:06 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Quit: Client closed) |
2022-11-28 19:32:57 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-28 19:33:13 +0100 | zant | (~zant@62.214.20.26) |
2022-11-28 19:33:42 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Client Quit) |
2022-11-28 19:33:59 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-28 19:35:33 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) |
2022-11-28 19:37:34 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 260 seconds) |
2022-11-28 19:38:02 +0100 | zant | (~zant@62.214.20.26) (Ping timeout: 268 seconds) |
2022-11-28 19:38:16 +0100 | mmhat | (~mmh@p200300f1c72545bdee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7.1) |
2022-11-28 19:38:22 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-11-28 19:39:26 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-11-28 19:40:03 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Quit: Client closed) |
2022-11-28 19:42:46 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-28 19:42:52 +0100 | mmhat | (~mmh@p200300f1c72545bdee086bfffe095315.dip0.t-ipconnect.de) |
2022-11-28 19:44:24 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-28 19:47:39 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) (Remote host closed the connection) |
2022-11-28 19:49:06 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds) |
2022-11-28 19:49:21 +0100 | mestre | (~mestre@191.177.185.178) |
2022-11-28 19:49:58 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2022-11-28 19:54:46 +0100 | zant | (~zant@62.214.20.26) |
2022-11-28 19:55:39 +0100 | {-d0t-} | (~q_q@user/-d0t-/x-7915216) (Ping timeout: 260 seconds) |
2022-11-28 19:56:51 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-28 20:01:07 +0100 | <shapr> | JensPetersen[m]: I'm learning nix, it's slow but useful |
2022-11-28 20:01:36 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-28 20:04:48 +0100 | Topsi | (~Topsi@dyndsl-095-033-226-009.ewe-ip-backbone.de) |
2022-11-28 20:06:08 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) |
2022-11-28 20:25:03 +0100 | cafkafk | (~cafkafk@fsf/member/cafkafk) (Remote host closed the connection) |
2022-11-28 20:26:56 +0100 | cafkafk | (~cafkafk@fsf/member/cafkafk) |
2022-11-28 20:30:44 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-11-28 20:34:21 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 20:34:40 +0100 | gmg | (~user@user/gehmehgeh) |
2022-11-28 20:36:43 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-28 20:39:05 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds) |
2022-11-28 20:39:33 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-11-28 20:41:44 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Quit: Client closed) |
2022-11-28 20:42:02 +0100 | titibandit | (~titibandi@xdsl-78-34-153-165.nc.de) |
2022-11-28 20:42:29 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-11-28 20:43:56 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-28 20:44:58 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 20:45:34 +0100 | <lagash> | shapr: have you looked into Guix too? |
2022-11-28 20:45:37 +0100 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
2022-11-28 20:46:06 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Client Quit) |
2022-11-28 20:46:31 +0100 | <shapr> | lagash: I have, but I also want to play steam games |
2022-11-28 20:46:39 +0100 | <shapr> | I much prefer using guile instead of nix the language |
2022-11-28 20:46:46 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-28 20:46:53 +0100 | <shapr> | lagash: what do you think about those two? |
2022-11-28 20:47:56 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-28 20:48:08 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) |
2022-11-28 20:49:28 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Client Quit) |
2022-11-28 20:50:38 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-28 20:51:36 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
2022-11-28 20:51:47 +0100 | tomokojun | (~tomokojun@97-120-65-27.ptld.qwest.net) (Leaving) |
2022-11-28 20:52:23 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2022-11-28 20:52:32 +0100 | <davean> | he nix language frankly sucks. The nix community seems to suffer less GNU disease though :/ I'd like the best of both frankly. |
2022-11-28 20:53:03 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:8066:4970:bd6:2327) (Ping timeout: 260 seconds) |
2022-11-28 20:53:45 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-28 20:57:42 +0100 | Guest75 | (~Guest75@178.141.153.191) |
2022-11-28 20:58:18 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 260 seconds) |
2022-11-28 20:58:35 +0100 | <monochrom> | What is GNU disease? |
2022-11-28 20:59:29 +0100 | <monochrom> | (being obsessed with GPL-like and LGPL-like licenses?) |
2022-11-28 21:00:45 +0100 | <Guest75> | Hello. If I have a recursive function (parser), is there an easy way to track all the calls (call tree) to better track it's behaviour? I'm now thinking to be passing the function f as an argument and return not <result> but (tracked, <result>) from a function itself. Return value is already a monad. Should I (learn about and) use Writer monad |
2022-11-28 21:00:45 +0100 | <Guest75> | instead? |
2022-11-28 21:02:03 +0100 | <monochrom> | Yes Writer helps. |
2022-11-28 21:02:27 +0100 | <monochrom> | Or your own monad that contains the equiv of Writer features (and other features you need). |
2022-11-28 21:02:40 +0100 | <Guest75> | aha |
2022-11-28 21:03:12 +0100 | <EvanR> | something like strict State monad is probably better for logging |
2022-11-28 21:03:51 +0100 | <Guest75> | Will Writer (or State) also help to go back and forth... to on/off the logging (i.e. after debugged — no logging = more performance)? |
2022-11-28 21:04:44 +0100 | <EvanR> | for that, disabling whole features at compile time, maybe use a preprocessor macro to change the entire type definition |
2022-11-28 21:04:56 +0100 | <EvanR> | same API, different implementation (one where logging does nothing) |
2022-11-28 21:05:00 +0100 | <Guest75> | aha! that's what language CPP is for |
2022-11-28 21:05:17 +0100 | <Guest75> | cool thanks! |
2022-11-28 21:06:43 +0100 | pavonia | (~user@user/siracusa) |
2022-11-28 21:11:51 +0100 | <sclv> | tonight or wed are good -- poss thurs, but i might need to juggle stuff if so |
2022-11-28 21:12:03 +0100 | <sclv> | whoops, wrong channel lmao |
2022-11-28 21:15:55 +0100 | <EvanR> | #juggling |
2022-11-28 21:17:57 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 21:19:21 +0100 | <davean> | monochrom: being obsessed with system design, policy, licensing, etc over actually ever delivering something that works. |
2022-11-28 21:20:58 +0100 | <davean> | monochrom: don't worry though, GUIX is infact working on HURD support |
2022-11-28 21:21:21 +0100 | <EvanR> | 90% of my OS thanks gnu for that |
2022-11-28 21:21:51 +0100 | <davean> | Yah its not all bad, but they seriously need a project manager over there. |
2022-11-28 21:22:14 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
2022-11-28 21:22:20 +0100 | <davean> | EvanR: actually, does it? I'm not sure what GNU stuff is actually on my system these days |
2022-11-28 21:22:30 +0100 | <davean> | ... gnu tar might be the only thing really. |
2022-11-28 21:24:27 +0100 | <EvanR> | well coreutils certainly |
2022-11-28 21:24:36 +0100 | <lagash> | shapr: I think Nix is better integrated / more popular with the Haskell ecosystem, but I much prefer Guix |
2022-11-28 21:24:51 +0100 | <monochrom> | I like system design, but yeah, not obseesed, planning should be proportionate to intended scale. |
2022-11-28 21:24:59 +0100 | <davean> | EvanR: I don't have coreutils, do you actually? |
2022-11-28 21:25:21 +0100 | <davean> | I haven't used coreutils in YEARS |
2022-11-28 21:25:29 +0100 | <EvanR> | I dunno just reading man pages |
2022-11-28 21:26:04 +0100 | <jean-paul[m]> | davean: `ls`? |
2022-11-28 21:26:10 +0100 | <monochrom> | Um do you mean you're on some BSD altogether? :) |
2022-11-28 21:26:10 +0100 | <davean> | jean-paul[m]: not coreutils for me |
2022-11-28 21:27:03 +0100 | <davean> | monochrom: I have FreeBSD boxes, but actually all my linux boxes ended up with a busybox and similar base util set ages ago by default. |
2022-11-28 21:27:15 +0100 | <monochrom> | Ah busybox |
2022-11-28 21:27:29 +0100 | <mauke> | glibc? |
2022-11-28 21:28:20 +0100 | <davean> | Oh I probably have glibc on a number of systems |
2022-11-28 21:28:36 +0100 | <davean> | I certainly have ones without it, but yah, I bet all my standard client systems have that kicking around. |
2022-11-28 21:31:06 +0100 | dibblego | (~dibblego@haskell/developer/dibblego) (Ping timeout: 256 seconds) |
2022-11-28 21:31:20 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Quit: Client closed) |
2022-11-28 21:31:45 +0100 | fpnoob | (~nick@c-73-253-54-136.hsd1.ma.comcast.net) |
2022-11-28 21:33:54 +0100 | dibblego | (~dibblego@122-199-1-30.ip4.superloop.com) |
2022-11-28 21:33:54 +0100 | dibblego | (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host) |
2022-11-28 21:33:54 +0100 | dibblego | (~dibblego@haskell/developer/dibblego) |
2022-11-28 21:35:33 +0100 | zant | (~zant@62.214.20.26) (Ping timeout: 265 seconds) |
2022-11-28 21:36:12 +0100 | fpnoob | (~nick@c-73-253-54-136.hsd1.ma.comcast.net) (Ping timeout: 256 seconds) |
2022-11-28 21:38:21 +0100 | zant | (~zant@62.214.20.26) |
2022-11-28 21:38:59 +0100 | mokee | (~mokee@37.228.215.235) (Quit: off) |
2022-11-28 21:41:20 +0100 | sagax | (~sagax_nb@user/sagax) |
2022-11-28 21:44:44 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds) |
2022-11-28 21:49:34 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-28 21:51:01 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-11-28 21:56:33 +0100 | Guest4247 | (~Guest42@ip1f13ab93.dynamic.kabel-deutschland.de) |
2022-11-28 21:56:53 +0100 | <Guest4247> | @pl (#)s=(maximum$s)-(minimum$s) |
2022-11-28 21:56:54 +0100 | <lambdabot> | (line 1, column 6): |
2022-11-28 21:56:54 +0100 | <lambdabot> | unexpected "(" |
2022-11-28 21:56:54 +0100 | <lambdabot> | expecting operator |
2022-11-28 21:57:01 +0100 | <Guest4247> | @pl f s=(maximum$s)-(minimum$s) |
2022-11-28 21:57:01 +0100 | <lambdabot> | f = liftM2 (-) maximum minimum |
2022-11-28 21:58:03 +0100 | <Guest4247> | @pl $ |
2022-11-28 21:58:04 +0100 | <lambdabot> | (line 1, column 1): |
2022-11-28 21:58:04 +0100 | <lambdabot> | unexpected "$" |
2022-11-28 21:58:04 +0100 | <lambdabot> | expecting white space, "()", natural, identifier, lambda abstraction or expression |
2022-11-28 21:58:24 +0100 | <Guest4247> | @pl f = &&& |
2022-11-28 21:58:24 +0100 | <lambdabot> | (line 1, column 4): |
2022-11-28 21:58:24 +0100 | <lambdabot> | unexpected " " |
2022-11-28 21:58:24 +0100 | <lambdabot> | expecting operator |
2022-11-28 21:58:52 +0100 | <mauke> | f = (&&&) is already pointless |
2022-11-28 22:00:14 +0100 | Sauvin | s |
2022-11-28 22:00:30 +0100 | s | Sauvin |
2022-11-28 22:02:08 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-11-28 22:05:29 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2022-11-28 22:05:37 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-28 22:05:59 +0100 | titibandit | (~titibandi@xdsl-78-34-153-165.nc.de) (Remote host closed the connection) |
2022-11-28 22:06:44 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2022-11-28 22:08:11 +0100 | opticblast | (~Thunderbi@2607:fb90:2821:dea0:64bc:f886:4fdb:368e) |
2022-11-28 22:10:55 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Read error: Connection reset by peer) |
2022-11-28 22:11:23 +0100 | mmhat | (~mmh@p200300f1c72545bdee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.7.1) |
2022-11-28 22:15:16 +0100 | k` | (~user@152.7.255.204) |
2022-11-28 22:18:29 +0100 | <k`> | Is it possible to re-export another package's module at the same location? (e.g. Package foo exports modules Foo and Foo.Core, then I split move Foo.Core into a new package foo-core -- I want to make this a nonbreaking change by re-exporting Foo.Core from foo. Or am I stuck putting the module at Foo.Core.Core in foo-core and then re-exporting it in foo at the old location?) |
2022-11-28 22:19:51 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-11-28 22:20:07 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-11-28 22:20:37 +0100 | <k`> | Is that clear? |
2022-11-28 22:21:24 +0100 | <Rembane> | k`: Just out of curiosity, have you tried it? |
2022-11-28 22:22:41 +0100 | <jackdk> | should be doable with package-qualified imports i reckon |
2022-11-28 22:23:03 +0100 | <k`> | I'm not sure how I would go about doing it. Putting a dependency's exposed module under exposed-modules results in compilation failure. |
2022-11-28 22:24:50 +0100 | <k`> | Package qualified imports makes sense. Do you know whether it would "just work" like importing the same definition from multiple modules, or would it mess up a third package that depends on both? |
2022-11-28 22:25:31 +0100 | <c_wraith> | k`: look at the mixins field in cabal |
2022-11-28 22:27:01 +0100 | <c_wraith> | https://cabal.readthedocs.io/en/stable/cabal-package.html#pkg-field-mixins |
2022-11-28 22:28:09 +0100 | <k`> | Thanks, will do! |
2022-11-28 22:28:23 +0100 | Guest|28 | (~Guest|28@static.142.45.203.116.clients.your-server.de) (Ping timeout: 264 seconds) |
2022-11-28 22:29:13 +0100 | <c_wraith> | it's technically part of backpack, but I've only ever used it for module renaming |
2022-11-28 22:31:40 +0100 | <jackdk> | package foo would declare module Foo.Core, and re-export everything from package foo-core's Foo.Core. I forget the syntax; check the GHC user's guidee |
2022-11-28 22:35:20 +0100 | <k`> | Looks like there's a 'reexported-modules' field in Cabal. Think that's exactly what I want. |
2022-11-28 22:41:58 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 22:47:09 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds) |
2022-11-28 22:50:19 +0100 | Guest4247 | (~Guest42@ip1f13ab93.dynamic.kabel-deutschland.de) (Quit: Client closed) |
2022-11-28 22:55:53 +0100 | Pickchea | (~private@user/pickchea) |
2022-11-28 22:59:30 +0100 | k` | (~user@152.7.255.204) (Ping timeout: 256 seconds) |
2022-11-28 23:05:38 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-11-28 23:06:52 +0100 | opticblast | (~Thunderbi@2607:fb90:2821:dea0:64bc:f886:4fdb:368e) (Ping timeout: 256 seconds) |
2022-11-28 23:15:00 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 23:19:57 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-28 23:21:52 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-11-28 23:32:58 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2022-11-28 23:37:50 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2022-11-28 23:43:13 +0100 | michalz | (~michalz@185.246.204.73) (Remote host closed the connection) |
2022-11-28 23:45:46 +0100 | <Inst> | btw, does anyone use Servant.JS here? |
2022-11-28 23:46:01 +0100 | <Inst> | I need to ask about whether Servant,JS can generate code without the ugly little vars floating around |
2022-11-28 23:50:33 +0100 | elevenkb | (~elevenkb@105.184.125.168) |
2022-11-28 23:52:05 +0100 | elevenkb | (~elevenkb@105.184.125.168) (Client Quit) |
2022-11-28 23:54:53 +0100 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-11-28 23:55:17 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-11-28 23:57:05 +0100 | <EvanR> | like, pointless JS? |
2022-11-28 23:58:32 +0100 | k` | (~user@2605:a601:a60d:5400:15e4:d05d:ca31:2ab6) |
2022-11-28 23:59:09 +0100 | tomboy64 | (~tomboy64@user/tomboy64) (Remote host closed the connection) |