Home liberachat/#haskell: Logs Calendar

Logs on 2023-11-20 (liberachat/#haskell)

00:00:05 <m257> I usually use tabs for indentations and spaces for alignment.
00:00:22 <m257> That way people can configure their indentation while also rendering properly on all editors.
00:00:23 <zzz> if i'm using Relude how do lookup a Map?
00:00:31 <monochrom> Exactly. Haskell and Python have no indentation, only alignment.
00:00:37 × SmirnoffBG quits (~Guest86@2a01:5a8:302:def2:8c8e:534:2c31:3b30) (Quit: Client closed)
00:00:42 <zzz> do i have to `import Data.Map.Strict ( lookup )` ?
00:00:56 <EvanR> m257, that will work, but you still have to follow layout rules with either tabs or spaces
00:01:18 <ski> m257 : still missing a `then' in last paste
00:01:18 <EvanR> haskell is indentation sensitive
00:01:40 <Axman6> m257: that doesn't really make sense though, because tabs have configurable widths in most editors, and Haskell assumes that width is 8
00:01:57 <EvanR> it should still work regardless of your tab settings
00:01:58 <zzz> Axman6: haskell assumes what now?
00:02:06 <EvanR> assuming you only use tabs
00:02:11 <m257> Why does indentation matter in haskell? Most langauges ignore whitespace.
00:02:29 <m257> It worked now by the way.
00:02:29 <EvanR> no language ignores whitespace
00:02:37 <EvanR> whitespace is used to separate tokens
00:02:40 <Axman6> I;d say python is a pretty popular language, and it has similar rules
00:03:12 <EvanR> e.g. f x is different from fx in any language that allows multi-letter variables
00:03:13 <zzz> m257: a poor choice has been made. it's supposed to held readability by vertical aligning stuff
00:03:21 <ski> Axman6 : it's fine if you always break line after layout-introducing keywords followed by a multi-line block, and then indent only with tabs. or, if you make sure that your mixing of tabs and spaces is consistent, the leading whitespace of one line is a prefix of that on an adjacent line
00:03:58 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 255 seconds)
00:04:06 <Axman6> I feel that leads to really ugly code though
00:04:15 <m257> How can I pass input to haskell programs from the commandline?
00:04:17 <Axman6> spaces are unambiguous
00:04:24 <m257> How do I access argv?
00:04:28 <Axman6> @hoogle getArgs
00:04:28 <lambdabot> System.Environment getArgs :: IO [String]
00:04:28 <lambdabot> System.Environment.Blank getArgs :: IO [String]
00:04:28 <lambdabot> System.Directory.Internal.Prelude getArgs :: IO [String]
00:04:44 <ski> m257 : you can always use explicit `{',`;',`}' instead of layout, in Haskell. most people don't, for the most part, though. sometimes you'll see e.g. `x = 1; y = 2', fitting multiple declarations in the same line. and longer snippets passed to lambdabot also often use `;' and curly brackets
00:04:55 <EvanR> the amount of tabs a space is worth is ambiguous, better to use tabs xD
00:04:57 <ski> main = do
00:05:02 <ski> args <- getArgs
00:05:04 <Axman6> But if you need anything more structured, optparse-applicative is the general recommendation for command line option parsing
00:05:10 <zzz> anyways, i'm trying out relude and i'm not sure what i'm supposed to do if i want to use functions from containers
00:05:16 <ski> n <- readIO (head args)
00:05:16 <Axman6> c-c-c-combo breaker
00:05:38 <ski> EvanR : or to mix consistently
00:05:49 <m257> So to get the first argument args <- getArgs; args[1]?
00:05:50 <ski> (as in dmwit's article)
00:05:53 <ski> no
00:05:58 <Axman6> no
00:06:00 <ski> arg:rest <- getArgs
00:06:04 <Axman6> that's not how lists work
00:06:18 <m257> I am completely new here so no clue.
00:06:24 <ski> no worry, it's fine
00:06:25 <Axman6> m257: you should probably start with a haskell tutorial if you're being tripped up by such basics
00:06:44 ski pointed to LYAH, CIS194, and a few books, earlier
00:06:56 <Axman6> Not sure what the corrent recommended place to start is - yeah probably those
00:07:08 <ski> @where LYAH
00:07:08 <lambdabot> http://www.learnyouahaskell.com/
00:07:12 <ski> @where CIS194
00:07:12 <lambdabot> <https://github.com/byorgey/haskell-course>,<https://www.seas.upenn.edu/~cis194/spring13/lectures.html>
00:07:20 <m257> I am on that website right now.
00:07:21 <ski> @where PiH
00:07:22 <lambdabot> "Programming in Haskell" by Graham Hutton in 2007-01-15,2016-09-01 at <http://www.cs.nott.ac.uk/~pszgmh/pih.html>
00:08:00 <Axman6> m257: Haskell is very different to most languages, both in its syntax, and how you program in it, so you should't expect to just be able to just start writing random things that look like other languages and have them work (this is a very common mistake, "I know language X, so I'm sure I can pick up Haskell easily")
00:08:14 <ski> @where HPFFP
00:08:14 <lambdabot> "Haskell Programming: from first principles - Pure functional programming without fear or frustration" by Chistopher Allen (bitemyapp),Julie Moronuki at <http://haskellbook.com/>,#haskell-beginners
00:08:15 <EvanR> a gentle introduction to haskell, version 98 xD
00:08:19 <ski> hah !
00:08:23 <EvanR> would explain how to index a list
00:08:31 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
00:08:46 <m257> So args !! [1]?
00:08:52 <ski> args !! 0
00:08:53 <ski> would work
00:08:55 <EvanR> :t args !! [1]
00:08:56 <lambdabot> error:
00:08:56 <lambdabot> • Variable not in scope: args :: [a]
00:08:56 <lambdabot> • Perhaps you meant data constructor ‘Args’ (imported from Lambdabot.Plugin.Haskell.Eval.Trusted)
00:08:59 <Axman6> :t (!!)
00:09:00 <lambdabot> [a] -> Int -> a
00:09:02 <ski> (it doesn't include program name)
00:09:14 <ski> but better is to use pattern-matching, probably
00:09:18 <EvanR> m257, to do trial and error, you can write :t <code> in ghci
00:09:18 <m257> In the tutorial "Steve Buscemi" !! 6 it says this probably should have realized I could apply it to args
00:09:28 <EvanR> if it doesn't type check, it can't be right
00:09:53 <ski> @hoogle getProgName
00:09:55 <lambdabot> System.Environment getProgName :: IO String
00:09:57 <lambdabot> System.Environment.Blank getProgName :: IO String
00:09:59 <lambdabot> System.Environment.Compat getProgName :: IO String
00:10:00 pavonia joins (~user@user/siracusa)
00:10:08 <Axman6> (!!) can be used on any kind of list, and strings in Haskell are just lists of characters (type String = [Char])
00:10:28 <ski> % System.Environment.getProgName
00:10:28 <yahb2> "<interactive>"
00:10:30 <ski> % System.Environment.getArgs
00:10:30 <yahb2> []
00:10:34 <m257> Is program name just args !! 0 or is that the first arg?
00:10:44 <ski> the latter
00:11:01 <m257> Axman6: Yes I would I assume strings would char arrays.
00:11:11 <probie> Lists are not arrays
00:11:20 <Axman6> you should generally forget that arrays exist
00:11:22 <ski> there are arrays, too (both mutable and immutable). but `String' is a list of `Char'acters
00:11:23 <m257> Is there a distinction between arrays and list in haskell?
00:11:29 <ski> yes
00:11:30 <Axman6> yes
00:11:37 <Axman6> they are very different
00:11:44 <Axman6> @src []
00:11:44 <lambdabot> data [] a = [] | a : [a]
00:11:44 <ski> lists are single-linked lists
00:12:03 <m257> I am use to char* str = "Blah" in C so I have never really though strings being linked list in other languages.
00:12:08 <ski> like `struct int_list { int n; struct int_list *rest; }' in C .. very roughly
00:12:14 <jackdk> m257: for historical reasons, `String` is a linked-list of `Char`. For teaching purposes this is kinda-fine-I-guess, but for anything nontrivial that works with text, use type `Text` from module `Data.Text`
00:12:25 <m257> I would think they would just be dynamic logarithmic realloc arrays.
00:12:34 <zzz> also note that lists are functional data structures while arrays are not
00:12:48 <Axman6> arrays--
00:12:49 <m257> Is the implementation of the strings different than the actual strings?
00:12:55 <jackdk> But also you can not worry about it for now — just throw out many of your intuitions about data structures
00:13:01 <Axman6> down with arrays and their O(n) nearly everything
00:13:26 <probie> m257: the problem with an immutable array (and Haskell likes immutable data structures) is that "updating" a single element involves copying the entire array
00:13:35 <Axman6> No, String in Haskell is literally a list of Char - but this is often far less expensive than it sounds
00:13:44 <ski> m257 : lists are commonly more used as "control structures" ("generators"), to iterate. you can use them to store elements, too. but it's generally not that good an idea to use `length' or `!!', unless the list is short (so it doesn't matter). lists are good for sequential access, not random access
00:13:59 <m257> To be honest assembly is simpler than this. Why do people use Haskell over other languages?
00:14:01 juri__ joins (~juri@79.140.115.182)
00:14:20 <Axman6> m257: you barely know any Haskell, how can you make thaty claim?
00:14:28 <probie> m257: why do people choose C over assembly?
00:14:59 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
00:15:05 <jackdk> m257: speaking personally, because it's at the sweet spot of "I can use types to stop myself from making many, many errors" and "there are a good number of libraries to help me get things done"
00:15:13 × juri_ quits (~juri@84-19-175-187.pool.ovpn.com) (Ping timeout: 255 seconds)
00:15:15 <m257> probie: This is not C though.
00:15:34 <jackdk> and, importantly, I can't get that type safety from any imperative languages that I'm aware of
00:15:36 <Axman6> Python is simpler than assembly, why do epople use assembly? C is simpler than python, why do people use python? Assembly is simpler than C, why do people use C? None of these things make sense
00:15:38 <m257> Comparing Haskell and other languages to C and assembly is not entirely fair.
00:15:40 <ski> Haskell is relatively high-level (although you can go lower-level, too, if you really want to). it also has an emphasis on correctness (over "please just let me run the code, okay ?")
00:16:01 <Axman6> m257: then why did you do it? =)
00:16:23 <m257> People reccomended it. I am curious and am willing to learn new things.
00:16:34 <m257> It is better to have an experience with the other side.
00:16:46 <m257> Than just ignore it because it is not the same.
00:16:55 <ski> add tools to your toolbox. more (different !) ways to think about things
00:17:47 <ski> different approaches, ways to solve programming problems
00:18:02 <probie> m257: I was hoping it would provide insight into how you think about programming languages, and either provide an avenue to answer your question, or alternatively accept that Haskell offers nothing that you want
00:18:40 <ski> m257 : anyway .. don't forget to have fun, while you're at it !
00:18:55 <jackdk> This is a good instinct m257 but I recommend trying to set aside concerns around low-level data structure representation until you've got the language itself under your belt, and then go read Okasaki's thesis or book on purely functional data structures or something to see what you can do with laziness and purely functional data structures.
00:18:57 <ski> (learning tends to become much nicer, and more efficient, if one's having fun)
00:19:10 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 276 seconds)
00:19:23 <ski> @where Okasaki
00:19:23 <lambdabot> http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf
00:19:27 <ski> @where FPDS
00:19:28 <lambdabot> I know nothing about fpds.
00:19:41 <m257> Well it is harder to have fun with Haskell because I have previous experience with C.
00:19:46 <ski> @where PFDS
00:19:46 <lambdabot> "Purely Functional Data Structures" by Chris Okasaki : Ph. D. thesis in 1996-09 at <https://web.archive.org/web/20210917054102/https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf> ; book in ((1st ed.)
00:19:46 <lambdabot> 1998-04-13 -) 1999-06-13 at <https://www.amazon.com/Purely-Functional-Structures-Chris-Okasaki/dp/0521663504>
00:20:14 <m257> Like writing programs with difficulty knowing you can do it easily with another tool.
00:20:23 <ski> set aside your experience, and comparisions, for the time being. you'll have plenty of time to compare later. trust us, this really helps improve efficiency of learning
00:20:28 <Axman6> m257: I've taught many people Haskell over the years, particularly first year university students, and it is very common that the students who know other languages struggle as much, if not more, when learning haskell because it requires you to thing differently. People who do make the effort to learn Haskell as a second or n+1 language often say it makes them a much better programmer in those other languages, and the work was well worth it
00:21:44 <ski> (the harder part of learning a new programming paradigm is *unlearning*, becoming aware of unstated assumptions about how "programming must be", being able to come at it with a "fresh, open mind". in the end, you'll end up with a richer, more well-rounded understanding of the different approaches, and their pros and cons)
00:21:50 <Axman6> m257: we can all add numbers together, so why bother learning integral calculus? We can all set things of fire, so why learn thermodynamics? You learn new thigns so you can have new thoughts, and few languages let you do that as well as Haskell
00:22:16 <m257> Axman6: I am not arguing.
00:22:24 <ski> you're fine, m257
00:22:31 <m257> Just stating my experience so far.
00:22:45 <ski> yes, that's quite okay, good
00:23:31 <ski> we're just trying to explain what, in our experience, have been a more useful stance, when learning Haskell (or other functional programming), after being previously exposed to imperative programming
00:23:50 ski started with BASIC and then assembler
00:24:04 <Axman6> m257: well, when you say things like "To be honest assembly is simpler than this. Why do people use Haskell over other languages?", it kinda sounds like you are arguing that it's not worth it, when you're in a room full of people who have come to the realisation it is absolutely worth it
00:24:37 <m257> Axman6: That wasn't my intent just so you know.
00:24:42 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
00:24:50 <ski> i don't doubt you, m257
00:24:57 <Axman6> We've all come from other languages, it's pretty rare for Haskell to be anyone's first language (though I've taught plenty of people who that was the case for, and they enjoyed it)
00:25:00 <m257> I should probably not do this over IRC and focus on the book.
00:25:15 <ski> it's just that, sometimes, people may interpret it like that. especially if there's been experience with people trolling before
00:25:33 <jackdk> "Like writing programs with difficulty knowing you can do it easily with another tool." <- this is a real and frustrating thought that many newcomers have. It has been my experience that when you take those "easy" shortcuts off the table, you have to sweat a bit more to get your head around the mental models that make programming possible without those shortcuts. But I find these models better than the ones more mainstream programming languages allow.
00:25:41 <Axman6> Feel free to ask for clarification for things in the book here (with references to the book, many of us haven't used any of them for a long time)
00:25:55 <ski> m257 : do come back and ask whenever you're wondering about something
00:26:12 <jackdk> This is why I say that "Haskell is my favourite imperative language", as well as "Haskell is my favourite dynamically-typed language", with tongue only somewhat in-cheek.
00:26:24 <m257> Axman6: I was asking about reasons why Haskell is more useful than other languages with that question. Like what types of programs are easier to write in haskell?
00:26:46 <monochrom> I go up one meta level. It is simpler to not tell other people what to do than to tell other people what to do. So why is everyone telling other people what to do? >:)
00:27:17 <m257> jackdk: lol
00:27:21 <jackdk> I find it much easier to write programs which call AWS services, because the types describe the requests and responses so much more clearly than many of the first-class SDKs.
00:27:26 <monochrom> (Answer: By a self-selection bias, programmers tend to be control freaks.)
00:27:33 <Axman6> Writing maintainable programs is certainlyeasier in Haskell, the type system saves you from a hell of a lot of pain and is a tool that works for you - if you're used to static style systems like Java, Haskell's is significantly more usewful, flexible, terse and helpful
00:27:35 <ski> monochrom : you can't tell me not to tell other people what to do
00:27:36 <ski> ;)
00:28:11 × ystael quits (~ystael@user/ystael) (Ping timeout: 252 seconds)
00:28:23 <Axman6> m257: it's one of tyhe best languages for writing concurrent systems in (just ask Facebook, their entire spam filtering infrastructe is written in Haskell and handles on the order of 2 millions requests per second)
00:29:23 <m257> Is Haskell in the real world running compiled or in a interpreter. I like how the langauge gives you the choice between them.
00:29:27 <ski> m257 : handling mini-languages, and trees, is a joy in Haskell
00:29:34 <ski> GHC is a compiler
00:29:37 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
00:29:43 <m257> and ghci?
00:29:58 <ski> also a compiler. byte-compiler. interactive (an interactor, aka REPL)
00:30:01 <haskellbridge> 06<s​m> in ghci, kind of a mixture
00:30:04 <Axman6> I've been writing Haskell professionally for about a decade, and the ability to just change something, and then find every thing that just broke, and keep making only the necessary changes until it compiles again, and be very confident it will work again is amazing
00:30:06 <m257> I am currently just using ghc. But might use the interactive mode as well.
00:30:23 <ski> (GHC is batch, not interactive)
00:30:53 <m257> Axman6: I would assume they are less breakage in a functional language.
00:31:02 <Axman6> ghci is generally what you want to use when developing small functions, so basically everything you will do as a beginner
00:31:10 <m257> Like if you change a thing it won't cascade as much.
00:31:30 <Axman6> Things definitely cascade, but the type system keeps you honest so you know exactly where to make changes
00:31:38 <ski> Axman6 : `-Wincomplete-patterns' ftw
00:31:46 <jackdk> Because your data dependencies are often much clearer (because of the purity thing), it's much less likely that changes induce spooky action at a distance.
00:31:47 <m257> Can I get ghci to load from a file? and then interactively input?
00:31:57 × zetef quits (~quassel@5.2.182.98) (Ping timeout: 256 seconds)
00:32:11 <m257> jackdk: Coming from C any small change in memory management can be dangerous.
00:32:11 <Axman6> Good luck doing that in Python, or even C - change something, think real hard, hope you thought hard enough to remember everything that change would affect, then wait for the bug reports
00:32:15 <jackdk> For starting out, `ghci Foo.hs` and then entering `:r` (short for `:reload`) will give you a pretty decent experience
00:32:18 <Axman6> ski: indeed
00:32:27 <monochrom> Instead of break vs not break, it is: break silently vs break loudly
00:32:28 <ski> m257 : `:l Foo.hs' in `ghci'
00:32:37 <ski> m257 : or `ghci Foo.hs' from command line
00:32:42 <m257> I often need to modularize in C to stop cascading effects.
00:32:42 <Axman6> m257: ghci foo.hs (or :load foo.hs when you're inside ghci already)
00:32:45 <ski> m257 : `:r' to reload, after you've saved changes to file
00:32:47 <m257> ski: Thanks.
00:33:53 <m257> Wait ghci can compile and call function like it is a shared object?
00:33:58 <m257> That is really cool.
00:34:03 <m257> I wish C had that.
00:34:46 <Axman6> I wish all the time I had a repl for C, trying to debug programs with out a repl is madenss
00:34:53 <jackdk> . o (If you really want to cause chaos, use tinycc as a library)
00:34:57 <m257> Honestly its more performant than I thought.
00:35:14 <m257> I just ran a massive recursive function and it executed quite quickly.
00:35:28 <Axman6> Haskell's performance is much closer to C's than python's
00:35:40 <ski> a lot of work has went into both low and high-level optimizations, and improving the baseline of the execution
00:35:44 <sm[i]> welcome m257.. a late reply to "To be honest assembly is simpler than this" - of course, assembly is building blocks, but Haskell lets you build much larger, more portable, and more maintainable software
00:35:48 <m257> Axman6: I have spent so many hours in gdb. I could have avoided if C had repls.
00:35:56 <Axman6> > 3^324 `div` 5^46
00:35:57 <lambdabot> 2720610248541694410640635749566672416827935594945917507340052388850816002134...
00:36:13 <ski> > length (show (3^324 `div` 5^46))
00:36:14 <lambdabot> 123
00:36:35 <EvanR> that computation is pretty fast in python
00:36:55 <Axman6> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in fibs !! 10000
00:36:58 <lambdabot> 3364476487643178326662161200510754331030214846068006390656476997468008144216...
00:37:06 <ski> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in fibs
00:37:07 <lambdabot> [0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,...
00:37:14 <Axman6> > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in length (show (fibs !! 10000))
00:37:16 <lambdabot> 2090
00:37:41 <ski> > let sieve (p:ns) = p : sieve [n | n <- ns,n `mod` p /= 0] in sieve [2 ..]
00:37:42 <lambdabot> [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,...
00:37:54 <Axman6> Yeah to be fair, python ints are not terrible, one of the few things I find not terrible about the language
00:38:20 <m257> I try to avoid python but it seems to be everywhere.
00:39:08 <m257> I am going to try and experiment with the basics of Haskell but as a beginner project would a compiler be a bit too complicated? What is a good beginner project in Haskell?
00:40:04 <ski> @let infixr 5 /\/; (/\/) :: [a] -> [a] -> [a]; [ ] /\/ ys = ys; (x:xs) /\/ ys = x : ys /\/ xs
00:40:06 <sm[i]> the simpler the better
00:40:06 <lambdabot> Defined.
00:40:27 <ski> > let abacaba = repeat 0 /\/ map (1 +) abacaba in abacaba
00:40:28 <lambdabot> [0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1...
00:41:18 <ski> > let popc = 0 : tail (popc /\/ map (1+) popc) in popc
00:41:20 <lambdabot> [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3...
00:41:40 <ski> > map popCount [0 ..]
00:41:42 <lambdabot> [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3...
00:41:49 <m257> What is good way to improve the readability of my code in Haskell? Should indent like lisp?
00:42:07 <ski> (`popCount n' counts the number of `1' bits in the binary numeral representation of `n')
00:42:32 <Axman6> m257: a compiler is a relatively common beginner-intermediate project - Haskell is very well known for implementing compilers in, but you must understand the fundamentals of the language first, and you're a long way off that
00:42:43 <Axman6> m257: read a lot of other haskell code and see what others do
00:42:44 <EvanR> m257, text adventure
00:42:58 <sm[i]> I feel that is a very particular meaning of "beginner"
00:43:00 <m257> yes that is why I said "experiment with the basics"
00:43:05 <m257> EvanR: Good Idea
00:43:15 <m257> That sounds simple enough.
00:43:36 <EvanR> single player text adventure is simple enough, then you can graduate to multiplayer or MUD xD
00:43:40 <sm[i]> most newcomers will struggle with a guess the number program
00:43:58 <m257> EvanR: I can only imagine networking in haskell.
00:44:01 <EvanR> (multi-user dungeon)
00:44:55 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 255 seconds)
00:45:26 <m257> Alright thanks guys, I am going to go now.
00:45:28 <m257> Bye
00:45:30 sm[i] would suggest https://www.joachim-breitner.de/blog/775-Learn_Haskell_on_CodeWorld_writing_Sokoban
00:46:37 <m257> sm[i]: Why wouldn't I run it locally?
00:47:04 <haskellbridge> 06<s​m> you will most likely hit a ton of tooling issues that will be a big distraction
00:48:04 <haskellbridge> 06<s​m> it's nice to have a repeatable learning path to follow, and this seems like one
00:48:25 <ski> "What I Wish I Knew When Learning Haskell" by Stephen Diehl <https://web.archive.org/web/20220513191346/https://dev.stephendiehl.com/hask/>,"Learn Haskell" by bitemyapp <https://github.com/bitemyapp/learnhaskell/>,"Functional Education" by ibid at <https://bitemyapp.com/blog/functional-education/>
00:48:30 <ski> m257 ^
00:48:30 × juri__ quits (~juri@79.140.115.182) (Read error: Connection reset by peer)
00:48:44 <ski> m257 : have fun, take care
00:48:52 juri_ joins (~juri@79.140.115.182)
00:49:08 <haskellbridge> 06<s​m> ski, WIWIKWLH seems not to be in the archive for me. (I really wish it was not dead!)
00:49:20 <jackdk> m257: My default recommendation is http://jackkelly.name/blog/archives/2022/05/28/text-mode_games_as_first_haskell_projects/
00:50:25 <ski> sm : "WIWIKWLH" ?
00:50:40 <ski> oh
00:50:41 <haskellbridge> 06<s​m> What I Wish I Knew When Learning Haskell
00:50:45 <ski> right
00:50:45 <jackdk> ski: What I Wish I Knew When Learning Haskell
00:50:56 ski never saw it abbreviated before
00:51:03 <ski> sm : anyway .. link works for me ?
00:51:26 <ski> sm : did you accidentally get the delimiting angle bracket at the end in the URL ?
00:51:48 <haskellbridge> 06<s​m> ah, yes, in Element. Better: https://web.archive.org/web/20220513191346/https://dev.stephendiehl.com/hask
00:52:39 <haskellbridge> 06<s​m> @where wiwikwlh
00:53:06 <sm[i]> @where wiwikwlh
00:53:07 <lambdabot> see wiwik
00:53:11 <sm[i]> @where wiwik
00:53:11 <lambdabot> https://github.com/sdiehl/wiwinwlh/blob/master/tutorial.md (tmp link until https://dev.stephendiehl.com/hask returns)
00:53:27 <sm[i]> aha
00:54:44 <sm[i]> @where+ wiwik https://github.com/sdiehl/wiwinwlh/blob/master/tutorial.md Steven Diehl's What I Wish I Knew When Learning Haskell
00:54:44 <lambdabot> Done.
00:56:44 <ski> <https://datatracker.ietf.org/doc/html/rfc1738#page-22>
01:00:05 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a57c:6e2:236b:24e3) (Remote host closed the connection)
01:00:19 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a57c:6e2:236b:24e3)
01:02:17 <jackdk> ski: did you mean <URL:https://datatracker.ietf.org/doc/html/rfc1738#page-22> ?
01:03:20 <ski> "In some cases"
01:04:25 <jackdk> ;-)
01:06:23 ski smiles
01:07:00 rosco joins (~rosco@175.136.157.149)
01:08:08 × juri_ quits (~juri@79.140.115.182) (Read error: Connection reset by peer)
01:09:16 juri_ joins (~juri@79.140.115.182)
01:10:27 <int-e> That standard was not written for people manually selecting the URL in their terminal. (It doesn't matter to browsers whether you grab an extra space, but they don't like < or > or :)
01:11:06 <int-e> ...unfortunate smiley
01:14:46 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a57c:6e2:236b:24e3) (Remote host closed the connection)
01:15:07 <ski> W3m used to not like extra spaces
01:15:37 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:a57c:6e2:236b:24e3)
01:15:49 <ski> (now it replaces them with `%20'. before it would beep)
01:16:15 <int-e> Well, FF ignores them.
01:16:23 ski nods
01:20:51 emmanuelux_ joins (~emmanuelu@user/emmanuelux)
01:22:16 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Ping timeout: 255 seconds)
01:26:33 <zzz> why don't we generalize take, replicate, etc to Integral?
01:28:37 <ski> @type genericReplicate
01:28:38 <lambdabot> Integral i => i -> a -> [a]
01:29:40 <glguy> Keep in mind these generic* versions of the list functions do all the math at the generic type and are generally less efficient; you need a good reason to want to use them
01:29:52 <probie> They are `Int` for historical reasons and there are generalised versions, but `Integral` is not suitable anyway, since their arguments should be non-negative
01:30:29 <ski> `Word' ought to be used more
01:30:29 <zzz> ok
01:30:34 <zzz> ski: agreed
01:31:30 <zzz> i use `default ([], Word, Text)` with ExtendedDefaultRules
01:31:51 <ski> curious
01:32:05 <ski> with `OverloadedStrings', i presume
01:32:13 <zzz> and OverloadedLists
01:32:18 <ski> mm
01:33:31 × mima quits (~mmh@aftr-62-216-211-96.dynamic.mnet-online.de) (Ping timeout: 255 seconds)
01:42:19 <m257> jackdk: Is that your personal blog? If so nice CSS. It is a very functional website.
01:43:58 <ski> m257 : see "What I Wish I Knew When Learning Haskell" (and some more) links above
01:44:16 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
01:45:30 <jackdk> m257: yes, and thank you
01:49:16 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
01:52:00 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in)
01:56:42 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
02:00:20 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
02:00:49 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:00:53 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
02:06:11 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
02:06:35 × otto_s quits (~user@p4ff27599.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
02:06:36 ec joins (~ec@gateway/tor-sasl/ec)
02:07:43 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 256 seconds)
02:08:19 otto_s joins (~user@p4ff27179.dip0.t-ipconnect.de)
02:15:25 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in)
02:20:09 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
02:20:41 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
02:20:42 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
02:20:42 wroathe joins (~wroathe@user/wroathe)
02:36:49 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
02:37:59 × Square quits (~Square@user/square) (Ping timeout: 252 seconds)
02:40:37 × jumper149 quits (~jumper149@base.felixspringer.xyz) (Quit: WeeChat 4.1.1)
02:42:17 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
02:46:07 × emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
03:12:34 × rosco quits (~rosco@175.136.157.149) (Read error: Connection reset by peer)
03:16:51 × td_ quits (~td@i53870935.versanet.de) (Ping timeout: 256 seconds)
03:18:47 td_ joins (~td@i5387090F.versanet.de)
03:22:04 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:22:04 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:22:04 finn_elija is now known as FinnElija
03:24:12 arahael joins (~arahael@1.145.82.196)
03:37:13 emmanuelux joins (~emmanuelu@user/emmanuelux)
03:42:29 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
03:43:03 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
03:43:55 terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::)
03:44:55 rosco joins (~rosco@175.136.157.149)
03:45:34 ystael joins (~ystael@user/ystael)
03:47:46 × ystael quits (~ystael@user/ystael) (Client Quit)
03:51:59 × m257 quits (~maaz@184.147.203.180) (Ping timeout: 256 seconds)
03:57:27 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
03:57:51 erty joins (~user@user/aeroplane)
03:58:13 emmanuelux joins (~emmanuelu@user/emmanuelux)
03:59:19 × codedmart quits (codedmart@2600:3c01::f03c:92ff:fefe:8511) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
03:59:35 codedmart joins (codedmart@2600:3c01::f03c:92ff:fefe:8511)
04:05:56 aforemny joins (~aforemny@i59F516DE.versanet.de)
04:05:59 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 264 seconds)
04:07:04 × aforemny_ quits (~aforemny@2001:9e8:6cc8:5c00:9c1a:8ed9:7b58:2dc2) (Ping timeout: 255 seconds)
04:07:41 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
04:09:13 johnw joins (~johnw@69.62.242.138)
04:10:17 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
04:27:27 × arahael quits (~arahael@1.145.82.196) (Ping timeout: 252 seconds)
04:30:45 × riatre quits (~quassel@2001:310:6000:f::5198:1) (Ping timeout: 260 seconds)
04:30:53 riatre joins (~quassel@2001:310:6000:f::5198:1)
04:40:43 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
04:41:44 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
04:48:01 trev joins (~trev@user/trev)
04:49:47 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
04:51:50 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
04:52:25 × erty quits (~user@user/aeroplane) (Ping timeout: 255 seconds)
04:55:27 × vilya_ quits (~vilya@user/vilya) (Ping timeout: 256 seconds)
04:57:01 vilya joins (~vilya@user/vilya)
05:09:56 arahael joins (~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net)
05:23:11 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
05:27:17 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
05:28:50 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
05:32:17 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
05:37:51 erty joins (~user@user/aeroplane)
05:40:11 × rosco quits (~rosco@175.136.157.149) (Ping timeout: 264 seconds)
05:43:52 × dibblego quits (~dibblego@haskell/developer/dibblego) (Read error: Connection reset by peer)
05:44:10 dibblego joins (~dibblego@haskell/developer/dibblego)
06:01:20 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
06:03:36 Guest35 joins (~Guest82@ppp-27-55-74-218.revip3.asianet.co.th)
06:05:02 <Guest35> Hi 👋
06:05:07 <Guest35> https://hackage.haskell.org/package/StrictCheck
06:05:15 <Guest35> this looks neat
06:05:55 <Guest35> but it doesn't have any reverse dependencies
06:06:11 <Guest35> is there a similar package that is more widely used?
06:10:48 zetef joins (~quassel@95.77.17.251)
06:17:11 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
06:17:44 <opqdonut> I guess it wouldn't show up in reverse deps if it's only used for testing a hackage library?
06:18:46 <opqdonut> but I've also never heard of StrictCheck so I can't comment on how neat it is :)
06:22:04 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
06:22:50 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:24:42 Maeda joins (~Maeda@91-161-10-149.subs.proxad.net)
06:31:11 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 252 seconds)
06:34:01 harveypwca joins (~harveypwc@2601:246:c280:7940:585a:99af:3e4c:209b)
06:34:29 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 252 seconds)
06:35:07 × Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Quit: Time to sleep!)
06:47:00 × Guest35 quits (~Guest82@ppp-27-55-74-218.revip3.asianet.co.th) (Quit: Client closed)
06:47:28 rosco joins (~rosco@175.136.157.149)
06:48:10 × rosco quits (~rosco@175.136.157.149) (Client Quit)
06:57:10 × zetef quits (~quassel@95.77.17.251) (Ping timeout: 255 seconds)
06:59:47 × analoq quits (~yashi@user/dies) (Ping timeout: 252 seconds)
07:01:13 analoq joins (~yashi@user/dies)
07:03:34 acidjnk joins (~acidjnk@p200300d6e72b9333e0d3f8384e141d02.dip0.t-ipconnect.de)
07:10:19 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Ping timeout: 256 seconds)
07:11:35 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
07:18:00 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:31:45 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:37:14 × erty quits (~user@user/aeroplane) (Read error: Connection reset by peer)
07:38:09 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
07:42:31 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
07:42:52 euleritian joins (~euleritia@dynamic-002-247-250-127.2.247.pool.telefonica.de)
07:43:11 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
07:50:40 chele joins (~chele@user/chele)
07:50:56 lortabac joins (~lorenzo@2a01:e0a:541:b8f0:668:301b:fab1:c38d)
08:04:33 misterfish joins (~misterfis@87.215.131.102)
08:05:01 zetef joins (~quassel@95.77.17.251)
08:09:49 × haskellbridge quits (~haskellbr@069-135-003-034.biz.spectrum.com) (Ping timeout: 256 seconds)
08:17:02 rosco joins (~rosco@175.136.157.149)
08:23:55 × YoungFrog quits (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Ping timeout: 255 seconds)
08:25:10 YoungFrog joins (~youngfrog@2a02:a03f:ca07:f900:97db:4ad1:c710:a642)
08:25:23 mima joins (~mmh@aftr-62-216-211-62.dynamic.mnet-online.de)
08:26:29 fendor joins (~fendor@2a02:8388:1640:be00:8705:c56:c793:802b)
08:26:49 × euleritian quits (~euleritia@dynamic-002-247-250-127.2.247.pool.telefonica.de) (Ping timeout: 256 seconds)
08:27:07 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
08:27:51 × harveypwca quits (~harveypwc@2601:246:c280:7940:585a:99af:3e4c:209b) (Quit: Leaving)
08:30:16 axeman joins (~quassel@ip5b40ac1e.dynamic.kabel-deutschland.de)
08:33:32 × kmein quits (~weechat@user/kmein) (Ping timeout: 256 seconds)
08:33:39 gmg joins (~user@user/gehmehgeh)
08:34:36 CiaoSen joins (~Jura@2a05:5800:29e:f100:2a3a:4dff:fe84:dbd5)
08:36:51 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
08:37:16 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
08:41:55 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
08:43:36 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:49:19 __monty__ joins (~toonn@user/toonn)
08:55:58 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
08:57:10 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:a57c:6e2:236b:24e3) (Remote host closed the connection)
08:58:28 × zetef quits (~quassel@95.77.17.251) (Ping timeout: 256 seconds)
08:58:49 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
09:00:55 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
09:05:22 × axeman quits (~quassel@ip5b40ac1e.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
09:06:39 × tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
09:19:52 axeman joins (~quassel@ip5b40ac1e.dynamic.kabel-deutschland.de)
09:31:08 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978)
09:31:17 × rosco quits (~rosco@175.136.157.149) (Quit: Lost terminal)
09:39:35 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Ping timeout: 264 seconds)
09:39:51 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
09:41:18 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
09:41:41 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
09:46:43 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
09:47:29 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
09:48:31 × axeman quits (~quassel@ip5b40ac1e.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
09:50:29 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
09:50:51 kmein joins (~weechat@user/kmein)
09:54:16 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978) (Ping timeout: 268 seconds)
09:57:51 axeman joins (~quassel@ip5b40ac1e.dynamic.kabel-deutschland.de)
09:59:09 danza joins (~francesco@151.57.216.176)
10:00:17 × cdsloif^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
10:00:51 × dsrt^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
10:01:39 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
10:04:13 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
10:05:25 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
10:05:37 Lord_of_Life_ is now known as Lord_of_Life
10:07:26 danse-nr3 joins (~danse@151.57.216.176)
10:10:11 × danza quits (~francesco@151.57.216.176) (Ping timeout: 264 seconds)
10:13:24 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
10:18:53 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 252 seconds)
10:27:49 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
10:30:28 <lyxia> It's a research project, a paper was published, and its authors have moved on to other things.
10:31:14 × juri_ quits (~juri@79.140.115.182) (Read error: Connection reset by peer)
10:31:35 juri_ joins (~juri@79.140.115.182)
10:32:22 haskellbridge joins (~haskellbr@069-135-003-034.biz.spectrum.com)
10:32:22 ChanServ sets mode +v haskellbridge
10:32:51 <lyxia> And I think haskellers don't yet know what we really want out of laziness to the point that we'd write formal specification about it
10:32:51 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
10:34:31 × axeman quits (~quassel@ip5b40ac1e.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
10:37:37 × mokee quits (~mokee@37.228.215.150) (Quit: off)
10:38:10 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
10:39:39 rosco joins (~rosco@175.136.157.149)
10:41:22 ivelten joins (~ivelten@2804:82b8:8:ee01:7ceb:5700:d291:7d60)
10:46:33 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
10:47:17 axeman joins (~quassel@ip5b40ac1e.dynamic.kabel-deutschland.de)
10:48:48 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
10:54:04 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
10:56:34 × danse-nr3 quits (~danse@151.57.216.176) (Read error: Connection reset by peer)
10:56:59 danse-nr3 joins (~danse@151.57.216.176)
11:01:21 × jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com)
11:02:22 ubert joins (~Thunderbi@91.141.78.225.wireless.dyn.drei.com)
11:03:37 × danse-nr3 quits (~danse@151.57.216.176) (Remote host closed the connection)
11:03:59 danse-nr3 joins (~danse@151.57.216.176)
11:06:42 × juri_ quits (~juri@79.140.115.182) (Read error: Connection reset by peer)
11:09:12 zetef joins (~quassel@95.77.17.251)
11:12:06 × Inst quits (~Inst@120.244.192.250) (Read error: Connection reset by peer)
11:18:08 × CiaoSen quits (~Jura@2a05:5800:29e:f100:2a3a:4dff:fe84:dbd5) (Ping timeout: 268 seconds)
11:22:16 juri_ joins (~juri@faikvm.com)
11:25:20 × arkeet quits (arkeet@moriya.ca) (Ping timeout: 252 seconds)
11:25:24 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
11:25:47 × zetef quits (~quassel@95.77.17.251) (Ping timeout: 264 seconds)
11:28:50 chomwitt joins (~chomwitt@2a02:587:7a24:bc00:1ac0:4dff:fedb:a3f1)
11:33:26 arkeet joins (~arkeet@moriya.ca)
11:34:47 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
11:35:29 euleritian joins (~euleritia@dynamic-002-247-251-139.2.247.pool.telefonica.de)
11:37:05 × lortabac quits (~lorenzo@2a01:e0a:541:b8f0:668:301b:fab1:c38d) (Ping timeout: 256 seconds)
11:48:59 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Read error: Connection reset by peer)
11:49:00 ht_ joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
11:51:50 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
11:52:39 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978)
11:53:29 × ht_ quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Ping timeout: 252 seconds)
11:56:22 × euleritian quits (~euleritia@dynamic-002-247-251-139.2.247.pool.telefonica.de) (Read error: Connection reset by peer)
11:56:24 × vilya quits (~vilya@user/vilya) (Ping timeout: 256 seconds)
11:56:41 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
11:58:14 vilya joins (~vilya@user/vilya)
12:00:51 lortabac joins (~lorenzo@2a01:e0a:541:b8f0:85bb:2bfd:621:a9d4)
12:02:10 sawilagar joins (~sawilagar@user/sawilagar)
12:04:59 × danse-nr3 quits (~danse@151.57.216.176) (Ping timeout: 256 seconds)
12:07:17 × haskl quits (~haskl@user/haskl) (Remote host closed the connection)
12:07:34 haskl joins (~haskl@user/haskl)
12:08:14 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
12:08:39 alp_ joins (~alp@2001:861:e3d6:8f80:8c15:d658:f6c0:b840)
12:12:58 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
12:15:32 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
12:18:25 danse-nr3 joins (~danse@151.57.216.176)
12:19:22 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 276 seconds)
12:24:38 jinsun_ joins (~jinsun@user/jinsun)
12:24:38 jinsun is now known as Guest5647
12:24:38 jinsun_ is now known as jinsun
12:25:18 × axeman quits (~quassel@ip5b40ac1e.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
12:29:07 × Guest5647 quits (~jinsun@user/jinsun) (Ping timeout: 276 seconds)
12:40:42 edr joins (~edr@user/edr)
12:42:43 × ft quits (~ft@mue-88-130-106-120.dsl.tropolys.de) (Quit: leaving)
12:53:13 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1)
12:59:16 CiaoSen joins (~Jura@2a05:5800:29e:f100:2a3a:4dff:fe84:dbd5)
13:09:06 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
13:13:19 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:13:49 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 255 seconds)
13:13:59 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978) (Ping timeout: 256 seconds)
13:14:23 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
13:21:08 Square2 joins (~Square4@user/square)
13:21:37 akegalj joins (~akegalj@78-1-185-234.adsl.net.t-com.hr)
13:23:56 × alp_ quits (~alp@2001:861:e3d6:8f80:8c15:d658:f6c0:b840) (Ping timeout: 268 seconds)
13:25:47 alp_ joins (~alp@2001:861:e3d6:8f80:3334:bb1d:62ea:76e2)
13:37:22 × rosco quits (~rosco@175.136.157.149) (Quit: Lost terminal)
13:39:48 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
13:48:46 Feuermagier_ joins (~Feuermagi@user/feuermagier)
13:48:46 Feuermagier is now known as Guest2344
13:48:46 × Guest2344 quits (~Feuermagi@user/feuermagier) (Killed (lithium.libera.chat (Nickname regained by services)))
13:48:46 Feuermagier_ is now known as Feuermagier
13:52:22 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
13:55:11 × misterfish quits (~misterfis@87.215.131.102) (Ping timeout: 264 seconds)
13:57:35 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
14:01:12 × danse-nr3 quits (~danse@151.57.216.176) (Read error: Connection reset by peer)
14:01:51 danse-nr3 joins (~danse@151.57.151.166)
14:07:06 × CiaoSen quits (~Jura@2a05:5800:29e:f100:2a3a:4dff:fe84:dbd5) (Ping timeout: 268 seconds)
14:09:02 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
14:12:33 ystael joins (~ystael@user/ystael)
14:22:05 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Excess Flood)
14:22:48 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
14:23:19 × califax quits (~califax@user/califx) (Remote host closed the connection)
14:24:44 califax joins (~califax@user/califx)
14:26:25 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
14:28:52 × danse-nr3 quits (~danse@151.57.151.166) (Ping timeout: 255 seconds)
14:31:41 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
14:32:08 danse-nr3 joins (~danse@151.57.151.166)
14:36:31 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
14:55:24 Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk)
14:57:37 × alp_ quits (~alp@2001:861:e3d6:8f80:3334:bb1d:62ea:76e2) (Ping timeout: 246 seconds)
14:59:23 axeman joins (~quassel@91.64.172.30)
15:00:29 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
15:00:42 euleritian joins (~euleritia@dynamic-002-247-251-031.2.247.pool.telefonica.de)
15:01:52 earldouglas joins (~james@user/earldouglas)
15:12:36 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978)
15:14:06 zetef joins (~quassel@95.77.17.251)
15:15:56 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
15:20:57 kiriakos joins (~kiriakos@p5b03e17a.dip0.t-ipconnect.de)
15:23:59 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
15:29:23 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
15:31:55 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978) (Ping timeout: 246 seconds)
15:40:20 × axeman quits (~quassel@91.64.172.30) (Ping timeout: 245 seconds)
15:43:03 × dolio quits (~dolio@130.44.134.54) (Quit: ZNC 1.8.2 - https://znc.in)
15:46:51 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
15:47:42 × ivelten quits (~ivelten@2804:82b8:8:ee01:7ceb:5700:d291:7d60) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:50:22 bontaq joins (~user@ool-45707d2c.dyn.optonline.net)
15:50:35 alp_ joins (~alp@2001:861:e3d6:8f80:30:6015:6959:7134)
15:56:02 × zetef quits (~quassel@95.77.17.251) (Ping timeout: 252 seconds)
15:56:21 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
15:59:01 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 256 seconds)
15:59:06 Feuermagier_ joins (~Feuermagi@user/feuermagier)
15:59:06 Feuermagier_ is now known as Feuermagier
15:59:10 × euleritian quits (~euleritia@dynamic-002-247-251-031.2.247.pool.telefonica.de) (Read error: Connection reset by peer)
15:59:28 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
16:02:59 × danse-nr3 quits (~danse@151.57.151.166) (Ping timeout: 264 seconds)
16:04:49 × Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 255 seconds)
16:06:12 Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk)
16:06:51 zetef joins (~quassel@95.77.17.251)
16:10:28 danse-nr3 joins (~danse@151.57.151.166)
16:15:04 Inst joins (~Inst@120.244.192.250)
16:15:15 <Inst> Can I have a bit of help with the applicative laws?
16:15:21 <Inst> The way I understand the 5 monad labs
16:16:05 <Inst> left identity guarantees that pure u in do notation is equivalent to let u, and is useful when you have a monadic action that can return no effect
16:16:26 <Inst> right identity guarantees that ending with pure foo at the end do notation results in no unexpected side effects
16:17:23 <Inst> associativity means that the sequence of effects is the same whether you inline a composite monadic action or refer to it as a value defined elsewhere
16:17:43 <Inst> pure = return links applicative and monad by needing the same eta operation
16:18:15 <Inst> <*> = ap means that applicatives, to have a monad, must have a sequential series of effects
16:18:25 <Inst> (<*>) = ap
16:18:40 <Inst> that matches the ap sequencing of effects
16:18:53 <Inst> pure id <*> v = v, that's identity
16:19:08 <Inst> pure f <*> pure x = pure (f x) homomorphism
16:19:27 <Inst> u <*> pure y = pure ($ y) <*> u interchange
16:19:59 <Inst> pure (.) <*> u <*> v <*> w = u <*> (v <*> w)
16:20:01 × Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 255 seconds)
16:20:04 <Inst> bleh, too sick to do this
16:20:26 <ncf> was there a question?
16:21:35 <Inst> I guess, why?
16:21:55 <Inst> The monad laws given above show how the monad laws provide useful properties
16:22:02 <Inst> how do the applicative laws provide useful properties?
16:22:53 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978)
16:24:16 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
16:24:44 <Inst> composition, at the end
16:24:58 <ncf> they're really just monoid laws in disguise; they ensure that you can express any applicative computation as liftAn f a1 ... an, where f is an n-ary function
16:25:25 <Inst> would you say monad laws are monoid laws in disguise? Because that doesn't achieve the same level of utility as the "monad laws provide useful properties for reasoning about programs"
16:25:35 <Inst> or, rather, brain dead guarantees that ensure that code works as it should
16:25:46 <Inst> ah, i see
16:26:11 <ncf> monad laws are monoid laws in even less of a disguise
16:26:50 <Inst> but thinking of monads as just a monoid in the category of burritos is, imo, less useful than thinking about them as guaranteeing braindead behavior and saving probably millions of hours by now of debugging
16:26:58 <Inst> because we're not silly enough to have too many unlawful typeclasses
16:30:28 <Inst> so, identity law, homomorphism, and interchange with applicative is just monoidal identity laws?
16:30:48 Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk)
16:31:36 × sawilagar quits (~sawilagar@user/sawilagar) (Quit: Leaving)
16:31:49 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
16:33:21 <Inst> and composition is monoidal associativity
16:34:20 sawilagar joins (~sawilagar@user/sawilagar)
16:36:51 × vilya quits (~vilya@user/vilya) (Ping timeout: 256 seconds)
16:37:11 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
16:38:06 <ncf> yeah they don't correspond 1:1 but that's roughly it
16:38:23 vilya joins (~vilya@user/vilya)
16:40:02 <Inst> but still, i'm going by the purscript explanation of the monad slaws, slightly modified
16:40:07 <Inst> why would we want these laws to hold?
16:40:35 <Inst> Identity basically means "your pure must inject no actual effects"
16:40:47 <Inst> or rather the identity effect has to be neutral relative to otther effects
16:41:15 × lortabac quits (~lorenzo@2a01:e0a:541:b8f0:85bb:2bfd:621:a9d4) (Quit: WeeChat 3.5)
16:41:16 × Luj quits (~Luj@2a01:e0a:5f9:9681:bd33:ad1d:bf52:f952) (Ping timeout: 255 seconds)
16:41:45 <Inst> homomorphism means pures have to be neutral relative to each other, i.e, i'm reading it as pures of applicative values apped together is the same as one pure of the result
16:42:08 Luj joins (~Luj@2a01:e0a:5f9:9681:865:6f61:bdb5:3f47)
16:44:14 <Inst> interchange means that pure must satisfy both left and right identity laws
16:44:16 ph88 joins (~ph88@2a02:8109:9e26:c800::302a)
16:44:43 × Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Remote host closed the connection)
16:45:30 Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk)
16:46:57 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
16:47:22 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1)
16:49:58 dhil joins (~dhil@2001:8e0:2014:3100:6b2c:5543:96da:7482)
16:51:58 lortabac joins (~lorenzo@2a01:e0a:541:b8f0:85bb:2bfd:621:a9d4)
16:52:04 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
16:52:33 ivelten joins (~ivelten@2804:82b8:8:ee01:7ceb:5700:d291:7d60)
16:56:01 × zetef quits (~quassel@95.77.17.251) (Ping timeout: 255 seconds)
16:56:19 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
17:05:07 × lortabac quits (~lorenzo@2a01:e0a:541:b8f0:85bb:2bfd:621:a9d4) (Quit: WeeChat 3.5)
17:05:45 leungbk joins (~user@2603-8000-1201-2dd2-3eb4-4f01-3467-c066.res6.spectrum.com)
17:08:21 kiriakos_ joins (~kiriakos@p57b644d2.dip0.t-ipconnect.de)
17:09:17 × kiriakos quits (~kiriakos@p5b03e17a.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
17:09:17 kiriakos_ is now known as kiriakos
17:11:33 × vilya quits (~vilya@user/vilya) (Ping timeout: 256 seconds)
17:11:59 × alp_ quits (~alp@2001:861:e3d6:8f80:30:6015:6959:7134) (Ping timeout: 256 seconds)
17:13:18 vilya joins (~vilya@user/vilya)
17:13:35 × dtman34 quits (~dtman34@c-76-156-89-180.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
17:13:36 alp_ joins (~alp@2001:861:e3d6:8f80:e42:7f5f:7c38:1b67)
17:18:54 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:19:10 Square joins (~Square@user/square)
17:19:49 ThofVe joins (~ThofVe@178.208.16.70)
17:20:37 × Square2 quits (~Square4@user/square) (Ping timeout: 256 seconds)
17:26:54 × leungbk quits (~user@2603-8000-1201-2dd2-3eb4-4f01-3467-c066.res6.spectrum.com) (Ping timeout: 268 seconds)
17:27:31 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
17:28:15 euleritian joins (~euleritia@dynamic-002-247-251-031.2.247.pool.telefonica.de)
17:28:24 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
17:28:48 × euleritian quits (~euleritia@dynamic-002-247-251-031.2.247.pool.telefonica.de) (Read error: Connection reset by peer)
17:29:04 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:29:25 × Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 255 seconds)
17:33:04 Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk)
17:33:28 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
17:33:38 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978) (Remote host closed the connection)
17:39:53 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
17:43:12 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
17:43:12 × ThofVe quits (~ThofVe@178.208.16.70) (Ping timeout: 250 seconds)
17:44:35 tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net)
17:48:24 axeman joins (~quassel@ip5b40ac1e.dynamic.kabel-deutschland.de)
17:53:59 target_i joins (~target_i@217.175.14.39)
17:58:25 fweht joins (uid404746@id-404746.lymington.irccloud.com)
17:59:34 × Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 255 seconds)
17:59:45 gmg joins (~user@user/gehmehgeh)
18:00:13 × danse-nr3 quits (~danse@151.57.151.166) (Read error: Connection reset by peer)
18:01:18 dtman34 joins (~dtman34@c-76-156-89-180.hsd1.mn.comcast.net)
18:07:06 × ivelten quits (~ivelten@2804:82b8:8:ee01:7ceb:5700:d291:7d60) (Quit: Textual IRC Client: www.textualapp.com)
18:07:29 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978)
18:08:07 Simikando joins (~Simikando@adsl-dyn216.91-127-84.t-com.sk)
18:10:19 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978) (Remote host closed the connection)
18:10:33 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978)
18:13:44 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
18:14:14 danse-nr3 joins (~danse@151.57.168.105)
18:16:04 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
18:18:59 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
18:19:16 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:23:31 <dminuoso_> Haskell wins again. I really enjoy the type separations in the `time` library. It forces you to consider timezones in a rather appropriate way, down to things like ZonedTime not having an Eq instance.
18:24:20 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
18:24:49 <dminuoso_> Though I kind of wish there was an ISO8601 type, a kind of MaybeZonedTime.
18:24:49 <monochrom> Not having Eq is a bit extremeist though...
18:25:04 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
18:25:45 <dminuoso_> Which behavior is the right Eq though? Extensional? Intensional?
18:26:06 <dminuoso_> No matter how long I think about it, I wouldnt know which one will upset people less.
18:26:15 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
18:31:32 × Arsen quits (arsen@gentoo/developer/managarm.dev.Arsen) (Read error: Connection reset by peer)
18:31:50 Arsen joins (arsen@gentoo/developer/managarm.dev.Arsen)
18:33:43 × danse-nr3 quits (~danse@151.57.168.105) (Ping timeout: 256 seconds)
18:34:16 <opqdonut> doesn't something like the new java time API have those same distinctions though?
18:35:39 <dminuoso_> Yeah, it has a very comparable API
18:38:37 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
18:39:22 euleritian joins (~euleritia@dynamic-002-247-251-031.2.247.pool.telefonica.de)
18:40:06 simendsjo joins (~user@84.209.170.3)
18:40:46 × euleritian quits (~euleritia@dynamic-002-247-251-031.2.247.pool.telefonica.de) (Read error: Connection reset by peer)
18:41:03 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
18:43:31 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 276 seconds)
18:45:38 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
18:45:55 euleritian joins (~euleritia@dynamic-002-247-251-031.2.247.pool.telefonica.de)
18:46:47 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 264 seconds)
18:49:06 danza joins (~francesco@151.57.168.105)
18:53:26 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
18:58:01 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
18:58:47 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
19:08:00 × _xor quits (~xor@72.49.195.41) (Quit: Ping timeout (120 seconds))
19:08:40 _xor joins (~xor@72.49.195.41)
19:10:28 × alp_ quits (~alp@2001:861:e3d6:8f80:e42:7f5f:7c38:1b67) (Ping timeout: 256 seconds)
19:13:41 JuanDaugherty joins (~juan@user/JuanDaugherty)
19:18:09 _xor8 joins (~xor@72.49.195.41)
19:19:55 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 276 seconds)
19:20:01 × _xor quits (~xor@72.49.195.41) (Ping timeout: 255 seconds)
19:20:01 _xor8 is now known as _xor
19:21:12 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
19:23:25 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
19:25:14 × chele quits (~chele@user/chele) (Remote host closed the connection)
19:27:09 × _xor quits (~xor@72.49.195.41) (Read error: Connection reset by peer)
19:27:33 Pickchea joins (~private@user/pickchea)
19:27:59 _xor joins (~xor@72.49.195.41)
19:29:01 swamp_ joins (~zmt00@user/zmt00)
19:29:10 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978) (Remote host closed the connection)
19:31:01 alp_ joins (~alp@2001:861:e3d6:8f80:b67b:de87:7872:e69f)
19:31:23 × Simikando quits (~Simikando@adsl-dyn216.91-127-84.t-com.sk) (Ping timeout: 256 seconds)
19:33:04 × _xor quits (~xor@72.49.195.41) (Ping timeout: 255 seconds)
19:33:07 × zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 260 seconds)
19:33:12 _xor joins (~xor@72.49.195.41)
19:33:15 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
19:51:50 × vilya quits (~vilya@user/vilya) (Ping timeout: 256 seconds)
19:53:22 vilya joins (~vilya@user/vilya)
19:53:31 × target_i quits (~target_i@217.175.14.39) (Quit: leaving)
19:54:27 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:55:38 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:57:23 × fendor quits (~fendor@2a02:8388:1640:be00:8705:c56:c793:802b) (Remote host closed the connection)
20:01:26 <zzz> what does the "unwords" mean when i do :t unwords in ghci and get: unwords :: Relude.String.Reexport.IsText t "unwords" => [t] -> t
20:02:00 <monochrom> :(
20:02:46 <monochrom> That is a type-level string literal. The jargon in the manuals (GHC's and library's) is "[type-level] symbol".
20:03:26 <zzz> monochrom: ty
20:03:29 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978)
20:03:33 <monochrom> "symbol" can be the right wording because we don't have any type-level string operations. So all you can do is use them as labels.
20:03:54 <geekosaur> as for what it's doing there, you probably need to ask a Relude developer
20:04:16 <monochrom> E.g., sometimes someone asks "can I ++ them at the type level?" Answer: Nah, don't hold your breath. :)
20:04:46 <tomsmeding> https://hackage.haskell.org/package/relude-1.2.1.0/docs/src/Relude.String.Reexport.html#IsText
20:04:57 <geekosaur> hm, I thought there were some type families for that these days
20:05:25 <kaol> Is there an extension that'd let me define something like "foo Int = 1; foo Char = 2"?
20:05:39 <geekosaur> not yet
20:05:44 <tomsmeding> it's a type class that forces t ~ Text, but gives a derogatory error message if you use String instead
20:06:21 <zzz> geekosaur: yet?
20:06:26 <zzz> how many languages is Haskell?
20:06:58 <geekosaur> there is work on Dependent Haskell, slowly
20:07:09 <kaol> I guess full blown dependent types could give this. Though don't ask me, I just read that somewhere.
20:07:23 <zzz> ah i didn't know that
20:08:18 <geekosaur> anyway I think `forall a ->` went into 9.8 but it's still somewhat limited
20:08:43 <monochrom> Do you mind a class with method foo :: Proxy a -> Int? Then the Int instance can give 1, the Char instance can give 2.
20:09:58 <kaol> I still have a fair bit to go before I'll yet need to tackle this thing.
20:10:28 <tomsmeding> using AllowAmbiguousTypes, TypeApplications and Typeable (eqTypeRep) you can get a bit closer
20:10:34 × simendsjo quits (~user@84.209.170.3) (Ping timeout: 260 seconds)
20:10:38 <tomsmeding> but that's kind of ugly
20:11:12 <tomsmeding> (i.e. only use that if you're playing around anyway)
20:11:45 × akegalj quits (~akegalj@78-1-185-234.adsl.net.t-com.hr) (Quit: leaving)
20:13:48 <monochrom> Does Agda allow that? Because Lean doesn't.
20:15:10 <ncf> allow what?
20:15:28 <monochrom> foo Int = 1; foo Char = 2. Or simpler: foo Int = 1; foo _ = 2
20:16:06 <ncf> there's no type case, but you can define an inductive-recursive universe with Int and Char in it
20:18:21 <ncf> well you can emulate something like that with a type class i guess
20:19:07 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 256 seconds)
20:19:35 <monochrom> Yeah, it's Type->Value, seems to be type classes. Dependent typing is Value->Type.
20:20:09 × motherfsck quits (~motherfsc@user/motherfsck) (Read error: Connection reset by peer)
20:21:38 <Lycurgus> is there a workaround/fix for ghcup leaving the font of the footer, polluting the shell?
20:23:29 <monochrom> I don't have that problem. But most terminals have a "reset".
20:23:40 <Lycurgus> nvm, toggling the font does it
20:23:56 <johnw> I've never seen that issue either
20:23:59 <Lycurgus> (in xterm)
20:24:40 <Lycurgus> it may have something to do with the fact I run thru vnc
20:24:54 <johnw> layers upon layers
20:25:01 <Lycurgus> but found an effective and quick fix so i'm good
20:25:16 × dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 255 seconds)
20:25:20 <zzz> some ssh wrappers tend to mess stuff up like that
20:25:30 × dhil quits (~dhil@2001:8e0:2014:3100:6b2c:5543:96da:7482) (Ping timeout: 260 seconds)
20:27:33 <Lycurgus> vnc does encrypt so ... .
20:30:25 Jackneill joins (~Jackneill@20014C4E1E1AA20094762E075B8F16EC.dsl.pool.telekom.hu)
20:31:25 × JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
20:32:11 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
20:33:00 <ski> `ghcup' changes font setting ?
20:33:08 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978) (Ping timeout: 268 seconds)
20:33:42 <ski> (not color, or markup like bold,underlined,inverse,italic, then ?)
20:33:48 L29Ah joins (~L29Ah@wikipedia/L29Ah)
20:33:57 × johnw quits (~johnw@69.62.242.138) (Quit: ZNC - http://znc.in)
20:34:24 johnw joins (~johnw@69.62.242.138)
20:34:29 <Lycurgus> no, it just leaves the slant font of footer legend as the shell font
20:34:40 <Lycurgus> after tui display
20:35:02 <ski> slat sounds like italic, to me
20:35:07 <ski> slant
20:35:14 <Lycurgus> right that
20:35:47 <ski> `tput sgr0' would probably reset it
20:36:43 <Lycurgus> it does not
20:37:18 <Lycurgus> but selecting or deselecting true type does
20:38:20 motherfsck joins (~motherfsc@user/motherfsck)
20:39:46 <ski> hm, how about
20:40:10 <ski> $ printf '\033[23m'
20:40:11 <ski> ?
20:40:34 <Lycurgus> prolly not i use that in a script but checking
20:40:58 <ski> (or '\e' instead of `\033')
20:41:59 <Lycurgus> nope
20:43:41 maaz joins (~maaz@bras-base-hspron0502w-grc-02-184-147-203-180.dsl.bell.ca)
20:43:42 <ski> what terminal ?
20:44:07 maaz is now known as m257
20:44:11 <Lycurgus> xterm
20:44:13 <ski> using any terminal multiplexer ?
20:44:20 <Lycurgus> no
20:44:25 <ski> $ printf '\e]50;#0\a'
20:44:33 <ski> that changes font (not markup) to default, here
20:45:12 <Lycurgus> nope
20:45:19 <ski> with `1'-'7' in place of `0', it changes to other fonts, in the "VT Fonts" menu (`C-mouse2')
20:45:28 <ski> (also using XTerm)
20:45:31 <Lycurgus> but I am happy with just toggling true type to clear it
20:48:24 <Lycurgus> any action in the VT menu resets it
20:48:40 <ski> hm, i see no escape sequence to toggle "TrueType Fonts"
20:49:09 <ski> hm, a control
20:49:45 <Lycurgus> well it's ctrl right click in xterm to show the menu
20:50:03 <Lycurgus> as fast as typing a cmd
20:51:05 <ski> $ printf '\e[31mfoo\e[1mbar\e[22;32;4mbaz\e[24mquux\e[39m\n'
20:51:19 <ski> does that display with some color, and bold resp. underlined ?
20:53:28 <Lycurgus> yes (in an instance where ghcup tui hadn been run)
20:53:49 <Lycurgus> as well as one where it had
20:54:05 <ski> ok (checking that you're not running some other version of 'printf' or shell with it, where `\e' isn't supported or something)
20:54:06 <Lycurgus> it's a pretty clear bug
20:54:16 <Lycurgus> has been there since first use
20:54:40 <ski> does `ghcup' set/change the font, while running ? or just at the end, when exiting ?
20:54:44 <Lycurgus> clear/classic did restore a mode
20:54:52 dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
20:55:10 <Lycurgus> well it's gotta set the slant font for the footer
20:55:21 <ski> mhm, ic
20:55:27 <Lycurgus> *didn restore
20:58:15 <ski> $ infocmp -1 | grep -e rs1 -e rs2 -e rf -e rs3 -e iprog -e is1 -e is2 -e if -e is3
20:58:20 <ski> displays anything for you ?
20:58:49 <Lycurgus> is2=\E[!p\E[?3;4l\E[4l\E>,
20:58:49 <Lycurgus> rs1=\Ec,
20:58:50 <Lycurgus> rs2=\E[!p\E[?3;4l\E[4l\E>,
20:59:18 <Lycurgus> (in a state corrupted by the bug)
20:59:21 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 256 seconds)
20:59:48 <Lycurgus> as well as after a reset
21:00:03 <mauke> infocmp shouldn't be affected by terminal state; it reads static files
21:00:33 <Lycurgus> that's not the response you expected?
21:01:26 <ski> hm, those escape sequences look reasonable, i guess
21:01:31 <ski> did you try
21:01:37 <ski> $ printf '\e]50;#0\a'
21:01:43 <ski> with `1' through `7' in place of `0' ?
21:01:50 <Lycurgus> wait gotta tui
21:02:28 <ski> mauke : yea, checking what `reset' would do
21:03:05 <ski> i guess
21:03:14 <ski> $ infocmp -1 | grep -e sitm -e ritm
21:03:16 <ski> shows nothing
21:03:39 <ski> (those are the terminfo capability names for turning on and off italic/slant)
21:03:50 <ski> hm, guess one could also double check with
21:03:59 <Lycurgus> did 8X (0-7) no effect
21:04:42 <ski> $ printf '\e[31mfoo\e[3mbar\e[32mbaz\e[23mquux\e[39m\n'
21:04:49 <ski> hm, curious
21:04:56 <Lycurgus> ritm=\E[23m,
21:04:56 <Lycurgus> sitm=\E[3m,
21:05:02 <ski> ah .. ok
21:05:08 <geekosaur> long shot: what's your window manager? (more to the point: is it tiling?)
21:05:48 <ski> hm, "did 8X (0-7) no effect" -- with out without "TrueType Font" enabled ?
21:06:00 <ski> s/out /or /
21:06:05 <Lycurgus> well the whole shebang is after boot I go to tty outside of the gui and start vncserver with fvwm as the wm
21:06:17 <geekosaur> some versions of xterm aren't smart enough to clear parts of the window outside its scrolling area as set by the expected aspect ratio, and with e.g. xmonad you need to use the LayoutHints layout modifier to make it work
21:06:25 <ski> ah, fvwm :)
21:06:27 <geekosaur> okay, fvwm isn't tiling
21:06:34 <Lycurgus> then I go back to ubuntu/unity and start stumpwm (used to use xmonad)
21:06:35 × mima quits (~mmh@aftr-62-216-211-62.dynamic.mnet-online.de) (Ping timeout: 264 seconds)
21:07:02 <Lycurgus> then i start a shell in stump and connect to the vnc
21:07:17 <ski> Lycurgus : do you get italic/slant with last `printf' above ?
21:07:25 <ski> (i'd imagine so, just double-checking)
21:08:02 <Lycurgus> ski, yes
21:08:09 <ski> (`xmonad' uses `stumpwm' !?)
21:08:15 <ski> mm, good
21:08:22 <Lycurgus> sry, n
21:08:25 zetef joins (~quassel@95.77.17.251)
21:08:31 <geekosaur> I read that as they switched from xmonad to stumpwm
21:08:31 <Lycurgus> foobarbazquux not slanted
21:08:40 <ski> <ski> $ printf '\033[23m'
21:08:43 <ski> what about
21:08:50 <ski> $ printf '\0e[23m'
21:08:53 <ski> er
21:08:54 <Lycurgus> yeah i switched from xmonad to stump
21:08:55 <ski> $ printf '\e[23m'
21:09:12 <ski> Lycurgus : oh
21:09:19 <Lycurgus> oh but i had cleared the slant
21:09:31 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
21:10:23 <Lycurgus> when i tui foobarbaz is slanted but quux isn
21:10:54 <ski> well, "barbaz" ought to be slanted, but not "foo" nor "quux"
21:11:48 <Lycurgus> right, rechecked only barbaz slants
21:11:54 <ski> ye
21:12:32 <ski> and .. the last `printf' above, after `ghcup' ?
21:13:14 <Lycurgus> repeat it to be clear
21:13:21 <ski> $ printf '\e[23m'
21:14:14 <ski> (`tput ritm' ought to be equivalent)
21:14:19 × zetef quits (~quassel@95.77.17.251) (Ping timeout: 255 seconds)
21:14:33 <Lycurgus> no effect after tui
21:14:35 zetef joins (~quassel@5.2.182.98)
21:14:47 <Lycurgus> (i.e. slant persists)
21:14:47 <ski> strange
21:14:56 <Lycurgus> i think we better drop this
21:15:01 × trev quits (~trev@user/trev) (Quit: trev)
21:15:06 <ski> does `ghcup' somehow change the "TrueType Fonts" state ?
21:15:08 × alp_ quits (~alp@2001:861:e3d6:8f80:b67b:de87:7872:e69f) (Ping timeout: 256 seconds)
21:15:13 <ski> also, you didn't answer
21:15:19 <ski> <ski> hm, "did 8X (0-7) no effect" -- with out without "TrueType Font" enabled ?
21:15:40 × elkcl quits (~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru) (Ping timeout: 255 seconds)
21:15:42 <Lycurgus> the underlying truth is that minor bugs are let go, it's a judicious use of resources
21:15:51 <ski> mhm
21:16:42 <Lycurgus> right i retrieved the command 7x without intervening ghcup
21:16:49 <ski> yes
21:17:07 <ski> and "TrueType Fonts" was off, at that time ?
21:17:15 <Lycurgus> yeah
21:17:26 <ski> ok .. i dunno
21:17:59 <Lycurgus> i'd bet money it's what I said
21:19:12 <ski> (well, perhaps you only have one (non TrueType) font configured or something. perhaps manyally changing VT Fonts (Default,Unreadable,Tiny,Small,Medium,Large,Huge,Enormous) doesn't actually change font, either, for you)
21:19:25 <ski> "what I said" -- being ?
21:19:51 <Lycurgus> well that can't be true because I can set different size TT fonts
21:20:28 <Lycurgus> what I said was that the bug will turn out to be the entering state of the term wasn restored
21:20:40 <Lycurgus> after the slant was set
21:20:41 <ski> mm, those probably wouldn't be conrolled by `\]50;#0\ª' and friends
21:20:44 <ski> , though
21:21:27 <ski> $ infocmp -1 | grep -e sgr
21:21:36 <ski> does that display an `sgr0' entry ?
21:22:31 <ski> (er, i meant `\]50;#0]a', just before)
21:22:37 <Lycurgus> i will try that and respond in #haskell-offtopic
21:22:41 <ski> `sgr0' is supposed to reset the color and markup
21:22:53 <ski> ok
21:23:49 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:25:32 elkcl joins (~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru)
21:35:59 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 264 seconds)
21:43:16 × hc quits (~hc@mail.hce.li) (Remote host closed the connection)
21:50:20 × todi quits (~todi@p4fd1a3e6.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in)
21:53:21 alp_ joins (~alp@2001:861:e3d6:8f80:3e0c:4d1b:db32:9e54)
21:54:09 todi joins (~todi@p4fd1a3e6.dip0.t-ipconnect.de)
21:54:49 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
21:58:24 Square2 joins (~Square4@user/square)
21:58:43 hc joins (~hc@mail.hce.li)
21:58:46 × Square quits (~Square@user/square) (Ping timeout: 256 seconds)
22:00:11 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:03:43 × danza quits (~francesco@151.57.168.105) (Ping timeout: 276 seconds)
22:08:47 <Lycurgus> fwiw channel, it turned out to be the window manager
22:10:48 <int-e> that's odd, it shouldn't be involved... but I *would* compare the output of `env`.
22:11:03 <int-e> or, at least, `locale`
22:11:25 Guest97 joins (~Guest97@2a01:e0a:d5d:c580:4526:81bd:b54d:9149)
22:11:35 <int-e> ah dang, but you'd need to capture that before the shell starts modifying the environment
22:13:12 Guest97 parts (~Guest97@2a01:e0a:d5d:c580:4526:81bd:b54d:9149) ()
22:14:15 <ski> `env' ? not `setenv' ?
22:15:33 <int-e> This, maybe? < /proc/$PPID/environ tr '\0' '\n' ...assuming $PPID is actually the terminal.
22:15:55 <int-e> ski: `env` without arguments prints environment variables
22:15:56 ft joins (~ft@p508db3bc.dip0.t-ipconnect.de)
22:17:26 <ski> oh .. guess i never tried using it like that
22:17:44 <ski> (also, i meant `printenv', not `setenv' ..)
22:20:47 <monochrom> :) I put this on an exam: Why I used printenv instead of echo in the previous part? With the previous part having an envvar set to something that contains \a etc.
22:22:04 <mauke> TIL about printenv
22:22:39 <mauke> I can honestly say I can't imagine a situation where I'd ever use it
22:24:10 <monochrom> Sure, I had to contrive a back story to justify having \a at all. (Hint: This envvar follows the Windows PATH convention. >:) )
22:25:07 internatetional joins (~nate@2001:448a:20a3:c2e5:71b9:a710:2866:667f)
22:25:13 <mauke> wat
22:25:18 <geekosaur> printenv dates back to csh days
22:25:32 <mauke> what's the issue with \a?
22:25:36 <monochrom> In bash there are also options to tell echo to not interpret \ . However, in my course, I stick to very barebone sh.
22:25:40 <ski> rings the bell
22:25:57 <monochrom> echo interprets \ codes by default.
22:26:00 <mauke> are we talking about a literal control character or backslash a?
22:26:06 <mauke> monochrom: no, it doesn't
22:26:17 <geekosaur> backslash a is "alarm" / ASCII 7
22:26:19 <probie> mauke: I've found it useful when I know the value of the environment variable that's breaking things, but don't know _which_ environment variable it is, which I think has come up for me about twice
22:26:22 × dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 260 seconds)
22:26:24 × internatetional quits (~nate@2001:448a:20a3:c2e5:71b9:a710:2866:667f) (Client Quit)
22:26:33 <mauke> probie: that's just env
22:26:37 <mauke> | grep
22:26:37 internatetional joins (~nate@2001:448a:20a3:c2e5:71b9:a710:2866:667f)
22:27:02 <ski> talking about backslash a, i think
22:27:25 <geekosaur> (env was introduced by UNIX System III, so 2.x/4.xBSD didn't have it)
22:27:32 <mauke> $ echo '\a'
22:27:32 <mauke> \a
22:27:34 <monochrom> Put it this way. printenv and env outputs literally \a
22:28:13 <ski> the issue would be something like `C:\foobar\aardvark'
22:28:25 <int-e> monochrom: which horrible shell are you using that has this broken `echo` builtin
22:28:30 <monochrom> Also, I teach barebone sh, so try it on sh? I certainly tested it before setting it as an exam question.
22:28:51 <int-e> dash?
22:28:55 <monochrom> Yeah
22:29:01 <int-e> ewww
22:29:40 <mauke> ok, why would you ever use dash interactively?
22:29:42 <monochrom> Here is my excuse. I want to ban <(cmd). I want students to learn cmd1 | cmd2.
22:30:00 <int-e> why
22:30:16 <mauke> point-free style :-)
22:30:19 <ski> simpler solutions over more complicated ones ?
22:30:22 <monochrom> They need to learn cmd1 | cmd2.
22:30:23 <int-e> those aren't even interchangeable, they serve different though related purposes
22:30:30 <mauke> true
22:30:49 <int-e> do you prefer `cmd < foo` or `< foo cmd`
22:30:49 <ski> but somewhat overlapping, for commands that can both take a path, and stdin
22:30:55 ski uses both
22:31:11 <monochrom> If I allow bash, they just copy code from the Internet and use <(cmd)
22:31:12 <ski> (the latter, usually, with pipelines)
22:31:36 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978)
22:31:37 <mauke> what kind of internet are you guys using?!
22:32:01 <monochrom> ... in the context of for example using sort so cmd1 | sort can also be done with sort <(cmd1) for example.
22:32:03 <ski> monochrom : i guess they'll soon ask GPT to solve it for them ?
22:32:12 notzmv joins (~zmv@user/notzmv)
22:32:16 <ski> right
22:32:31 <ski> int-e : why ?
22:33:08 <geekosaur> I only use `< foo cmd` to annoy people 🙂
22:33:10 <int-e> ski: the preference? just curiosity. I also use both.
22:33:19 <mauke> printf '%s\n' "$var" # works in dash
22:33:21 <int-e> I tend to use < foo cmd in longer pipes
22:33:57 <ski> right, ditto
22:34:00 <int-e> mauke: you could also use /bin/echo :)
22:34:10 <ski> otherwise, my default is 'cmd < foo'
22:34:31 <mauke> int-e: not if var=-n :-)
22:34:48 <int-e> true
22:34:49 <ski> shells are so much fun
22:35:09 <int-e> mauke: tbf I had \a in mind specifically
22:41:25 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:19c0:53d0:5da5:a978) (Ping timeout: 276 seconds)
22:46:37 son0p joins (~ff@181.136.122.143)
22:46:42 dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
22:49:52 × acidjnk quits (~acidjnk@p200300d6e72b9333e0d3f8384e141d02.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
22:50:09 <duncan> ski: but there's no dtrace monad
22:55:21 <ski> ?
22:59:25 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
23:03:23 × axeman quits (~quassel@ip5b40ac1e.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
23:09:51 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
23:20:42 <Axman6> can we have a dtrace monad please?
23:21:48 <duncan> You need to write fan mail to the dtrace devs and resist the urge to ask them if they've ever kissed a girl
23:22:08 <duncan> and they will then implement the dtrace monad in mdb
23:24:22 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds)
23:30:07 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
23:31:08 dyniec joins (~dyniec@dybiec.info)
23:32:39 ec joins (~ec@gateway/tor-sasl/ec)
23:42:56 × euleritian quits (~euleritia@dynamic-002-247-251-031.2.247.pool.telefonica.de) (Read error: Connection reset by peer)
23:43:13 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
23:53:19 Sgeo joins (~Sgeo@user/sgeo)

All times are in UTC on 2023-11-20.