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<sm> 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<sm> you will most likely hit a ton of tooling issues that will be a big distraction |
| 00:48:04 | <haskellbridge> | 06<sm> 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<sm> 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<sm> 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<sm> ah, yes, in Element. Better: https://web.archive.org/web/20220513191346/https://dev.stephendiehl.com/hask |
| 00:52:39 | <haskellbridge> | 06<sm> @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.