2022-03-23 00:00:28 +0100 | <abastro[m]> | Hm I guess I'd like symbolic calculator for haskell |
2022-03-23 00:00:38 +0100 | <abastro[m]> | Tho idk what would be normal form |
2022-03-23 00:00:49 +0100 | <monochrom> | My impression is that people who self-identify as "bad at math" already struggle with the full logical conclusions of equality. Though, I have no data. |
2022-03-23 00:01:00 +0100 | <[itchyjunk]> | So close to being able to solve this : https://i.imgur.com/1K4VUux.png |
2022-03-23 00:01:07 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-03-23 00:01:08 +0100 | <[itchyjunk]> | I can count how often each digit appears now. |
2022-03-23 00:01:08 +0100 | <monochrom> | The following next hurdle though, I saw it in students first-hand. |
2022-03-23 00:01:14 +0100 | <[itchyjunk]> | https://bpa.st/NA6A |
2022-03-23 00:01:35 +0100 | <monochrom> | Define f(x)=x+3, g(x)=x*4. People struggle with f(g(x)). |
2022-03-23 00:02:01 +0100 | <abastro[m]> | Yea it is hard |
2022-03-23 00:02:05 +0100 | <monochrom> | Here is why. Their mental model is like BASIC. Have a global variable x, same x for both f and g. |
2022-03-23 00:02:19 +0100 | <abastro[m]> | Granted, I wonder how ppl would even program without the ability |
2022-03-23 00:02:23 +0100 | <abastro[m]> | Oh wait |
2022-03-23 00:02:32 +0100 | <abastro[m]> | Same global variable, |
2022-03-23 00:02:43 +0100 | <monochrom> | To find f(1), set global x to 1. To find g(2), set global x to 2. Now f(g(x)) is a paradox. |
2022-03-23 00:02:58 +0100 | <abastro[m]> | Think that could be fixed by using different symbol.. maybe not? :< |
2022-03-23 00:03:19 +0100 | <abastro[m]> | So ppl's minds do operate in imperative way :< |
2022-03-23 00:03:22 +0100 | <boxscape_> | I kind of wish early mathematicians had written (x)f instead |
2022-03-23 00:04:24 +0100 | <dolio> | Variables are often poorly explained in mathematics, so it's not entirely the students' fault. |
2022-03-23 00:04:38 +0100 | <abastro[m]> | Then we won't have haskell notation |
2022-03-23 00:04:56 +0100 | <abastro[m]> | Of having `f x y z` with currying |
2022-03-23 00:04:58 +0100 | vorpuni | (~pvorp@2001:861:3881:c690:3875:d51d:97cc:8362) (Remote host closed the connection) |
2022-03-23 00:05:22 +0100 | <monochrom> | You can have "z y x f" with currying :) |
2022-03-23 00:05:39 +0100 | <abastro[m]> | Ewww |
2022-03-23 00:05:58 +0100 | <boxscape_> | kind of a RPN vibe |
2022-03-23 00:06:16 +0100 | <abastro[m]> | (((z y) x) f) |
2022-03-23 00:06:26 +0100 | <abastro[m]> | :^) |
2022-03-23 00:06:27 +0100 | <geekosaur> | forth |
2022-03-23 00:06:34 +0100 | vorpuni | (~pvorp@2001:861:3881:c690:c18a:999a:aef5:52af) |
2022-03-23 00:07:38 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 00:07:48 +0100 | <abastro[m]> | Perhaps haskell is too hard for ppl.. |
2022-03-23 00:08:09 +0100 | <geekosaur> | <cynic> thinking is too hard for people |
2022-03-23 00:08:12 +0100 | <abastro[m]> | Tho I wonder why ppl do not find programming hard |
2022-03-23 00:08:46 +0100 | <abastro[m]> | Indeed, thinking is too hard for ppl. You can see it everywhere nowadays :facepalm: |
2022-03-23 00:08:55 +0100 | <monochrom> | You may have a selection bias. People who survive 1st-year CS don't find programming hard. |
2022-03-23 00:09:00 +0100 | <dolio> | Because the problem isn't actually that Haskell is too hard for people. |
2022-03-23 00:09:07 +0100 | <[itchyjunk]> | I find programming hard. |
2022-03-23 00:09:08 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-03-23 00:10:08 +0100 | <monochrom> | I think I saw first-hand when a friend taught a "computer stuff for non-CS-majors" course and taught a little bit of python scripting. The students struggled with even for-loops. |
2022-03-23 00:10:20 +0100 | <monochrom> | And to think it was python, not even haskell. |
2022-03-23 00:10:43 +0100 | <boxscape_> | can't struggle with for loops if you language doesn't have for loops |
2022-03-23 00:10:46 +0100 | <hpc> | i mean... i struggle with loops in python |
2022-03-23 00:10:50 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-03-23 00:10:53 +0100 | <alt-romes> | boxscape_: lol |
2022-03-23 00:10:55 +0100 | <monochrom> | Haha OK. |
2022-03-23 00:11:07 +0100 | <monochrom> | But they struggled with almost everything in python. |
2022-03-23 00:11:24 +0100 | <monochrom> | Supposedly the most newbie-friendly language. |
2022-03-23 00:11:29 +0100 | <alt-romes> | boxscape_: for [1..n] (do stuff) |
2022-03-23 00:11:36 +0100 | <boxscape_> | cheating |
2022-03-23 00:11:41 +0100 | <alt-romes> | hahaha ;) |
2022-03-23 00:11:41 +0100 | <monochrom> | Probably they struggled with merely variables, too. |
2022-03-23 00:12:20 +0100 | hpc | . o O ( fizzbuzz is a legitimate job interview filtering tool ) |
2022-03-23 00:12:23 +0100 | <alt-romes> | monochrom: I've seen it too in those sort of non-CS-majors |
2022-03-23 00:12:26 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 252 seconds) |
2022-03-23 00:12:36 +0100 | <abastro[m]> | Oh I see, perhaps programming is hard but ppl do not realize |
2022-03-23 00:12:43 +0100 | <alt-romes> | fizzbuzz = fizzbuzz "See, it compiles" |
2022-03-23 00:13:00 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 252 seconds) |
2022-03-23 00:13:26 +0100 | alt-romes | (~romes@44.190.189.46.rev.vodafone.pt) (Quit: WeeChat 3.4) |
2022-03-23 00:13:33 +0100 | <abastro[m]> | And just think after learning imperative programming, that they know everything they need |
2022-03-23 00:13:40 +0100 | <abastro[m]> | And refuse to learn further |
2022-03-23 00:13:44 +0100 | <hpc> | there's a mindset of logic and precision that's required for programming (and a lot of other sciencey stuff), that's likely what's hard |
2022-03-23 00:13:50 +0100 | <abastro[m]> | Ya that is perhaps what is happening |
2022-03-23 00:14:23 +0100 | <abastro[m]> | And ppl somehow say python is easier to learn |
2022-03-23 00:14:25 +0100 | <hpc> | i want to call it "rationality" but that's a much broader and deeper term |
2022-03-23 00:14:32 +0100 | <abastro[m]> | ..like, it just has lots of resources |
2022-03-23 00:14:43 +0100 | <hpc> | and no matter what language you use, even if it's excel formulas |
2022-03-23 00:14:48 +0100 | <hpc> | you need at least a little bit of that mindset |
2022-03-23 00:15:27 +0100 | <boxscape_> | helps even if you use natural language |
2022-03-23 00:16:06 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-03-23 00:16:06 +0100 | <hpc> | yeah |
2022-03-23 00:16:16 +0100 | <hpc> | almost to the point that scientific literacy is the new book-literacy |
2022-03-23 00:16:17 +0100 | <abastro[m]> | Doesn't help with daily job tho |
2022-03-23 00:16:26 +0100 | <hpc> | (complete with percentage of population that's skilled at it) |
2022-03-23 00:16:35 +0100 | <abastro[m]> | Book literacy? |
2022-03-23 00:16:36 +0100 | <abastro[m]> | Oh |
2022-03-23 00:16:38 +0100 | <abastro[m]> | I see. |
2022-03-23 00:16:38 +0100 | <boxscape_> | hm yeah |
2022-03-23 00:17:02 +0100 | <abastro[m]> | And we see ppl revolting against authority of scientific literacy |
2022-03-23 00:17:23 +0100 | <hpc> | there's a lot of logical steps to follow in order to go from "i need to do my taxes" to "i should install an adblocker and google carefully so i don't empty my bank account" |
2022-03-23 00:17:28 +0100 | <abastro[m]> | Then there is my theory of flat earthers origin, one of the revolts |
2022-03-23 00:17:52 +0100 | <hpc> | much like the logical steps from "i am hungry" to "i should read this year's almanac so i don't deplete the nitrogen in my fields" |
2022-03-23 00:18:47 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 00:19:12 +0100 | <abastro[m]> | I guess the skill is not much help in real life tho, seeing those who lack the skill thrive in the society |
2022-03-23 00:19:24 +0100 | <hpc> | (fun fact - textiles specialists were the first commercial programmers, and farmers are behind all the recent right-to-repair bills in the US) |
2022-03-23 00:19:53 +0100 | <geekosaur> | people thrived when literacy was rare, too |
2022-03-23 00:19:57 +0100 | <hpc> | eh, i wouldn't say they thrived |
2022-03-23 00:20:33 +0100 | <abastro[m]> | I mean, those who lack the skill thrive "now" |
2022-03-23 00:21:02 +0100 | <hpc> | when i hear "thrive" i think like the nobility who spend their lives learning horse riding and astronomy for fun |
2022-03-23 00:21:07 +0100 | <hpc> | or people who fly to orbit for fun |
2022-03-23 00:21:15 +0100 | <abastro[m]> | Somehow my brain connect the dot with "University is dying in current society" |
2022-03-23 00:21:27 +0100 | <hpc> | not people who are negative net worth most of their lives and retire at the age of 70 |
2022-03-23 00:21:40 +0100 | <abastro[m]> | Yea, born as nobility greatly help there |
2022-03-23 00:22:09 +0100 | <abastro[m]> | Retire at age 70 sounds like success tbh |
2022-03-23 00:22:42 +0100 | <abastro[m]> | I heard ppl at those ages crave having jobs |
2022-03-23 00:23:05 +0100 | <hpc> | ... this is very off topic lol |
2022-03-23 00:23:24 +0100 | <abastro[m]> | Oh wait |
2022-03-23 00:23:36 +0100 | <abastro[m]> | This chat is for haskell right |
2022-03-23 00:23:39 +0100 | <abastro[m]> | Apparently I forgot |
2022-03-23 00:23:44 +0100 | <hpc> | in theory, yeah :D |
2022-03-23 00:24:04 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 00:24:05 +0100 | <abastro[m]> | (Btw is there haskell-offtopic bridged over matrix) |
2022-03-23 00:24:06 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 245 seconds) |
2022-03-23 00:24:17 +0100 | <hpc> | all of libera is bridged, i think? |
2022-03-23 00:24:29 +0100 | <geekosaur> | I see matrix folk there, don'tknow what it's called matrix side |
2022-03-23 00:24:48 +0100 | <abastro[m]> | I see, let me try |
2022-03-23 00:25:54 +0100 | <abastro[m]> | Eh idk how |
2022-03-23 00:27:31 +0100 | <abastro[m]> | Hm, does anyone got a symbolic calculator which calculates haskell terms into sensible normal forms? |
2022-03-23 00:27:36 +0100 | <boxscape_> | abastro[m] /join #haskell-offtopic:libera.chat |
2022-03-23 00:27:51 +0100 | cosimone | (~user@93-44-187-176.ip98.fastwebnet.it) (Quit: ERC (IRC client for Emacs 27.1)) |
2022-03-23 00:28:02 +0100 | <abastro[m]> | Thank you!! |
2022-03-23 00:28:07 +0100 | <boxscape_> | np |
2022-03-23 00:28:57 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 252 seconds) |
2022-03-23 00:30:07 +0100 | <abastro[m]> | As ppl p much live with calculator nowadays, I think a symbolic calculator for haskell would greatly help. |
2022-03-23 00:34:17 +0100 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 240 seconds) |
2022-03-23 00:34:25 +0100 | <Guest27> | Hmmm... sounds like a fun project |
2022-03-23 00:34:25 +0100 | <Guest27> | Perhaps peek inside GHC's frontend |
2022-03-23 00:35:10 +0100 | <geekosaur> | not sure ghc would helpmuch, ghc'sidea of normal form is core |
2022-03-23 00:35:16 +0100 | <geekosaur> | maybe hugs? |
2022-03-23 00:35:17 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 240 seconds) |
2022-03-23 00:39:15 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-03-23 00:39:53 +0100 | Benzi-Junior | (~BenziJuni@dsl-149-64-179.hive.is) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-03-23 00:39:58 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 00:44:24 +0100 | cosimone | (~user@93-44-187-176.ip98.fastwebnet.it) |
2022-03-23 00:46:38 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-03-23 00:51:51 +0100 | xff0x | (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Ping timeout: 256 seconds) |
2022-03-23 00:53:09 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
2022-03-23 00:53:16 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-03-23 00:53:48 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:156d:4cd3:81cf:f50c) (Ping timeout: 240 seconds) |
2022-03-23 00:55:51 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:2b3e:70f8:165f:be99) |
2022-03-23 00:55:54 +0100 | cosimone | (~user@93-44-187-176.ip98.fastwebnet.it) (Quit: ERC (IRC client for Emacs 27.1)) |
2022-03-23 00:56:16 +0100 | nicbk | (~nicbk@user/nicbk) |
2022-03-23 00:56:52 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-03-23 00:58:12 +0100 | sugar | (~sugar@bras-base-hmtnon1497w-grc-46-67-70-68-108.dsl.bell.ca) (Quit: Client closed) |
2022-03-23 00:58:56 +0100 | <Axman6> | > cos a ^ 2 + sin a ^ 2 :: Expr |
2022-03-23 00:58:57 +0100 | <lambdabot> | cos a * cos a + sin a * sin a |
2022-03-23 00:59:11 +0100 | acidjnk | (~acidjnk@p200300d0c7049f30dd97d7382d55cf65.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2022-03-23 00:59:13 +0100 | sciencentistguy | (~sciencent@hacksoc/ordinary-member) (Ping timeout: 256 seconds) |
2022-03-23 00:59:29 +0100 | <abastro[m]> | Ohh |
2022-03-23 00:59:59 +0100 | <geekosaur> | @hackage simple-reflect |
2022-03-23 00:59:59 +0100 | <lambdabot> | https://hackage.haskell.org/package/simple-reflect |
2022-03-23 00:59:59 +0100 | <abastro[m]> | > foldMap First [a, b, c] :: Expr |
2022-03-23 01:00:00 +0100 | <lambdabot> | error: |
2022-03-23 01:00:00 +0100 | <lambdabot> | • Couldn't match expected type ‘Expr’ with actual type ‘First a0’ |
2022-03-23 01:00:00 +0100 | <lambdabot> | • In the expression: foldMap First [a, b, c] :: Exprerror: |
2022-03-23 01:00:15 +0100 | <Axman6> | > iterate reduce (a * 7) :: Expr |
2022-03-23 01:00:17 +0100 | <lambdabot> | error: |
2022-03-23 01:00:17 +0100 | <lambdabot> | • Couldn't match expected type ‘Expr’ with actual type ‘[Expr]’ |
2022-03-23 01:00:17 +0100 | <lambdabot> | • In the expression: iterate reduce (a * 7) :: Expr |
2022-03-23 01:00:22 +0100 | <Axman6> | > iterate reduce (a * 7 :: Expr) |
2022-03-23 01:00:24 +0100 | <lambdabot> | [a * 7,a * 7,a * 7,a * 7,a * 7,a * 7,a * 7,a * 7,a * 7,a * 7,a * 7,a * 7,a *... |
2022-03-23 01:00:43 +0100 | <Axman6> | > iterate reduce (a+a+a+a+a :: Expr) |
2022-03-23 01:00:44 +0100 | <lambdabot> | [a + a + a + a + a,a + a + a + a + a,a + a + a + a + a,a + a + a + a + a,a +... |
2022-03-23 01:00:50 +0100 | <abastro[m]> | foldMap First [a :: Expr, b, c] |
2022-03-23 01:01:08 +0100 | <Axman6> | need more ? |
2022-03-23 01:01:09 +0100 | <Axman6> | > |
2022-03-23 01:02:21 +0100 | <abastro[m]> | > foldMap First [a :: Expr, b, c] |
2022-03-23 01:02:22 +0100 | <lambdabot> | error: |
2022-03-23 01:02:22 +0100 | <lambdabot> | • Couldn't match expected type ‘Maybe a’ with actual type ‘Expr’ |
2022-03-23 01:02:22 +0100 | <lambdabot> | • In the expression: a :: Expr |
2022-03-23 01:03:15 +0100 | nicbk | (~nicbk@user/nicbk) (Ping timeout: 240 seconds) |
2022-03-23 01:03:58 +0100 | <abastro[m]> | Uhm a bit tough to use |
2022-03-23 01:04:12 +0100 | <geekosaur> | yes |
2022-03-23 01:04:18 +0100 | <geekosaur> | and more than a bit limited |
2022-03-23 01:04:29 +0100 | <geekosaur> | read the docs for the simple-reflect package for details |
2022-03-23 01:04:36 +0100 | chenqisu1 | (~chenqisu1@183.217.201.47) |
2022-03-23 01:04:37 +0100 | <geekosaur> | (I pointed to it earlier) |
2022-03-23 01:05:18 +0100 | <geekosaur> | that said, it can do a surprising amount of stuff |
2022-03-23 01:06:19 +0100 | fluxit | (~fluxit@techsmix.net) |
2022-03-23 01:06:22 +0100 | <geekosaur> | > foldr f z [a,b,c] |
2022-03-23 01:06:23 +0100 | <lambdabot> | f a (f b (f c z)) |
2022-03-23 01:06:55 +0100 | <geekosaur> | > foldr (*) z [a,b,c] |
2022-03-23 01:06:56 +0100 | <lambdabot> | a * (b * (c * z)) |
2022-03-23 01:07:14 +0100 | <abastro[m]> | Interesting! |
2022-03-23 01:07:29 +0100 | <abastro[m]> | > foldMap First [a, b, c] |
2022-03-23 01:07:30 +0100 | <lambdabot> | error: |
2022-03-23 01:07:30 +0100 | <lambdabot> | • Couldn't match expected type ‘Maybe a’ with actual type ‘Expr’ |
2022-03-23 01:07:30 +0100 | <lambdabot> | • In the expression: a |
2022-03-23 01:07:39 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-03-23 01:07:42 +0100 | <abastro[m]> | Uhm that is not working |
2022-03-23 01:08:38 +0100 | <geekosaur> | First is a bit too tricky for it |
2022-03-23 01:08:56 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-03-23 01:09:53 +0100 | <boxscape_> | what output would you expect from foldMap First [a, b, c]? |
2022-03-23 01:12:20 +0100 | AdamConner-Sax[m | (~adamcsmat@2001:470:69fc:105::1:e2c8) |
2022-03-23 01:12:55 +0100 | acidsys | (~LSD@2a03:4000:55:d20::3) (Excess Flood) |
2022-03-23 01:13:25 +0100 | acidsys | (~LSD@2a03:4000:55:d20::3) |
2022-03-23 01:14:22 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) |
2022-03-23 01:15:55 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2022-03-23 01:16:24 +0100 | <abastro[m]> | Hmm |
2022-03-23 01:16:34 +0100 | <abastro[m]> | > foldMap f [a, b, c] |
2022-03-23 01:16:35 +0100 | <lambdabot> | error: |
2022-03-23 01:16:35 +0100 | <lambdabot> | • Ambiguous type variable ‘a0’ arising from a use of ‘show_M904037765254... |
2022-03-23 01:16:35 +0100 | <lambdabot> | prevents the constraint ‘(Show a0)’ from being solved. |
2022-03-23 01:16:56 +0100 | <abastro[m]> | Wait even that does not work |
2022-03-23 01:17:02 +0100 | hgolden | (~hgolden2@cpe-172-251-233-141.socal.res.rr.com) |
2022-03-23 01:17:07 +0100 | <abastro[m]> | I just want it to try simplify |
2022-03-23 01:17:32 +0100 | <abastro[m]> | Perhaps `First a <> First b <> First c` would do, idk |
2022-03-23 01:18:06 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-03-23 01:18:41 +0100 | <boxscape_> | I was going to say maybe foldMap f [a, b, c] would work if Expr had a Monoid instance, but it does |
2022-03-23 01:19:13 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 01:19:16 +0100 | <boxscape_> | > mconcat [a, b, c] |
2022-03-23 01:19:17 +0100 | <lambdabot> | mconcat [a,b,c] |
2022-03-23 01:19:22 +0100 | <boxscape_> | great |
2022-03-23 01:19:36 +0100 | <monochrom> | What is the type of First? |
2022-03-23 01:20:01 +0100 | vorpuni | (~pvorp@2001:861:3881:c690:c18a:999a:aef5:52af) (Quit: bye) |
2022-03-23 01:20:23 +0100 | <monochrom> | Equivalently, why did the error message bring up Maybe? |
2022-03-23 01:21:41 +0100 | <boxscape_> | > foldMap f [a, b, c] :: Expr |
2022-03-23 01:21:42 +0100 | <lambdabot> | f a <> f b <> f c <> mempty |
2022-03-23 01:21:44 +0100 | <boxscape_> | ^ abastro[m] |
2022-03-23 01:22:03 +0100 | zeenk | (~zeenk@2a02:2f04:a110:7d00:2011:cfed:bad7:3c94) (Quit: Konversation terminated!) |
2022-03-23 01:22:20 +0100 | <abastro[m]> | Yea, so I think even with First |
2022-03-23 01:22:34 +0100 | mvk | (~mvk@2607:fea8:5cc3:7e00::7980) |
2022-03-23 01:22:40 +0100 | <abastro[m]> | It could have gave me `First a <> First b <> First c <> mempty` but nah |
2022-03-23 01:22:49 +0100 | <boxscape_> | :t First |
2022-03-23 01:22:50 +0100 | <lambdabot> | Maybe a -> First a |
2022-03-23 01:22:56 +0100 | <abastro[m]> | Idk, I guess I have many complaints |
2022-03-23 01:23:08 +0100 | <hpc> | it can't unify Expr with (Maybe a) |
2022-03-23 01:23:15 +0100 | <abastro[m]> | Ya, the type is not matching |
2022-03-23 01:23:24 +0100 | lottaquestions | (~nick@2607:fa49:5041:a200:746b:7a76:5f:680b) (Quit: Konversation terminated!) |
2022-03-23 01:23:25 +0100 | <boxscape_> | abastro[m] I think you could make it work, but you'd need a FromExpr instance for `Maybe a` |
2022-03-23 01:23:26 +0100 | <hpc> | Expr isn't a magical fill-stuff-in-wherever type, it's basically String |
2022-03-23 01:23:35 +0100 | <monochrom> | Type checker says "the sentiment is mutual" :) |
2022-03-23 01:23:38 +0100 | <abastro[m]> | I mean sometimes the user wants that kind of simplification. |
2022-03-23 01:23:43 +0100 | <hpc> | you could make an Expr that renders as "First" though |
2022-03-23 01:26:15 +0100 | charukiewicz | (~charukiew@2600:1702:a90:2750:724d:7bff:fe2b:f560) (Remote host closed the connection) |
2022-03-23 01:26:58 +0100 | grimey63 | (~grimey@pool-108-26-37-118.syrcny.east.verizon.net) (Quit: Connection closed) |
2022-03-23 01:27:21 +0100 | nicbk | (~nicbk@user/nicbk) |
2022-03-23 01:27:30 +0100 | charukiewicz | (~charukiew@2600:1702:a90:2750::3c) |
2022-03-23 01:28:35 +0100 | <boxscape_> | > foldMap First [f, g, h] :: First Expr |
2022-03-23 01:28:37 +0100 | <lambdabot> | First {getFirst = Just f} |
2022-03-23 01:28:53 +0100 | <boxscape_> | ^ abastro[m] I did this by first defining @let instance FromExpr (Maybe Expr) where fromExpr e = Just e |
2022-03-23 01:29:31 +0100 | <boxscape_> | unfortunately doesn't really take into account the logic of First |
2022-03-23 01:29:45 +0100 | <boxscape_> | or illustrates it I mean |
2022-03-23 01:29:52 +0100 | <boxscape_> | because no Nothing elements can exist with this instance |
2022-03-23 01:29:53 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
2022-03-23 01:30:15 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-03-23 01:30:29 +0100 | <abastro[m]> | Hm, interesting |
2022-03-23 01:32:38 +0100 | <boxscape_> | abastro[m] generally Expr from simple-reflect relies on being able to make free instance for classes, so when you have specific behavior like First that's not given by a class, it's less useful |
2022-03-23 01:32:56 +0100 | <boxscape_> | (except for something like foldr where you can illustrate how it works on a container of expressions, I suppose) |
2022-03-23 01:33:53 +0100 | notzmv | (~zmv@user/notzmv) |
2022-03-23 01:36:14 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-03-23 01:38:29 +0100 | <abastro[m]> | Hm, I guess what I want is actually |
2022-03-23 01:39:29 +0100 | abastro[m] | sent a hs code block: https://libera.ems.host/_matrix/media/r0/download/libera.chat/91f90df4179b292c9a860c4637424f47bda6… |
2022-03-23 01:39:43 +0100 | <boxscape_> | yeah that makes sense |
2022-03-23 01:40:28 +0100 | <boxscape_> | abastro[m] you might be interested in this which kind of goes in that direction https://youtu.be/xZmPuz9m2t0 |
2022-03-23 01:40:47 +0100 | <Axman6> | > foldMap (First . Just) [a,b,c] :: First Expr |
2022-03-23 01:40:48 +0100 | <lambdabot> | First {getFirst = Just a} |
2022-03-23 01:41:20 +0100 | <boxscape_> | alternatively this which is a much shorter video but a similar idea https://youtu.be/SVRYcrhRCes |
2022-03-23 01:43:08 +0100 | <abastro[m]> | Thx, I'll take a look |
2022-03-23 01:48:43 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) (Quit: Ping timeout (120 seconds)) |
2022-03-23 01:49:13 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) |
2022-03-23 01:52:00 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) (Client Quit) |
2022-03-23 01:52:27 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) |
2022-03-23 01:52:39 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-03-23 01:55:27 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-03-23 01:55:27 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-03-23 01:55:27 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-03-23 01:57:09 +0100 | xff0x | (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) |
2022-03-23 01:57:42 +0100 | <Zemyla> | > (a + b) * c |
2022-03-23 01:57:44 +0100 | <lambdabot> | (a + b) * c |
2022-03-23 01:58:11 +0100 | Guest|6 | (~Guest|6@189.128.188.226) |
2022-03-23 01:59:00 +0100 | <Guest|6> | hi all, I am having some trouble installing haskell, I was wondering if someone could help me please |
2022-03-23 02:02:12 +0100 | <sm> | what's your operating system and what have you tried, Guest|6 |
2022-03-23 02:04:54 +0100 | <Guest|6> | I'm on windows 10, I tried installing haskell using the steps from the ghcup guide, and when I'm asked to install Msys2 it will throw an error |
2022-03-23 02:05:47 +0100 | <Axman6> | can you share the error? |
2022-03-23 02:07:33 +0100 | <Axman6> | @where paste |
2022-03-23 02:07:33 +0100 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
2022-03-23 02:08:07 +0100 | <Guest|6> | Exec: Error executing command curl.exe with arguments '-o |
2022-03-23 02:09:22 +0100 | <koz> | Suppose I have v :: Vector a, and I want [Vector a], which is comprised of every sub-vector of v. What's the easiest way to write this? |
2022-03-23 02:10:13 +0100 | <koz> | (specifically, proper sub-vector, aka not including v itself) |
2022-03-23 02:10:13 +0100 | <Axman6> | surely there's a vector slice function? |
2022-03-23 02:10:23 +0100 | dsrt^ | (~dsrt@96-67-120-105-static.hfc.comcastbusiness.net) (Ping timeout: 256 seconds) |
2022-03-23 02:10:31 +0100 | <koz> | Axman6: Yeah, I can do it with manual slicing, but I don't necessarily want _contiguous_ sub-vectors. |
2022-03-23 02:10:41 +0100 | <Axman6> | oh, that's less fun... |
2022-03-23 02:10:45 +0100 | <koz> | (like, non-contiguous ones should be included too) |
2022-03-23 02:10:53 +0100 | <Axman6> | hmm, I'm sure there's a filerM trick |
2022-03-23 02:11:11 +0100 | <Axman6> | > filterM (const [False,True] [1,2,3] |
2022-03-23 02:11:12 +0100 | <lambdabot> | <hint>:1:36: error: |
2022-03-23 02:11:12 +0100 | <lambdabot> | parse error (possibly incorrect indentation or mismatched brackets) |
2022-03-23 02:11:17 +0100 | <Axman6> | > filterM (const [False,True]) [1,2,3] |
2022-03-23 02:11:18 +0100 | <lambdabot> | [[],[3],[2],[2,3],[1],[1,3],[1,2],[1,2,3]] |
2022-03-23 02:11:32 +0100 | <koz> | That's 100% what I want, except the last one. |
2022-03-23 02:11:39 +0100 | <koz> | Could a list comprehension do this? |
2022-03-23 02:11:40 +0100 | <Axman6> | init :) |
2022-03-23 02:11:51 +0100 | <koz> | I guess init would work. |
2022-03-23 02:11:55 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-03-23 02:12:00 +0100 | <koz> | Something like |
2022-03-23 02:12:02 +0100 | <Axman6> | > dropb 1 $ filterM (const [True,False]) [1,2,3] |
2022-03-23 02:12:03 +0100 | <lambdabot> | error: |
2022-03-23 02:12:03 +0100 | <lambdabot> | • Variable not in scope: dropb :: t0 -> [[b0]] -> t |
2022-03-23 02:12:03 +0100 | <lambdabot> | • Perhaps you meant one of these: |
2022-03-23 02:12:06 +0100 | <Axman6> | > drop 1 $ filterM (const [True,False]) [1,2,3] |
2022-03-23 02:12:08 +0100 | <lambdabot> | [[1,2],[1,3],[1],[2,3],[2],[3],[]] |
2022-03-23 02:12:11 +0100 | Guest|6 | (~Guest|6@189.128.188.226) (Quit: Connection closed) |
2022-03-23 02:12:30 +0100 | <koz> | [v' | v <- Vector.filterM (const [False, True]) v, v' /= v]? |
2022-03-23 02:13:08 +0100 | <Axman6> | if you know where that once case is going to be, then just exclude it - it's either going to be the first or last element deopending on the order of True and False |
2022-03-23 02:13:25 +0100 | <koz> | > [v' | v' <- filterM (const [False, True]) [1, 2, 3], v' /= [1, 2, 3]] |
2022-03-23 02:13:27 +0100 | <lambdabot> | [[],[3],[2],[2,3],[1],[1,3],[1,2]] |
2022-03-23 02:13:29 +0100 | <koz> | :D |
2022-03-23 02:13:32 +0100 | <Axman6> | you're making it (more) O(n^2) by adding that check |
2022-03-23 02:13:48 +0100 | <Axman6> | since it checks every single vector. just drop the last one with init |
2022-03-23 02:13:58 +0100 | <koz> | I guess that works. |
2022-03-23 02:14:01 +0100 | <koz> | Thanks! |
2022-03-23 02:14:16 +0100 | <abastro[m]> | filterM is honestly impressive |
2022-03-23 02:14:25 +0100 | <abastro[m]> | Had hard time replicating the behavior in Scala |
2022-03-23 02:15:02 +0100 | lainon | (~lainon@c-68-46-201-40.hsd1.al.comcast.net) |
2022-03-23 02:15:24 +0100 | <koz> | Yeah, I always forget it exists, and then realize you can do so many things with it. |
2022-03-23 02:15:37 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-03-23 02:16:11 +0100 | <koz> | OK, so how about this: I have v :: Vector Word8, and I wanna make [Vector Word8] such that they're all the same length as v, but have _at least one_ element somewhere be smaller than its corresponding position in v. |
2022-03-23 02:16:35 +0100 | <koz> | Is that some kind of traverse + init combo again? |
2022-03-23 02:16:43 +0100 | <Axman6> | > filterM (const [True,False]) "abcd" -- probably a better example since it's more concise |
2022-03-23 02:16:44 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) (Quit: Ping timeout (120 seconds)) |
2022-03-23 02:16:44 +0100 | <lambdabot> | ["abcd","abc","abd","ab","acd","ac","ad","a","bcd","bc","bd","b","cd","c","d... |
2022-03-23 02:17:03 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) |
2022-03-23 02:17:17 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
2022-03-23 02:17:29 +0100 | <koz> | > traverse (\x -> [0 .. x]) [1, 2, 3] |
2022-03-23 02:17:31 +0100 | <lambdabot> | [[0,0,0],[0,0,1],[0,0,2],[0,0,3],[0,1,0],[0,1,1],[0,1,2],[0,1,3],[0,2,0],[0,... |
2022-03-23 02:17:44 +0100 | <koz> | > last . traverse (\x -> [0 .. x]) $ [1, 2, 3] |
2022-03-23 02:17:45 +0100 | <lambdabot> | [1,2,3] |
2022-03-23 02:17:48 +0100 | <koz> | HMMMM |
2022-03-23 02:18:08 +0100 | <koz> | > last . traverse (\x -> [0 .. x]) $ [0, 1, 2] |
2022-03-23 02:18:10 +0100 | <lambdabot> | [0,1,2] |
2022-03-23 02:18:14 +0100 | <koz> | OK yeah, works. |
2022-03-23 02:18:25 +0100 | <koz> | You could probably spell the filterM example with traverse too somehow. |
2022-03-23 02:19:05 +0100 | <Axman6> | foo v = replicate (V.length v) (V.replicate (V.length v) 0) :P |
2022-03-23 02:19:26 +0100 | lainon | (~lainon@c-68-46-201-40.hsd1.al.comcast.net) (Quit: Palaver https://palaverapp.com) |
2022-03-23 02:19:28 +0100 | <koz> | Wat. |
2022-03-23 02:19:44 +0100 | lainon | (~lainon@c-68-46-201-40.hsd1.al.comcast.net) |
2022-03-23 02:20:01 +0100 | <Axman6> | unless v has length 1, that will produce a list of vectors where at least one element has a value lower than its index |
2022-03-23 02:20:20 +0100 | <Axman6> | because all elements are 0 - problem solved! |
2022-03-23 02:21:10 +0100 | Techcable | (~Techcable@user/Techcable) (Remote host closed the connection) |
2022-03-23 02:21:15 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-03-23 02:22:13 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:b07b:b6be:41fa:d6a) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-03-23 02:22:39 +0100 | lainon | (~lainon@c-68-46-201-40.hsd1.al.comcast.net) (Remote host closed the connection) |
2022-03-23 02:22:45 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-03-23 02:22:47 +0100 | Techcable | (~Techcable@user/Techcable) |
2022-03-23 02:25:29 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:b07b:b6be:41fa:d6a) |
2022-03-23 02:25:37 +0100 | lumberjack123 | (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection) |
2022-03-23 02:26:57 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:b07b:b6be:41fa:d6a) (Client Quit) |
2022-03-23 02:30:27 +0100 | vglfr | (~vglfr@88.155.11.162) (Ping timeout: 256 seconds) |
2022-03-23 02:30:50 +0100 | lumberjack123 | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-03-23 02:33:20 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-03-23 02:34:45 +0100 | haasn` | (~nand@haasn.dev) |
2022-03-23 02:35:33 +0100 | alp | (~alp@user/alp) |
2022-03-23 02:36:15 +0100 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2022-03-23 02:36:24 +0100 | vysn | (~vysn@user/vysn) |
2022-03-23 02:38:43 +0100 | <abastro[m]> | Lmao |
2022-03-23 02:38:45 +0100 | haasn | (~nand@haasn.dev) (Ping timeout: 256 seconds) |
2022-03-23 02:38:45 +0100 | haasn` | haasn |
2022-03-23 02:41:11 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4.1) |
2022-03-23 02:41:34 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2022-03-23 02:42:28 +0100 | lainon | (lainon@gateway/vpn/protonvpn/lainon) |
2022-03-23 02:49:24 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 02:54:49 +0100 | jao | (~jao@45.152.183.53) (Remote host closed the connection) |
2022-03-23 02:59:24 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-03-23 03:05:40 +0100 | y04nn | (~y04nn@2a03:1b20:1:e011::a19e) |
2022-03-23 03:11:43 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
2022-03-23 03:13:57 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 252 seconds) |
2022-03-23 03:15:04 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-03-23 03:21:29 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 03:23:43 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-03-23 03:30:34 +0100 | awpr | (uid446117@id-446117.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-03-23 03:34:15 +0100 | ubert1 | (~Thunderbi@p200300ecdf1588c644ba34ac9ed54fc8.dip0.t-ipconnect.de) |
2022-03-23 03:34:55 +0100 | ubert | (~Thunderbi@p200300ecdf158894f1c8f499466ba149.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2022-03-23 03:34:55 +0100 | ubert1 | ubert |
2022-03-23 03:34:55 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2022-03-23 03:37:14 +0100 | neurocyte0917090 | (~neurocyte@user/neurocyte) (Ping timeout: 268 seconds) |
2022-03-23 03:54:20 +0100 | k8yun | (~k8yun@user/k8yun) |
2022-03-23 03:54:39 +0100 | alp | (~alp@user/alp) (Ping timeout: 252 seconds) |
2022-03-23 03:55:33 +0100 | Unicorn_Princess | (~Unicorn_P@46-54-248-191.static.kate-wing.si) (Remote host closed the connection) |
2022-03-23 03:56:08 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2022-03-23 03:57:33 +0100 | Unicorn_Princess | (~Unicorn_P@46-54-248-191.static.kate-wing.si) |
2022-03-23 03:58:46 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-23 03:59:18 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 04:04:32 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
2022-03-23 04:05:55 +0100 | nicbk | (~nicbk@user/nicbk) (Ping timeout: 240 seconds) |
2022-03-23 04:05:58 +0100 | vglfr | (~vglfr@88.155.11.162) |
2022-03-23 04:08:08 +0100 | nicbk | (~nicbk@user/nicbk) |
2022-03-23 04:10:46 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-03-23 04:17:55 +0100 | lainon | (lainon@gateway/vpn/protonvpn/lainon) (Quit: WeeChat 3.4) |
2022-03-23 04:20:12 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds) |
2022-03-23 04:25:25 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2022-03-23 04:26:30 +0100 | <Axman6> | Where's the best place to ask about ghcup? the docs have instructions for bash completion ut provides zsh and fish completion files, and I don't know how to install those |
2022-03-23 04:27:43 +0100 | <janus> | Axman6: i think this is a good place to ask but try asking when europe is awake |
2022-03-23 04:28:25 +0100 | <Axman6> | WAKE UP EUROPE! |
2022-03-23 04:29:25 +0100 | <Axman6> | On an unrelated note... are the colours of the ghcup site intentionally the ukrainian flag? |
2022-03-23 04:29:46 +0100 | mbuf | (~Shakthi@223.178.96.253) |
2022-03-23 04:35:59 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer) |
2022-03-23 04:36:15 +0100 | belphegor666 | (~satan@ip-046-223-002-003.um13.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
2022-03-23 04:36:39 +0100 | belphegor666 | (~satan@ip-046-223-002-003.um13.pools.vodafone-ip.de) |
2022-03-23 04:37:10 +0100 | Unicorn_Princess | (~Unicorn_P@46-54-248-191.static.kate-wing.si) (Remote host closed the connection) |
2022-03-23 04:38:38 +0100 | <abastro[m]> | Oh, the color scheme changed, I see |
2022-03-23 04:38:57 +0100 | <abastro[m]> | Very courageous.. perhaps at cost of losing Russian userbase |
2022-03-23 04:43:54 +0100 | <Axman6> | might hurt our Oleg-factor somewhat |
2022-03-23 04:48:02 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 04:49:41 +0100 | <koz> | Oleg K is basically OCamling now, and Oleg G is a Finn IIRC. |
2022-03-23 04:49:45 +0100 | boxscape_ | (~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Quit: Connection closed) |
2022-03-23 04:50:23 +0100 | k8yun | (~k8yun@user/k8yun) (Quit: Leaving) |
2022-03-23 04:51:51 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2022-03-23 04:52:12 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
2022-03-23 04:53:16 +0100 | lainon | (~lainon@c-68-46-201-40.hsd1.al.comcast.net) |
2022-03-23 04:53:33 +0100 | lainon | (~lainon@c-68-46-201-40.hsd1.al.comcast.net) (Remote host closed the connection) |
2022-03-23 04:57:53 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2022-03-23 04:58:13 +0100 | vglfr | (~vglfr@88.155.11.162) (Ping timeout: 240 seconds) |
2022-03-23 04:59:20 +0100 | <sm> | also #haskell-ghcup:libera.chat |
2022-03-23 04:59:44 +0100 | <sm> | but.. shell completions ? really ? :) |
2022-03-23 04:59:46 +0100 | <Axman6> | great, thanks |
2022-03-23 04:59:57 +0100 | <Axman6> | well, if they're there, why not document how to use them |
2022-03-23 05:00:02 +0100 | haasn | (~nand@haasn.dev) (Quit: ZNC 1.7.5+deb4 - https://znc.in) |
2022-03-23 05:00:11 +0100 | <sm> | that's fair enough :) |
2022-03-23 05:01:23 +0100 | haasn | (~nand@haasn.dev) |
2022-03-23 05:11:42 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-03-23 05:16:13 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2022-03-23 05:17:03 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-03-23 05:19:54 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 05:21:55 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-03-23 05:23:14 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 05:27:49 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2022-03-23 05:28:07 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-03-23 05:29:17 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds) |
2022-03-23 05:38:06 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Read error: Connection reset by peer) |
2022-03-23 05:40:05 +0100 | gehmehgeh_ | (~user@user/gehmehgeh) |
2022-03-23 05:41:15 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Ping timeout: 240 seconds) |
2022-03-23 05:47:15 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds) |
2022-03-23 05:49:18 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-03-23 05:52:05 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 250 seconds) |
2022-03-23 05:54:06 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 05:54:13 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-03-23 06:00:15 +0100 | vglfr | (~vglfr@88.155.11.162) |
2022-03-23 06:02:29 +0100 | Codaraxis_ | (~Codaraxis@user/codaraxis) |
2022-03-23 06:03:49 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) (Ping timeout: 240 seconds) |
2022-03-23 06:10:15 +0100 | nicbk | (~nicbk@user/nicbk) (Ping timeout: 240 seconds) |
2022-03-23 06:11:26 +0100 | bahamas | (~lucian@84.232.140.158) |
2022-03-23 06:13:49 +0100 | nicbk | (~nicbk@user/nicbk) |
2022-03-23 06:20:17 +0100 | awpr | (uid446117@id-446117.lymington.irccloud.com) |
2022-03-23 06:21:37 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) |
2022-03-23 06:22:56 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-03-23 06:28:33 +0100 | zmt00 | (~zmt00@user/zmt00) |
2022-03-23 06:32:17 +0100 | nsyd | (~psy@104-62-224-96.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2022-03-23 06:36:21 +0100 | bahamas | (~lucian@84.232.140.158) (Ping timeout: 252 seconds) |
2022-03-23 06:42:51 +0100 | <abastro[m]> | Oleg-factor XD |
2022-03-23 06:51:01 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 250 seconds) |
2022-03-23 06:52:04 +0100 | nsyd | (~psy@104-62-224-96.lightspeed.chrlnc.sbcglobal.net) |
2022-03-23 06:56:31 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-03-23 07:01:39 +0100 | vglfr | (~vglfr@88.155.11.162) (Ping timeout: 252 seconds) |
2022-03-23 07:03:35 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Ping timeout: 256 seconds) |
2022-03-23 07:06:57 +0100 | Neuromancer | (~Neuromanc@user/neuromancer) (Ping timeout: 240 seconds) |
2022-03-23 07:07:05 +0100 | cheater | (~Username@user/cheater) |
2022-03-23 07:13:05 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-03-23 07:25:37 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-03-23 07:26:20 +0100 | <koz> | Slightly meta question: is there some abstraction that unifies mapping, filtering and folding? In the sense that any of those can be described with said abstraction. |
2022-03-23 07:26:57 +0100 | <Axman6> | Witherable perhaps? jackdk talks about it often but I haven't run into it myself |
2022-03-23 07:27:17 +0100 | <Axman6> | not a single abstraction, but it extends the idea of filtering to Traversables |
2022-03-23 07:27:29 +0100 | <Axman6> | (I think) |
2022-03-23 07:27:37 +0100 | <jackdk> | since you can recreate foldMap with traverse, perhaps you can do everything with witherable? |
2022-03-23 07:27:48 +0100 | vglfr | (~vglfr@88.155.11.162) |
2022-03-23 07:27:51 +0100 | <abastro[m]> | (Well mapping is implemented by folding tho) .. but yea filtering requires sth like witherable |
2022-03-23 07:28:51 +0100 | <koz> | This Witherable? https://hackage.haskell.org/package/witherable-0.4.2/docs/Data-Witherable.html#t:Witherable |
2022-03-23 07:29:53 +0100 | <koz> | (also, that function argument should totes be 'a -> Compose f Maybe b') |
2022-03-23 07:30:01 +0100 | <jackdk> | with `f ~ forall m . Const m` you can foldmap with that, but you're traverable anyway |
2022-03-23 07:30:26 +0100 | Giovanni | (~Giovanni@176.67.166.45) |
2022-03-23 07:30:51 +0100 | <koz> | (heck, it should _really_ be Star (Compose f Maybe) a b) |
2022-03-23 07:33:15 +0100 | <Axman6> | what's Star? |
2022-03-23 07:33:22 +0100 | <koz> | Kleisli with more instances. |
2022-03-23 07:33:32 +0100 | <koz> | (from profunctors) |
2022-03-23 07:34:03 +0100 | <Axman6> | any reason why Kleisli couldn't have those instances too? I remember seeing Star in lens but never looked into it |
2022-03-23 07:34:19 +0100 | <koz> | Axman6: No non-hysterical reasons. |
2022-03-23 07:34:32 +0100 | <koz> | Star is just a more profunctorially-oriented Kleisli. |
2022-03-23 07:34:59 +0100 | <Axman6> | damn raisins |
2022-03-23 07:35:05 +0100 | <koz> | I know right. |
2022-03-23 07:35:58 +0100 | <koz> | Annoyingly, Compose f Maybe doesn't automagic up an Alternative. |
2022-03-23 07:36:03 +0100 | <koz> | (Compose Maybe f would) |
2022-03-23 07:36:43 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 07:36:50 +0100 | <koz> | I mean, I _guess_ if we have Traversable f it would? |
2022-03-23 07:38:06 +0100 | <koz> | I wonder what method fails. |
2022-03-23 07:38:33 +0100 | vysn | (~vysn@user/vysn) |
2022-03-23 07:38:35 +0100 | nicbk | (~nicbk@user/nicbk) (Ping timeout: 240 seconds) |
2022-03-23 07:39:08 +0100 | <koz> | Couldn't you define empty as 'pure empty' and '<|> |
2022-03-23 07:39:19 +0100 | <koz> | ' as 'liftA2 <|> |
2022-03-23 07:39:21 +0100 | <koz> | '? |
2022-03-23 07:39:24 +0100 | <koz> | Curse my typing. |
2022-03-23 07:39:34 +0100 | <Axman6> | we love typing though |
2022-03-23 07:39:39 +0100 | <koz> | (well, modulo all the Compose and getCompose noise) |
2022-03-23 07:40:09 +0100 | <koz> | Like, does this violate any laws? |
2022-03-23 07:44:23 +0100 | Graham31415 | (~Graham314@5.33.52.156) |
2022-03-23 07:48:36 +0100 | vglfr | (~vglfr@88.155.11.162) (Ping timeout: 240 seconds) |
2022-03-23 07:50:12 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-03-23 07:50:32 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 07:52:19 +0100 | zer0bitz | (~zer0bitz@dsl-hkibng32-54fbf8-224.dhcp.inet.fi) |
2022-03-23 07:52:35 +0100 | <abastro[m]> | Is this Compose the Compose we all know? |
2022-03-23 07:55:19 +0100 | <koz> | abastro[m]: newtype Compose f g a = Compose { getCompose :: f (g a) } |
2022-03-23 07:55:23 +0100 | <koz> | At least, last I checked. |
2022-03-23 07:55:28 +0100 | <abastro[m]> | Ya, I guess it is |
2022-03-23 07:55:58 +0100 | <abastro[m]> | I guess you could do that, but it seems like Alternative is just.. applicative with innate monoid structure |
2022-03-23 07:56:26 +0100 | <abastro[m]> | `pure empty` could work yes |
2022-03-23 07:57:19 +0100 | <koz> | I get the feeling that either (Applicative f, Alternative g) or (Alternative f, Applicative g) would work. |
2022-03-23 07:57:28 +0100 | <abastro[m]> | Uhm actually |
2022-03-23 07:57:34 +0100 | <koz> | (they'd be _different_ Alternatives though wrt their relationship to Applicative) |
2022-03-23 07:57:45 +0100 | y04nn | (~y04nn@2a03:1b20:1:e011::a19e) (Ping timeout: 252 seconds) |
2022-03-23 07:57:56 +0100 | <dminuoso> | abastro[m]: Alternative is slightly more than that. |
2022-03-23 07:58:08 +0100 | <dminuoso> | abastro[m]: There's additional structure with respect to Applicative. |
2022-03-23 07:58:08 +0100 | <abastro[m]> | I guess `liftA2 (pure empty) x` does not equal to `x` |
2022-03-23 07:58:23 +0100 | <abastro[m]> | Oh. Why does the docs not reveal that |
2022-03-23 07:58:30 +0100 | <dminuoso> | It does? |
2022-03-23 07:58:31 +0100 | <koz> | dminuoso: Nobody quite agrees on said relationship. |
2022-03-23 07:58:39 +0100 | <koz> | abastro[m]: Also check Typeclassopedia's writeup on Alternative. |
2022-03-23 07:58:59 +0100 | <abastro[m]> | `A monoid on applicative functors.` |
2022-03-23 07:59:01 +0100 | <dminuoso> | base at least has this to say: |
2022-03-23 07:59:03 +0100 | <dminuoso> | https://hackage.haskell.org/package/base-4.16.0.0/docs/Control-Applicative.html#t:Alternative |
2022-03-23 07:59:10 +0100 | <dminuoso> | If defined, some and many should be the least solutions of the equations: [...] |
2022-03-23 07:59:18 +0100 | <koz> | abastro[m]: 'liftA2 (<|>) (pure empty) x' _should_ be 'x'? |
2022-03-23 07:59:20 +0100 | <koz> | Ah yeah. |
2022-03-23 07:59:32 +0100 | <koz> | 'some' and 'many' are something I always forget about the existence of. |
2022-03-23 07:59:32 +0100 | <dminuoso> | Though those are rather constraints about `some` and `many` |
2022-03-23 07:59:44 +0100 | <abastro[m]> | I mean, wouldn't the laws hold with default implementations? |
2022-03-23 07:59:58 +0100 | <dminuoso> | Yeah I guess |
2022-03-23 08:00:10 +0100 | <koz> | Default implementations depend on each other, so if you don't define _either_, I think you might diverge. |
2022-03-23 08:00:17 +0100 | <koz> | (you won't _necessarily_, but you might) |
2022-03-23 08:00:24 +0100 | <abastro[m]> | Yea, I was more about the minimal definitions |
2022-03-23 08:00:31 +0100 | <abastro[m]> | I think the definition is deliberste |
2022-03-23 08:00:36 +0100 | <dminuoso> | abastro[m]: You might be interested in Ap |
2022-03-23 08:00:37 +0100 | <abastro[m]> | Deliberate* |
2022-03-23 08:00:41 +0100 | <abastro[m]> | So it could work in most cases |
2022-03-23 08:00:56 +0100 | <abastro[m]> | Isn't Ap which makes Alternative into Monoid |
2022-03-23 08:00:58 +0100 | <koz> | abastro[m]: If you don't define _either_ of 'some' or 'many', since they're defined in terms of each other, _using_ one or the other could diverge potentially. |
2022-03-23 08:01:08 +0100 | <dminuoso> | abastro[m]: Yup! |
2022-03-23 08:01:11 +0100 | <koz> | abastro[m]: 'Ap' makes _Applicative_ into Monoid. |
2022-03-23 08:01:11 +0100 | <dminuoso> | instance (Applicative f, Monoid a) => Monoid (Ap f a) |
2022-03-23 08:01:22 +0100 | <abastro[m]> | Oh wait |
2022-03-23 08:01:25 +0100 | <abastro[m]> | It is applicative. |
2022-03-23 08:01:29 +0100 | <dminuoso> | That's essentially just Alternative but via Monoid! |
2022-03-23 08:01:33 +0100 | <abastro[m]> | I somehow messed up what it is |
2022-03-23 08:01:43 +0100 | <abastro[m]> | No, it is not alike alternative you know |
2022-03-23 08:01:43 +0100 | <dminuoso> | Ah sorry hold on |
2022-03-23 08:01:47 +0100 | <dminuoso> | miscopy and paste |
2022-03-23 08:01:50 +0100 | <dminuoso> | I meant Alt |
2022-03-23 08:01:51 +0100 | <koz> | dminuoso: Yes, but it's weaker. Alternative works for _any_ a. |
2022-03-23 08:01:55 +0100 | <dminuoso> | https://hackage.haskell.org/package/base-4.16.0.0/docs/Data-Monoid.html#t:Alt :) |
2022-03-23 08:01:58 +0100 | <koz> | Alt is the other one yes. |
2022-03-23 08:02:05 +0100 | <koz> | All these similar-sounding things. |
2022-03-23 08:02:20 +0100 | gehmehgeh_ | (~user@user/gehmehgeh) (Remote host closed the connection) |
2022-03-23 08:02:37 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 08:02:48 +0100 | <koz> | Basically everything is a monoid. |
2022-03-23 08:03:08 +0100 | <koz> | The entirety of Haskell is an elaborate edifice built upon monoids. |
2022-03-23 08:03:12 +0100 | <koz> | It's monoids all the way down. |
2022-03-23 08:03:22 +0100 | <abastro[m]> | Yea, Alt |
2022-03-23 08:03:29 +0100 | <abastro[m]> | I also mixed up Alt and Ap |
2022-03-23 08:03:31 +0100 | <abastro[m]> | Meh, me |
2022-03-23 08:03:38 +0100 | <koz> | They're easy to mix up. |
2022-03-23 08:03:39 +0100 | Graham31415 | (~Graham314@5.33.52.156) (Ping timeout: 256 seconds) |
2022-03-23 08:03:58 +0100 | <abastro[m]> | Ap lifts Monoids through Applicative, IIRC |
2022-03-23 08:03:58 +0100 | <koz> | Not helped by the fact that 'Alt' is also a semigroupoids thing, which is 'Alternative without empty'. |
2022-03-23 08:04:17 +0100 | winstonsmith_ | (~winston@2a02:c98:1003:8000:6106:3ff0:197d:fcd2) |
2022-03-23 08:04:23 +0100 | <abastro[m]> | Btw IIRC `some` and many` is designed to terminate for most cases without you implementing them. |
2022-03-23 08:04:28 +0100 | <abastro[m]> | * `some` and `many` is |
2022-03-23 08:04:42 +0100 | <koz> | A little inconsistent, since it also defined Apply as 'Applicative without pure', so shouldn't it be called 'Altern'? |
2022-03-23 08:05:00 +0100 | gehmehgeh_ | (~user@user/gehmehgeh) |
2022-03-23 08:05:26 +0100 | <abastro[m]> | Naming is hard tbh |
2022-03-23 08:05:38 +0100 | <abastro[m]> | In my math class I just heard how bad mathematicians are at naming |
2022-03-23 08:05:54 +0100 | <abastro[m]> | So they often ended up with same names for numerous concepts |
2022-03-23 08:06:21 +0100 | <koz> | Can confirm. Worse, they ended up with _different_ names for the _same_ concept! |
2022-03-23 08:07:20 +0100 | <abastro[m]> | <strikethrough> Well concepts become different when you give it different names </> |
2022-03-23 08:07:41 +0100 | <koz> | A natural transformation by any other name will compose just as well. |
2022-03-23 08:09:17 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 252 seconds) |
2022-03-23 08:11:55 +0100 | <abastro[m]> | ? |
2022-03-23 08:12:02 +0100 | Neuromancer | (~Neuromanc@user/neuromancer) |
2022-03-23 08:12:03 +0100 | <abastro[m]> | Natural transformation by other name? |
2022-03-23 08:12:13 +0100 | michalz | (~michalz@185.246.204.57) |
2022-03-23 08:12:25 +0100 | charukiewicz | (~charukiew@2600:1702:a90:2750::3c) () |
2022-03-23 08:12:42 +0100 | <koz> | abastro[m]: A long-running joke/justification in category theory is that so many things in other fields of mathematics are just NTs in fancy clothes. |
2022-03-23 08:12:51 +0100 | <koz> | I think Awodey's book pretty much _opens_ with such a claim. |
2022-03-23 08:14:23 +0100 | <dminuoso> | 08:08:04 koz | [07:03:08] The entirety of Haskell is an elaborate edifice built upon monoids. |
2022-03-23 08:14:31 +0100 | <dminuoso> | Monoids are just ubiquitous. They are everywhere. |
2022-03-23 08:14:35 +0100 | <dminuoso> | Not just Haskell or programming. |
2022-03-23 08:14:45 +0100 | <abastro[m]> | Oh, that joke |
2022-03-23 08:14:58 +0100 | <abastro[m]> | Ya the one where many other mathematicians would hate :) |
2022-03-23 08:16:55 +0100 | vglfr | (~vglfr@88.155.11.162) |
2022-03-23 08:21:10 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 08:22:07 +0100 | lagooned | (~lagooned@108-208-149-42.lightspeed.hstntx.sbcglobal.net) |
2022-03-23 08:22:41 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-03-23 08:24:57 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-03-23 08:25:55 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 250 seconds) |
2022-03-23 08:26:35 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-03-23 08:28:20 +0100 | mmhat | (~mmh@55d49226.access.ecotel.net) |
2022-03-23 08:31:24 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-03-23 08:32:32 +0100 | <tomsmeding> | dminuoso: talking about monoids -- there's this trick: newtype Thing m = Thing (m -> m) ; instance Semigroup (Thing m) where Thing f <> Thing g = Thing (f . g) ; instance Monoid (Thing m) where mempty = Thing id ; rep :: Semigroup m => m -> Thing m ; rep m = Thing (m <>) ; abs :: Monoid m => Thing m -> m ; abs (Thing f) = f mempty |
2022-03-23 08:32:45 +0100 | <abastro[m]> | Hm I wonder if `liftA2 f (pure x) y == y` |
2022-03-23 08:32:48 +0100 | <tomsmeding> | this is "the difference list trick", also known as ShowS |
2022-03-23 08:32:55 +0100 | Graham31415 | (~Graham314@5.33.52.156) |
2022-03-23 08:33:13 +0100 | <tomsmeding> | I've also seen it being called a "Cayley" transform at least once, but is there a generally accepted name for this? |
2022-03-23 08:33:37 +0100 | Graham31415 | (~Graham314@5.33.52.156) (Client Quit) |
2022-03-23 08:33:45 +0100 | <dminuoso> | tomsmeding: Mmm, what exactly is the "trick" here? |
2022-03-23 08:33:54 +0100 | <abastro[m]> | Eh I should have said, `liftA2 f (pure x) y == y` if for any z, `f x z == z` |
2022-03-23 08:34:01 +0100 | <dminuoso> | On its own this seems blant so far |
2022-03-23 08:34:08 +0100 | <tomsmeding> | representing a monoid M as functions M -> M, which has better performance properties for some monoids and some usages |
2022-03-23 08:34:17 +0100 | <dminuoso> | Ah yes. |
2022-03-23 08:34:56 +0100 | <abastro[m]> | Sounds like `Endo` |
2022-03-23 08:35:10 +0100 | <tomsmeding> | ah, it is Endo |
2022-03-23 08:35:27 +0100 | <c_wraith> | It's not exactly Endo, as you need to associate a function in the mapping between them |
2022-03-23 08:35:39 +0100 | alp | (~alp@user/alp) |
2022-03-23 08:35:43 +0100 | <tomsmeding> | so, like, suppose I'm writing a paper where I do this and need to call it something :p |
2022-03-23 08:35:50 +0100 | <dminuoso> | c_wraith: Thing is Endo |
2022-03-23 08:35:52 +0100 | <c_wraith> | To really model it, you want to put the necessary functions in the type, too. |
2022-03-23 08:36:09 +0100 | <abastro[m]> | Wdym necessary functions? |
2022-03-23 08:36:56 +0100 | <c_wraith> | to convert between Endo [a] and [a], for instance.. |
2022-03-23 08:37:02 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-23 08:37:07 +0100 | <hololeap> | @hackage bytebuild |
2022-03-23 08:37:07 +0100 | <lambdabot> | https://hackage.haskell.org/package/bytebuild |
2022-03-23 08:37:12 +0100 | <hololeap> | > Unlike builders from the bytestring package, these builders do not track their state when they run out of space. |
2022-03-23 08:37:21 +0100 | <hololeap> | anyone know what they mean by "run out of space"? |
2022-03-23 08:37:30 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 08:37:47 +0100 | <tomsmeding> | c_wraith: the conversion is always (\x -> (x <>)) :: m -> Endo m ; (\x -> x mempty) :: Endo m -> m |
2022-03-23 08:37:48 +0100 | <abastro[m]> | Well you could just define `rep` for `Endo`, then you get that. |
2022-03-23 08:37:58 +0100 | <tomsmeding> | potentially with (<> x) instead of (x <>) if that works better |
2022-03-23 08:38:16 +0100 | <tomsmeding> | at least in this trick that I'm trying to find a name for, it is always this way |
2022-03-23 08:38:24 +0100 | <dminuoso> | hololeap: Mmm, did you read the following sentence? |
2022-03-23 08:38:38 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 08:38:50 +0100 | y04nn | (~y04nn@2a03:1b20:1:e011::a19e) |
2022-03-23 08:38:59 +0100 | <c_wraith> | hololeap: builders are a wrapper around a mutable buffer. |
2022-03-23 08:39:41 +0100 | <abastro[m]> | Tbh `Endo (<> x)` sounds short enough to me |
2022-03-23 08:39:41 +0100 | <tomsmeding> | abastro[m]: liftA2 f (pure x) y = f <$> pure x <*> y = pure f <*> pure x <*> y =[homomorphism] pure (f x) <*> y =[f x z == z] pure id <*> y =[identity] y |
2022-03-23 08:39:57 +0100 | <tomsmeding> | abastro[m]: as a name? |
2022-03-23 08:39:58 +0100 | <abastro[m]> | Oh wait |
2022-03-23 08:40:05 +0100 | <tomsmeding> | (oh I forgot the Endo wrappers) |
2022-03-23 08:40:07 +0100 | <abastro[m]> | Noo |
2022-03-23 08:40:18 +0100 | <tomsmeding> | (just coerce that stuff :p ) |
2022-03-23 08:40:45 +0100 | <abastro[m]> | <del>name it as `Endo _<>`</del> |
2022-03-23 08:40:50 +0100 | <hololeap> | dminuoso: yeah I read it |
2022-03-23 08:41:21 +0100 | <tomsmeding> | "Now in the next step, we will eliminate some adverse complexity issues using the Endo _<> trick, which ..." |
2022-03-23 08:41:37 +0100 | <hololeap> | hm, ok... |
2022-03-23 08:42:12 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-03-23 08:42:14 +0100 | <c_wraith> | hololeap: well. they're a wrapper around a function for manipulating such a buffer. In any case, it's saying it doesn't track the length of the buffer and space available. |
2022-03-23 08:42:15 +0100 | <hololeap> | yeah I get it now. thanks c_wraith |
2022-03-23 08:42:18 +0100 | <abastro[m]> | Hmm, `liftA2 f x (pure y) == pure f <*> x <*> pure y`, can I go further from here |
2022-03-23 08:42:28 +0100 | <abastro[m]> | Apparently idk applicative laws. I should memorize it.. |
2022-03-23 08:42:29 +0100 | <c_wraith> | hololeap: it just fails if it would try to write outside it |
2022-03-23 08:42:37 +0100 | tomsmeding | looked up the laws |
2022-03-23 08:42:49 +0100 | <tomsmeding> | abastro[m]: perhaps use Interchange |
2022-03-23 08:42:54 +0100 | <abastro[m]> | Ohh |
2022-03-23 08:42:58 +0100 | <tomsmeding> | oh no |
2022-03-23 08:43:04 +0100 | <tomsmeding> | wrong association of <*> |
2022-03-23 08:43:18 +0100 | <tomsmeding> | oh no of course not |
2022-03-23 08:43:48 +0100 | <c_wraith> | flip f y <$> x |
2022-03-23 08:44:11 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-03-23 08:44:27 +0100 | <c_wraith> | (I have a policy of never using flip in non-toy code) |
2022-03-23 08:44:53 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-03-23 08:45:33 +0100 | <c_wraith> | But you end up writing a lot of code that looks vaguely like that when you're writing lenses by hand. |
2022-03-23 08:45:56 +0100 | <c_wraith> | and it's important that you stick with only Functor in those cases |
2022-03-23 08:46:24 +0100 | <tomsmeding> | abastro[m]: (pure f <*> x) <*> pure y =[interchange] pure ($ y) <*> (pure f <*> x) =[composition] pure (.) <*> pure ($ y) <*> pure f <*> x =[homomorphism x2] pure (($ y) . f) <*> x = pure (\z -> f z y) <*> x |
2022-03-23 08:46:45 +0100 | <abastro[m]> | Oh wait, that works |
2022-03-23 08:46:57 +0100 | <c_wraith> | I didn't say it was wrong! |
2022-03-23 08:47:01 +0100 | <tomsmeding> | had to think a little before I realised that composition does work :p |
2022-03-23 08:48:43 +0100 | <abastro[m]> | I guess when f z y = z for all z, like the case with `f = (<|>)` and `y = empty`, it would boil down to `x`, |
2022-03-23 08:48:52 +0100 | <abastro[m]> | So.. |
2022-03-23 08:49:02 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-03-23 08:49:26 +0100 | <abastro[m]> | Given `(Applicative f, Alternative g)`, we could have `Alternative (Compose f g)` |
2022-03-23 08:49:54 +0100 | <abastro[m]> | by `empty = pure empty` and `(<|>) = liftA2 (<|>)` |
2022-03-23 08:50:10 +0100 | <abastro[m]> | Now question is, why is it not defined? |
2022-03-23 08:51:01 +0100 | <c_wraith> | Probably because there is another equally-lawful implementation with an Alternative f constraint |
2022-03-23 08:51:09 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:9be3:3a9c:fd6c:bab4) |
2022-03-23 08:52:15 +0100 | <abastro[m]> | Oh. Makes sense. |
2022-03-23 08:52:34 +0100 | <abastro[m]> | `(<|>) = coerce ((<|>) :: f (g a) -> f (g a) -> f (g a))` Wait how does this work |
2022-03-23 08:52:57 +0100 | <abastro[m]> | Oh nvm, of course works when `f` is alternative |
2022-03-23 08:53:45 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 08:54:45 +0100 | <koz> | Yeah, you'd have to pick _one_, because otherwise GHC would barf at instance resolution. |
2022-03-23 08:58:09 +0100 | <abastro[m]> | Sometimes deciding instance is intricate, it seems. |
2022-03-23 08:58:36 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-03-23 08:58:45 +0100 | <c_wraith> | especially for a type with as little semantic content as Compose |
2022-03-23 08:58:59 +0100 | zeenk | (~zeenk@2a02:2f04:a110:7d00:2011:cfed:bad7:3c94) |
2022-03-23 08:59:06 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 245 seconds) |
2022-03-23 08:59:29 +0100 | <abastro[m]> | Yep, indeed. |
2022-03-23 09:01:17 +0100 | acidjnk | (~acidjnk@p200300d0c7049f94990c0fcd1a5d0faa.dip0.t-ipconnect.de) |
2022-03-23 09:02:17 +0100 | mvk | (~mvk@2607:fea8:5cc3:7e00::7980) (Ping timeout: 240 seconds) |
2022-03-23 09:03:04 +0100 | acidsys | (~LSD@2a03:4000:55:d20::3) (Excess Flood) |
2022-03-23 09:03:23 +0100 | briandaed | (~root@109.95.142.93.r.toneticgroup.pl) |
2022-03-23 09:03:25 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-23 09:03:34 +0100 | acidsys | (~LSD@2a03:4000:55:d20::3) |
2022-03-23 09:03:41 +0100 | acidsys | (~LSD@2a03:4000:55:d20::3) (Excess Flood) |
2022-03-23 09:04:17 +0100 | acidsys | (~LSD@2a03:4000:55:d20::3) |
2022-03-23 09:04:20 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-03-23 09:05:57 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 252 seconds) |
2022-03-23 09:10:58 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 09:15:18 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2022-03-23 09:15:25 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-03-23 09:16:14 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 09:18:15 +0100 | benin | (~benin@183.82.207.30) |
2022-03-23 09:18:36 +0100 | vglfr | (~vglfr@88.155.11.162) (Ping timeout: 252 seconds) |
2022-03-23 09:19:15 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) |
2022-03-23 09:20:15 +0100 | y04nn | (~y04nn@2a03:1b20:1:e011::a19e) (Remote host closed the connection) |
2022-03-23 09:20:27 +0100 | y04nn | (~y04nn@2a03:1b20:1:e011::a19e) |
2022-03-23 09:23:04 +0100 | benin | (~benin@183.82.207.30) (Client Quit) |
2022-03-23 09:23:57 +0100 | Flow | (~none@gentoo/developer/flow) (Ping timeout: 240 seconds) |
2022-03-23 09:25:28 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 09:25:31 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-03-23 09:27:18 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-03-23 09:27:29 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 09:28:03 +0100 | lagooned | (~lagooned@108-208-149-42.lightspeed.hstntx.sbcglobal.net) (Quit: WeeChat 3.4) |
2022-03-23 09:28:20 +0100 | fendor | (~fendor@178.115.72.153.wireless.dyn.drei.com) |
2022-03-23 09:30:59 +0100 | dsrt^ | (~dsrt@96-67-120-105-static.hfc.comcastbusiness.net) |
2022-03-23 09:31:43 +0100 | Flow | (~none@gentoo/developer/flow) |
2022-03-23 09:31:49 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2022-03-23 09:32:10 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 260 seconds) |
2022-03-23 09:32:14 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Read error: Connection reset by peer) |
2022-03-23 09:32:26 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) |
2022-03-23 09:33:59 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
2022-03-23 09:36:25 +0100 | urtie | earthy |
2022-03-23 09:38:29 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
2022-03-23 09:43:26 +0100 | ccntrq | (~Thunderbi@2a01:c23:9016:8e00:deb2:a539:32d1:3ed2) |
2022-03-23 09:43:29 +0100 | benin | (~benin@183.82.207.30) |
2022-03-23 09:45:10 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 09:52:27 +0100 | gehmehgeh_ | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-03-23 09:56:42 +0100 | Pickchea | (~private@user/pickchea) |
2022-03-23 09:57:25 +0100 | MajorBiscuit | (~MajorBisc@wlan-145-94-219-172.wlan.tudelft.nl) |
2022-03-23 09:59:06 +0100 | MajorBiscuit | (~MajorBisc@wlan-145-94-219-172.wlan.tudelft.nl) (Client Quit) |
2022-03-23 09:59:06 +0100 | benin | (~benin@183.82.207.30) (Quit: The Lounge - https://thelounge.chat) |
2022-03-23 10:02:23 +0100 | Midjak | (~Midjak@82.66.147.146) |
2022-03-23 10:07:00 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Ping timeout: 240 seconds) |
2022-03-23 10:08:03 +0100 | benin | (~benin@183.82.207.30) |
2022-03-23 10:09:12 +0100 | benin | (~benin@183.82.207.30) (Client Quit) |
2022-03-23 10:09:56 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 245 seconds) |
2022-03-23 10:10:15 +0100 | lumberjack123 | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
2022-03-23 10:10:18 +0100 | benin | (~benin@183.82.207.30) |
2022-03-23 10:10:54 +0100 | benin | (~benin@183.82.207.30) (Client Quit) |
2022-03-23 10:11:21 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) |
2022-03-23 10:13:51 +0100 | benin | (~benin@183.82.207.30) |
2022-03-23 10:17:02 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Remote host closed the connection) |
2022-03-23 10:17:36 +0100 | benin | (~benin@183.82.207.30) (Client Quit) |
2022-03-23 10:18:36 +0100 | benin | (~benin@183.82.207.30) |
2022-03-23 10:19:09 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) |
2022-03-23 10:19:33 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-03-23 10:20:17 +0100 | benin | (~benin@183.82.207.30) (Client Quit) |
2022-03-23 10:20:32 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds) |
2022-03-23 10:21:30 +0100 | benin | (~benin@183.82.207.30) |
2022-03-23 10:21:57 +0100 | jinsun | (~jinsun@user/jinsun) |
2022-03-23 10:23:31 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-03-23 10:24:50 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-03-23 10:25:19 +0100 | jinsun__ | (~jinsun@user/jinsun) (Ping timeout: 256 seconds) |
2022-03-23 10:28:07 +0100 | benin | (~benin@183.82.207.30) (Quit: The Lounge - https://thelounge.chat) |
2022-03-23 10:28:26 +0100 | chenqisu1 | (~chenqisu1@183.217.201.47) (Quit: Leaving) |
2022-03-23 10:30:52 +0100 | benin | (~benin@183.82.207.30) |
2022-03-23 10:31:20 +0100 | MajorBiscuit | (~MajorBisc@wlan-145-94-219-172.wlan.tudelft.nl) |
2022-03-23 10:32:36 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-03-23 10:33:16 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-23 10:35:02 +0100 | krappix | (~krappix@nat-eduroam-76-gw-01-lne.lille.inria.fr) |
2022-03-23 10:35:25 +0100 | alMalsamo | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-03-23 10:38:34 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-03-23 10:39:09 +0100 | cosimone | (~user@93-44-187-176.ip98.fastwebnet.it) |
2022-03-23 10:44:01 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-03-23 10:44:35 +0100 | nsyd | (~psy@104-62-224-96.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds) |
2022-03-23 10:44:49 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 10:46:52 +0100 | <abastro[m]> | Hmm what is meta? |
2022-03-23 10:47:23 +0100 | benin | (~benin@183.82.207.30) (Quit: The Lounge - https://thelounge.chat) |
2022-03-23 10:48:01 +0100 | shriekingnoise | (~shrieking@201.231.16.156) (Quit: Quit) |
2022-03-23 10:48:15 +0100 | <merijn> | E_INSUFFICIENT_CONTEXT :p |
2022-03-23 10:48:29 +0100 | benin | (~benin@183.82.207.30) |
2022-03-23 10:48:56 +0100 | <abastro[m]> | Haskell foundation links the meta |
2022-03-23 10:49:17 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-03-23 10:49:20 +0100 | <Franciman> | abastro[m]: isnt it the new name of facebook? |
2022-03-23 10:49:36 +0100 | <merijn> | Yeah |
2022-03-23 10:49:46 +0100 | <Franciman> | Meta is paying haskell to exist |
2022-03-23 10:49:58 +0100 | <Franciman> | like microsofwt |
2022-03-23 10:50:17 +0100 | <merijn> | Meta the company is the parent company of facebook, trying to rebrand away from facebook's...great...reputation |
2022-03-23 10:50:49 +0100 | bahamas | (~lucian@86.120.77.115) |
2022-03-23 10:51:02 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 260 seconds) |
2022-03-23 10:52:09 +0100 | <Franciman> | luky for us |
2022-03-23 10:52:35 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 250 seconds) |
2022-03-23 10:53:11 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds) |
2022-03-23 10:55:13 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-03-23 10:56:13 +0100 | dextaa_ | (~dextaa@user/dextaa) (Quit: The Lounge - https://thelounge.chat) |
2022-03-23 10:56:47 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-03-23 10:57:37 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds) |
2022-03-23 10:57:51 +0100 | tinwood | (~tinwood@canonical/tinwood) (Remote host closed the connection) |
2022-03-23 10:57:54 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.4.1) |
2022-03-23 10:58:05 +0100 | Everything | (~Everythin@37.115.210.35) |
2022-03-23 10:58:57 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-03-23 11:00:53 +0100 | tinwood | (~tinwood@general.default.akavanagh.uk0.bigv.io) |
2022-03-23 11:00:53 +0100 | tinwood | (~tinwood@general.default.akavanagh.uk0.bigv.io) (Changing host) |
2022-03-23 11:00:53 +0100 | tinwood | (~tinwood@canonical/tinwood) |
2022-03-23 11:01:32 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 11:02:01 +0100 | <boxscape> | Hmm why does the duckduckgo search result for the haskell foundation say "Haskell Foundation - Donuts" |
2022-03-23 11:02:01 +0100 | <boxscape> | not that there's anything wrong with donuts |
2022-03-23 11:02:32 +0100 | <boxscape> | abastro: meta is the new name of facebook's parent company |
2022-03-23 11:03:50 +0100 | <abastro[m]> | Donuts haha |
2022-03-23 11:04:01 +0100 | <abastro[m]> | Uhh facebook parent has name meta? |
2022-03-23 11:04:06 +0100 | <abastro[m]> | What a lousy name |
2022-03-23 11:05:18 +0100 | xff0x | (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds) |
2022-03-23 11:06:04 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:4199:73fa:f378:33d) |
2022-03-23 11:06:11 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 245 seconds) |
2022-03-23 11:06:22 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 11:07:54 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) |
2022-03-23 11:10:15 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2022-03-23 11:10:44 +0100 | notzmv | (~zmv@user/notzmv) |
2022-03-23 11:11:09 +0100 | <abastro[m]> | Why such a huge multibillion dollar corporation would choose a name "meta"? I wonder.. |
2022-03-23 11:13:27 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4.1) |
2022-03-23 11:15:00 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 240 seconds) |
2022-03-23 11:15:11 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Ping timeout: 256 seconds) |
2022-03-23 11:15:17 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-03-23 11:16:38 +0100 | <merijn> | because "metaverse" |
2022-03-23 11:17:04 +0100 | <Franciman> | and because they are so powerful they can get to pick a super short name |
2022-03-23 11:17:06 +0100 | <merijn> | Which can be adequately explained as: Zuckerberg fell asleep while reading Snow Crash and didn't realise Neal Stephenson was describing a dystopia |
2022-03-23 11:17:08 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 11:17:08 +0100 | <Franciman> | just to prove they are super cool |
2022-03-23 11:17:33 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 11:17:44 +0100 | <merijn> | tbh, Facebook rebranding to Meta and Metaverse is really, *really* funny |
2022-03-23 11:18:08 +0100 | <Franciman> | would you classify facebook as a terrorist group trying to undermine democracy? |
2022-03-23 11:18:27 +0100 | <merijn> | "Hey, should we market our society destroying tech death machine after a completely dystopian cyberpunk fiction?" 'yeah, that sounds dope' |
2022-03-23 11:18:52 +0100 | <merijn> | But probably more for -offtopic :) |
2022-03-23 11:19:17 +0100 | Pickchea | (~private@user/pickchea) (Ping timeout: 240 seconds) |
2022-03-23 11:22:37 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-03-23 11:29:28 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4.1) |
2022-03-23 11:31:35 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-03-23 11:34:38 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 11:39:17 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-03-23 11:42:23 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-03-23 11:44:05 +0100 | bahamas | (~lucian@86.120.77.115) (Ping timeout: 256 seconds) |
2022-03-23 11:45:37 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2022-03-23 11:45:52 +0100 | Everything | (~Everythin@37.115.210.35) (Quit: leaving) |
2022-03-23 11:50:26 +0100 | <maerwald[m]> | boxscape: https://www.haskellfoundation.org/ |
2022-03-23 11:50:39 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 11:51:01 +0100 | <boxscape> | maerwald: but the donuts are mentioned in the title of the haskell.foundation search results |
2022-03-23 11:51:14 +0100 | y04nn | (~y04nn@2a03:1b20:1:e011::a19e) (Ping timeout: 260 seconds) |
2022-03-23 11:51:19 +0100 | <boxscape> | s/results/result |
2022-03-23 11:51:58 +0100 | <boxscape> | though it is funny that there are multiple foundations called "haskell foundation" |
2022-03-23 11:52:19 +0100 | <maerwald[m]> | It's like googling curry |
2022-03-23 11:52:51 +0100 | benin | (~benin@183.82.207.30) (Quit: The Lounge - https://thelounge.chat) |
2022-03-23 11:52:59 +0100 | <abastro[m]> | It is still great that HF managed to get to the second entry :) |
2022-03-23 11:54:00 +0100 | <boxscape> | the first entry in my search results, even |
2022-03-23 11:55:42 +0100 | <abastro[m]> | Wait, duckduckgo now detects who you are? |
2022-03-23 11:55:42 +0100 | <abastro[m]> | Scary |
2022-03-23 11:57:33 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds) |
2022-03-23 11:58:19 +0100 | <abastro[m]> | It is strange |
2022-03-23 11:58:34 +0100 | <abastro[m]> | How company like meta could support haskell |
2022-03-23 11:58:56 +0100 | <abastro[m]> | I mean, tbh I dislike FB so.. |
2022-03-23 11:58:58 +0100 | <maerwald[m]> | https://github.com/haskell-foundation/foundation |
2022-03-23 11:59:04 +0100 | <maerwald[m]> | Another one |
2022-03-23 11:59:14 +0100 | <abastro[m]> | This is too much offtopic right |
2022-03-23 11:59:51 +0100 | sloorush | (~sloorush@136.233.9.99) |
2022-03-23 12:00:01 +0100 | ft | (~ft@shell.chaostreff-dortmund.de) (Remote host closed the connection) |
2022-03-23 12:00:14 +0100 | ft | (~ft@shell.chaostreff-dortmund.de) |
2022-03-23 12:00:43 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4.1) |
2022-03-23 12:01:09 +0100 | <maerwald[m]> | Is there a good overview of existing preludes? |
2022-03-23 12:01:26 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2022-03-23 12:01:57 +0100 | belphegor666 | (~satan@ip-046-223-002-003.um13.pools.vodafone-ip.de) (Ping timeout: 252 seconds) |
2022-03-23 12:02:38 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-03-23 12:03:11 +0100 | belphegor666 | (~satan@ip-046-223-002-003.um13.pools.vodafone-ip.de) |
2022-03-23 12:04:59 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-03-23 12:05:04 +0100 | <abastro[m]> | Indeed, it is funny |
2022-03-23 12:05:07 +0100 | <abastro[m]> | Oh right, sorry. offtopic' |
2022-03-23 12:07:19 +0100 | krappix | (~krappix@nat-eduroam-76-gw-01-lne.lille.inria.fr) (Ping timeout: 256 seconds) |
2022-03-23 12:07:31 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Client Quit) |
2022-03-23 12:07:39 +0100 | boxscape_ | (~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) |
2022-03-23 12:08:23 +0100 | <maerwald[m]> | Franciman: no, terrorists usually have political goals. Causing destructive effects on global society, because you don't care about it needs a different name |
2022-03-23 12:08:39 +0100 | xff0x | (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) |
2022-03-23 12:09:05 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-03-23 12:10:29 +0100 | zer0bitz | (~zer0bitz@dsl-hkibng32-54fbf8-224.dhcp.inet.fi) (Ping timeout: 256 seconds) |
2022-03-23 12:10:41 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-03-23 12:10:50 +0100 | zer0bitz | (~zer0bitz@dsl-hkibng32-54fbf8-224.dhcp.inet.fi) |
2022-03-23 12:12:55 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4.1) |
2022-03-23 12:13:58 +0100 | benin | (~benin@183.82.207.30) |
2022-03-23 12:14:55 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 260 seconds) |
2022-03-23 12:18:37 +0100 | fendor | (~fendor@178.115.72.153.wireless.dyn.drei.com) (Remote host closed the connection) |
2022-03-23 12:20:01 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-23 12:20:16 +0100 | Codaraxis__ | (~Codaraxis@user/codaraxis) |
2022-03-23 12:20:31 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4.1) |
2022-03-23 12:20:51 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 12:21:33 +0100 | Pickchea | (~private@user/pickchea) |
2022-03-23 12:21:41 +0100 | chenqisu1 | (~chenqisu1@183.217.201.47) |
2022-03-23 12:22:27 +0100 | abab9579 | (~abab9579@143.248.229.174) |
2022-03-23 12:22:58 +0100 | abab9579 | abastro_ |
2022-03-23 12:23:07 +0100 | MasseR46 | (~MasseR@51.15.143.128) (Quit: The Lounge - https://thelounge.chat) |
2022-03-23 12:23:43 +0100 | MasseR46 | (~MasseR@51.15.143.128) |
2022-03-23 12:23:54 +0100 | dextaa_ | (~dextaa@user/dextaa) |
2022-03-23 12:24:19 +0100 | Codaraxis_ | (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds) |
2022-03-23 12:24:58 +0100 | abastro_ | (~abab9579@143.248.229.174) (Client Quit) |
2022-03-23 12:25:39 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
2022-03-23 12:27:24 +0100 | Pickchea | (~private@user/pickchea) (Ping timeout: 240 seconds) |
2022-03-23 12:28:54 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection) |
2022-03-23 12:29:03 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2022-03-23 12:30:26 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
2022-03-23 12:30:37 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 12:35:27 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-03-23 12:35:49 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Ping timeout: 240 seconds) |
2022-03-23 12:37:00 +0100 | belphegor666 | (~satan@ip-046-223-002-003.um13.pools.vodafone-ip.de) (Changing host) |
2022-03-23 12:37:00 +0100 | belphegor666 | (~satan@user/belphegor666) |
2022-03-23 12:39:19 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 12:39:42 +0100 | CiaoSen | (~Jura@p200300c95735b0002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-03-23 12:42:21 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 12:43:37 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 240 seconds) |
2022-03-23 12:45:46 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Quit: Leaving) |
2022-03-23 12:46:57 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-03-23 12:47:31 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-03-23 12:50:53 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
2022-03-23 12:51:19 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) |
2022-03-23 12:52:11 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 12:52:49 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.4.1) |
2022-03-23 12:52:54 +0100 | Digit | (~user@user/digit) |
2022-03-23 12:54:11 +0100 | Digit | gets wild idea of a haskelly terminal shell, wonders if ever been done, to use haskell ways and syntax with unix command line |
2022-03-23 12:54:52 +0100 | <opqdonut> | Digit: https://hackage.haskell.org/package/turtle |
2022-03-23 12:55:04 +0100 | <opqdonut> | not sure if anybody uses that any more but it was a big thing back in the day |
2022-03-23 12:55:15 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 256 seconds) |
2022-03-23 12:55:30 +0100 | <opqdonut> | looks like new releases keep coming out, cool |
2022-03-23 12:55:37 +0100 | CiaoSen | (~Jura@p200300c95735b0002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-03-23 12:56:26 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.4.1) |
2022-03-23 12:57:45 +0100 | <Digit> | oh yup. been here before. lets see if the fanciful notion sticks this time. thanks for sparing me much painful websearching. |
2022-03-23 12:57:49 +0100 | <boxscape_> | there's also https://hackage.haskell.org/package/shelly |
2022-03-23 12:57:51 +0100 | CiaoSen | (~Jura@p200300c95735b0002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-03-23 12:57:55 +0100 | <boxscape_> | I don't know how they compare though |
2022-03-23 13:00:01 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Read error: Connection reset by peer) |
2022-03-23 13:00:36 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) |
2022-03-23 13:01:28 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-03-23 13:02:35 +0100 | alMalsamo | (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection) |
2022-03-23 13:02:49 +0100 | alMalsamo | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-03-23 13:05:31 +0100 | <geekosaur> | you can even runb it in a haskell terminal |
2022-03-23 13:05:37 +0100 | <geekosaur> | @package termonad |
2022-03-23 13:05:38 +0100 | <lambdabot> | https://hackage.haskell.org/package/termonad |
2022-03-23 13:05:41 +0100 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 256 seconds) |
2022-03-23 13:05:58 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 13:06:03 +0100 | <boxscape_> | and run that in xmonad |
2022-03-23 13:09:02 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 252 seconds) |
2022-03-23 13:09:04 +0100 | <Andrew> | Digit: I've used lisp shells before, that's a good idea |
2022-03-23 13:10:10 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Read error: Connection timed out) |
2022-03-23 13:10:46 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) (Read error: Connection reset by peer) |
2022-03-23 13:11:11 +0100 | <Digit> | :) already got termonad, but yet to make it my daily driver. i like the idea my window manager, terminal emulator, and shell, could all be haskell. :) and yi, for text editor. :) |
2022-03-23 13:11:25 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 240 seconds) |
2022-03-23 13:11:48 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-03-23 13:11:54 +0100 | razetime | (~quassel@117.207.18.88) |
2022-03-23 13:12:13 +0100 | <boxscape_> | just need a Haskell OS |
2022-03-23 13:12:15 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Ping timeout: 256 seconds) |
2022-03-23 13:12:21 +0100 | <boxscape_> | to complete the set |
2022-03-23 13:13:10 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-03-23 13:13:17 +0100 | <merijn> | boxscape_: House, HaLVM |
2022-03-23 13:13:48 +0100 | <boxscape_> | I was going to say that I haven't heard of those but then I saw that the link of the search result for HaLVM was purple |
2022-03-23 13:14:12 +0100 | alp | (~alp@user/alp) (Ping timeout: 240 seconds) |
2022-03-23 13:17:10 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 13:26:40 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection) |
2022-03-23 13:26:49 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2022-03-23 13:29:07 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) |
2022-03-23 13:32:54 +0100 | alp | (~alp@user/alp) |
2022-03-23 13:33:00 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Read error: Connection timed out) |
2022-03-23 13:33:01 +0100 | acidjnk | (~acidjnk@p200300d0c7049f94990c0fcd1a5d0faa.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-03-23 13:38:36 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 240 seconds) |
2022-03-23 13:40:01 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds) |
2022-03-23 13:41:26 +0100 | y04nn | (~y04nn@2a03:1b20:1:e011::a19e) |
2022-03-23 13:41:30 +0100 | haritz | (~hrtz@user/haritz) (Ping timeout: 252 seconds) |
2022-03-23 13:43:37 +0100 | <abastro[m]> | Haskell shell sounds like a dream :) |
2022-03-23 13:43:47 +0100 | <abastro[m]> | Wanna experience Typed shell, how can I? |
2022-03-23 13:44:57 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 13:46:07 +0100 | <[exa]> | bash isn't a typed shell? (all them nice Strings) |
2022-03-23 13:50:15 +0100 | <geekosaur> | sadly there'sno good way to experience a typed shell, since any types have to be imposed on programs after the fact and that means the shell interface has to know about them to do it |
2022-03-23 13:50:49 +0100 | <geekosaur> | unix is kinda fundamentally stringly typed |
2022-03-23 13:50:50 +0100 | <abastro[m]> | Sad |
2022-03-23 13:54:21 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2022-03-23 13:54:31 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
2022-03-23 13:56:35 +0100 | dextaa_ | (~dextaa@user/dextaa) (Remote host closed the connection) |
2022-03-23 13:57:25 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish) |
2022-03-23 13:57:57 +0100 | <[exa]> | abastro[m]: I highly recommend to observe some systems that attempted to make inputs and outputs of general programs "typed" |
2022-03-23 13:58:27 +0100 | <geekosaur> | yeh, unix was actually a reaction to those |
2022-03-23 13:58:32 +0100 | <abastro[m]> | I have no experience with such systems, what are the examples? |
2022-03-23 13:58:33 +0100 | <[exa]> | esp. OLE32, the favorite choice. :D |
2022-03-23 13:58:47 +0100 | <abastro[m]> | Oh, so unix was intentionally untyped |
2022-03-23 13:59:14 +0100 | <[exa]> | intentionally textual and string-ish, yes. |
2022-03-23 13:59:24 +0100 | <geekosaur> | (pre-unix, input andoutput was typically in the form of database-like typed records) |
2022-03-23 14:00:03 +0100 | <abastro[m]> | Hm. I'd prefer typed records though. I guess it is ditched for good, but.. |
2022-03-23 14:00:37 +0100 | <[exa]> | some extra things to compare would be the MIME "types" that kinda settled in internets, ASN.1, and perhals XML/JSON/RDF schemas |
2022-03-23 14:01:55 +0100 | <[exa]> | for shell, you'd need to _infer_ all of these very quickly |
2022-03-23 14:02:06 +0100 | <geekosaur> | the problem with typed records is it sets limits on how you can combine programs |
2022-03-23 14:02:38 +0100 | <geekosaur> | being able to apply grep, sort, etc. to *any* program was a major innovation |
2022-03-23 14:03:36 +0100 | <geekosaur> | (I think we've slid offtopic again) |
2022-03-23 14:04:31 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 14:05:26 +0100 | <geekosaur> | VM/SP had a very complicated system sort program that could via JCL be adapted to handle many (not all) program outputs and subsequent inputs; compare unix sort |
2022-03-23 14:07:43 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-03-23 14:10:07 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4) |
2022-03-23 14:10:12 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-03-23 14:12:12 +0100 | <abastro[m]> | I see, I disliked how unix uses string for everything but now I see the reasoning. |
2022-03-23 14:12:57 +0100 | <abastro[m]> | (My unpopular opinion: monolithic, non-composable programs are good - but that's offtopic and also a bit nonsense) |
2022-03-23 14:13:58 +0100 | <[exa]> | abastro[m]: the point of unix is mostly "this is the fastest implementable, vital tradeoff of simple and universal" and it still can support big monolithic stuff if anyone really needs to, for any reason |
2022-03-23 14:14:28 +0100 | <[exa]> | man, "non-composable programs are good" is highly offtopic :D :D |
2022-03-23 14:14:41 +0100 | <abastro[m]> | Yep, sorry about that |
2022-03-23 14:14:55 +0100 | <geekosaur> | keep in mind also that unix was a research OS that slipped int production, not unlike ghc |
2022-03-23 14:15:29 +0100 | <geekosaur> | bell labs needed a cheap, compact OS for its phone switches and found unix in its own research arm |
2022-03-23 14:15:51 +0100 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
2022-03-23 14:16:47 +0100 | <geekosaur> | just bell, I guess, bell labs was the research arm |
2022-03-23 14:17:35 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds) |
2022-03-23 14:17:41 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish) |
2022-03-23 14:18:22 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-03-23 14:18:28 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 14:18:52 +0100 | alMalsamo | lumberjack123 |
2022-03-23 14:21:57 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 14:22:04 +0100 | benin | (~benin@183.82.207.30) (Quit: The Lounge - https://thelounge.chat) |
2022-03-23 14:22:05 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-03-23 14:23:16 +0100 | <[exa]> | that's one way to produce quality software, look into the room that contains the bunch of geeks and just find it. :D |
2022-03-23 14:24:05 +0100 | <geekosaur> | unless you're microsoft. (sharepoint was a much better piece of software before the business side go ttheir hands on it, reportedly) |
2022-03-23 14:24:52 +0100 | <abastro[m]> | Hm actually, the objection I heard was more of "lack of capability" in unix system |
2022-03-23 14:25:25 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2022-03-23 14:25:35 +0100 | y04nn | (~y04nn@2a03:1b20:1:e011::a19e) (Ping timeout: 260 seconds) |
2022-03-23 14:26:12 +0100 | Unicorn_Princess | (~Unicorn_P@46-54-248-191.static.kate-wing.si) |
2022-03-23 14:27:01 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-03-23 14:27:25 +0100 | <abastro[m]> | That and unified File system described as streams |
2022-03-23 14:28:23 +0100 | chenqisu1 | (~chenqisu1@183.217.201.47) (Ping timeout: 260 seconds) |
2022-03-23 14:29:03 +0100 | abradabara | (~abradabar@185.183.97.187) |
2022-03-23 14:29:30 +0100 | <abradabara> | why does printing [5..1] does not work, but [5,4..1] work |
2022-03-23 14:29:48 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 14:30:05 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-03-23 14:30:33 +0100 | <[exa]> | abradabara: the semantics of [5..1] is captured as `enumFromTo`, which assumes a default step of +1 and continues until the result is (<=1) |
2022-03-23 14:30:58 +0100 | <dminuoso> | Its interesting this produces a result at all |
2022-03-23 14:31:00 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-03-23 14:31:08 +0100 | <dminuoso> | Id have expected it to bottom out |
2022-03-23 14:31:17 +0100 | <dminuoso> | > [5..1] |
2022-03-23 14:31:19 +0100 | <lambdabot> | [] |
2022-03-23 14:31:26 +0100 | <abradabara> | [exa]: oh I see, but isn't enumFromTo applies to second part 4..1 |
2022-03-23 14:31:35 +0100 | <abastro[m]> | Oh, it checks smaller than 1 I guess |
2022-03-23 14:31:46 +0100 | <abradabara> | >[5,4..1] |
2022-03-23 14:31:50 +0100 | <abradabara> | > [5,4..1] |
2022-03-23 14:31:51 +0100 | <dminuoso> | [exa]: Presumably its rather it produces *while* the opposite holds. |
2022-03-23 14:31:51 +0100 | <lambdabot> | [5,4,3,2,1] |
2022-03-23 14:31:55 +0100 | <dminuoso> | rather than "doing until" |
2022-03-23 14:32:26 +0100 | <[exa]> | abradabara: I'd explain it like that the assumption taken there is the "less surprising" of the two possibilities (the other one being [5,4,3,2,1]) because people usually don't want decreasing sentences appearing from nowhere |
2022-03-23 14:32:59 +0100 | <[exa]> | uh yes and the terminating condition there is somewhat shady for sure, check this: |
2022-03-23 14:33:16 +0100 | <[exa]> | > [1,1.1..2] |
2022-03-23 14:33:18 +0100 | <lambdabot> | [1.0,1.1,1.2000000000000002,1.3000000000000003,1.4000000000000004,1.50000000... |
2022-03-23 14:33:22 +0100 | <[exa]> | ayay |
2022-03-23 14:33:38 +0100 | <[exa]> | > reverse [1,1.1..2] |
2022-03-23 14:33:40 +0100 | <lambdabot> | [2.000000000000001,1.9000000000000008,1.8000000000000007,1.7000000000000006,... |
2022-03-23 14:33:59 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Read error: Connection timed out) |
2022-03-23 14:34:36 +0100 | <abradabara> | [exa]: I don't even know haskell much, just used xmonad for some time, and was taking a look at short learnxinyminutes haskell page, what is haskell mainly used for? I am guessing it's some type of very robust, strict, very precise language |
2022-03-23 14:34:55 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
2022-03-23 14:34:56 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-03-23 14:35:27 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 14:35:36 +0100 | <abradabara> | what if i do "lambda>[1..]" here |
2022-03-23 14:35:43 +0100 | <[exa]> | well, you see precision has practical limits. :D |
2022-03-23 14:36:13 +0100 | <dminuoso> | abradabara: its mainly used for all kinds of things. |
2022-03-23 14:36:37 +0100 | bahamas | (~lucian@86.120.77.115) |
2022-03-23 14:36:42 +0100 | <Unicorn_Princess> | i'm using ghcup. how do i install e.g. the random package, so that is it accessible to ghci? sticking build-depends: random into the project .cabal file seems to suffice to get the project itself to use the package |
2022-03-23 14:36:55 +0100 | <Unicorn_Princess> | so that it is* |
2022-03-23 14:37:08 +0100 | <abradabara> | dminuoso: could you give some mainstream examples if you don't mind? |
2022-03-23 14:37:12 +0100 | <dminuoso> | Facebook uses Haskell for their entire spam classification (which evaluates every single interaction any user can does, every click). |
2022-03-23 14:37:31 +0100 | <dminuoso> | We use Haskell to build a network description and compile it into hardware configuration as part of our SDN automation |
2022-03-23 14:37:39 +0100 | <dminuoso> | We also use Haskell in various other places |
2022-03-23 14:37:44 +0100 | acidjnk | (~acidjnk@p200300d0c7049f94990c0fcd1a5d0faa.dip0.t-ipconnect.de) |
2022-03-23 14:37:50 +0100 | <dminuoso> | GHC uses Haskell to compile Haskell |
2022-03-23 14:37:52 +0100 | <geekosaur> | Unicorn_Princess, cabal repl --build-depends random |
2022-03-23 14:38:01 +0100 | y04nn | (~y04nn@2a03:1b20:1:e011::a19e) |
2022-03-23 14:38:08 +0100 | <dminuoso> | abradabara: You might have come across pandoc, which is also written in Haskell by the way. :) |
2022-03-23 14:38:10 +0100 | <maerwald> | Unicorn_Princess: in an empty directory do `cabal install --lib --package-env=. <pkg>`, then run `ghci` |
2022-03-23 14:38:11 +0100 | <Hecate> | We use Haskell to make our various products at work, mainly web APIs, business domain modeling and database interactions |
2022-03-23 14:38:28 +0100 | <dminuoso> | abradabara: the question isnt as much about what it can do, but rather what it cant do |
2022-03-23 14:38:30 +0100 | lainon | (~lainon@c-68-46-201-40.hsd1.al.comcast.net) |
2022-03-23 14:38:36 +0100 | <dminuoso> | real time/low latency systems is where haskell is not ideal |
2022-03-23 14:38:57 +0100 | <Hecate> | yup' |
2022-03-23 14:39:05 +0100 | <Hecate> | or your Haskell code produces C code that does it ;-) |
2022-03-23 14:39:12 +0100 | <maerwald> | Unicorn_Princess: that will create a file like `.ghc.environment.x86_64-linux-8.10.7` in that dir, which ghc/ghci will pick up |
2022-03-23 14:39:20 +0100 | <dminuoso> | and anything where your domain mandates a wealth of existing libraries |
2022-03-23 14:39:35 +0100 | lainon | (~lainon@c-68-46-201-40.hsd1.al.comcast.net) (Remote host closed the connection) |
2022-03-23 14:39:40 +0100 | <dminuoso> | like say in data science or bio informatics you usually mandate particular libraries to exist already |
2022-03-23 14:40:03 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 260 seconds) |
2022-03-23 14:40:13 +0100 | lainon | (~lainon@c-68-46-201-40.hsd1.al.comcast.net) |
2022-03-23 14:40:23 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 14:40:33 +0100 | haritz | (~hrtz@62.3.70.206) |
2022-03-23 14:40:33 +0100 | haritz | (~hrtz@62.3.70.206) (Changing host) |
2022-03-23 14:40:33 +0100 | haritz | (~hrtz@user/haritz) |
2022-03-23 14:40:33 +0100 | lainon | (~lainon@c-68-46-201-40.hsd1.al.comcast.net) (Remote host closed the connection) |
2022-03-23 14:42:05 +0100 | <Unicorn_Princess> | ah. thanks maerwald, geekosaur. looks like `cabal repl` in my project dir suffices to pick up the dependencies of that project :) |
2022-03-23 14:42:14 +0100 | <geekosaur> | yes |
2022-03-23 14:42:31 +0100 | Ren5050 | (~Ren5050@190-199-106-227.dyn.dsl.cantv.net) |
2022-03-23 14:42:38 +0100 | Ren5050 | (~Ren5050@190-199-106-227.dyn.dsl.cantv.net) () |
2022-03-23 14:42:44 +0100 | lainon | (~lainon@c-68-46-201-40.hsd1.al.comcast.net) |
2022-03-23 14:43:11 +0100 | benin | (~benin@183.82.207.30) |
2022-03-23 14:43:22 +0100 | lainon | (~lainon@c-68-46-201-40.hsd1.al.comcast.net) (Remote host closed the connection) |
2022-03-23 14:44:17 +0100 | lagash | (lagash@lagash.shelltalk.net) (Remote host closed the connection) |
2022-03-23 14:45:18 +0100 | lagash | (lagash@lagash.shelltalk.net) |
2022-03-23 14:45:43 +0100 | <abradabara> | dminuoso: Hecate: thanks, if you don't mind also what top 5 things that makes haskell different than other popular languages for the use cases you listed? |
2022-03-23 14:46:35 +0100 | <abradabara> | for example rust is better than c/c++ (?) because of memory management or something like that |
2022-03-23 14:48:28 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) (Quit: Ping timeout (120 seconds)) |
2022-03-23 14:48:43 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish) |
2022-03-23 14:48:48 +0100 | <abradabara> | dminuoso: probably stupid question, gonna do some reading :) |
2022-03-23 14:49:01 +0100 | <abradabara> | learnyouahaskell seems like nice resource |
2022-03-23 14:49:33 +0100 | dextaa_ | (~dextaa@user/dextaa) |
2022-03-23 14:49:40 +0100 | benin | (~benin@183.82.207.30) (Quit: The Lounge - https://thelounge.chat) |
2022-03-23 14:49:49 +0100 | <lortabac> | abradabara: for me it's mostly ease of refactoring. When I work with other languages (especially dynamically-typed), code quality tends to decrease with time, whereas with Haskell this doesn't happen |
2022-03-23 14:50:33 +0100 | <lortabac> | of course this only applies to medium/big projects, when you can't keep everything in your head |
2022-03-23 14:50:42 +0100 | <dminuoso> | 1. Lack of parenthesis in function application, 2. Clean readable/defineable ADTs, 3. Highly reusable ADTs (You get a lot of reuse from Maybe), 4. Robust type system that improves confidence of rewrites, and 5. IO expressed at the type level improves reasoning about where side effects can happen and where not. |
2022-03-23 14:51:22 +0100 | benin | (~benin@183.82.207.30) |
2022-03-23 14:51:32 +0100 | <Hecate> | I agree with lortabac (and especially since we're colleagues). abradabara you can also get some of my opinions from this talk https://www.youtube.com/watch?v=2JB1_e5wZmU |
2022-03-23 14:51:56 +0100 | <dminuoso> | But yeah, in ease of code refactoring haskell is easily at the top |
2022-03-23 14:52:03 +0100 | <dminuoso> | Especially for non-trivial code bases. |
2022-03-23 14:52:08 +0100 | <Hecate> | and this joins what dminuoso at a higher-level: Your ubiquitous language, with which you speak to the machine and the business people, is really, really efficient at speaking to both parties |
2022-03-23 14:52:14 +0100 | <Hecate> | and this ubiquitous language is Haskell |
2022-03-23 14:52:18 +0100 | <[exa]> | abradabara: top differences (my take): writing parsers is fun, insane abstractions and custom sublanguages are easy to do right, it's pretty fast, types actually help you instead of restricting you |
2022-03-23 14:53:19 +0100 | <abradabara> | lortabac: thanks sir |
2022-03-23 14:53:21 +0100 | dextaa_ | (~dextaa@user/dextaa) (Remote host closed the connection) |
2022-03-23 14:53:30 +0100 | <dminuoso> | Be sure to also ask about the dark sides. |
2022-03-23 14:54:02 +0100 | <dminuoso> | Like "What do you curse about when writing Haskell?" |
2022-03-23 14:54:46 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2022-03-23 14:54:47 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2022-03-23 14:55:04 +0100 | <abradabara> | dminuoso: [exa]: thanks! what is the reason for it being read from right to left though |
2022-03-23 14:55:13 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 14:55:47 +0100 | <dminuoso> | What do you mean "read from left to right"? |
2022-03-23 14:55:58 +0100 | <geekosaur> | I'm guessing function composition |
2022-03-23 14:56:11 +0100 | <abradabara> | dminuoso: nice one? |
2022-03-23 14:56:19 +0100 | <dminuoso> | Sorry I dont understand. |
2022-03-23 14:56:38 +0100 | <boxscape_> | dminuoso you wrote "left to right", but the question was "right to left" |
2022-03-23 14:56:54 +0100 | <abradabara> | dminuoso: I thought you were making a joke reading what I wrote from right to left |
2022-03-23 14:57:08 +0100 | <dminuoso> | Oh no, that must have been a typo |
2022-03-23 14:57:22 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-03-23 14:57:22 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-03-23 14:57:22 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-03-23 14:59:42 +0100 | <boxscape_> | abradabara if you do mean function composition, the reason `f . g` is read from right to left is ultimately because it mirrors the math notation `f ∘ g`, which is in that order so that `(f ∘ g)(x) = f(g(x))` |
2022-03-23 14:59:50 +0100 | <abradabara> | for example myLayouts = avoidStruts . minimize . B.BoringWindows $ perWS, is avoidStruts applied at last here? |
2022-03-23 15:00:24 +0100 | <abradabara> | boxscape_: yep that explains it thanks! |
2022-03-23 15:02:45 +0100 | <abradabara> | Hecate: thanks for the video |
2022-03-23 15:03:58 +0100 | <boxscape_> | abradabara there are composition operators going the other way around as well btw, but they're not as commonly used. In that case you'd have `perWS & (B.BoringWindows >>> mimimize >>> avoidStruts)` |
2022-03-23 15:04:03 +0100 | xff0x | (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Quit: xff0x) |
2022-03-23 15:04:23 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish) |
2022-03-23 15:05:30 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) |
2022-03-23 15:06:30 +0100 | <abradabara> | boxscape_: good to know, thank you |
2022-03-23 15:07:31 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-03-23 15:07:42 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-03-23 15:08:12 +0100 | Orbstheorem | (~orbstheor@2001:470:69fc:105::a56) |
2022-03-23 15:08:31 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
2022-03-23 15:11:11 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 15:11:15 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2022-03-23 15:13:11 +0100 | mrkajetanp | (~mrkajetan@88.98.245.28) (Ping timeout: 256 seconds) |
2022-03-23 15:13:18 +0100 | shriekingnoise | (~shrieking@201.231.16.156) |
2022-03-23 15:13:24 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-03-23 15:15:55 +0100 | hololeap | (~hololeap@user/hololeap) (Ping timeout: 240 seconds) |
2022-03-23 15:16:48 +0100 | hololeap | (~hololeap@user/hololeap) |
2022-03-23 15:19:56 +0100 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 252 seconds) |
2022-03-23 15:20:29 +0100 | k8yun | (~k8yun@user/k8yun) |
2022-03-23 15:22:00 +0100 | <hololeap> | how does the hackage server calculate code coverage? |
2022-03-23 15:23:27 +0100 | zmt00 | (~zmt00@user/zmt00) |
2022-03-23 15:23:34 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish) |
2022-03-23 15:24:14 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 15:24:28 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 15:24:30 +0100 | ccntrq | (~Thunderbi@2a01:c23:9016:8e00:deb2:a539:32d1:3ed2) (Remote host closed the connection) |
2022-03-23 15:24:31 +0100 | <hololeap> | here's an example: https://hackage.haskell.org/package/turtle |
2022-03-23 15:24:40 +0100 | nsyd | (~psy@104-62-224-96.lightspeed.chrlnc.sbcglobal.net) |
2022-03-23 15:24:48 +0100 | ccntrq | (~Thunderbi@2a01:c23:9016:8e00:deb2:a539:32d1:3ed2) |
2022-03-23 15:26:33 +0100 | abradabara | (~abradabar@185.183.97.187) (Ping timeout: 256 seconds) |
2022-03-23 15:30:44 +0100 | <exarkun> | Does that page say something about coverage? |
2022-03-23 15:32:22 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-03-23 15:32:38 +0100 | <hololeap> | there's a badge that says "Coverage | 20%" |
2022-03-23 15:32:52 +0100 | <hololeap> | I'm really just curious |
2022-03-23 15:35:15 +0100 | <boxscape_> | hololeap looks like hpc https://github.com/haskell/hackage-server/blob/a6e570a7ba47256267e8cdd7658163740123e7d5/exes/Build… |
2022-03-23 15:36:30 +0100 | <hololeap> | huh ok |
2022-03-23 15:36:37 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-03-23 15:36:59 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2022-03-23 15:39:53 +0100 | <abastro[m]> | Hm actually, what does left application do good for programming |
2022-03-23 15:39:56 +0100 | <abastro[m]> | Never thought about this |
2022-03-23 15:40:12 +0100 | <hololeap> | that actually looks pretty thorough |
2022-03-23 15:41:00 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Read error: Connection timed out) |
2022-03-23 15:41:17 +0100 | <abastro[m]> | Actually I learned of a case where right multiplication is great |
2022-03-23 15:41:27 +0100 | <boxscape_> | left application as in f(x)? |
2022-03-23 15:41:34 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 15:41:35 +0100 | <boxscape_> | i.e. f is to the left of x? |
2022-03-23 15:41:36 +0100 | <abastro[m]> | In mathematics, so maybe left application is not that great in math as well |
2022-03-23 15:41:50 +0100 | <abastro[m]> | Yes, f (x) |
2022-03-23 15:42:18 +0100 | <boxscape_> | Yeah I'm not sure there's a good reason for it other than for consistency with everything else |
2022-03-23 15:42:24 +0100 | <hololeap> | it's just a convention |
2022-03-23 15:43:00 +0100 | <abastro[m]> | In programming, desire of reading from left to right def makes sense |
2022-03-23 15:43:05 +0100 | <hololeap> | it could be top application and it would work the same |
2022-03-23 15:43:18 +0100 | <geekosaur> | math has x^f too, although it's not widely used |
2022-03-23 15:43:33 +0100 | <abastro[m]> | Yea, never seen that used personally |
2022-03-23 15:44:46 +0100 | <abastro[m]> | Oh wait. Currying requires to left application to look pretty |
2022-03-23 15:44:54 +0100 | <boxscape_> | does it though? |
2022-03-23 15:45:00 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-03-23 15:45:58 +0100 | <abastro[m]> | Yea, with right application, you get (z (y (x f))) |
2022-03-23 15:46:05 +0100 | <boxscape_> | seems fine to me |
2022-03-23 15:46:19 +0100 | <abastro[m]> | ..and you have to read right to left for curried parameters |
2022-03-23 15:46:41 +0100 | <hololeap> | something something arabic |
2022-03-23 15:47:12 +0100 | <boxscape_> | no, just do `(x (y (z f)))` and get used to being able to partially apply the rightmost argument rather than the leftmost argument |
2022-03-23 15:47:41 +0100 | <boxscape_> | or wait would that work out with the type signature... |
2022-03-23 15:47:56 +0100 | <geekosaur> | you'd write the type signature in reverse as well |
2022-03-23 15:47:56 +0100 | <boxscape_> | f :: z -> y -> x -> ... |
2022-03-23 15:47:59 +0100 | <boxscape_> | :/ |
2022-03-23 15:48:22 +0100 | <geekosaur> | f :: res <- z <- y <- x |
2022-03-23 15:48:34 +0100 | <geekosaur> | might even reverse it fully |
2022-03-23 15:48:39 +0100 | <boxscape_> | I don't like that you have to read that from right to left now though |
2022-03-23 15:48:39 +0100 | bahamas | (~lucian@86.120.77.115) (Ping timeout: 260 seconds) |
2022-03-23 15:48:43 +0100 | <geekosaur> | res <- z <- y <- x :: f |
2022-03-23 15:49:12 +0100 | <abastro[m]> | Hahahah |
2022-03-23 15:50:24 +0100 | <abastro[m]> | Pipe operator is a good middle ground after all |
2022-03-23 15:50:51 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 15:51:15 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish) |
2022-03-23 15:52:06 +0100 | k8yun | (~k8yun@user/k8yun) (Read error: Connection reset by peer) |
2022-03-23 15:52:30 +0100 | k8yun | (~k8yun@user/k8yun) |
2022-03-23 15:52:39 +0100 | Pickchea | (~private@user/pickchea) |
2022-03-23 15:55:07 +0100 | <boxscape_> | though if you write it in reverse, `x (y (z f))` actually corresponds to `f :: ((res <- x) <- y) <- z`, which you *can* read from left to right |
2022-03-23 15:55:20 +0100 | <boxscape_> | if you accept that the result comes first |
2022-03-23 15:56:01 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) (Ping timeout: 256 seconds) |
2022-03-23 15:56:33 +0100 | winstonsmith_ | (~winston@2a02:c98:1003:8000:6106:3ff0:197d:fcd2) (Quit: Leaving) |
2022-03-23 15:57:09 +0100 | y04nn | (~y04nn@2a03:1b20:1:e011::a19e) (Ping timeout: 256 seconds) |
2022-03-23 15:58:31 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-03-23 16:03:15 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-23 16:04:10 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 16:04:13 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-03-23 16:05:05 +0100 | acidjnk | (~acidjnk@p200300d0c7049f94990c0fcd1a5d0faa.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2022-03-23 16:06:13 +0100 | CiaoSen | (~Jura@p200300c95735b0002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2022-03-23 16:06:29 +0100 | <abastro[m]> | Hmm if you think of it, monadic bind is left to right, right? |
2022-03-23 16:06:40 +0100 | <abastro[m]> | We apply monadic function to the left |
2022-03-23 16:06:46 +0100 | leungbk | (~user@2603-8000-1201-2dd2-1d5f-5d86-90b5-efe4.res6.spectrum.com) |
2022-03-23 16:07:05 +0100 | <boxscape_> | yep but that's why we also have =<<, to mirror the order of function application |
2022-03-23 16:07:09 +0100 | <boxscape_> | though we only have >>, not << |
2022-03-23 16:08:00 +0100 | <geekosaur> | these days we do have <* |
2022-03-23 16:08:14 +0100 | <boxscape_> | yeah but << would be flip (>>), which is different from <* |
2022-03-23 16:08:36 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
2022-03-23 16:08:54 +0100 | <abastro[m]> | Yep, it follows the order of effect |
2022-03-23 16:09:16 +0100 | <abastro[m]> | It makes me crave more for pipe operator |
2022-03-23 16:10:38 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 16:10:38 +0100 | acidjnk | (~acidjnk@p200300d0c7049f94990c0fcd1a5d0faa.dip0.t-ipconnect.de) |
2022-03-23 16:11:23 +0100 | k8yun_ | (~k8yun@user/k8yun) |
2022-03-23 16:14:04 +0100 | dcoutts_ | (~duncan@host86-167-90-249.range86-167.btcentralplus.com) |
2022-03-23 16:14:15 +0100 | lumberjack123 | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
2022-03-23 16:14:57 +0100 | k8yun | (~k8yun@user/k8yun) (Ping timeout: 252 seconds) |
2022-03-23 16:15:25 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.4.1) |
2022-03-23 16:15:26 +0100 | <kuribas> | :t (<*) |
2022-03-23 16:15:27 +0100 | <lambdabot> | Applicative f => f a -> f b -> f a |
2022-03-23 16:15:29 +0100 | <kuribas> | :t (>>) |
2022-03-23 16:15:30 +0100 | <lambdabot> | Monad m => m a -> m b -> m b |
2022-03-23 16:15:49 +0100 | <kuribas> | :t (<$) |
2022-03-23 16:15:50 +0100 | <lambdabot> | Functor f => a -> f b -> f a |
2022-03-23 16:16:06 +0100 | <kuribas> | :t (*>) |
2022-03-23 16:16:06 +0100 | <lambdabot> | Applicative f => f a -> f b -> f b |
2022-03-23 16:16:17 +0100 | dcoutts__ | (~duncan@host86-167-206-34.range86-167.btcentralplus.com) (Ping timeout: 240 seconds) |
2022-03-23 16:19:26 +0100 | <abastro[m]> | I heard that monad was initially introduced in haskell due to user interest |
2022-03-23 16:19:32 +0100 | <abastro[m]> | What kind of interest was it? |
2022-03-23 16:19:50 +0100 | <c_wraith> | not having to use the previous IO system |
2022-03-23 16:20:03 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish) |
2022-03-23 16:21:30 +0100 | <abastro[m]> | Ouch |
2022-03-23 16:21:45 +0100 | <c_wraith> | What's funny about the history of Haskell there is that the IO type, the Monad class, and the ability to define classes on higher-kinded types were all added to Haskell at the same time |
2022-03-23 16:22:21 +0100 | <abastro[m]> | Oh, i did not know haskell used to not have HKT |
2022-03-23 16:22:38 +0100 | <abastro[m]> | I guess HKT would be a tough concept even for haskell |
2022-03-23 16:23:09 +0100 | <abastro[m]> | Perhaps that is why many modern languages are not following HKT then |
2022-03-23 16:23:10 +0100 | <dminuoso> | Higher kinded types are not the biggest thing here. |
2022-03-23 16:23:16 +0100 | <dminuoso> | But rather typeclasses over higher kinded types. |
2022-03-23 16:23:39 +0100 | <c_wraith> | I don't actually know if it had parametric polymorphism over higher-kinded types before that. |
2022-03-23 16:23:40 +0100 | <dminuoso> | One of the things that makes grokking `Monad` or say `Applicative` confusing, is that they are an interface on `Type -> Type` kinded things, not `Type` things. |
2022-03-23 16:23:53 +0100 | <dminuoso> | And its also something very few languages support. |
2022-03-23 16:23:57 +0100 | <abastro[m]> | Noo I misread :< |
2022-03-23 16:24:24 +0100 | <abastro[m]> | Tbh next to no language implements bare HKT either |
2022-03-23 16:24:50 +0100 | <c_wraith> | admittedly, when most languages talk about higher-kinded types, they are ignoring the fact that they already have them, they just provide no polymorphism over them |
2022-03-23 16:24:59 +0100 | <dminuoso> | Well the idea is present in multiple languages, but not necessarily as first-class types. |
2022-03-23 16:25:19 +0100 | <c_wraith> | which is why I usually say things like "higher-kinded polymorphism" |
2022-03-23 16:25:20 +0100 | <abastro[m]> | I mean the ability to reference the HKT level thing itself |
2022-03-23 16:25:37 +0100 | <c_wraith> | because that's the important part |
2022-03-23 16:26:14 +0100 | <abastro[m]> | Really IIRC with generics in other langs, you'd have List represent List<Any> |
2022-03-23 16:27:31 +0100 | <c_wraith> | Well, that's a bit different. |
2022-03-23 16:28:19 +0100 | <c_wraith> | I think Scala is roughly the only language that's made higher-kinded polymorphism work with that kind of syntax, with Foo[_] stuff |
2022-03-23 16:29:05 +0100 | <c_wraith> | It's still not ideal, but at least it makes it clear that the type argument is unnamed |
2022-03-23 16:30:13 +0100 | <c_wraith> | Which means it has to be treated polymorphically |
2022-03-23 16:31:17 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 16:31:23 +0100 | <dminuoso> | With a bit of twisting you can make it happen in rust |
2022-03-23 16:31:28 +0100 | <dminuoso> | But its rather gross |
2022-03-23 16:31:40 +0100 | <dminuoso> | And certainly doesnt look remotely similar at first glance |
2022-03-23 16:32:00 +0100 | <Sqaure> | I remember reading about GHC adding substantial changes to make it more practical for emitting .js/wasm. I wonder if this is labeled something or if someone has a link to a place where that is detailed? |
2022-03-23 16:32:26 +0100 | <dminuoso> | Sqaure: mpickering mentioned it on the haskell mailing lists a few weeks ago |
2022-03-23 16:32:37 +0100 | <dminuoso> | Might want to poke him in #ghc |
2022-03-23 16:32:45 +0100 | <dminuoso> | Think he's shepharding it |
2022-03-23 16:32:58 +0100 | <Sqaure> | oh ok. Thanks. Ill follow that lead |
2022-03-23 16:33:05 +0100 | <c_wraith> | dminuoso: last I heard, the methods of doing that in Rust break down when you have something like traverse, which is both polytypic and makes use of bounded polymorphism |
2022-03-23 16:34:34 +0100 | mvk | (~mvk@2607:fea8:5cc3:7e00::7980) |
2022-03-23 16:37:35 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-03-23 16:37:39 +0100 | yauhsien | (~Yau-Hsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 16:37:42 +0100 | vysn | (~vysn@user/vysn) |
2022-03-23 16:40:33 +0100 | cosimone | (~user@93-44-187-176.ip98.fastwebnet.it) (Read error: Connection reset by peer) |
2022-03-23 16:43:11 +0100 | cosimone | (~user@93-44-187-176.ip98.fastwebnet.it) |
2022-03-23 16:45:18 +0100 | bahamas | (~lucian@84.232.140.158) |
2022-03-23 16:47:45 +0100 | zebrag | (~chris@user/zebrag) |
2022-03-23 16:48:23 +0100 | acidjnk | (~acidjnk@p200300d0c7049f94990c0fcd1a5d0faa.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2022-03-23 16:49:17 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 256 seconds) |
2022-03-23 16:49:57 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-03-23 16:51:12 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit) |
2022-03-23 16:52:15 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 16:59:11 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) |
2022-03-23 16:59:22 +0100 | <Zemyla> | There should be a class Profunctor p => Contraclosed p where contraclosed :: p a b -> p (b -> x) (a -> x) |
2022-03-23 17:01:25 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish) |
2022-03-23 17:04:44 +0100 | vglfr | (~vglfr@88.155.109.98) |
2022-03-23 17:05:41 +0100 | <geekosaur> | that looks suspiciously arrow-like… |
2022-03-23 17:06:07 +0100 | <[exa]> | Zemyla: any example instances? |
2022-03-23 17:06:23 +0100 | <c_wraith> | the instance for (->) follows directly from the type |
2022-03-23 17:06:56 +0100 | <c_wraith> | and most Profunctor instances are for some wrapped variation on (->) |
2022-03-23 17:07:24 +0100 | <Zemyla> | The only instances I can think of are (->) and Indexed i. |
2022-03-23 17:10:12 +0100 | bahamas | (~lucian@84.232.140.158) (Ping timeout: 240 seconds) |
2022-03-23 17:10:13 +0100 | <c_wraith> | You should be able to write an instance for every Profunctor where the type variables belong to the same function. |
2022-03-23 17:11:20 +0100 | <c_wraith> | which is certainly the most common shape for a Profunctor instance, though not the only one |
2022-03-23 17:13:38 +0100 | xff0x | (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) |
2022-03-23 17:15:01 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-03-23 17:17:39 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 252 seconds) |
2022-03-23 17:18:21 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 17:20:56 +0100 | napping | (~brandon@65.128.43.198) |
2022-03-23 17:21:29 +0100 | benin | (~benin@183.82.207.30) (Ping timeout: 252 seconds) |
2022-03-23 17:22:03 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 252 seconds) |
2022-03-23 17:22:20 +0100 | benin | (~benin@183.82.207.30) |
2022-03-23 17:22:23 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-03-23 17:26:40 +0100 | Pickchea | (~private@user/pickchea) (Ping timeout: 260 seconds) |
2022-03-23 17:29:06 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:9be3:3a9c:fd6c:bab4) (Quit: WeeChat 2.8) |
2022-03-23 17:32:43 +0100 | vglfr | (~vglfr@88.155.109.98) (Ping timeout: 260 seconds) |
2022-03-23 17:33:43 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-03-23 17:33:58 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-03-23 17:38:49 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 256 seconds) |
2022-03-23 17:41:52 +0100 | _ht | (~quassel@231-169-21-31.ftth.glasoperator.nl) |
2022-03-23 17:43:31 +0100 | dextaa_ | (~dextaa@user/dextaa) |
2022-03-23 17:44:03 +0100 | boxscape_ | (~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2022-03-23 17:45:14 +0100 | ubert | (~Thunderbi@p200300ecdf1588c644ba34ac9ed54fc8.dip0.t-ipconnect.de) (Remote host closed the connection) |
2022-03-23 17:47:25 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 17:47:40 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-03-23 17:50:59 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
2022-03-23 17:51:45 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) |
2022-03-23 17:52:03 +0100 | <janus> | what is a quick and dirty way to indent a default Show instance of a record? |
2022-03-23 17:52:22 +0100 | <janus> | like, increase indention on '{', newlines after commas, stuff like taht |
2022-03-23 17:52:57 +0100 | deadmarshal_ | (~deadmarsh@95.38.114.161) |
2022-03-23 17:53:06 +0100 | <janus> | i don't wanna change the code because i have many record nested in one another and i will only use this for debugging anyway |
2022-03-23 17:53:56 +0100 | bahamas | (~lucian@84.232.140.158) |
2022-03-23 17:55:31 +0100 | <sm> | janus: use pretty-show package |
2022-03-23 17:55:35 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
2022-03-23 17:56:04 +0100 | Guest21 | (~Guest21@2408:846a:200:2177:9ee:b4ee:80a3:4cfb) |
2022-03-23 17:56:09 +0100 | <sm> | pretty-simple is another one, slightly different |
2022-03-23 17:56:34 +0100 | <sm> | g'day all |
2022-03-23 17:56:53 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-03-23 17:57:02 +0100 | deadmars- | (~deadmarsh@95.38.230.213) |
2022-03-23 17:57:17 +0100 | deadmarshal_ | (~deadmarsh@95.38.114.161) (Ping timeout: 256 seconds) |
2022-03-23 17:58:21 +0100 | bahamas | (~lucian@84.232.140.158) (Ping timeout: 250 seconds) |
2022-03-23 17:58:34 +0100 | Guest21 | (~Guest21@2408:846a:200:2177:9ee:b4ee:80a3:4cfb) (Client Quit) |
2022-03-23 17:59:51 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Ping timeout: 250 seconds) |
2022-03-23 18:00:11 +0100 | <janus> | nice, thanks, this seems to work |
2022-03-23 18:02:24 +0100 | cosimone | (~user@93-44-187-176.ip98.fastwebnet.it) (Quit: ERC (IRC client for Emacs 27.1)) |
2022-03-23 18:03:11 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-03-23 18:03:26 +0100 | razetime | (~quassel@117.207.18.88) (Remote host closed the connection) |
2022-03-23 18:04:10 +0100 | gues44081 | (~username@2408:846a:200:2177:9ee:b4ee:80a3:4cfb) |
2022-03-23 18:04:46 +0100 | cosimone | (~user@93-44-187-176.ip98.fastwebnet.it) |
2022-03-23 18:06:16 +0100 | lumberjack123 | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-03-23 18:07:07 +0100 | gues44081 | (~username@2408:846a:200:2177:9ee:b4ee:80a3:4cfb) () |
2022-03-23 18:08:16 +0100 | boxscape_ | (~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) |
2022-03-23 18:08:55 +0100 | dextaa_ | (~dextaa@user/dextaa) (Remote host closed the connection) |
2022-03-23 18:12:33 +0100 | abradabara | (~abradabar@185.183.97.187) |
2022-03-23 18:14:57 +0100 | Kaipi | (~Kaiepi@156.34.47.253) (Ping timeout: 240 seconds) |
2022-03-23 18:15:25 +0100 | MaterazziSan | (~Materazzi@139.22.44.89.dynamic.jazztel.es) |
2022-03-23 18:16:05 +0100 | sridaran | (~sridaran@c-68-83-24-37.hsd1.nj.comcast.net) |
2022-03-23 18:18:50 +0100 | ccntrq | (~Thunderbi@2a01:c23:9016:8e00:deb2:a539:32d1:3ed2) (Remote host closed the connection) |
2022-03-23 18:18:57 +0100 | sridaran | (~sridaran@c-68-83-24-37.hsd1.nj.comcast.net) (Client Quit) |
2022-03-23 18:20:53 +0100 | deadmars- | (~deadmarsh@95.38.230.213) (Ping timeout: 250 seconds) |
2022-03-23 18:21:05 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 18:23:14 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:4828:b9b3:658f:35bc) |
2022-03-23 18:23:35 +0100 | sloorush | (~sloorush@136.233.9.99) (Ping timeout: 256 seconds) |
2022-03-23 18:24:03 +0100 | <segfaultfizzbuzz> | so i am trying to push myself to jump beyond what i currently understand... i saw a discussion of the yoneda lemma of category theory and i might have understood it |
2022-03-23 18:24:43 +0100 | <segfaultfizzbuzz> | which is to say that if you have a bunch of functors mapping a variety of things onto X, once you have a great enough variety of those functors are you have completely determined what X is |
2022-03-23 18:25:13 +0100 | <segfaultfizzbuzz> | i know that the yoneda lemma has some kind of relevance to haskell... can anyone help me bridge this? or am i way off base here |
2022-03-23 18:25:51 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 256 seconds) |
2022-03-23 18:27:52 +0100 | bahamas | (~lucian@84.232.140.158) |
2022-03-23 18:28:12 +0100 | <geekosaur> | I'd say the only relevance it has is that a small subset of Haskellers who understand it make use of it |
2022-03-23 18:29:11 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
2022-03-23 18:29:42 +0100 | <segfaultfizzbuzz> | i see... is that "essential" usage or is it "decorative" or "sophisticated" |
2022-03-23 18:30:29 +0100 | <geekosaur> | depends on who's using it, I think |
2022-03-23 18:30:44 +0100 | <geekosaur> | btw I am not one of those who understands yoneda |
2022-03-23 18:30:47 +0100 | MajorBiscuit | (~MajorBisc@wlan-145-94-219-172.wlan.tudelft.nl) (Ping timeout: 252 seconds) |
2022-03-23 18:30:59 +0100 | <geekosaur> | except insofar as I know it's related to functors in some way |
2022-03-23 18:31:21 +0100 | econo | (uid147250@user/econo) |
2022-03-23 18:32:27 +0100 | bahamas | (~lucian@84.232.140.158) (Ping timeout: 260 seconds) |
2022-03-23 18:35:27 +0100 | <janus> | does anybody care about getting aeson 1.5 running on ghc 9.2 (nightly)? if so, i have sent a PR out for that, would appreciate any reviews: https://github.com/haskell/aeson/pull/935 |
2022-03-23 18:36:53 +0100 | sloorush | (~sloorush@136.233.9.99) |
2022-03-23 18:37:49 +0100 | Akiva | (~Akiva@user/Akiva) |
2022-03-23 18:41:31 +0100 | y04nn | (~y04nn@2a03:1b20:1:e011::a19e) |
2022-03-23 18:41:57 +0100 | y04nn | (~y04nn@2a03:1b20:1:e011::a19e) (Remote host closed the connection) |
2022-03-23 18:50:36 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-03-23 18:59:45 +0100 | MaterazziSan | (~Materazzi@139.22.44.89.dynamic.jazztel.es) (ERC (IRC client for Emacs 27.1)) |
2022-03-23 18:59:58 +0100 | bahamas | (~lucian@84.232.140.158) |
2022-03-23 19:00:10 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-03-23 19:00:10 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-03-23 19:00:10 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-03-23 19:04:29 +0100 | nf | (~n@monade.li) (Quit: Fairfarren.) |
2022-03-23 19:05:22 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 19:06:19 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-03-23 19:06:50 +0100 | mrkajetanp | (~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88) |
2022-03-23 19:07:21 +0100 | mbuf | (~Shakthi@223.178.96.253) (Quit: Leaving) |
2022-03-23 19:09:38 +0100 | nf | (~n@monade.li) |
2022-03-23 19:10:15 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
2022-03-23 19:13:44 +0100 | <boxscape_> | segfaultfizzbuzz IIRC one use of the Yoneda lemma in Haskell is that you can you use to transform multiple fmap invocations into a single fmap invocation, potentially improving performance |
2022-03-23 19:14:20 +0100 | <dminuoso> | Well, it's not really a "usage" of the yoneda lemma. |
2022-03-23 19:14:42 +0100 | <boxscape_> | I suppose maybe it's more accurate to say it's a usage of the Yoneda newtype |
2022-03-23 19:16:44 +0100 | <dminuoso> | In a lot of ways I think making these connections to category theory is cute, but it scares users away. |
2022-03-23 19:16:47 +0100 | <segfaultfizzbuzz> | boxscape_: so the yoneda lemma is useful in proving the equivalence between function applications? |
2022-03-23 19:17:12 +0100 | <dminuoso> | segfaultfizzbuzz: So assume you have some repeated applications of fmap |
2022-03-23 19:17:19 +0100 | <dminuoso> | `fmap f . fmap g . fmap h . fmap i` |
2022-03-23 19:17:20 +0100 | <segfaultfizzbuzz> | i am not interested in being "scared away" or "not scared away", i am interested in "effective abstractions which are not masturbatory" |
2022-03-23 19:17:37 +0100 | <dminuoso> | So by fmap laws you have: |
2022-03-23 19:17:48 +0100 | <dminuoso> | fmap f . fmap g . fmap h . fmap i = fmap (f . g . h . i) |
2022-03-23 19:18:01 +0100 | <dminuoso> | But GHC cant make that transformation itself |
2022-03-23 19:18:10 +0100 | <segfaultfizzbuzz> | ...wow really? heh |
2022-03-23 19:18:22 +0100 | <dminuoso> | It cant know functor laws are respected in the first place. |
2022-03-23 19:18:43 +0100 | <segfaultfizzbuzz> | aren't f g h i declared as functors...? |
2022-03-23 19:18:44 +0100 | <dminuoso> | And it would need a special cased simplifier routine to recognize this. But we have neither |
2022-03-23 19:19:00 +0100 | <dminuoso> | With Yoneda you can sort of enforce this transformation itself |
2022-03-23 19:19:29 +0100 | <dminuoso> | % newtype Yoneda f a = Yoneda { runYoneda :: forall b. (a -> b) -> f b } |
2022-03-23 19:19:29 +0100 | <yahb> | dminuoso: |
2022-03-23 19:19:34 +0100 | <dminuoso> | % :t fmap |
2022-03-23 19:19:34 +0100 | <yahb> | dminuoso: Functor f => (a -> b) -> f a -> f b |
2022-03-23 19:19:56 +0100 | <dminuoso> | So Yoneda will, by convention, contain fmap partially applied to something |
2022-03-23 19:20:10 +0100 | <dminuoso> | % x = Yoneda (`fmap` [1,2,3]) |
2022-03-23 19:20:10 +0100 | <yahb> | dminuoso: |
2022-03-23 19:20:15 +0100 | <dminuoso> | Then you just write: |
2022-03-23 19:20:25 +0100 | <dminuoso> | instance Functor (Yoneda f) where fmap f m = Yoneda (\k -> runYoneda m (k . f)) |
2022-03-23 19:20:27 +0100 | <dminuoso> | % instance Functor (Yoneda f) where fmap f m = Yoneda (\k -> runYoneda m (k . f)) |
2022-03-23 19:20:27 +0100 | <yahb> | dminuoso: |
2022-03-23 19:20:42 +0100 | vglfr | (~vglfr@46.96.156.93) |
2022-03-23 19:20:44 +0100 | <dminuoso> | For convenience we now write |
2022-03-23 19:20:47 +0100 | <dminuoso> | % liftYoneda a = Yoneda (\f -> fmap f a) |
2022-03-23 19:20:47 +0100 | <yahb> | dminuoso: |
2022-03-23 19:21:02 +0100 | <dminuoso> | Then you can take some arbitrary functorial value, like [1,2,3], liftYoneda (partially apply to fmap) |
2022-03-23 19:21:10 +0100 | <dminuoso> | Then if you use `fmap` on the Yoneda wrapper, it will automatically do the fusion |
2022-03-23 19:21:18 +0100 | <dminuoso> | And then you lowerYoneda, get your list back |
2022-03-23 19:21:39 +0100 | <dminuoso> | Some people think its cute to explain this in terms of category theory, I prefer just looking at what this does. |
2022-03-23 19:21:55 +0100 | <boxscape_> | (so `fmap f . fmap g . fmap h . fmap i` becomes `lowerYoneda . fmap f . fmap g . fmap h . fmap i . liftYoneda`) |
2022-03-23 19:22:51 +0100 | <boxscape_> | segfaultfizzbuzz the Yoneda lemma here is reflected in the definition of the newtype, f a ~= forall b . (a -> b) -> f b |
2022-03-23 19:23:14 +0100 | <dminuoso> | segfaultfizzbuzz: by the way, Codensity is the exact same story except with (>>=) :) |
2022-03-23 19:24:16 +0100 | <segfaultfizzbuzz> | it's a little bit far beyond where i am but thanks for trying to help me catch a glimpse of things. something about proving equality of fmap compositions |
2022-03-23 19:24:30 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:a9ba:a14e:e332:b83f) |
2022-03-23 19:29:57 +0100 | <dminuoso> | segfaultfizzbuzz: By the way, its usually easier to prove `fmap id = id` |
2022-03-23 19:30:03 +0100 | <boxscape_> | ugh I keep getting the wrong one of these when searching in Hoogle. I was thinking "hmm it seems really strange that Codensity doesn't have have a Monad instance", but of course that's because the first result in hoogle is for profunctors |
2022-03-23 19:30:17 +0100 | <dminuoso> | due to the way our type system works, if you prove `fmap id = id`, `fmap f . fmap g = fmap (f . g)` automatically holds |
2022-03-23 19:30:40 +0100 | <segfaultfizzbuzz> | dminuso: ah interesting |
2022-03-23 19:31:05 +0100 | deadmarshal_ | (~deadmarsh@95.38.230.213) |
2022-03-23 19:32:27 +0100 | <dminuoso> | So yeah, it might be obvious how if you do `fmap f . fmap g . fmap h` on a list that this will generate intermediate lists |
2022-03-23 19:32:32 +0100 | <dminuoso> | Which is a bit unfortunate |
2022-03-23 19:32:42 +0100 | kayvank | (~user@52-119-115-185.PUBLIC.monkeybrains.net) (Remote host closed the connection) |
2022-03-23 19:33:26 +0100 | <dminuoso> | If you have a list of non-trivial size (say a few million elements), and you want to fmap a bunch of times over that, it's clearly faster and better to just compose the functions and fmap once, generating millions cons cells just once, not a bunch of times |
2022-03-23 19:34:02 +0100 | <dminuoso> | Sometimes your code structure lets you just express that, but sometimes it's not as easy or as expressive |
2022-03-23 19:34:39 +0100 | <dminuoso> | It's often more convenient to just wrap it with Yoneda, and then just write naive `fmap` a bunch of times, knowing that the Yoneda Functor implementation will compose (fuse) the functions together. |
2022-03-23 19:35:24 +0100 | deadmarshal_ | (~deadmarsh@95.38.230.213) (Ping timeout: 240 seconds) |
2022-03-23 19:36:04 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-03-23 19:37:24 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:4828:b9b3:658f:35bc) (Ping timeout: 240 seconds) |
2022-03-23 19:38:10 +0100 | cheater | (~Username@user/cheater) |
2022-03-23 19:40:03 +0100 | k8yun_ | (~k8yun@user/k8yun) (Quit: Leaving) |
2022-03-23 19:40:57 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-03-23 19:43:00 +0100 | Kaipi | (~Kaiepi@156.34.47.253) |
2022-03-23 19:43:35 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2022-03-23 19:44:27 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-03-23 19:44:42 +0100 | Benzi-Junior | (~BenziJuni@88-149-64-179.du.xdsl.is) |
2022-03-23 19:45:58 +0100 | vglfr | (~vglfr@46.96.156.93) (Read error: Connection reset by peer) |
2022-03-23 19:46:07 +0100 | vglfr | (~vglfr@46.96.156.93) |
2022-03-23 19:46:49 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-03-23 19:47:00 +0100 | alp | (~alp@user/alp) (Ping timeout: 240 seconds) |
2022-03-23 19:49:09 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds) |
2022-03-23 19:50:02 +0100 | unyu | (~pyon@user/pyon) (Ping timeout: 240 seconds) |
2022-03-23 19:50:28 +0100 | justOkay | (~justache@user/justache) (Read error: Connection reset by peer) |
2022-03-23 19:51:27 +0100 | justOkay | (~justache@user/justache) |
2022-03-23 19:52:33 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 256 seconds) |
2022-03-23 19:56:36 +0100 | vglfr | (~vglfr@46.96.156.93) (Ping timeout: 245 seconds) |
2022-03-23 19:59:43 +0100 | yauhsien_ | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 20:02:03 +0100 | phma | (~phma@host-67-44-208-58.hnremote.net) (Read error: Connection reset by peer) |
2022-03-23 20:03:18 +0100 | phma | (phma@2001:5b0:2172:dab8:f6f:c543:829a:340a) |
2022-03-23 20:03:32 +0100 | jakalx | (~jakalx@base.jakalx.net) () |
2022-03-23 20:05:17 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-03-23 20:08:59 +0100 | sloorush | (~sloorush@136.233.9.99) (Ping timeout: 256 seconds) |
2022-03-23 20:09:35 +0100 | <tomsmeding> | it seems I cannot open file descriptors other than 0,1,2 for a child process with 'process'; is it correct that this is just omitted functionality or am I missing something? |
2022-03-23 20:11:39 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-03-23 20:13:58 +0100 | <monochrom> | In the CreateProcess record, the field "close_fds" may help. |
2022-03-23 20:14:21 +0100 | <tomsmeding> | oh wait |
2022-03-23 20:14:31 +0100 | <tomsmeding> | heh |
2022-03-23 20:14:37 +0100 | <tomsmeding> | monochrom++ |
2022-03-23 20:14:40 +0100 | <monochrom> | But it sounds very indirectly like False is already the default. |
2022-03-23 20:15:42 +0100 | unyu | (~pyon@user/pyon) |
2022-03-23 20:15:56 +0100 | <tomsmeding> | hm, but the workaround of writing a shell script for this is probably a better idea anyway, so I don't even need the functionality anymore :) |
2022-03-23 20:16:26 +0100 | <geekosaur> | using fds other than those is highly nonstandard behavior |
2022-03-23 20:16:47 +0100 | <monochrom> | Yeah, give Caeser what belongs to Caeser, give shell what belongs to shell. >:) |
2022-03-23 20:17:02 +0100 | <tomsmeding> | man 1 bwrap: "--file FD DEST - Copy from the file descriptor FD to DEST." |
2022-03-23 20:17:05 +0100 | <tomsmeding> | I didn't invent the API |
2022-03-23 20:17:24 +0100 | <tomsmeding> | I agree it's weird |
2022-03-23 20:17:25 +0100 | <geekosaur> | timeto use /proc/self/fds |
2022-03-23 20:17:42 +0100 | <monochrom> | Give Caeser a shell, and he can script for a day. Show him Haskell, and he has galaxy brain for life or something. |
2022-03-23 20:18:58 +0100 | <geekosaur> | oh, that might not even work |
2022-03-23 20:19:03 +0100 | <geekosaur> | bubblewrap stuff |
2022-03-23 20:19:59 +0100 | <geekosaur> | anyway it is nonstandard whereas process has to be as standard as possible to work on both unix and windows. you may find something more flexible in the unix package |
2022-03-23 20:20:32 +0100 | <geekosaur> | (in particular at least some versions of windows use fds 3 and 4 already) |
2022-03-23 20:21:10 +0100 | <tomsmeding> | ah right, good point about portability |
2022-03-23 20:23:22 +0100 | oooottoo | (~oooottoo@c-24-9-197-96.hsd1.co.comcast.net) |
2022-03-23 20:23:25 +0100 | <geekosaur> | (and yet still runs into problems. #ghc has seen several rants about both os x and windows portability gotchas) |
2022-03-23 20:26:29 +0100 | yauhsien_ | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-23 20:27:10 +0100 | yauhsien_ | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 20:37:18 +0100 | briandaed | (~root@109.95.142.93.r.toneticgroup.pl) (Ping timeout: 252 seconds) |
2022-03-23 20:38:44 +0100 | Guest27 | (~Guest27@c-174-63-99-174.hsd1.ma.comcast.net) (Quit: Client closed) |
2022-03-23 20:41:48 +0100 | yauhsien_ | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-23 20:42:08 +0100 | Giovanni | (~Giovanni@176.67.166.45) (Remote host closed the connection) |
2022-03-23 20:44:36 +0100 | yauhsien_ | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 20:49:17 +0100 | yauhsien_ | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
2022-03-23 20:51:02 +0100 | Codaraxis__ | (~Codaraxis@user/codaraxis) (Quit: Leaving) |
2022-03-23 20:51:29 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 256 seconds) |
2022-03-23 20:53:44 +0100 | vorpuni | (~pvorp@2001:861:3881:c690:653f:80d3:c158:3650) |
2022-03-23 20:54:35 +0100 | xcmw | (~textual@dyn-72-33-0-152.uwnet.wisc.edu) |
2022-03-23 21:02:32 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2022-03-23 21:04:48 +0100 | bahamas | (~lucian@84.232.140.158) (Ping timeout: 252 seconds) |
2022-03-23 21:06:38 +0100 | Guest84 | (~Guest84@2601:602:87f:4220:33a4:a2a9:5b0:4f1e) |
2022-03-23 21:07:17 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 21:07:49 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2022-03-23 21:07:51 +0100 | Pickchea | (~private@user/pickchea) |
2022-03-23 21:07:55 +0100 | <Guest84> | Hello! I was wondering how I would make a list by doing something like: [16,8..0] but rather than returning [16,8,0] it would return [16,8,4,2,0].... I want the decrement to be division |
2022-03-23 21:08:51 +0100 | <geekosaur> | you can't do that automagically |
2022-03-23 21:09:03 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
2022-03-23 21:09:12 +0100 | <Guest84> | How would you suggest it be done? |
2022-03-23 21:09:13 +0100 | <geekosaur> | the various list iteration syntaxes are all invocation of Enum methods |
2022-03-23 21:09:25 +0100 | <Guest84> | Right |
2022-03-23 21:09:37 +0100 | <geekosaur> | also you're not getting 0 from a division, did you mean 1? |
2022-03-23 21:10:02 +0100 | <Guest84> | Yes |
2022-03-23 21:10:33 +0100 | Lord_of_Life_ | Lord_of_Life |
2022-03-23 21:10:54 +0100 | <geekosaur> | mmm |
2022-03-23 21:11:50 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-03-23 21:12:19 +0100 | <geekosaur> | > let divs 1 = [1]; divs x = x : divs (x `div` 2) in divs 16 |
2022-03-23 21:12:20 +0100 | <lambdabot> | [16,8,4,2,1] |
2022-03-23 21:13:05 +0100 | <Guest84> | Awesome! |
2022-03-23 21:13:15 +0100 | <Guest84> | Thank you!! |
2022-03-23 21:14:08 +0100 | pgib | (~textual@173.38.117.90) |
2022-03-23 21:14:22 +0100 | Techcable | (~Techcable@user/Techcable) (Remote host closed the connection) |
2022-03-23 21:14:29 +0100 | Techcable | (~Techcable@user/Techcable) |
2022-03-23 21:15:41 +0100 | yauhsien_ | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 21:15:51 +0100 | <tomsmeding> | > takeWhile (> 0) (iterate (`div` 2) 16) |
2022-03-23 21:15:52 +0100 | <lambdabot> | [16,8,4,2,1] |
2022-03-23 21:16:45 +0100 | <abastro[m]> | > map (shiftL 2) [4..0] |
2022-03-23 21:16:46 +0100 | <lambdabot> | [] |
2022-03-23 21:17:00 +0100 | <tomsmeding> | > map (shiftL 2) [4,3..0] |
2022-03-23 21:17:01 +0100 | <lambdabot> | [32,16,8,4,2] |
2022-03-23 21:17:05 +0100 | <abastro[m]> | Duh me |
2022-03-23 21:17:14 +0100 | <tomsmeding> | > map (shiftL 1) [4,3..0] |
2022-03-23 21:17:15 +0100 | <lambdabot> | [16,8,4,2,1] |
2022-03-23 21:17:32 +0100 | <tomsmeding> | > map bit [4,3..0] |
2022-03-23 21:17:34 +0100 | <lambdabot> | [16,8,4,2,1] |
2022-03-23 21:17:41 +0100 | <tomsmeding> | that may be the shortest you're going to get |
2022-03-23 21:17:48 +0100 | <abastro[m]> | Oh right, shiftL 1. |
2022-03-23 21:17:54 +0100 | <Guest84> | that is awesome |
2022-03-23 21:18:05 +0100 | <abastro[m]> | `bit` is indeed better |
2022-03-23 21:18:11 +0100 | <tomsmeding> | but only works for powers of 2, these last ones :p |
2022-03-23 21:18:18 +0100 | <Guest84> | what does bit do? |
2022-03-23 21:18:18 +0100 | <abastro[m]> | I hope it is also faster than division |
2022-03-23 21:18:33 +0100 | <tomsmeding> | Guest84: https://hackage.haskell.org/package/base-4.16.0.0/docs/Data-Bits.html#v:bit |
2022-03-23 21:18:35 +0100 | mohy | (~mohy@2001:718:1e03:5128:9f94:1a5f:91e3:d539) |
2022-03-23 21:18:49 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-03-23 21:18:59 +0100 | <abastro[m]> | " bit i is a value with the ith bit set and all other bits clear. " |
2022-03-23 21:19:10 +0100 | <geekosaur> | should be for Int, not guaranteed fr nteger which is what this will be using by default |
2022-03-23 21:19:10 +0100 | <tomsmeding> | abastro[m]: meh, (`div` 2) is almost certainly optimised to >>1, at which point it is a while-loop until that reaches zero instead of a for-loop with a shiftL |
2022-03-23 21:20:16 +0100 | zer0bitz | (~zer0bitz@dsl-hkibng32-54fbf8-224.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-03-23 21:20:30 +0100 | <abastro[m]> | Hmmm. I see, but is while loop faster? |
2022-03-23 21:20:56 +0100 | <abastro[m]> | (I did not know that ghc can perform such optimization consistently) |
2022-03-23 21:20:59 +0100 | yauhsien_ | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2022-03-23 21:21:41 +0100 | <tomsmeding> | a loop with known iteration bounds is usually faster than one without known iteration bounds, so from that perspective the 'map bit' one should be faster -- but this is already making quite deep assumptions on exactly what codegen is going to do |
2022-03-23 21:21:44 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-03-23 21:22:01 +0100 | <abastro[m]> | Hm, true |
2022-03-23 21:22:08 +0100 | <tomsmeding> | abastro[m]: (`div` 2) to (`shiftR` 1) is a standard compiler optimisation called "strength reduction" |
2022-03-23 21:22:15 +0100 | <tomsmeding> | LLVM does it even if you pass -O0 |
2022-03-23 21:23:04 +0100 | alp | (~alp@user/alp) |
2022-03-23 21:23:18 +0100 | <abastro[m]> | TIL |
2022-03-23 21:24:01 +0100 | <tomsmeding> | (I don't actually know anything about GHC in this regard, but I would assume and hope that it does do this :p ) |
2022-03-23 21:24:09 +0100 | yauhsien | (~Yau-Hsien@61-231-38-131.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
2022-03-23 21:27:08 +0100 | <abastro[m]> | Hm after asking this on haskell discourse, I wonder how would this chat ppl wohld solve this problem:... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/e72d79b35c54430ff6544b9ec3fe62e87d9a…) |
2022-03-23 21:28:12 +0100 | <abastro[m]> | (I mean exhaustively pairing the list into (n, n+k) pairs) |
2022-03-23 21:28:24 +0100 | <tomsmeding> | what is the intended time complexity :p |
2022-03-23 21:29:20 +0100 | <abastro[m]> | Well, O(n) |
2022-03-23 21:29:39 +0100 | <abastro[m]> | Seems like O(n^2) is easier going declarative style |
2022-03-23 21:30:21 +0100 | <tomsmeding> | O(n^2) is definitely easy, O(n log n) is quite easy with a Map, O(n) is possible only if k is constant, or if you're using a constant-time-access hash map |
2022-03-23 21:30:23 +0100 | <tomsmeding> | i think |
2022-03-23 21:30:39 +0100 | <tomsmeding> | and if the list is sorted |
2022-03-23 21:30:56 +0100 | <abastro[m]> | Oh right |
2022-03-23 21:31:09 +0100 | <abastro[m]> | We assume the list is sorted |
2022-03-23 21:31:39 +0100 | <abastro[m]> | And isn't it possible to O(n) using IntSet |
2022-03-23 21:32:43 +0100 | <tomsmeding> | hm, right, because Int has a bounded number of bits |
2022-03-23 21:32:48 +0100 | <abastro[m]> | Btw we can do double iterator approach to avoid usage of Map. Tho using Map is more intuitive, I guess. |
2022-03-23 21:33:06 +0100 | <tomsmeding> | if it's sorted then yes you can do a double iterator approach ;) |
2022-03-23 21:33:39 +0100 | <tomsmeding> | oh right, with that approach it's actually also easy |
2022-03-23 21:34:32 +0100 | <abastro[m]> | Easy?? |
2022-03-23 21:34:47 +0100 | <tomsmeding> | ok "easy" :p |
2022-03-23 21:35:38 +0100 | <abastro[m]> | I see, I wonder how to do double iterator approach elegantly in haskell though. |
2022-03-23 21:36:42 +0100 | <tomsmeding> | hm |
2022-03-23 21:40:31 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
2022-03-23 21:40:34 +0100 | awpr | (uid446117@id-446117.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-03-23 21:43:23 +0100 | Unicorn_Princess | (~Unicorn_P@46-54-248-191.static.kate-wing.si) (Remote host closed the connection) |
2022-03-23 21:43:24 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-03-23 21:45:20 +0100 | Unicorn_Princess | (~Unicorn_P@46-54-248-191.static.kate-wing.si) |
2022-03-23 21:46:05 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
2022-03-23 21:46:12 +0100 | oooottoo | (~oooottoo@c-24-9-197-96.hsd1.co.comcast.net) (Quit: Client closed) |
2022-03-23 21:46:25 +0100 | oooottoo | (~oooottoo@c-24-9-197-96.hsd1.co.comcast.net) |
2022-03-23 21:46:33 +0100 | xcmw | (~textual@dyn-72-33-0-152.uwnet.wisc.edu) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-03-23 21:48:00 +0100 | <abastro[m]> | In general, I am curious how one would encode multiple iterator approach in haskell. |
2022-03-23 21:50:05 +0100 | Guest84 | (~Guest84@2601:602:87f:4220:33a4:a2a9:5b0:4f1e) (Quit: Client closed) |
2022-03-23 21:52:08 +0100 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2022-03-23 21:52:20 +0100 | Pickchea | (~private@user/pickchea) |
2022-03-23 21:52:41 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
2022-03-23 21:53:57 +0100 | _ht | (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
2022-03-23 21:54:29 +0100 | <tomsmeding> | I may have an interesting laziness-based approach |
2022-03-23 21:55:02 +0100 | <tomsmeding> | the need to skip with the first pointer that have been taken by the second pointer makes things complicated |
2022-03-23 21:55:43 +0100 | <monochrom> | IMO iterators and generators are poor people's emulations of lazy lists. In Haskell, we have real lazy lists, so why want emulations. |
2022-03-23 21:56:16 +0100 | <tomsmeding> | this one is not just a lazy list, it's a lazy list where the tail depends on the head :p |
2022-03-23 21:56:29 +0100 | <tomsmeding> | like the classic `fix (\l -> 0 : 1 : zipWith (+) l (tail l))` |
2022-03-23 21:56:38 +0100 | <maerwald> | if laziness was enough, there would be no streaming libraries |
2022-03-23 21:56:46 +0100 | <monochrom> | But we have real fixed points like that, too. |
2022-03-23 21:56:49 +0100 | <maerwald> | laziness is poor people's streaming |
2022-03-23 21:56:52 +0100 | <dminuoso> | monochrom: Mmm, that's not entirely correct. In other languages you often interleave them with side effectsd. |
2022-03-23 21:57:01 +0100 | <dminuoso> | Then you get something closer to ListT |
2022-03-23 21:57:25 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-03-23 21:57:40 +0100 | <monochrom> | Yeah. Well, we have real ListT and it's a library rather than at the mercy of language builtins, too. |
2022-03-23 21:57:51 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-03-23 21:59:27 +0100 | <monochrom> | And we have Cont (and it's also user-definable) so you can also do http://www.vex.net/~trebla/haskell/cont.xhtml#yield if you want to syntactically look like writing a loop that calls "yield". |
2022-03-23 22:01:52 +0100 | pavonia | (~user@user/siracusa) |
2022-03-23 22:01:58 +0100 | acidjnk | (~acidjnk@p200300d0c7049f94c956cb44f746ab1f.dip0.t-ipconnect.de) |
2022-03-23 22:02:05 +0100 | unyu | (~pyon@user/pyon) (Ping timeout: 250 seconds) |
2022-03-23 22:02:08 +0100 | <monochrom> | I haven't extended that to ContT for interleaving yield with your choice of monadic effect. But you get the point. |
2022-03-23 22:02:08 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-03-23 22:02:54 +0100 | Unicorn_Princess | (~Unicorn_P@46-54-248-191.static.kate-wing.si) (Remote host closed the connection) |
2022-03-23 22:03:10 +0100 | Unicorn_Princess | (~Unicorn_P@46-54-248-191.static.kate-wing.si) |
2022-03-23 22:03:25 +0100 | <monochrom> | (I hope to come back and write that in the future. But for now, learning Lean is more interesting, haha.) |
2022-03-23 22:04:16 +0100 | <tomsmeding> | abastro[m]: https://paste.tomsmeding.com/NWCbieCw seems to work |
2022-03-23 22:04:19 +0100 | mohy | (~mohy@2001:718:1e03:5128:9f94:1a5f:91e3:d539) (Ping timeout: 260 seconds) |
2022-03-23 22:06:03 +0100 | oooottoo | (~oooottoo@c-24-9-197-96.hsd1.co.comcast.net) (Quit: Client closed) |
2022-03-23 22:07:39 +0100 | remedan | (~remedan@octo.cafe) (Remote host closed the connection) |
2022-03-23 22:11:19 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Ping timeout: 260 seconds) |
2022-03-23 22:12:16 +0100 | deadmarshal_ | (~deadmarsh@95.38.112.219) |
2022-03-23 22:14:23 +0100 | <abastro[m]> | Wow, that is such a brilliant solution! |
2022-03-23 22:14:36 +0100 | <mon_aaraj> | Hello! I've been trying to configure GHCi, but it seems that it isn't quite working how it is meant to. If I read any documentation, it says that it can read a file from ~/.config/.ghci, but it never reads the file from there. But it does work when I put it in ~/.ghci. I might already know of the source of the issue, since I had the same problem with GHCup not handling symlinks correctly, and my |
2022-03-23 22:14:38 +0100 | <abastro[m]> | I like your use of Boolean list for stack. |
2022-03-23 22:14:38 +0100 | <mon_aaraj> | ~/.config directory is a symlink to ~/Git, could that be the issue? If not, then I am probably doing something wrong. Here's my ~/.config/.ghci: https://bpa.st/G5LA |
2022-03-23 22:14:56 +0100 | remedan | (~remedan@octo.cafe) |
2022-03-23 22:16:06 +0100 | <tomsmeding> | abastro[m]: it's not really a stack, rather a queue |
2022-03-23 22:16:41 +0100 | <tomsmeding> | that's why I took the self-recursive definition here; if it was a queue I could just pass it down the iteration in 'go' like a normal value |
2022-03-23 22:16:59 +0100 | <abastro[m]> | Oh, I meant processing inside the go function. |
2022-03-23 22:17:08 +0100 | <abastro[m]> | Wait |
2022-03-23 22:17:12 +0100 | deadmarshal_ | (~deadmarsh@95.38.112.219) (Ping timeout: 272 seconds) |
2022-03-23 22:17:25 +0100 | <tomsmeding> | mon_aaraj: where did you read that ~/.config/.ghci should work? |
2022-03-23 22:17:39 +0100 | <abastro[m]> | I guess I saw something wrong, yea it is queue |
2022-03-23 22:18:40 +0100 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2022-03-23 22:18:50 +0100 | Pickchea | (~private@user/pickchea) |
2022-03-23 22:19:10 +0100 | <tomsmeding> | abastro[m]: producing a proper Either containing the error instead of throwing is an exercise for the reader ;p |
2022-03-23 22:20:30 +0100 | <abastro[m]> | 👍 |
2022-03-23 22:20:59 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-03-23 22:21:27 +0100 | <mon_aaraj> | tomsmeding: https://downloads.haskell.org/ghc/latest/docs/html/users_guide/ghci.html#the-ghci-files |
2022-03-23 22:22:08 +0100 | <mon_aaraj> | I also think this file is in the source of GHC, so I'm not sure, maybe there's something weird going on with the documentation |
2022-03-23 22:23:57 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 22:24:28 +0100 | <tomsmeding> | in any case this changed in ghc 9.2, the 9.0.1 docs have "$HOME/.ghci" instead of "$XDG_CONFIG_HOME/.ghci" |
2022-03-23 22:25:00 +0100 | nsyd | (~psy@104-62-224-96.lightspeed.chrlnc.sbcglobal.net) (Quit: i'm still here dont worry) |
2022-03-23 22:25:10 +0100 | karim | (~karim@156.200.129.163) |
2022-03-23 22:25:25 +0100 | <mon_aaraj> | Ah, so I am using an old version, I didn't realise. Thank you so very much! |
2022-03-23 22:25:38 +0100 | <tomsmeding> | but it doesn't seem to work for me in 9.2.1 either :p |
2022-03-23 22:25:59 +0100 | <tomsmeding> | mon_aaraj: not so much "old", 8.10.7 is still the "recommended" for stable production use kindof |
2022-03-23 22:26:05 +0100 | <monochrom> | If you go for 9.2.*, please go for 9.2.2 :) |
2022-03-23 22:26:59 +0100 | <monochrom> | In particular 9.2.2 has extra accomdation code for trying both $HOME and $XDG_whatever |
2022-03-23 22:26:59 +0100 | <tomsmeding> | ah, "GHC now follows by default the XDG Base Directory Specification. If $HOME/.ghc is found it will fallback to the old paths to give you time to migrate. This fallback will be removed in three releases." |
2022-03-23 22:27:24 +0100 | <maerwald> | yeah, so in order to figure out GHC behavior, you need an excel sheet |
2022-03-23 22:27:35 +0100 | <mon_aaraj> | Definitely! Thank you so very much monochrom! |
2022-03-23 22:27:39 +0100 | <abastro[m]> | When did GHC pick LTS scheme? |
2022-03-23 22:27:49 +0100 | <monochrom> | 9.2.1 had "no more $HOME, exclusively XDG" hardcoded, thus the quarrel. |
2022-03-23 22:28:10 +0100 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2022-03-23 22:28:23 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2022-03-23 22:28:35 +0100 | <maerwald> | mon_aaraj: how does ghcup not handle symlinks correctly? |
2022-03-23 22:29:17 +0100 | lavaman | (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 240 seconds) |
2022-03-23 22:29:26 +0100 | <monochrom> | One excel sheet is not enough. Things actually get multi-dimensional. For example here is a 3D situation: http://www.vex.net/~trebla/haskell/cabal-cabal.xhtml#shared |
2022-03-23 22:29:43 +0100 | <maerwald> | 3d excel? |
2022-03-23 22:30:12 +0100 | <mon_aaraj> | Oh no, it does. It just reminds me of when it didn't, a really nice person helped me to fix the issue and committed a fix into ghcup a while ago, so I thought that might've been the culprit, but I was just using the wrong GHC version |
2022-03-23 22:30:27 +0100 | <maerwald> | surely a nice person |
2022-03-23 22:30:49 +0100 | <maerwald> | the last bug was sed replacing symlinks (because that is sed's default behavior) |
2022-03-23 22:30:52 +0100 | <monochrom> | "We'll see about that" :) |
2022-03-23 22:31:10 +0100 | <maerwald> | after decades of unix, I didn't even know that one |
2022-03-23 22:32:21 +0100 | karim | (~karim@156.200.129.163) (Ping timeout: 256 seconds) |
2022-03-23 22:34:41 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-03-23 22:35:08 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-03-23 22:35:16 +0100 | slack1256 | (~slack1256@191.125.227.76) |
2022-03-23 22:37:08 +0100 | Pickchea | (~private@user/pickchea) |
2022-03-23 22:42:15 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds) |
2022-03-23 22:43:54 +0100 | <mon_aaraj> | hmm, well after updating GHC and trying to use it, there's this warning which isn't bad, but it seems to be quite incorrect: ``[ Warn ] Possibly insufficient disk space on /tmp. At least 5000 MB are recommended, but only 3934.59 are free. Consider freeing up disk space or setting TMPDIR env variable.``, what could be causing this? there's tons of free space on my root partition, and also it seems |
2022-03-23 22:43:56 +0100 | <mon_aaraj> | to work perfectly. running ``df -h /tmp`` shows that the size is 3.9 gigabytes, with only 7 megabytes being used, which I guess is the source of the error? |
2022-03-23 22:44:04 +0100 | <mon_aaraj> | *GHCup |
2022-03-23 22:44:41 +0100 | <maerwald> | that's not an error |
2022-03-23 22:45:06 +0100 | cosimone | (~user@93-44-187-176.ip98.fastwebnet.it) (Read error: Connection reset by peer) |
2022-03-23 22:45:17 +0100 | <maerwald> | there's no easy way to determine exactly how much disk space you need |
2022-03-23 22:45:26 +0100 | <maerwald> | 5GB should be enough for everyone |
2022-03-23 22:46:00 +0100 | <tomsmeding> | mon_aaraj: /tmp is probably a tmpfs on your system (like on most), hence being a lot smaller than your root partition: it's as large as the amount of RAM, sortof |
2022-03-23 22:46:49 +0100 | <mon_aaraj> | ah, i see. i have about 8 gigs of ram, so I guess is scales based on the amount of ram i have |
2022-03-23 22:46:50 +0100 | <Maxdamantus> | /tmp is not usually tmpfs afaik, though it will typically be cleared on boot. |
2022-03-23 22:47:05 +0100 | mmhat | (~mmh@55d49226.access.ecotel.net) (Ping timeout: 256 seconds) |
2022-03-23 22:47:10 +0100 | <maerwald> | It's quite annoying that some distros are advertising for /tmp to be a small partition. FHS and no other standard say this. |
2022-03-23 22:47:12 +0100 | <Maxdamantus> | oh, on their system, nvm. |
2022-03-23 22:47:30 +0100 | <mon_aaraj> | yeah, it is a tmpfs on my system |
2022-03-23 22:47:36 +0100 | <Maxdamantus> | And yes, default tmpfs size is 50% of RAM. |
2022-03-23 22:47:37 +0100 | <tomsmeding> | Maxdamantus: my arch machine has a tmpfs /shrug/ |
2022-03-23 22:47:47 +0100 | <tomsmeding> | ah TIL 50% |
2022-03-23 22:48:01 +0100 | <Maxdamantus> | You can probably resize it using something like `mount -o remount,size=75% /tmpfs` |
2022-03-23 22:48:01 +0100 | <maerwald> | the "clean on reboot" is exactly why we like to use /tmp instead of some custom dir |
2022-03-23 22:48:18 +0100 | <geekosaur> | it'sa real partition on my system but I generally force that during sinstallation |
2022-03-23 22:48:43 +0100 | <dminuoso> | We're currently evaluating switching to clean-on-reboot with tmpfs on / currently :) |
2022-03-23 22:48:48 +0100 | <dminuoso> | For our entire server fleet |
2022-03-23 22:49:24 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-03-23 22:49:59 +0100 | <maerwald> | small files you can just dump in /tmp and forget about it... bigger files you try to clean up, but don't need to worry if your process crashes before that |
2022-03-23 22:50:16 +0100 | <maerwald> | for anything else, you're implementing cleanup logic manually or start getting angry user reports |
2022-03-23 22:50:45 +0100 | <Maxdamantus> | I think I just have the default debian behaviour, which is clean-on-reboot. I don't bother separating things into different partitions. I just have a btrfs filesystem over a few SSDs, and debian is one subvolume in that, with tmp included. |
2022-03-23 22:51:01 +0100 | <dminuoso> | Because why have any implicit state at all. Of course this only works because we have nixos, so at boot the entire system is synthesized. |
2022-03-23 22:51:15 +0100 | <maerwald> | yeah, but some distros advertise /tmp to be a small partition (less than a gigabyte) |
2022-03-23 22:51:49 +0100 | <Maxdamantus> | Those distros seem evil. |
2022-03-23 22:52:09 +0100 | gdown | (~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net) |
2022-03-23 22:52:23 +0100 | <Maxdamantus> | Maybe they're just not designed for desktop use. |
2022-03-23 22:52:49 +0100 | gnyeki | (~gnyeki@user/gnyeki) (Remote host closed the connection) |
2022-03-23 22:52:50 +0100 | <Maxdamantus> | For desktop use, I expect to be able to just chuck a 5 GiB file into /tmp, even if I've only got 8 GiB of RAM. |
2022-03-23 22:53:13 +0100 | <Maxdamantus> | Don't have to put it somewhere persistent where I can forget to clean it up later. |
2022-03-23 22:53:23 +0100 | <mon_aaraj> | ah, yeah, nixos seems like an interesting idea to put servers to use. it's certainly a nice concept |
2022-03-23 22:53:57 +0100 | <mon_aaraj> | Maxdamantus: what distro don't do it, i wonder? i mean i also use arch and it does the tmpfs thing |
2022-03-23 22:54:43 +0100 | <Maxdamantus> | mon_aaraj: afaik, debian, since I don't think I've seen that on any of my installations. |
2022-03-23 22:54:46 +0100 | jlamothe | (~jlamothe@198.251.61.229) (Remote host closed the connection) |
2022-03-23 22:55:12 +0100 | <mon_aaraj> | ah, interestinhg |
2022-03-23 22:55:51 +0100 | slack2414 | (~slack1256@186.11.117.121) |
2022-03-23 22:55:54 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) |
2022-03-23 22:56:28 +0100 | slack1256 | (~slack1256@191.125.227.76) (Ping timeout: 272 seconds) |
2022-03-23 22:57:34 +0100 | <yushyin> | there is also /var/tmp/ (usually cleaned up by tmpfiles.d after 30days, but `man hier' describes /var/tmp/ as a variant of /tmp, where the duration is not specified) |
2022-03-23 22:58:07 +0100 | <Maxdamantus> | I sometimes put things in /dev/shm, if I actually want to put it on tmpfs. |
2022-03-23 22:59:15 +0100 | <monochrom> | I don't think "desktop" implies either "large /tmp" or "small /tmp" either. Too many users with too many different prejudices. |
2022-03-23 22:59:34 +0100 | slack2414 | slack1256 |
2022-03-23 22:59:48 +0100 | <monochrom> | If there are n users, you can count on having 1.5n+35 rivalling opinions. |
2022-03-23 22:59:54 +0100 | vysn | (~vysn@user/vysn) |
2022-03-23 23:00:09 +0100 | <monochrom> | That's right, because some people actually are self-inconsistent. |
2022-03-23 23:00:10 +0100 | <Maxdamantus> | Historically, /tmp would very likely have not been tmpfs. |
2022-03-23 23:00:29 +0100 | <Maxdamantus> | I suspect if some distros do it, that's probably a recent thing, since people sometimes have lots of RAM now. |
2022-03-23 23:00:59 +0100 | <monochrom> | Plus SSD has more wear-out problems. |
2022-03-23 23:01:09 +0100 | <monochrom> | Historically, SSD did not exist. |
2022-03-23 23:01:20 +0100 | <dminuoso> | Wear-out problems are a myth that affect virtually nobody *shrugs* |
2022-03-23 23:01:23 +0100 | <Maxdamantus> | Right, so there probably weren't even performance expectations of /tmp |
2022-03-23 23:01:24 +0100 | alp | (~alp@user/alp) (Remote host closed the connection) |
2022-03-23 23:01:32 +0100 | yauhsien | (~yauhsien@61-231-38-131.dynamic-ip.hinet.net) (Ping timeout: 272 seconds) |
2022-03-23 23:01:42 +0100 | alp | (~alp@user/alp) |
2022-03-23 23:01:49 +0100 | <hpc> | i mean, if we're really talking history, historically /var was tape |
2022-03-23 23:01:51 +0100 | <Maxdamantus> | It was just more harddrive space, which was conventionally able to be cleared from time to time. |
2022-03-23 23:01:59 +0100 | <dminuoso> | We're switching to all flash storage because it turns out that spinning disks, averaged, die faster than spinning disks. |
2022-03-23 23:02:08 +0100 | <monochrom> | Yeah, historically, what's "desktop"? >:) |
2022-03-23 23:02:08 +0100 | <dminuoso> | *spinning disks die faster than ssds |
2022-03-23 23:02:16 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:d42a:6ce2:77df:38ee) |
2022-03-23 23:02:29 +0100 | <segfaultfizzbuzz> | is optimization ai-hard? |
2022-03-23 23:03:06 +0100 | <Maxdamantus> | dminuoso: that's also a fairly recent development (last 5 years or so). |
2022-03-23 23:03:34 +0100 | <abastro[m]> | Oh I should use tmp directory more, I am sick of huge downloads |
2022-03-23 23:04:09 +0100 | <Maxdamantus> | Though I guess SSDs have had more predictable failures than HDDs for a while. |
2022-03-23 23:04:29 +0100 | <monochrom> | I agree that I don't worry about SSD wearing out. But there were just a couple of years when it was a valid concern. That was a historical factor of the tmpfs convention today. I mean, speaking of historical legacies. |
2022-03-23 23:04:34 +0100 | <Maxdamantus> | (since even the SSDs from 5 years ago would be able to tell you when they're going to run out of TBW) |
2022-03-23 23:04:46 +0100 | jlamothe | (~jlamothe@198.251.61.229) |
2022-03-23 23:04:46 +0100 | <abastro[m]> | SSDs are basically better now, then? |
2022-03-23 23:04:56 +0100 | <Maxdamantus> | Yes. |
2022-03-23 23:05:21 +0100 | <Maxdamantus> | Unless you actually want large amounts of storage, in which case HDDs are cheaper. |
2022-03-23 23:05:28 +0100 | <monochrom> | There is also "when you power off, you should lose /tmp data, because better privacy". |
2022-03-23 23:06:33 +0100 | <Maxdamantus> | Does /tmp actually store a lot of private data? |
2022-03-23 23:06:52 +0100 | <Maxdamantus> | Presumably /home would be a bigger concern. |
2022-03-23 23:06:53 +0100 | <monochrom> | I guess depends on the user? |
2022-03-23 23:07:19 +0100 | <monochrom> | I don't mean to say that I agree with the paranoid concern. |
2022-03-23 23:07:42 +0100 | <monochrom> | But some people think like that, and they are also more vocal. |
2022-03-23 23:08:11 +0100 | <monochrom> | Now add herding effects. |
2022-03-23 23:08:15 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds) |
2022-03-23 23:08:27 +0100 | <abastro[m]> | Is trying to be conscious about password choice being paranoid? |
2022-03-23 23:08:45 +0100 | <abastro[m]> | Now I am worried if I am suffering paranoia |
2022-03-23 23:08:51 +0100 | <monochrom> | Yes and no? |
2022-03-23 23:09:18 +0100 | <hpc> | it's not paranoia if the clowns really are trying to eat you :P |
2022-03-23 23:09:19 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:a9ba:a14e:e332:b83f) (Remote host closed the connection) |
2022-03-23 23:09:20 +0100 | <monochrom> | Because if you use an automatic password randomizer, then you no longer need to be conscious about it >:) |
2022-03-23 23:09:35 +0100 | <abastro[m]> | Oh wait |
2022-03-23 23:09:36 +0100 | <maerwald> | abastro[m]: being paranoid about being paranoid is a classical sign of being paranoid xD |
2022-03-23 23:09:36 +0100 | <hpc> | you do have to take care of that system though |
2022-03-23 23:09:50 +0100 | machinedgod | (~machinedg@mtrlpq02-1168108095.sdsl.bell.ca) |
2022-03-23 23:09:59 +0100 | <abastro[m]> | Did not know about automatic pw randomizer |
2022-03-23 23:10:08 +0100 | <abastro[m]> | Guess next time I am registering in a strange website, I should use that |
2022-03-23 23:10:12 +0100 | <maerwald> | is it *really* random? |
2022-03-23 23:10:12 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-03-23 23:10:24 +0100 | <monochrom> | OK, they're more commonly called "password manager". |
2022-03-23 23:10:30 +0100 | <maerwald> | who wrote those? |
2022-03-23 23:10:31 +0100 | <hpc> | maerwald: there's a joke about urandom in there somewhere |
2022-03-23 23:10:31 +0100 | <abastro[m]> | Oh no I should stop being paranoid about paranoid |
2022-03-23 23:10:44 +0100 | <monochrom> | But one of its function is to generate randomized passwords. |
2022-03-23 23:11:24 +0100 | <maerwald> | does Kaspersky have a pssword manager? |
2022-03-23 23:11:30 +0100 | <abastro[m]> | At least many enough ppl just use single password everywhere so that hackers would not bother to break the pseudorandom |
2022-03-23 23:11:38 +0100 | <segfaultfizzbuzz> | lol kapersky password manager lol |
2022-03-23 23:11:41 +0100 | <monochrom> | Is a randomizer really random? Does a programmer really program? >:) |
2022-03-23 23:12:02 +0100 | <segfaultfizzbuzz> | kapersky bitcoin wallet lol |
2022-03-23 23:12:36 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:d42a:6ce2:77df:38ee) (Quit: segfaultfizzbuzz) |
2022-03-23 23:13:49 +0100 | mvk | (~mvk@2607:fea8:5cc3:7e00::7980) (Ping timeout: 240 seconds) |
2022-03-23 23:14:06 +0100 | <abastro[m]> | So how secure is random number generator in haskell |
2022-03-23 23:14:18 +0100 | unyu | (~pyon@user/pyon) |
2022-03-23 23:14:29 +0100 | <monochrom> | The compiler doesn't come with one. |
2022-03-23 23:14:36 +0100 | <abastro[m]> | Wait, haskell base even does not have random number generator right |
2022-03-23 23:14:42 +0100 | <monochrom> | Then you go to hackage and choose one you want. |
2022-03-23 23:14:54 +0100 | <abastro[m]> | I can already hear ppl complaining abt it |
2022-03-23 23:15:16 +0100 | <abastro[m]> | Anyway, how about random package? |
2022-03-23 23:15:21 +0100 | <abastro[m]> | Is it secure? |
2022-03-23 23:15:28 +0100 | <monochrom> | It is not cryptographic. |
2022-03-23 23:16:10 +0100 | <monochrom> | There are some in cryptographic packages. |
2022-03-23 23:16:19 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 256 seconds) |
2022-03-23 23:16:27 +0100 | <maerwald> | I think there is no reasonable definition of security. There's a scientific definition of insecurity though |
2022-03-23 23:16:30 +0100 | <monochrom> | But I might just read from /dev/urandom |
2022-03-23 23:16:48 +0100 | <hpc> | read from /dev/random, there's no difference anymore |
2022-03-23 23:16:59 +0100 | <abastro[m]> | Thanks, I should be more careful about using random package then |
2022-03-23 23:17:00 +0100 | <hpc> | there never really was, imo |
2022-03-23 23:17:08 +0100 | <monochrom> | Oh heh OK I guess shorter name to type. |
2022-03-23 23:17:43 +0100 | <abastro[m]> | Oh If /dev/random is HW-generated random |
2022-03-23 23:17:45 +0100 | <abastro[m]> | That would be great |
2022-03-23 23:17:53 +0100 | <hpc> | people had these really weird hangups about needing to block for randomness for a couple more bytes, but it's somehow totally fine to have a 2048-bit key encrypting gigabytes of traffic at a timme |
2022-03-23 23:18:27 +0100 | <monochrom> | I agree. Another paranoid concern. |
2022-03-23 23:18:32 +0100 | <hpc> | abastro[m]: /dev/random is whatever linux has to do to get you a non-blocking stream of entropy that it safe to use |
2022-03-23 23:18:38 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4) |
2022-03-23 23:18:47 +0100 | <hpc> | likely a mix of hw and seeded randomness |
2022-03-23 23:19:19 +0100 | <abastro[m]> | Interesting, great one |
2022-03-23 23:19:32 +0100 | <abastro[m]> | Finally, I do not need to use random package |
2022-03-23 23:19:58 +0100 | <monochrom> | The random package is great for Monte Carlo purposes. |
2022-03-23 23:20:26 +0100 | <monochrom> | But I admit that the conversation started with privacy etc. |
2022-03-23 23:22:26 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:4199:73fa:f378:33d) (Ping timeout: 245 seconds) |
2022-03-23 23:23:22 +0100 | <maerwald> | privacy is so oldschool |
2022-03-23 23:26:36 +0100 | Sgeo_ | (~Sgeo@user/sgeo) |
2022-03-23 23:29:01 +0100 | Sgeo | (~Sgeo@user/sgeo) (Ping timeout: 256 seconds) |
2022-03-23 23:31:55 +0100 | deadmarshal_ | (~deadmarsh@95.38.112.219) |
2022-03-23 23:33:37 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-03-23 23:35:59 +0100 | Akiva | (~Akiva@user/Akiva) |
2022-03-23 23:36:17 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds) |
2022-03-23 23:36:43 +0100 | deadmarshal_ | (~deadmarsh@95.38.112.219) (Ping timeout: 260 seconds) |
2022-03-23 23:36:46 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-23 23:38:35 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-03-23 23:40:48 +0100 | michalz | (~michalz@185.246.204.57) (Remote host closed the connection) |
2022-03-23 23:41:05 +0100 | <koala_man> | sm[i]: shellcheck's error IDs are 1xxx emitted by the parser, 2xxx by the AST analysis, 3xxx are individual POSIX and shell support violations (also AST analysis) |
2022-03-23 23:43:30 +0100 | <sm> | aha, thanks |
2022-03-23 23:44:15 +0100 | <sm> | and just numbered increasingly as you add them I guess |
2022-03-23 23:51:41 +0100 | slac45879 | (~slack1256@191.126.227.64) |
2022-03-23 23:53:31 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 260 seconds) |
2022-03-23 23:53:33 +0100 | romesrf | (~romes@44.190.189.46.rev.vodafone.pt) |
2022-03-23 23:54:00 +0100 | slack1256 | (~slack1256@186.11.117.121) (Ping timeout: 260 seconds) |
2022-03-23 23:55:32 +0100 | kraftwerk28_ | kraftwerk28 |
2022-03-23 23:57:16 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) |