Logs on 2022-04-19 (liberachat/#haskell)
| 00:00:26 | × | Tuplanolla quits (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:01:36 | × | xff0x_ quits (~xff0x@om126033110024.35.openmobile.ne.jp) (Read error: Connection reset by peer) |
| 00:02:59 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds) |
| 00:06:10 | × | JimL quits (~quassel@89-162-2-132.fiber.signal.no) (Ping timeout: 246 seconds) |
| 00:06:13 | <dibblego> | <maerwald> the confusion probably comes from not understanding that `a -> (a -> a)` is `a -> a -> a` |
| 00:06:18 | <dibblego> | aka "all functions take one argument" |
| 00:07:57 | <Axman6> | Need to tattoo that to the back of every Haskell beginner's hand |
| 00:09:17 | <dibblego> | would be nice if it was well understood as a matter of fact, from which we then make approximations — especially in teaching |
| 00:12:22 | → | mxs joins (~mxs@user/mxs) |
| 00:23:33 | <abastro[m]> | Well, isn't it just currying by default |
| 00:29:18 | <jackdk> | no, because even an "uncurried" function of type `(x, y) -> z` still takes a single argument |
| 00:32:13 | <abastro[m]> | I mean, that one might not be uncurried for real. |
| 00:41:51 | × | jgeerds quits (~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 276 seconds) |
| 00:44:07 | × | renzhi quits (~xp@2607:fa49:6500:b100::19a0) (Ping timeout: 240 seconds) |
| 00:46:15 | × | littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
| 00:48:23 | → | vysn joins (~vysn@user/vysn) |
| 00:48:55 | → | chenqisu1 joins (~chenqisu1@183.217.200.38) |
| 00:54:26 | → | RevoGen joins (~RevoGen@laptop-grs098eo.bc.edu) |
| 00:55:39 | <Axman6> | Years after learning about the pitfalls of precision in floating point representations and how to maintain accuracy in the context of high performance computing, I have finally been able to use this knowledge to fix a rounding bug in a (surprisingly important) financial system (that isn't yet in production, so no Office Space sheninigans for me) |
| 00:57:06 | → | renzhi joins (~xp@2607:fa49:6500:b100::229c) |
| 00:59:48 | → | littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo) |
| 00:59:50 | → | yauhsien joins (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) |
| 01:01:06 | <sm> | sweet |
| 01:02:24 | <Axman6> | fix was to change ((x / y) - z) * q to ((x * q) / y) - (z * q) |
| 01:02:55 | <Axman6> | @check \x y z q -> z /= 0 ==> ((x / y) - z) * q == (x * q / y) - z * q |
| 01:02:55 | <lambdabot> | :-1:-1:Ambiguous infix expression |
| 01:03:18 | × | Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Quit: Leaving) |
| 01:03:20 | <Axman6> | @check \x y z q -> (y /= 0) ==> (((x / y) - z) * q == (x * q / y) - z * q) |
| 01:03:22 | <lambdabot> | *** Failed! Falsifiable (after 1 test and 11 shrinks): |
| 01:03:22 | <lambdabot> | -0.8623034840690951 -0.5487141738649985 -0.13193816659739946 0.3886086030777... |
| 01:03:37 | → | oxide joins (~lambda@user/oxide) |
| 01:04:23 | × | yauhsien quits (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 01:06:19 | × | gurkenglas quits (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 240 seconds) |
| 01:06:25 | → | abastro joins (~abab9579@220.75.216.63) |
| 01:06:54 | <Axman6> | (I am expecting that to fail btw) |
| 01:07:16 | <Axman6> | Do we have anything that can test if two expressions are algebraically equivalent? |
| 01:07:32 | <Axman6> | @check \x y z q -> (y /= 0) ==> (((x / y) - z) * q == (x * q / y) - z * (q :: Rational)) |
| 01:07:33 | <lambdabot> | +++ OK, passed 100 tests. |
| 01:08:55 | → | xff0x_ joins (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) |
| 01:11:15 | × | littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
| 01:13:46 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 01:14:22 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 01:14:23 | × | mtjm quits (~mutantmel@2604:a880:2:d0::208b:d001) (Remote host closed the connection) |
| 01:14:46 | → | littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo) |
| 01:15:27 | → | mtjm joins (~mutantmel@2604:a880:2:d0::208b:d001) |
| 01:20:54 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4) |
| 01:21:12 | → | andrey__ joins (~andrey@p200300dbcf108600f3fd07f727d014bd.dip0.t-ipconnect.de) |
| 01:23:39 | × | andrey_ quits (~andrey@p508d5b8f.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 01:36:49 | → | EvanR joins (~EvanR@user/evanr) |
| 01:37:31 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 01:41:44 | <dmj`> | vacuous is insane, might I even say absurd. |
| 01:44:55 | × | anomal quits (~anomal@87.227.196.109) (Remote host closed the connection) |
| 01:46:06 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 250 seconds) |
| 01:46:38 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 01:47:29 | <abastro> | XD |
| 01:49:33 | × | Me-me quits (~me-me@user/me-me) (Read error: Connection reset by peer) |
| 01:50:26 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 250 seconds) |
| 01:50:53 | <EvanR> | so uh |
| 01:51:00 | → | Me-me joins (~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) |
| 01:51:02 | <EvanR> | > decodeFloat (3.14 :: Float) |
| 01:51:04 | <lambdabot> | (13170115,-22) |
| 01:51:16 | <EvanR> | > 13170115 / 2^22 |
| 01:51:18 | <lambdabot> | 3.140000104904175 |
| 01:51:31 | <EvanR> | > showFFloat (Just 100) (3.14 :: Float) "" |
| 01:51:33 | <lambdabot> | "3.1400000000000000000000000000000000000000000000000000000000000000000000000... |
| 01:51:57 | <EvanR> | how or why is showFFloat giving... the "decimal" expansion of all zeros |
| 01:53:11 | <EvanR> | > showFFloat (Just 100) (3.140000104904175 :: Float) "" |
| 01:53:13 | <lambdabot> | "3.1400000000000000000000000000000000000000000000000000000000000000000000000... |
| 01:53:16 | <EvanR> | o_O |
| 01:54:20 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 01:54:21 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 01:55:18 | <EvanR> | is it that 3.14 parses to the same float and has less characters |
| 01:55:42 | × | Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
| 01:57:02 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 01:57:39 | × | oxide quits (~lambda@user/oxide) (Ping timeout: 240 seconds) |
| 01:59:28 | <EvanR> | I could have sworn there was a way to get the real expansion of floats |
| 01:59:46 | → | oxide joins (~lambda@user/oxide) |
| 02:00:02 | <abastro> | > showEFloat (Just 10) (3.14 :: Float) |
| 02:00:06 | <lambdabot> | <[Char] -> [Char]> |
| 02:00:13 | <abastro> | Oh meh |
| 02:00:17 | <abastro> | > showEFloat (Just 10) (3.14 :: Float) "" |
| 02:00:20 | <lambdabot> | "3.1400000000e0" |
| 02:00:23 | × | Me-me quits (~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) (Changing host) |
| 02:00:23 | → | Me-me joins (~me-me@user/me-me) |
| 02:00:31 | <abastro> | Hmm yea, this is weird |
| 02:00:41 | <abastro> | Actually |
| 02:01:07 | <abastro> | > (13170115 / 2^22) :: Float |
| 02:01:10 | <lambdabot> | 3.14 |
| 02:01:16 | <EvanR> | yeah I caught that after, but still |
| 02:01:17 | <abastro> | ^ That is the reason I guess |
| 02:01:56 | <EvanR> | if I corrected it to not switch types how do I print the right far digits of '3.14' |
| 02:02:03 | × | Me-me quits (~me-me@user/me-me) (Quit: Disconnecting on purpose.) |
| 02:02:26 | <EvanR> | or 0.1 |
| 02:02:44 | → | Me-me joins (~me-me@v.working.name) |
| 02:04:16 | × | Me-me quits (~me-me@v.working.name) (Changing host) |
| 02:04:16 | → | Me-me joins (~me-me@user/me-me) |
| 02:05:05 | <abastro> | > floatToDigits 10 (3.14 :: Float) |
| 02:05:08 | <lambdabot> | ([3,1,4],1) |
| 02:05:18 | <EvanR> | lol |
| 02:05:22 | <abastro> | > floatToDigits 10 (3.14 :: Double) |
| 02:05:24 | <lambdabot> | ([3,1,4],1) |
| 02:05:34 | <EvanR> | :t floatToDigits |
| 02:05:35 | <abastro> | Hmm I meant |
| 02:05:36 | <lambdabot> | RealFloat a => Integer -> a -> ([Int], Int) |
| 02:06:36 | <EvanR> | to read 3.14 or 0.1 as a float, then present it as 0.100000000000000000... is hella confusing |
| 02:06:36 | <abastro> | > floatToDigits 10 (realToFrac @_ @Double (3.14 :: Float)) |
| 02:06:38 | <lambdabot> | <hint>:1:33: error: parse error on input ‘@’ |
| 02:06:56 | <abastro> | % floatToDigits 10 (realToFrac @Float @Double 3.14) |
| 02:06:57 | <yahb> | abastro: ([3,1,4,0,0,0,0,1,0,4,9,0,4,1,7,5],1) |
| 02:07:35 | <abastro> | % floatToDigits 10 (3.14 :: Float) |
| 02:07:35 | <yahb> | abastro: ([3,1,4],1) |
| 02:07:40 | <EvanR> | that's doing the same precision shenanigan as before |
| 02:07:45 | <abastro> | So.. it comes from there |
| 02:08:14 | <EvanR> | > (13170115 / 2^22) :: CReal |
| 02:08:16 | <lambdabot> | 3.1400001049041748046875 |
| 02:09:18 | <EvanR> | > 7070651414971679 / 2 ^ 51 :: CReal |
| 02:09:20 | <lambdabot> | 3.1400000000000001243449787580175325274467 |
| 02:09:32 | → | deadmarshal_ joins (~deadmarsh@95.38.228.226) |
| 02:09:57 | <EvanR> | could have sworn there was a way to get this info without CReal |
| 02:10:14 | <EvanR> | since the input is rational |
| 02:10:17 | → | Macbethwin joins (~chargen@D964062A.static.ziggozakelijk.nl) |
| 02:10:38 | <abastro> | Wdym get info? |
| 02:11:00 | <EvanR> | the tail in the last example isn't infinite zeros like showFFloat shows |
| 02:11:09 | <abastro> | Uh |
| 02:11:26 | <abastro> | That's because there is less precision loss |
| 02:11:35 | <abastro> | (If you use CReal) |
| 02:12:21 | <abastro> | I think it is reasonable for the algorithm to compensate for possible errors from calculation |
| 02:12:35 | <EvanR> | the number 3.1400000000000001243449787580175325274467... is the actual value you get when you parse 3.14 |
| 02:12:43 | <EvanR> | it just doesn't display that way |
| 02:12:51 | <abastro> | No |
| 02:13:01 | <abastro> | It's not the "actual value" or anything |
| 02:13:13 | <EvanR> | yes that's what the double value represents |
| 02:13:18 | <abastro> | You should never consider a floating number as a concrete number. |
| 02:13:20 | <EvanR> | that particular rational number |
| 02:13:38 | <abastro> | I mean, Float -> Double conversion is lossful |
| 02:13:45 | <EvanR> | I'm not talking about that conversion |
| 02:14:04 | <abastro> | What are you talking about then? |
| 02:14:04 | <EvanR> | also no it isn't |
| 02:14:08 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 02:14:08 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 02:14:08 | → | wroathe joins (~wroathe@user/wroathe) |
| 02:14:22 | <Axman6> | > showFFloat (Just 100) (read "3.140000104904175" :: Float) "" |
| 02:14:24 | <lambdabot> | "3.1400000000000000000000000000000000000000000000000000000000000000000000000... |
| 02:14:26 | <abastro> | It is, there is conversion error still involved |
| 02:14:30 | <Axman6> | > showFFloat (Just 100) (read "3.14" :: Float) "" |
| 02:14:32 | <lambdabot> | "3.1400000000000000000000000000000000000000000000000000000000000000000000000... |
| 02:14:50 | <EvanR> | Axman6, right |
| 02:14:53 | <abastro> | The thing is, floating point number should never be considered as a concrete number. |
| 02:15:01 | <abastro> | It never is. |
| 02:15:03 | <EvanR> | it definitely is a concrete number |
| 02:15:22 | <EvanR> | unless it's NaN |
| 02:15:27 | <Axman6> | Sorry, just checking if the read instance directly (rather than the Rational instance -> Float conversion) would do anything different |
| 02:15:57 | <EvanR> | it must be from the obscure rule where you display the number with the least amount of digits necessary to reproduce it |
| 02:16:00 | <Axman6> | abastro: every non NaN ieee-754 number represents some exact value, it is possible to know exactly what number that is |
| 02:16:46 | <Axman6> | EvanR: bringing back memories of a bug in PHP (and subsequently several other languages) which caused an infinite loop when parsing a certain floating point number |
| 02:16:55 | <EvanR> | that was a good one |
| 02:17:21 | <abastro> | I mean, even different architectures have different rules for computing floating number |
| 02:17:47 | <abastro> | By rules, I mean it computes different number for same operation modulo some errors |
| 02:18:09 | <EvanR> | I would believe that for something like inverse sine function |
| 02:18:13 | <abastro> | While it is true that you could have it represent specific number, it is never meant to be used like that. |
| 02:18:19 | × | deadmarshal_ quits (~deadmarsh@95.38.228.226) (Ping timeout: 240 seconds) |
| 02:18:42 | <EvanR> | yeah, you describe it as a sort of random function |
| 02:18:51 | <EvanR> | I don't like that picture |
| 02:18:51 | <Axman6> | abastro: I think you are missing the problem EvanR is having |
| 02:18:54 | <abastro> | I did not say random function |
| 02:19:09 | <abastro> | I mean, I did not mean it as a random function |
| 02:19:20 | <EvanR> | we're not even doing a computation here, just talking about the value |
| 02:19:23 | <abastro> | Rather, it is not supposed to be used without consideration for the calculation errors. |
| 02:19:24 | <EvanR> | > decodeFloat 3.14 |
| 02:19:26 | <lambdabot> | (7070651414971679,-51) |
| 02:19:40 | <EvanR> | after parsing that is the value |
| 02:19:45 | <Axman6> | abastro: EvanRis trying to see what the errors are |
| 02:19:51 | <abastro> | Converting (3.14 :: Float) to Double is computation |
| 02:20:02 | <EvanR> | that's not on topic |
| 02:20:13 | <EvanR> | it's "3.14" to Double, or Float |
| 02:20:18 | <EvanR> | and back |
| 02:21:18 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds) |
| 02:21:20 | <abastro> | Well, why would that represent the exact number of (3.14 :: Float) |
| 02:21:25 | <Axman6> | I swear bos has a package for past parsing/rendering of ieee-754 doubles and floats |
| 02:21:34 | <Axman6> | it doesn't, and that's the point abastro |
| 02:21:47 | <EvanR> | the longer decimal expansion is the exact value |
| 02:21:48 | <abastro> | I mean, why do you want that behavior? |
| 02:21:57 | <abastro> | Duh, what is this "exact" thing |
| 02:21:59 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 02:22:02 | <EvanR> | you would want that to compare to the approximation |
| 02:22:11 | <Axman6> | the string "3.14" is parsed into some specific Float value, and EvanR is trying to see exactly whatch float value it is, including the error in the parsing |
| 02:22:15 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 02:22:34 | <abastro> | You want to print "3.14 :: Float" to find the error? |
| 02:22:35 | <abastro> | What? |
| 02:22:39 | × | bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds) |
| 02:22:46 | <EvanR> | I'm very surprised to see all those zeros, which is usually how you express increased precision |
| 02:23:01 | <EvanR> | which in this case shows the wrong value |
| 02:23:24 | <abastro> | That's because it isn't supposed to be for that purpose |
| 02:23:40 | × | abastro quits (~abab9579@220.75.216.63) (Remote host closed the connection) |
| 02:23:52 | <EvanR> | in any case it can't be used for that purpose, but I could have sworn it acted differently before |
| 02:23:58 | <Axman6> | fucksake, abastro if you don't undertstand the problem, stop commenting on it, you're negatively contributing to this discussion at this piont |
| 02:24:14 | → | abastro joins (~abab9579@220.75.216.63) |
| 02:24:27 | <EvanR> | like, to display the digits, you just need a division algorithm and not a real number library |
| 02:24:29 | <abastro[m]> | What |
| 02:24:53 | <abastro> | Like, whining about something that is not supposed to be working as you suggest is okay then? |
| 02:25:45 | <EvanR> | at least I confirmed showFFloat is "supposed" to act like this, which I'll call "wrong" for the sake of argument xD |
| 02:25:47 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 02:26:18 | <Axman6> | let me try to spell it out for you again: The string "3.14" is parsed into _some_ Float value, whose actual value is 3.140000104904175. EvanR is trying to print out that actual value to see what the error is from the idealised 3.14 which cannot be represented in a Float. do you understand? |
| 02:26:26 | <abastro> | .... |
| 02:26:39 | <abastro> | The printing isn't just for that. |
| 02:27:20 | <Axman6> | what are you talking about? |
| 02:28:12 | <Axman6> | % import Data.Double.Conversion.Text |
| 02:28:12 | <yahb> | Axman6: ; <no location info>: error:; Could not find module `Data.Double.Conversion.Text'; It is not a module in the current program, or in any known package. |
| 02:28:15 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 02:28:16 | <EvanR> | up to this point I would have said printing is for seeing the value |
| 02:28:36 | <Axman6> | Are you able to test what https://hackage.haskell.org/package/double-conversion-2.0.4.1/docs/Data-Double-Conversion-Text.html does? |
| 02:28:59 | <EvanR> | alright hold my beer |
| 02:30:15 | travisb_ | is now known as tabemann |
| 02:30:50 | → | deadmarshal_ joins (~deadmarsh@95.38.228.226) |
| 02:30:50 | <abastro> | Showing as string is for giving rough representation |
| 02:31:11 | <abastro> | Exact value is more the implementation detail anyway |
| 02:31:16 | <EvanR> | Data.Double.Conversion.Text> toFixed 100 3.14 |
| 02:31:16 | <EvanR> | "*** Exception: Data.Double.Conversion.Text.toFixed: conversion failed (invalid precision requested) |
| 02:31:18 | <EvanR> | xD |
| 02:31:41 | <Axman6> | abastro: and it's exactly the details that EvanR is trying to find out. how hard is that to understand? |
| 02:32:12 | <EvanR> | *Main Data.Double.Conversion.Text> toFixed 30 3.14 => "3.140000000000000124344978758018" |
| 02:32:24 | <abastro> | Then just do not use the showFFloat lol |
| 02:32:30 | <abastro> | It isn't for the purpose |
| 02:32:36 | <Axman6> | you absolutely should not treat your numeric types as black boxes which produce unpredictable results, you should be able to find out what the errors are and categorise them |
| 02:32:43 | <abastro> | Lol |
| 02:32:54 | <Axman6> | jesus chrtist, that's literally the whole point of this conversation |
| 02:33:06 | <EvanR> | yeah as a wise man once said "I like to understand my code" or something |
| 02:33:10 | <abastro> | I guess that aligns with your point about storing literal utf-8 bitstream |
| 02:33:42 | <abastro> | Well, the "I like to understand" could go the way of "I want to understand what a transistor does when I run this program" |
| 02:33:44 | <Axman6> | EvanR: glag double-conversion worked for you, and good to know it can be used for that |
| 02:33:47 | <Axman6> | glad* |
| 02:34:14 | <EvanR> | it doesn't go up to 100 though |
| 02:34:25 | <EvanR> | which you might need in order to see the repeating decimals |
| 02:35:14 | <EvanR> | there's probably a slick one liner that gives the decimal expansion |
| 02:35:23 | <sm> | EvanR: how about using Decimal instead ? |
| 02:35:36 | <EvanR> | yeah if the goal was to use literal 3.14 |
| 02:35:59 | <EvanR> | I was curious about the float |
| 02:36:12 | <sm> | ah |
| 02:36:14 | <Axman6> | abastro: a word of advice: Whenever you think that the answer to someone's question should begin with "Just do X", that is a good time to stop and think whether you actually understand the question. When someone tells you you don't understand the question is an even better time to have that thought |
| 02:36:17 | <abastro> | Anyway, this is quite a niche usage so it was not implemented |
| 02:36:32 | <abastro> | Why do you think I do not understand lol |
| 02:36:47 | <abastro> | I am saying that it is not implemented this way for a reason |
| 02:36:54 | <EvanR> | yeah we should stick to mainstream usage of Haskell |
| 02:36:55 | <Axman6> | the overwhelming torrent of evidence from the last half an hour showing that was the case? |
| 02:36:57 | <abastro> | And what you are doing is just whining |
| 02:37:23 | <abastro> | Bunch of whines |
| 02:37:45 | <EvanR> | arnold sound board from the late 90s "STOP WHINING" |
| 02:37:51 | <abastro> | ... |
| 02:38:01 | <sm> | can we agree to disagree on this |
| 02:38:35 | <Axman6> | I literally just one hour ago fixed a very closely related bug in our financial system because of knowing about problems like this. This is a system which will handle hundreds of millions of dollars of financial transactions per day. this shit matters. just because you don't think it does doesn't mean it doesn't |
| 02:38:48 | <EvanR> | end of the day, showFFloat is doing something more akin to toShortest which is oddly described as "Compute the shortest string of digits that correct represent the input number" |
| 02:39:08 | <abastro> | ...well why are you using floating point number for financial system at all... |
| 02:39:37 | <EvanR> | if your money is made of base 2 fractions then you're good |
| 02:39:41 | <abastro> | Fixed precision numbers are for that precise reason, isn't it.. |
| 02:39:57 | <Axman6> | no |
| 02:40:09 | <abastro> | The point you get into floating point number with financials, you are asking for trouble |
| 02:40:20 | <Axman6> | and I'm not using floating point numbers, at least not IEEE-754 oves |
| 02:40:35 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 02:40:42 | <abastro> | Yea, I mean then that one is rather orthogonal issue. |
| 02:41:27 | <Axman6> | that's why we're using Scala/Java's BigDecimal. there's possibly as better representation for this computation but this one works for all values we care about |
| 02:41:36 | <EvanR> | earlier I was testing my game algorithm using rational numbers, then went to store them in sqlite and it went no |
| 02:41:47 | <sm> | just no ? |
| 02:41:50 | <EvanR> | haha |
| 02:41:56 | <Axman6> | and our contract language, Daml, doesn't even have floats or doubles |
| 02:41:57 | <EvanR> | more like, they don't have a rational number |
| 02:42:07 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 02:42:13 | <abastro> | Yea, those issues are orthogonal to floating point numbers |
| 02:42:32 | <Axman6> | sm: SQLite comes with JSON extensions by default now, just store them as an array of integers :P |
| 02:42:37 | <abastro> | Well, I mean, the most uses of floating point numbers other than where precision doesn't matter is for physical simulations and such |
| 02:42:59 | <Axman6> | except they aren't orthogonal, because the order of operations caused precision to be lost in computations |
| 02:43:04 | <abastro> | And for physical simulations, you ALWAYS have to consider the error - and well, you won't calculate the deviation from precise value |
| 02:43:07 | <EvanR> | you certainly need to know how accurate your physics simulation is |
| 02:43:34 | <abastro> | This is not the way you would check the accuracy of physics simulation, btw |
| 02:43:52 | <abastro> | It should rather be theoretically modelled without computing at runtime |
| 02:43:57 | <EvanR> | you could check steps against the same steps using real numbers |
| 02:44:07 | <EvanR> | just to see |
| 02:44:15 | <abastro> | I mean, with BigDecimals and such, the logic should be completely different |
| 02:44:30 | <EvanR> | exact real arithmetic is pretty snazzy |
| 02:44:40 | <abastro> | Evan, that is not how physics simulation work in those labs I've been to |
| 02:45:16 | <abastro> | Well many of them do consider the IEEE floats as a bit of black box, some doesn't but does not calculate those numbers in runtime anyway. |
| 02:45:42 | <abastro> | They always consider the error ranges which are taken into account when they run the simulations. |
| 02:45:46 | <abastro> | I mean |
| 02:45:51 | <abastro> | When they design* the simulations |
| 02:45:54 | <EvanR> | they're certainly not a black hole or black box |
| 02:46:08 | <EvanR> | which was the entire point of having standards |
| 02:46:16 | <abastro> | That is why I mentioned that some don't treat them as a black box |
| 02:46:46 | <abastro> | That doesn't mean they check the exact value stored |
| 02:47:11 | <abastro> | Also there are better ways to see exact values stored, you can get the fraction |
| 02:47:15 | <EvanR> | don't ask don't tell, but for floats |
| 02:47:16 | <Axman6> | I see you still don't understand what thew problem was -_- |
| 02:47:18 | <abastro> | You don't need to convert them to strings |
| 02:48:05 | <abastro> | I simply mean that you are trying to use `showFFloat` for wrong purpose |
| 02:48:18 | <Axman6> | > (7070651414971679 / 2^51 :: CReal, (7070651414971679 - 1) / 2^51 :: CReal) |
| 02:48:20 | <lambdabot> | (3.1400000000000001243449787580175325274467,3.139999999999999680255768907954... |
| 02:48:22 | <abastro> | And possibly even misunderstanding floating point numbers, as everyone does |
| 02:48:42 | <sm> | Axman6: is Daml your company's main product ? are there customers yet ? |
| 02:51:01 | <Axman6> | I'm contracted to Digital Asset, so not technically "my company", but I'm not sure if I'd describe it as the main product - they've developed several large systems for various clients, but using Daml. I gues the language could be considered the secret sauce in some sense |
| 02:51:41 | <Axman6> | https://www.digitalasset.com/customer-stories lists some of the projects they have built, including the project I'm on |
| 02:52:26 | <EvanR> | you're using haskell? |
| 02:52:38 | <EvanR> | (please say yes) |
| 02:52:47 | <abastro> | I won't claim I understand floating point numbers as well, I just think everyone misunderstands them in a way or the other. I just mean that whining for some behavior where one behavior is clear-cut better is not great |
| 02:52:58 | <abastro> | Lol who would use haskell for that purpose |
| 02:53:05 | <Axman6> | I genuinelt think that Daml is a super interesting point in the space of contract languages though, it solves a lot of problems which others seem to be less interested in (the concept of what information is visible to which parties is a core concept in the language) |
| 02:53:10 | <sm> | abastro, please stop accusing folks of whining, let's move on |
| 02:53:20 | <abastro> | Well okaya |
| 02:53:28 | <abastro> | s/okaya/okay |
| 02:53:38 | <sm> | thank you :) |
| 02:54:23 | <Axman6> | EvanR: The currently Daml imprlmentation is built on top of GHC, and it basically feels like Haskell++; several useful extensions are enabled by default, and it has some syntax additions for the contract specific stuff (which any haskell developer would immediately see through the veneer to the code that gets generated) |
| 02:54:32 | <abastro> | Imagine building on haskell lol |
| 02:54:47 | <sm> | Axman6: how does it compare to plutus , marlowe etc. ? |
| 02:54:59 | <abastro> | Which is for now an unstable research language (which might change later but eh) |
| 02:55:01 | <Axman6> | I'm not familliar enough with those to comment |
| 02:55:42 | <sm> | Haskell++, sounds more complex than those then. Perhaps more for analysis than implementing contracts ? |
| 02:56:32 | × | RevoGen quits (~RevoGen@laptop-grs098eo.bc.edu) (Remote host closed the connection) |
| 02:56:41 | <sm> | and sorry if it's all spelled out on this fine page, the field is a bit confusing |
| 02:56:42 | <EvanR> | this is like the 4th or 5th thing I heard of that hijacks GHC for their own nefarious purposes, must be pretty feasible to do such things xD |
| 02:56:50 | → | RevoGen joins (~RevoGen@laptop-grs098eo.bc.edu) |
| 02:57:09 | <Axman6> | It's literally a strict (as in not lazy) Haskell dialect, with some syntactic features added to the parser. It's definitely aimes at writing applications more than the relatively small contracts that most smart contract languages seem to target |
| 02:57:46 | <Axman6> | I'd definitely recommend going through the Daml tutorial, I had a lot of fun doing it. |
| 02:57:47 | <sm> | I see.. intended to run off chain, then ? |
| 02:58:46 | <Axman6> | So, Daml is aimed at being ledger agnostic, it isn't written for a specific blockchain, and in fact their Canton system allows you to bridge multiple ledgers together |
| 02:59:05 | <sm> | "Daml empowers developers to build, deploy, and run multi-party applications on a distributed ledger in days" |
| 02:59:26 | <Axman6> | ignore the businessese =) |
| 02:59:43 | <sm> | this is actually the clearest thing I've read so far :) |
| 03:00:13 | <sm> | your comments excluded of course. Cool, thanks for the info |
| 03:02:09 | <Axman6> | the videos on https://www.digitalasset.com/developers/learn should be more developer oriented. I honestly found doing the Daml tutorial was the easiest way to get a good idea of what it's all about. There's anice talk somewhere about how a doctor's office could use the Daml to facilitate payment for medical procedures involving the patient's insurance, their bank, etc. while maintain privacy of the medical data from the parties who don't need to know it |
| 03:05:55 | → | kaph__ joins (~kaph@bo-18-157-187.service.infuturo.it) |
| 03:05:56 | <sm> | I found my way to https://docs.daml.com and https://www.digitalasset.com/developers/examples > Applications and Libraries |
| 03:06:26 | <sm> | is there any publicly-visible real world application you know of ? |
| 03:07:13 | <sm> | maybe some of these are |
| 03:07:20 | <Axman6> | I'm not sure, being a contractor I don't see much of what goes on in the rest of the company |
| 03:08:10 | × | kaph_ quits (~kaph@151.43.109.170) (Ping timeout: 246 seconds) |
| 03:08:24 | <Axman6> | trying to see if anyone has a good video introduction though |
| 03:08:52 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::85f6) (Ping timeout: 250 seconds) |
| 03:08:59 | × | abastro quits (~abab9579@220.75.216.63) (Remote host closed the connection) |
| 03:10:06 | → | abastro joins (~abab9579@220.75.216.63) |
| 03:10:21 | <Axman6> | I wouldn't recommend jumping into applications without understanding the basics though, the whole template/contract/choice, consuming choices, disclosure etc are pretty new concepts and the example code won't make sense without understand what they mean |
| 03:10:29 | × | abastro quits (~abab9579@220.75.216.63) (Remote host closed the connection) |
| 03:10:42 | <sm> | I guess these are like simple (mostly) web apps, but distributed across multiple users, machines, and possibly blockchains, yet relatively easy to build with some correctness guarantees because of Daml |
| 03:12:01 | → | abastro joins (~abab9579@220.75.216.63) |
| 03:12:03 | <Axman6> | they might have web apps, but Daml is mostly agnostic of that. We use Scala (sadly) to turn the handle, so to speak. you need something external putting data into the system to actually have the application "run" |
| 03:13:49 | <Axman6> | I've been recommended https://www.youtube.com/watch?v=AGxt4yQceXA (dev focused) and https://www.youtube.com/watch?v=ztFPc6GOtlE (higher level) |
| 03:14:24 | → | mbuf joins (~Shakthi@136.185.79.70) |
| 03:14:52 | <Axman6> | There are some subtlties to the contract model that have some really big ramifications in how you design things, which can complicate designs a bit, but the result is much more robust |
| 03:15:27 | <sm> | thanks, I just was taking a shot at understanding more of what this is without having to watch a video or do a tutorial |
| 03:17:32 | <sm> | my attention span vs their technical writing :) |
| 03:19:28 | × | abastro quits (~abab9579@220.75.216.63) (Remote host closed the connection) |
| 03:21:17 | → | tvandinther joins (~tvandinth@2406:e002:6815:1801:2c95:5009:a36c:8152) |
| 03:22:07 | <tvandinther> | Hi all. I am just starting out with Haskell, and I am trying to set up an IDE to work with it. I have tried following various guides online to setting things up but they're all either incomplete or outdated. Are there any up-to-date and complete guides you can recommend to get me set up with a good integrated environment? I'd prefer to use IntelliJ |
| 03:22:07 | <tvandinther> | or Atom as the editor. |
| 03:23:24 | <glguy> | tvandinther: the easiest to get working is vscode |
| 03:24:35 | <tvandinther> | Does that have an integrated repl? |
| 03:27:11 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 03:27:37 | → | inversed_ joins (~inversed@94.13.111.159) |
| 03:27:50 | × | inversed quits (~inversed@94.13.111.159) (Ping timeout: 272 seconds) |
| 03:28:23 | <Axman6> | it has an integrated terminal which can run ghci, is there anything you need beyond that? |
| 03:28:28 | <glguy> | The repl gets started with the 'cabal repl' command. vscode has embedded terminal windows, that part doesn't have much to do with editor integration |
| 03:29:32 | <glguy> | I've also got vim+coc+hls working; that wasn't too hard |
| 03:30:15 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 03:30:21 | <tvandinther> | Cool, I can give it a go setting up VSCode, which extensions will I need? (I currently also have Stack installed) |
| 03:30:23 | <Axman6> | VS code is definitely the way to go though if you're not a vim or emacs user, that's where most of the effort has gone with Haskell Language Server's integration, because it's definitely become the most popular IDE to work with Haskell on in the last few years |
| 03:31:08 | <Axman6> | tvandinther: I would recommend going wiht using ghcup to manage GHC installs and haskell language server (this will be the default with the next version of the Haskell plugin for VS Code luckily) |
| 03:31:09 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds) |
| 03:31:28 | <Axman6> | you can use ghcup to install and manage stack too |
| 03:32:08 | <tvandinther> | So I understand it, is GHCup a similar tool to something like NVM for node.js? |
| 03:33:10 | <Axman6> | I'm not sure what NVM does, but it's a tool that manages GHC installations, as well as cabal-install (haskell package manager command), hls (the haskell language server for VS code etc.), stack, etc. |
| 03:33:24 | <Axman6> | it makes switching between compilers really easy, which sometimes you'll need to do |
| 03:33:44 | <tvandinther> | cool, yeah sounds useful. I'll install it now |
| 03:33:53 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 03:34:06 | <Axman6> | https://www.haskell.org/ghcup/ |
| 03:35:16 | <Axman6> | you can do it with out the curl | sh if you prefer (I would do curl > install.sh; less install.sh, and then sh install.sh personally) |
| 03:39:31 | <tvandinther> | alright, I got ghcup installed on WSL2 |
| 03:40:15 | <Axman6> | nice - WSL should work ok, but be warned that development on windows can be a bit harder than *nix system. I think WSL should be fine though |
| 03:41:18 | <tvandinther> | Yeah hopefully. Only issues I've seemed to have with it is IDE integration from a windows installation across to tools installed on WSL. But VS Code supposedly has that sorted. |
| 03:41:27 | <tvandinther> | What's the next step? |
| 03:41:41 | <Axman6> | fire up VS code, install the Haskell plugin |
| 03:43:13 | <tvandinther> | Cool, got that now. |
| 03:44:39 | <Axman6> | not sure what the best next step is - possible running `stack new MyNewProject simple` somewhere you want your code to be, then opening that folder in VS code (you can also use `cabal init -i` to make a cabal project without stack) |
| 03:46:46 | <tvandinther> | Looks good. I guess from here my main 2 questions are 1) How do I run this from the VS Code as opposed to using the command line, and 2) How do I open a REPL terminal which loads my current project |
| 03:47:06 | <Axman6> | once you have a haskell project, opening a .hs file should let you hover over things and get their types, and I think ctrl clicking (or something, I don't use windows) should take you to definitions if they're in your project |
| 03:47:57 | <Axman6> | I don't think there's any integration that makes a new Haskell project in VS Code itself (would be a good plugin feature request). |
| 03:48:34 | <Axman6> | I usually just use the built in terminal and run cabal repl. for stack it would be stack repl I think. Stack might have the ability to reload on save too, I can't remember |
| 03:49:28 | <tvandinther> | ok yeah I see. So once I'm in the cabal repl, any time I save a file, the REPL will reload that file into it? |
| 03:49:51 | <Axman6> | no |
| 03:50:02 | <maerwald[m]> | tvandinther: https://www.haskell.org/ghcup/steps/ |
| 03:50:13 | <maerwald[m]> | There is an introduction |
| 03:50:22 | <Axman6> | maerwald[m]++ |
| 03:50:29 | <Axman6> | maerwald++ |
| 03:50:43 | <Axman6> | (just to make sure lambdabot's karma goes to the right place!) |
| 03:51:07 | <tvandinther> | Thank you for that link |
| 03:51:33 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 03:51:40 | <Axman6> | definitely a better idea to read all the docs than listen to me :P |
| 03:51:59 | × | renzhi quits (~xp@2607:fa49:6500:b100::229c) (Ping timeout: 240 seconds) |
| 03:52:08 | <tvandinther> | So as far as IDE features go with VS Code, it's just the syntax highlighting and type information. The rest of the workflow is done through the terminal, is that correct? |
| 03:52:16 | <tvandinther> | You've been very helpful |
| 03:52:43 | <Axman6> | Haskell language server does a lot more than that, it runs hlint for you to give hints, and it can even write your code for you |
| 03:54:14 | <Axman6> | https://haskell-language-server.readthedocs.io/en/latest/features.html covers them |
| 03:54:16 | <tvandinther> | Nice, I suppose if nothing else needs configuration I will just have a play with what I've got here. |
| 03:58:33 | × | RevoGen quits (~RevoGen@laptop-grs098eo.bc.edu) (Remote host closed the connection) |
| 03:58:50 | → | RevoGen joins (~RevoGen@laptop-grs098eo.bc.edu) |
| 03:59:09 | <Axman6> | tvandinther: if you've got it working, feel free to stick around and ask questions |
| 04:00:22 | <tvandinther> | Thanks for the help Axman. I will certainly drop any questions that I am stuck with. For now I'm quite new that I'll go through some of the exercises on exercism.org and read through learnyouahaskell.com |
| 04:00:39 | <tvandinther> | I'm very new to functional programming :) |
| 04:00:39 | <Axman6> | good plan |
| 04:01:30 | <Axman6> | have fun learning how to write the fibonacci sequence in many different ways! |
| 04:01:55 | <tvandinther> | I look forward to having difficulty with fizzbuzz once again. |
| 04:02:12 | <tvandinther> | Although tbh, haskell makes that one look easy with pattern matched function bodies |
| 04:03:21 | <zzz> | tvandinther: you should watch this https://www.youtube.com/watch?v=VUhlNx_-wYk |
| 04:04:33 | → | cdman joins (~dcm@27.2.217.111) |
| 04:04:33 | × | cdman quits (~dcm@27.2.217.111) (Changing host) |
| 04:04:33 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 04:04:59 | × | cdman quits (~dcm@user/dmc/x-4369397) (Client Quit) |
| 04:05:54 | Axman6 | is reminded of http://www.willamette.edu/~fruehr/haskell/evolution.html |
| 04:06:00 | → | cdman joins (~dcm@27.2.217.111) |
| 04:06:00 | × | cdman quits (~dcm@27.2.217.111) (Changing host) |
| 04:06:00 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 04:11:32 | → | benin joins (~benin@183.82.204.110) |
| 04:11:56 | <zzz> | i hadn't thought of that one since i couldn't understand most of it |
| 04:12:11 | <zzz> | nice throwback |
| 04:14:00 | × | Macbethwin quits (~chargen@D964062A.static.ziggozakelijk.nl) (Remote host closed the connection) |
| 04:14:00 | × | chargen quits (~chargen@D964062A.static.ziggozakelijk.nl) (Remote host closed the connection) |
| 04:14:19 | → | Macbethwin joins (~chargen@D964062A.static.ziggozakelijk.nl) |
| 04:14:20 | → | chargen joins (~chargen@D964062A.static.ziggozakelijk.nl) |
| 04:14:55 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 04:15:37 | <Axman6> | I haven't watched all that video... but is it going to just be lambda calculus in Ruby? |
| 04:17:09 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 04:18:18 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 276 seconds) |
| 04:19:38 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 04:22:02 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 04:24:27 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 04:24:34 | <tvandinther> | Should the syntax highlighting in vs code differentiate functions from values? Although I know technically functions can be values but I'm getting a lot of white text which is a little hard to differentiate |
| 04:25:10 | <tvandinther> | to be more precise, differentiating functions from the parameters |
| 04:33:04 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 04:36:09 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 04:40:33 | × | motherfsck quits (~motherfsc@user/motherfsck) (Quit: quit) |
| 04:48:53 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 04:52:06 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds) |
| 05:11:08 | <tvandinther> | How do I use the `fromListWith` function? It says it is out of scope but I am unsure how to import it |
| 05:13:08 | <tvandinther> | I want the one from the map module |
| 05:14:32 | <Cale> | tvandinther: It would probably be good if it distinguished the value being defined from other variables, regardless of whether it was a function. |
| 05:14:47 | × | cdman quits (~dcm@user/dmc/x-4369397) (Remote host closed the connection) |
| 05:15:20 | → | cdman joins (~dcm@27.2.217.111) |
| 05:15:20 | × | cdman quits (~dcm@27.2.217.111) (Changing host) |
| 05:15:20 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 05:15:54 | <Cale> | import Data.Map qualified as Map |
| 05:16:02 | <Cale> | Map.fromListWith ... |
| 05:16:09 | <Cale> | oops |
| 05:16:16 | <Cale> | import qualified Data.Map as Map |
| 05:18:22 | <Cale> | You may alongside that want to also have an import like import Data.Map (Map) so that you don't have to qualify Map in types. |
| 05:19:52 | × | whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 05:24:50 | × | chargen quits (~chargen@D964062A.static.ziggozakelijk.nl) (Remote host closed the connection) |
| 05:25:10 | → | chargen joins (~chargen@D964062A.static.ziggozakelijk.nl) |
| 05:35:19 | → | Guest34 joins (~Guest34@176.122.87.241) |
| 05:35:31 | × | Guest34 quits (~Guest34@176.122.87.241) (Client Quit) |
| 05:36:25 | → | abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 05:38:42 | × | hgolden quits (~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection) |
| 05:40:13 | → | hgolden joins (~hgolden2@cpe-172-251-233-141.socal.res.rr.com) |
| 05:42:31 | × | Me-me quits (~me-me@user/me-me) (Ping timeout: 246 seconds) |
| 05:43:17 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 05:44:48 | → | Me-me joins (~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) |
| 05:45:19 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 05:45:48 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 05:45:49 | × | chargen quits (~chargen@D964062A.static.ziggozakelijk.nl) (Quit: Leaving) |
| 05:47:12 | × | Macbethwin quits (~chargen@D964062A.static.ziggozakelijk.nl) (Quit: Leaving) |
| 05:47:42 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 05:49:03 | × | hgolden quits (~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection) |
| 05:49:26 | → | odnes joins (~odnes@5-203-240-200.pat.nym.cosmote.net) |
| 05:56:17 | × | Me-me quits (~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) (Changing host) |
| 05:56:17 | → | Me-me joins (~me-me@user/me-me) |
| 05:59:47 | → | hgolden joins (~hgolden2@cpe-172-251-233-141.socal.res.rr.com) |
| 06:03:47 | → | yauhsien joins (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) |
| 06:06:41 | × | jerry99 quits (~330f3e76@cerf.good1.com) (Quit: CGI:IRC (Session timeout)) |
| 06:07:04 | × | statusbot quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection) |
| 06:07:19 | → | statusbot joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) |
| 06:08:48 | × | yauhsien quits (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Ping timeout: 276 seconds) |
| 06:09:19 | → | mikoto-chan joins (~mikoto-ch@213.177.151.239) |
| 06:12:54 | → | phma_ joins (phma@2001:5b0:215a:e258:fc67:1fe1:f22e:6962) |
| 06:14:03 | × | phma quits (~phma@host-67-44-208-158.hnremote.net) (Read error: Connection reset by peer) |
| 06:15:04 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal) |
| 06:18:13 | × | dwt_ quits (~dwt_@c-98-198-103-176.hsd1.tx.comcast.net) (Ping timeout: 246 seconds) |
| 06:20:48 | → | dwt_ joins (~dwt_@c-98-198-103-176.hsd1.tx.comcast.net) |
| 06:23:45 | × | mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 276 seconds) |
| 06:24:05 | → | _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl) |
| 06:27:16 | → | yauhsien joins (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) |
| 06:33:31 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 06:37:08 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 06:39:14 | → | fendor joins (~fendor@91.141.37.72.wireless.dyn.drei.com) |
| 06:41:19 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 06:42:06 | → | Wstfgl0 joins (~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) |
| 06:42:24 | × | Me-me quits (~me-me@user/me-me) (Read error: Connection reset by peer) |
| 06:42:53 | Wstfgl0 | is now known as Me-me |
| 06:43:55 | → | chele joins (~chele@user/chele) |
| 06:44:50 | × | Me-me quits (~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) (Changing host) |
| 06:44:50 | → | Me-me joins (~me-me@user/me-me) |
| 06:46:57 | <Axman6> | tvandinther: you might want to try switching your VS Code theme or installing new ones (through the same extensions tab you installed the Haskell plugin - see https://vscodethemes.com to easily fine ones you like). Some do a much better job than others differentiating between differents of sorts of lexemes than others - I particularly like the Monokai theme for HAskell in VS Code because it differentiated between more things than most themes |
| 06:47:33 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 06:48:31 | <Axman6> | once you have a few themes you like installed, hit ... whatever the equivalent of cmd-shift-p is, tyupe in "theme" and select Preferences: Color Theme. That'll give you a list of themes which will change as you move up and down them live so you can see what your actual code looks like |
| 06:49:19 | × | kaph__ quits (~kaph@bo-18-157-187.service.infuturo.it) (Ping timeout: 240 seconds) |
| 06:50:51 | → | acidjnk joins (~acidjnk@p200300d0c722df64b44bf627258f714f.dip0.t-ipconnect.de) |
| 06:51:30 | → | akegalj joins (~akegalj@93-138-136-145.adsl.net.t-com.hr) |
| 06:52:14 | → | julian joins (~julian@20.83.116.49) |
| 06:56:32 | × | RevoGen quits (~RevoGen@laptop-grs098eo.bc.edu) (Remote host closed the connection) |
| 06:57:57 | × | _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
| 06:59:49 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 07:01:30 | → | Wstfgl0 joins (~me-me@v.working.name) |
| 07:01:37 | × | Me-me quits (~me-me@user/me-me) (Read error: Connection reset by peer) |
| 07:01:44 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:61e6:c8e5:1064:c52e) |
| 07:03:19 | × | shriekingnoise quits (~shrieking@201.231.16.156) (Quit: Quit) |
| 07:03:43 | Wstfgl0 | is now known as Me-me |
| 07:04:57 | <Axman6> | zzz: enjoying this Ruby video, even if I know everything that's going on it's still fun |
| 07:16:18 | → | coot joins (~coot@213.134.190.95) |
| 07:16:22 | × | daniii_ quits (uid550762@id-550762.ilkley.irccloud.com) () |
| 07:17:09 | → | romesrf joins (~romes@185.5.8.134) |
| 07:19:35 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 07:20:16 | × | yauhsien quits (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 07:20:53 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 07:22:33 | → | yauhsien joins (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) |
| 07:24:04 | <tvandinther> | Thanks Axman6 |
| 07:24:21 | × | julian quits (~julian@20.83.116.49) (Remote host closed the connection) |
| 07:25:02 | → | julian joins (~julian@20.83.116.49) |
| 07:27:11 | → | bahamas joins (~lucian@84.232.140.158) |
| 07:27:27 | × | yauhsien quits (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 07:29:47 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:30:24 | → | kaph joins (~kaph@151.19.251.152) |
| 07:30:42 | <romesrf> | o/ |
| 07:31:11 | → | anomal joins (~anomal@87.227.196.109) |
| 07:32:18 | → | abastro joins (~abab9579@220.75.216.63) |
| 07:32:19 | <Axman6> | o/ |
| 07:43:06 | → | zeenk joins (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) |
| 07:44:05 | → | mastarija joins (~mastarija@2a05:4f46:e04:6000:2897:ab56:96f1:cca3) |
| 07:46:37 | → | chomwitt joins (~chomwitt@2a02:587:dc1b:da00:1339:e02b:9822:2360) |
| 07:48:15 | → | yauhsien joins (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) |
| 07:52:54 | → | michalz joins (~michalz@185.246.204.61) |
| 07:54:01 | → | kamyar joins (~kamyar@91.184.78.171) |
| 07:55:48 | → | kamyar71 joins (~kamyar@91.184.78.171) |
| 07:55:57 | <kamyar71> | Hello there |
| 07:55:59 | <kamyar71> | please check this |
| 07:56:00 | <kamyar71> | https://zerobin.net/?70b967b7e82b889b#jwW2a5GSS7iAHhiJuIzRtLedFfdTcdYXUtJKIDYD/rI= |
| 07:56:13 | <kamyar71> | Help me fix the problem |
| 07:56:28 | <kamyar71> | here: evaluate (PLAtomic p) f = f p |
| 07:58:55 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 07:59:27 | × | kamyar quits (~kamyar@91.184.78.171) (Quit: Leaving...) |
| 07:59:42 | <kamyar71> | Anyone can help please? |
| 08:00:45 | phma_ | is now known as phma |
| 08:00:53 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in) |
| 08:00:59 | × | nahcetan quits (~nate@98.45.169.16) (Read error: Connection reset by peer) |
| 08:01:25 | <mastarija> | kamyar71, what exactly is the problem? |
| 08:01:42 | <kamyar71> | Couldn't match expected type ‘a1’ with actual type ‘a’ |
| 08:01:55 | → | nahcetan joins (~nate@98.45.169.16) |
| 08:03:26 | <mastarija> | Just a sec |
| 08:05:47 | <mastarija> | kamyar71, your instance is too general |
| 08:06:07 | <kamyar71> | How can I fix? |
| 08:06:09 | → | hsw joins (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) |
| 08:06:10 | <mastarija> | why are you using a class instead of just implementing the evaluate function? |
| 08:06:33 | × | foul_owl quits (~kerry@23.82.193.87) (Ping timeout: 256 seconds) |
| 08:06:49 | <kamyar71> | Since I want to be able to create multiple instances but with the same parts |
| 08:07:14 | <mastarija> | I recommend you just use plain functions |
| 08:07:24 | <kamyar71> | OK thanks letme try |
| 08:07:27 | <mastarija> | There's no difference other than naming |
| 08:08:19 | <mastarija> | kamyar71, https://zerobin.net/?a9aa438e3e9c81b0#cahom5dSwWuQS1GvmNAtg0w0ifXXiNVsX30/3FtR6DI= |
| 08:09:09 | <kamyar71> | But the wanted thing is just one evaluate function |
| 08:09:15 | <kamyar71> | there are more types like PLSentence |
| 08:09:31 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 260 seconds) |
| 08:10:00 | <mastarija> | For every instance you create a new function, it's just that they have the same name |
| 08:10:08 | <mastarija> | This can cause type inference problems later |
| 08:10:46 | <mastarija> | Anyway, in your case you had a class `class Interpretation p where evaluate :: p -> (a -> Bool) -> Bool` |
| 08:10:46 | → | ccntrq joins (~Thunderbi@2a01:e34:eccb:b060:b49f:b4db:d687:55bf) |
| 08:11:32 | <mastarija> | however, you have a variable `a` in your `evaluate` type signature |
| 08:12:54 | <mastarija> | And compiler doesn't know what that `a` is in relation to `p` so it can't match your `a` from `PLSentence a` to that `a` in `a -> Bool` |
| 08:14:48 | <kamyar71> | Yes I know but I did not find any better way |
| 08:14:58 | <kamyar71> | I do not want to use multi parameter class feature |
| 08:15:04 | <mastarija> | You could use multiparam |
| 08:15:15 | <mastarija> | Yes... not gonna work without that |
| 08:15:29 | <mastarija> | But type classes aren't needed in this case |
| 08:15:50 | <mastarija> | Does anyone know where I can find a detailed explanation on how to read inference rules? I did find some sources, but that is in relation to pure logic. I'm more interested in understanding symbol conventions in the context of programming languages. |
| 08:17:01 | <mastarija> | I kind of understand what's going on, but it's never explicitly explained what certain symbols mean. They are just "presented" and I'm supposed to pick it up through osmosis or something. |
| 08:18:38 | <mastarija> | Like, what's `Γ(x) = v | Γ ⊢ x ⇓ v` supposed to mean? |
| 08:18:53 | <mastarija> | Or rather, how am I supposed to read that? |
| 08:19:24 | <mastarija> | If there's v assigned to x in context Gamma, then x evaluates to v in context Gamma? |
| 08:19:59 | <mastarija> | Also, I'm not sure what those parentheses around x mean. |
| 08:20:31 | <abastro> | I do not have knowledge on this other than my uni class on Proglangs, but I think the meaning should be dependent on each paper. |
| 08:20:45 | <abastro> | Usually papers begin with defining what they mean with these syntax |
| 08:20:55 | → | foul_owl joins (~kerry@23.82.193.88) |
| 08:21:16 | → | Midjak joins (~Midjak@82.66.147.146) |
| 08:21:19 | <abastro> | Perhaps it was mentioned in papers this paper is referring to |
| 08:21:37 | <abastro> | Never seen that `|` part, personally |
| 08:22:47 | <mastarija> | That's just a horizontal dividing line separating premises from the conclusions |
| 08:23:00 | <mastarija> | Adapted for our plain text experience :) |
| 08:23:48 | <mastarija> | abastro, I've found some Harward lectures from CS153 so I'm looking through that |
| 08:24:02 | <mastarija> | but that same notation is everywhere |
| 08:24:37 | <mastarija> | with gamma and delta environments, where gamma is usually for types if I've figured it out correctly |
| 08:26:19 | <abastro> | Oh in that case, I guess it makes sense |
| 08:26:35 | <abastro> | I think this is for evaluation, tho I might be mistaken |
| 08:26:57 | <abastro> | When the environment has mapped `x` to `v`, under that envionment, `x` evaluates to v. |
| 08:27:13 | <mastarija> | abastro, yes, that is for evaluation from my understanding |
| 08:27:31 | <mastarija> | but my problem is same as yours : "I might be mistaken" |
| 08:27:50 | <abastro> | Haha |
| 08:27:51 | <mastarija> | and I can't find any resource that explicitly states what this means |
| 08:27:56 | <abastro> | Yea, I mean |
| 08:28:01 | <abastro> | I learned similar expression |
| 08:28:22 | → | kuribas joins (~user@ptr-17d51end1q9g3xjtvcu.18120a2.ip6.access.telenet.be) |
| 08:28:42 | <abastro> | Never seen ⇓ being used instead of => |
| 08:28:59 | <abastro> | In this way* |
| 08:29:11 | <abastro> | Tho, considering how it reads, I think that one should be evaluation |
| 08:29:54 | <mastarija> | Yes, I've found => in another source |
| 08:29:56 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 08:30:23 | <mastarija> | I mean, what's the point if everyone just writes things any way they like. |
| 08:30:23 | <abastro> | Indeed |
| 08:30:39 | <abastro> | Agreed! |
| 08:31:57 | <mastarija> | abastro, also, when I'm manually trying to type check a piece of code, I'm assuming I'm building the derivation tree from bottom up |
| 08:32:20 | <mastarija> | At the bottom is my whole piece of code that I'm trying to "check", and from there I build my premises? |
| 08:32:33 | <mastarija> | Or is it other way around? |
| 08:32:33 | <abastro> | Yep, conceptually. (Not always though, I think) |
| 08:32:40 | <mastarija> | Goddamnit |
| 08:32:47 | <abastro> | Yea you start from bottom *usually* |
| 08:33:01 | <mastarija> | With the whole expression, which I then try to decompose |
| 08:33:04 | <abastro> | Tho rules might be complicated enough so that you sometimes have to.. meh |
| 08:33:25 | <mastarija> | Ok, so it's handwawy |
| 08:33:38 | <mastarija> | *handwavy |
| 08:34:29 | → | redb joins (~nmh@136.49.49.211) |
| 08:34:37 | <abastro> | At least HM type system allows you to build tree from bottom to up |
| 08:34:52 | <abastro> | Dividing into pieces, and then at the top you decide the type |
| 08:35:03 | <abastro> | Then you come back down combining the types |
| 08:35:15 | <abastro> | Oh wait, perhaps you still need variables to unify with HM. hmm |
| 08:37:19 | <lortabac> | mastarija: "Does anyone know where I can find..." -> Types and Programming Languages by Pierce is a good introduction to the topic |
| 08:39:18 | → | frost joins (~frost@user/frost) |
| 08:39:26 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
| 08:40:35 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 08:45:13 | → | gurkenglas joins (~gurkengla@178.12.18.212) |
| 08:45:16 | × | mastarija quits (~mastarija@2a05:4f46:e04:6000:2897:ab56:96f1:cca3) (Quit: Leaving) |
| 08:45:47 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 08:47:57 | → | aman joins (~aman@user/aman) |
| 08:48:47 | × | kamyar71 quits (~kamyar@91.184.78.171) (Quit: Client closed) |
| 08:51:42 | → | redb joins (~nmh@136.49.49.211) |
| 08:53:35 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
| 08:53:45 | → | krappix joins (~krappix@nat-inria-interne-72-gw-01-lne.lille.inria.fr) |
| 08:55:33 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 08:56:10 | × | x_kuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 08:56:30 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 276 seconds) |
| 08:57:29 | → | mastarija joins (~mastarija@2a05:4f46:e04:6000:2897:ab56:96f1:cca3) |
| 08:58:33 | → | xkuru joins (~xkuru@user/xkuru) |
| 08:58:54 | → | Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net) |
| 09:00:09 | × | Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Quit: You have been kicked for being idle) |
| 09:00:15 | × | hughjfchen[m] quits (~hughjfche@2001:470:69fc:105::c29d) (Quit: You have been kicked for being idle) |
| 09:01:36 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 272 seconds) |
| 09:07:31 | × | rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 09:08:25 | → | rembo10 joins (~rembo10@main.remulis.com) |
| 09:10:04 | × | krappix quits (~krappix@nat-inria-interne-72-gw-01-lne.lille.inria.fr) (Ping timeout: 250 seconds) |
| 09:10:13 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 09:12:13 | → | ubert joins (~Thunderbi@2a02:8109:9880:303c:bbe6:420f:2b6c:e0f7) |
| 09:24:00 | → | coot_ joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 09:24:57 | → | titi joins (~Srain@sunp.ient.rwth-aachen.de) |
| 09:25:28 | → | redb joins (~nmh@136.49.49.211) |
| 09:27:03 | × | coot quits (~coot@213.134.190.95) (Ping timeout: 276 seconds) |
| 09:29:03 | × | xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 09:29:37 | × | titi quits (~Srain@sunp.ient.rwth-aachen.de) (Remote host closed the connection) |
| 09:29:39 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
| 09:31:36 | × | acidjnk quits (~acidjnk@p200300d0c722df64b44bf627258f714f.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 09:40:17 | <abastro> | Is there a safe replacement for `zip l (tail l)`? |
| 09:40:44 | <abastro> | Like, the one which gives empty list or something |
| 09:42:08 | → | nattiestnate joins (~nate@202.138.250.17) |
| 09:46:28 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 09:48:20 | <tomsmeding> | abastro: `zip l (drop 1 l)` |
| 09:50:15 | × | abastro quits (~abab9579@220.75.216.63) (Ping timeout: 256 seconds) |
| 09:51:06 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 276 seconds) |
| 09:51:06 | × | nattiestnate quits (~nate@202.138.250.17) (Quit: WeeChat 3.5) |
| 09:51:13 | <tomsmeding> | mastarija: perhaps https://www.cs.uu.nl/docs/vakken/mcpd/2021/website/notes/Semantics_notes.pdf together with section 1.3 of https://www.cs.uu.nl/docs/vakken/mcpd/2021/website/notes/MinHs_notes.pdf ? |
| 09:53:55 | × | littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
| 09:55:05 | × | yauhsien quits (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 09:57:37 | × | deadmarshal_ quits (~deadmarsh@95.38.228.226) (Ping timeout: 256 seconds) |
| 09:58:46 | <tomsmeding> | abastro[m]: mastarija: that ⇓ for evaluation is super common and indicates big-step semantics |
| 09:58:49 | → | redb joins (~nmh@136.49.49.211) |
| 09:58:49 | × | phma quits (phma@2001:5b0:215a:e258:fc67:1fe1:f22e:6962) (Read error: Connection reset by peer) |
| 09:58:57 | <tomsmeding> | it is indeed read as "evaluates to" with low precedence |
| 09:59:50 | → | phma joins (~phma@host-67-44-208-45.hnremote.net) |
| 10:00:03 | <tomsmeding> | horizontal arrows are generally used for small-step semantics (small-step means "single step at a time", non-recursive, single atomic operation; big-step means basically tree-walking interpreter as you'd naturally write in haskell over an AST) |
| 10:01:35 | → | littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo) |
| 10:02:38 | → | CiaoSen joins (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 10:03:17 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 10:10:16 | × | xff0x_ quits (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 246 seconds) |
| 10:17:55 | → | Null_A_ joins (~null_a@2601:645:8700:2290:ed24:4c30:909e:37d0) |
| 10:18:51 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 10:19:05 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit) |
| 10:19:10 | × | Null_A quits (~null_a@2601:645:8700:2290:9c14:dd1b:c930:439d) (Ping timeout: 250 seconds) |
| 10:20:40 | <abastro[m]> | tomsmeding: Oh I was dumb.. |
| 10:20:57 | <abastro[m]> | I forgot about drop 1 |
| 10:20:58 | <abastro[m]> | Btw |
| 10:21:09 | <abastro[m]> | In my uni, the notation was inverted. |
| 10:21:24 | <abastro[m]> | => was used for big step semantics |
| 10:21:57 | <abastro[m]> | ⇓ was used for small step semantics |
| 10:22:16 | <abastro[m]> | Which was why I was somewhat confused. |
| 10:22:37 | <tomsmeding> | O.o |
| 10:22:40 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 10:23:46 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 10:24:31 | × | tvandinther quits (~tvandinth@2406:e002:6815:1801:2c95:5009:a36c:8152) (Quit: Client closed) |
| 10:26:55 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 10:28:42 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 10:32:59 | → | redb joins (~nmh@136.49.49.211) |
| 10:36:15 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 10:36:18 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 10:36:43 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
| 10:36:59 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
| 10:39:00 | Lord_of_Life_ | is now known as Lord_of_Life |
| 10:39:32 | × | odnes quits (~odnes@5-203-240-200.pat.nym.cosmote.net) (Remote host closed the connection) |
| 10:39:54 | → | odnes joins (~odnes@5-203-240-200.pat.nym.cosmote.net) |
| 10:40:56 | abastro[m] | uploaded an image: (120KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/CduWXAxUUmHTibMxijZbeyVC/Screenshot_20220419-194024_Drive.jpg > |
| 10:41:40 | <tomsmeding> | interesting |
| 10:41:53 | <abastro[m]> | tomsmeding: I guess I was taught wrong |
| 10:41:57 | <tomsmeding> | ¯\_(ツ)_/¯ |
| 10:42:02 | <tomsmeding> | it's just notation in the end |
| 10:42:02 | × | kaph quits (~kaph@151.19.251.152) (Read error: Connection reset by peer) |
| 10:42:07 | × | theproffesor quits (~theprofff@user/theproffesor) (Ping timeout: 246 seconds) |
| 10:42:16 | <abastro[m]> | By a stubborm professor |
| 10:42:17 | <abastro[m]> | Oh. |
| 10:42:37 | <tomsmeding> | maybe the common notation changed over time, or customs differ between sub-communities within theoretical CS? |
| 10:42:42 | → | theproffesor joins (~theprofff@user/theproffesor) |
| 10:42:49 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
| 10:43:25 | <abastro[m]> | Yep, I guess |
| 10:44:22 | <tomsmeding> | I mean, people get all flame-war about notation, but in the end it's just notation :p |
| 10:44:42 | <tomsmeding> | it's good and useful to have a single standard notation for stuff though |
| 10:46:32 | <abastro[m]> | Well I remembered the small step thing wrong, '->' was used in the class |
| 10:46:46 | <abastro[m]> | The downward arrow is used for continuation-involving evaluation |
| 10:47:08 | abastro[m] | uploaded an image: (235KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/tuCHZAsDZrjMxrrKMtJAzSUo/Screenshot_20220419-194541_Drive.jpg > |
| 10:48:07 | <abastro[m]> | Likely wanted to use fancy arrows at one place |
| 10:48:26 | <abastro[m]> | (I disliked how the class was taught in scala btw) |
| 10:50:44 | <tomsmeding> | ooh continuations |
| 10:51:04 | <tomsmeding> | ah scala, maybe this is standard in the scala community? That's exactly my point, my custom is from the haskell community |
| 10:52:24 | × | odnes quits (~odnes@5-203-240-200.pat.nym.cosmote.net) (Quit: Leaving) |
| 10:54:02 | × | raym quits (~raym@user/raym) (Quit: kernel update, rebooting...) |
| 10:55:35 | → | raym joins (~raym@user/raym) |
| 11:05:24 | <abastro[m]> | Programming language semantics differ for scala community vs haskell community? |
| 11:05:24 | <abastro[m]> | Wow |
| 11:06:38 | → | redb joins (~nmh@136.49.49.211) |
| 11:07:47 | × | cdman quits (~dcm@user/dmc/x-4369397) (Remote host closed the connection) |
| 11:10:16 | → | deadmarshal_ joins (~deadmarsh@95.38.228.226) |
| 11:10:39 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
| 11:11:55 | <tomsmeding> | programming language semantics _notation_ |
| 11:12:18 | <abastro[m]> | Aah |
| 11:12:20 | <tomsmeding> | but I don't know, too lazy to check |
| 11:13:58 | × | akegalj quits (~akegalj@93-138-136-145.adsl.net.t-com.hr) (Ping timeout: 246 seconds) |
| 11:14:19 | × | deadmarshal_ quits (~deadmarsh@95.38.228.226) (Ping timeout: 240 seconds) |
| 11:21:03 | → | abastro joins (~abab9579@220.75.216.63) |
| 11:27:21 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 11:29:34 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 11:29:47 | → | chele joins (~chele@user/chele) |
| 11:30:46 | × | CAT_S quits (~apic@brezn3.muc.ccc.de) (Ping timeout: 246 seconds) |
| 11:30:46 | × | simeon quits (~pi@dslb-088-076-113-221.088.076.pools.vodafone-ip.de) (Ping timeout: 246 seconds) |
| 11:31:01 | → | DNH joins (~DNH@8.44.0.68) |
| 11:31:15 | × | Lears quits (~Leary]@122-58-90-96-vdsl.sparkbb.co.nz) (Remote host closed the connection) |
| 11:31:37 | → | simeon joins (~pi@dslb-088-076-113-221.088.076.pools.vodafone-ip.de) |
| 11:31:44 | → | CAT_S joins (apic@brezn3.muc.ccc.de) |
| 11:32:15 | → | [Leary] joins (~Leary]@122-58-90-96-vdsl.sparkbb.co.nz) |
| 11:32:26 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 11:32:35 | → | off^ joins (~off@50-192-56-193-static.hfc.comcastbusiness.net) |
| 11:36:15 | → | redb joins (~nmh@136.49.49.211) |
| 11:38:19 | → | kaph joins (~kaph@151.43.200.113) |
| 11:39:25 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:40:34 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 11:41:52 | → | yauhsien joins (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) |
| 11:43:04 | → | MajorBiscuit joins (~MajorBisc@145.94.234.148) |
| 11:44:03 | → | bahamas joins (~lucian@84.232.140.158) |
| 11:46:59 | × | yauhsien quits (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
| 11:53:35 | → | schuelermine joins (~anselmsch@user/schuelermine) |
| 11:53:53 | → | redb joins (~nmh@136.49.49.211) |
| 11:54:16 | <schuelermine> | Wouldn’t it (maybe) be a good idea to extend record syntax from constructors to arbitrary functions to allow named parameters? |
| 11:54:33 | <schuelermine> | It seems like a natural and convenient extension of the syntax |
| 11:55:02 | <schuelermine> | You could also allow defining defaults in the record parameters lazily |
| 11:55:20 | <schuelermine> | This is used, for instance, in Nix, to great effect, to make smart “constructors” |
| 11:55:28 | ← | schuelermine parts (~anselmsch@user/schuelermine) () |
| 11:58:11 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 260 seconds) |
| 11:58:36 | <geekosaur> | bit late since they left, but I think most people consider record syntax a mistake |
| 12:09:41 | <abastro> | Which record syntax? |
| 12:10:29 | <merijn> | schuelermine[m]: I mean, you can just change your function to accept a record as input and get 100% of that functionality without any changes? |
| 12:10:43 | <merijn> | geekosaur: Record syntax is fine, derived field selectors are a mistake |
| 12:10:56 | <merijn> | All hail -XNoFieldSelectors |
| 12:11:01 | <abastro> | derived field selectors? |
| 12:11:16 | <abastro> | Oh you mean the autogenerated functions for each field of record? |
| 12:11:22 | <abastro> | Obtaining that field from record |
| 12:11:30 | <geekosaur> | yes |
| 12:11:30 | <merijn> | abastro: The fact that "data Foo = Foo { bar :: Int }" generates a function "bar :: Foo -> Int" |
| 12:11:42 | <abastro> | Yea, eww |
| 12:11:46 | → | schuelermine joins (~anselmsch@user/schuelermine) |
| 12:12:00 | <abastro> | I also dislike it. Tho I guess it was good for brevity |
| 12:12:17 | <merijn> | I say make NoFieldSelectors and NamedFieldPuns the default in Haskell Prime (ha! as if that'll happen) |
| 12:12:28 | <merijn> | And then records are already a ton nicer |
| 12:12:50 | <abastro> | NamedFieldPuns? |
| 12:12:52 | <schuelermine> | you could use record syntax for map literals |
| 12:13:08 | <schuelermine> | abastro: means you can pattern match by writing |
| 12:13:10 | <schuelermine> | f { foo } = foo |
| 12:13:14 | <abastro> | Eh |
| 12:13:18 | <abastro> | Ehhhh |
| 12:13:21 | <merijn> | Instead of having to write |
| 12:13:24 | <abastro> | I guess that is good for brevity |
| 12:13:32 | <merijn> | 'f Foo{foo = x} = x' |
| 12:13:36 | <merijn> | Which, frankly, sucks |
| 12:13:41 | <abastro> | Yea indeed, provides great brevity |
| 12:14:04 | <abastro> | Oh right, with NoFieldSelectors those won't be shadowing the field selectors right? |
| 12:14:10 | <abastro> | That was why I was concerned |
| 12:14:14 | <abastro> | Hmmm |
| 12:14:16 | <schuelermine> | 'foo (Foo . bar) (\Foo {foo = foo} = foo)' |
| 12:15:06 | × | abastro quits (~abab9579@220.75.216.63) (Quit: testing xmonad) |
| 12:16:44 | <schuelermine> | oh god xmonad |
| 12:16:46 | <schuelermine> | I just hoogled '(||*)' and it turns out xmonad provides a horrendous family of operators |
| 12:16:48 | <schuelermine> | (****||*), (****||***), (***||*), (***||**), (**||*), (**||***), (*||*) |
| 12:21:35 | × | benin quits (~benin@183.82.204.110) (Quit: The Lounge - https://thelounge.chat) |
| 12:22:25 | <schuelermine> | Oh also puns means you can do `f foo = Foo { foo }` instead of `f foo = Foo { foo = foo }` |
| 12:23:46 | → | abastro joins (~abab9579@220.75.216.63) |
| 12:24:04 | × | schuelermine quits (~anselmsch@user/schuelermine) (Quit: WeeChat 3.4.1) |
| 12:25:48 | → | zincy joins (~zincy@host86-160-236-152.range86-160.btcentralplus.com) |
| 12:26:35 | → | redb joins (~nmh@136.49.49.211) |
| 12:26:35 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 12:29:41 | × | frost quits (~frost@user/frost) (Quit: Client closed) |
| 12:29:56 | × | zincy quits (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection) |
| 12:30:22 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
| 12:30:35 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 12:31:39 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 276 seconds) |
| 12:33:05 | <geekosaur> | those are trying to visually indicate how they divide up the screen |
| 12:33:25 | <geekosaur> | and yes, some parts of contrib are … interesting |
| 12:35:12 | → | Pickchea joins (~private@user/pickchea) |
| 12:39:15 | × | kjak quits (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 260 seconds) |
| 12:39:31 | × | oxide quits (~lambda@user/oxide) (Quit: oxide) |
| 12:41:37 | → | yauhsien joins (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) |
| 12:42:24 | → | xff0x_ joins (~xff0x@om126194210237.10.openmobile.ne.jp) |
| 12:43:50 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 12:44:53 | → | ishaan joins (~ishaan@122.161.48.109) |
| 12:44:59 | × | ishaan quits (~ishaan@122.161.48.109) (Client Quit) |
| 12:45:39 | × | yauhsien quits (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 12:46:35 | → | kjak joins (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) |
| 12:51:55 | × | ldlework quits (~hexeme@user/hexeme) (Quit: co'o ro do) |
| 12:52:47 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 12:54:27 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 12:55:16 | → | hexeme joins (~hexeme@user/hexeme) |
| 12:55:54 | → | acidjnk joins (~acidjnk@p200300d0c722df64b44bf627258f714f.dip0.t-ipconnect.de) |
| 12:57:29 | × | sprout quits (~quassel@2a02-a467-ccd6-1-61ea-c654-ec6a-777e.fixed6.kpn.net) (Ping timeout: 248 seconds) |
| 12:58:01 | → | redb joins (~nmh@136.49.49.211) |
| 12:58:51 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 256 seconds) |
| 12:59:44 | × | DNH quits (~DNH@8.44.0.68) (Ping timeout: 272 seconds) |
| 13:00:54 | → | chexum_ joins (~quassel@gateway/tor-sasl/chexum) |
| 13:01:13 | × | chenqisu1 quits (~chenqisu1@183.217.200.38) (Quit: Leaving) |
| 13:01:35 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds) |
| 13:02:32 | <raehik> | I'm upgrading some code to GHC 9.2 . GHC is complaining about places I've used `_typevar` to explicitly not bind a typevar, asking me to use PartialTypeSigs. Is there another way to do this, that doesn't need that extension? |
| 13:02:51 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 276 seconds) |
| 13:02:57 | <raehik> | or is it right to use that extension here? (haven't touched it before) |
| 13:03:59 | × | kjak quits (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
| 13:04:09 | <raehik> | code snippet, one of the signatures that errors https://github.com/raehik/gtvm-hs/blob/main/app/Common/Util.hs#L37 |
| 13:05:03 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Quit: ChaiTRex) |
| 13:05:45 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 13:07:10 | → | neurocyte8614492 joins (~neurocyte@IP-045136169156.dynamic.medianet-world.de) |
| 13:07:10 | × | neurocyte8614492 quits (~neurocyte@IP-045136169156.dynamic.medianet-world.de) (Changing host) |
| 13:07:10 | → | neurocyte8614492 joins (~neurocyte@user/neurocyte) |
| 13:07:26 | <raehik> | ah not to worry. I think I wrote that when I didn't understand bringing typevar scoping. Not putting it in forall means it's not bound anyway. |
| 13:07:37 | <raehik> | s/bringing// |
| 13:09:19 | × | acidjnk quits (~acidjnk@p200300d0c722df64b44bf627258f714f.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 13:09:51 | × | kaph quits (~kaph@151.43.200.113) (Read error: Connection reset by peer) |
| 13:12:51 | <merijn> | raehik: None of the type names on line 37 are defined in that file, so it's impossible to tell |
| 13:13:48 | <raehik> | merijn: Sorry, I didn't send the unique commit so it's showing the updated version. I had `Stream 'StreamOut _s` in place of `Stream 'StreamOut s` |
| 13:14:14 | × | MajorBiscuit quits (~MajorBisc@145.94.234.148) (Ping timeout: 250 seconds) |
| 13:14:45 | <raehik> | That now breaks on GHC 9.2 with a note about PartialTypeSignatures. But now I realize I don't need the underscore, since by not explicitly quantifying it stays out of my way |
| 13:14:57 | → | MajorBiscuit joins (~MajorBisc@145.94.234.148) |
| 13:15:24 | <raehik> | had only just learned about datakinds I think |
| 13:15:34 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 13:15:51 | → | oxide joins (~lambda@user/oxide) |
| 13:17:21 | → | mikoto-chan joins (~mikoto-ch@213.177.151.239) |
| 13:17:31 | → | redb joins (~nmh@136.49.49.211) |
| 13:19:42 | → | sprout joins (~quassel@2a02-a45f-f170-1-2c70-4ee9-c067-7549.fixed6.kpn.net) |
| 13:20:30 | × | aeka quits (~aeka@2606:6080:1001:13:a777:ff73:dfdc:3ab0) (Quit: ZNC 1.8.2 - https://znc.in) |
| 13:21:00 | → | mastarija_ joins (~mastarija@2a05:4f46:e04:6000:2897:ab56:96f1:cca3) |
| 13:23:44 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 13:23:46 | → | akegalj_ joins (~akegalj@93-138-136-145.adsl.net.t-com.hr) |
| 13:24:08 | × | mastarija quits (~mastarija@2a05:4f46:e04:6000:2897:ab56:96f1:cca3) (Ping timeout: 248 seconds) |
| 13:26:16 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
| 13:26:26 | → | zebrag joins (~chris@user/zebrag) |
| 13:33:22 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 13:37:03 | → | redb joins (~nmh@136.49.49.211) |
| 13:37:24 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 13:37:32 | × | akegalj_ quits (~akegalj@93-138-136-145.adsl.net.t-com.hr) (Quit: leaving) |
| 13:38:03 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 256 seconds) |
| 13:39:39 | × | sprout quits (~quassel@2a02-a45f-f170-1-2c70-4ee9-c067-7549.fixed6.kpn.net) (Ping timeout: 240 seconds) |
| 13:40:40 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 250 seconds) |
| 13:41:27 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 13:41:52 | × | pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer) |
| 13:42:59 | × | MajorBiscuit quits (~MajorBisc@145.94.234.148) (Ping timeout: 240 seconds) |
| 13:44:09 | → | sprout joins (~quassel@2a02-a45f-f170-1-2c70-4ee9-c067-7549.fixed6.kpn.net) |
| 13:44:53 | × | aman quits (~aman@user/aman) (Quit: aman) |
| 13:45:25 | → | pavonia joins (~user@user/siracusa) |
| 13:46:24 | → | MajorBiscuit joins (~MajorBisc@145.94.234.148) |
| 13:47:49 | × | abastro quits (~abab9579@220.75.216.63) (Remote host closed the connection) |
| 13:49:00 | <tomsmeding> | Why can I not use a [t| |] splice in a typed $$( ) splice? |
| 13:49:15 | <tomsmeding> | s/[t| |] splice/[t| |] quote/ |
| 13:50:38 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 13:50:38 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 13:50:38 | → | wroathe joins (~wroathe@user/wroathe) |
| 13:50:40 | → | mastarija__ joins (~mastarija@2a05:4f46:e04:6000:3db0:a561:6353:b491) |
| 13:53:51 | → | aeka joins (~aeka@user/hiruji) |
| 13:53:58 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 13:53:59 | × | mastarija_ quits (~mastarija@2a05:4f46:e04:6000:2897:ab56:96f1:cca3) (Ping timeout: 240 seconds) |
| 13:54:27 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:55:00 | <geekosaur> | looks like you need to use a typed quotation in a typed splice? [t|| ... ||] |
| 13:55:32 | <tomsmeding> | geekosaur: [t|| doesn't exist, and wouldn't make sense, because it should return a Type and not an Exp |
| 13:55:39 | → | Guest85 joins (~Guest85@165.134.212.71) |
| 13:56:01 | <tomsmeding> | it would make sense if there was a phantom-typed wrapper TType or something, just like there is 'TExp a' around 'Exp' |
| 13:56:29 | <geekosaur> | as of 9.2.2 it's Code Q Type, looks as if |
| 13:56:44 | → | redb joins (~nmh@136.49.49.211) |
| 13:56:52 | <tomsmeding> | I'm on 9.2.2 |
| 13:57:04 | × | Guest85 quits (~Guest85@165.134.212.71) (Client Quit) |
| 13:57:52 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 13:58:49 | <tomsmeding> | geekosaur: 'Code Q Type' is ismomorphic (newtype wrapper) to 'Q (TExp Type)', which is isomorphic (newtype wrapper) to 'Q Exp' |
| 13:58:58 | <tomsmeding> | it's an expression that returns a type at runtime, which is not what I want |
| 13:59:16 | <tomsmeding> | (and not what [t| does, which is return the Type at compile-time) |
| 13:59:25 | <tomsmeding> | I was confused for a while too :p |
| 13:59:55 | <tomsmeding> | (but thanks for checking!) |
| 14:00:36 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 250 seconds) |
| 14:01:17 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 14:01:58 | → | redb joins (~nmh@136.49.49.211) |
| 14:02:59 | × | mastarija__ quits (~mastarija@2a05:4f46:e04:6000:3db0:a561:6353:b491) (Ping timeout: 240 seconds) |
| 14:04:41 | → | mastarija__ joins (~mastarija@2a05:4f46:e04:6000:a5e2:63ce:2368:50db) |
| 14:07:32 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 250 seconds) |
| 14:07:55 | <schuelermine[m]> | Can you generate setters for only some properties using the lens library? |
| 14:10:36 | <Taneb> | schuelermine[m]: you can use https://hackage.haskell.org/package/lens-5.1/docs/Control-Lens-TH.html#v:makeLensesFor makeLensesFor |
| 14:10:47 | <schuelermine[m]> | thanks! |
| 14:11:11 | → | Pickchea joins (~private@user/pickchea) |
| 14:12:59 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
| 14:13:11 | × | stefan-_ quits (~cri@42dots.de) (Ping timeout: 256 seconds) |
| 14:14:48 | → | haritz joins (~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk) |
| 14:14:48 | × | haritz quits (~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk) (Changing host) |
| 14:14:48 | → | haritz joins (~hrtz@user/haritz) |
| 14:18:57 | → | kjak joins (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) |
| 14:19:03 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 14:22:09 | <maerwald> | tomsmeding: is it time to move the playground out of beta? |
| 14:23:00 | <tomsmeding> | maerwald: I haven't had time to work on it anymore in the past weeks sorry |
| 14:23:46 | <tomsmeding> | maerwald: I feel like there are a few items in this list that would need to be fixed first https://github.com/tomsmeding/pastebin-haskell/blob/play/TODO.txt |
| 14:24:41 | <tomsmeding> | in particular: https (I should do that), tab key, -N (I should do that), handshake, memory limit, SIGKILL |
| 14:25:17 | <tomsmeding> | I will probably have some time coming weekend |
| 14:26:39 | → | shriekingnoise joins (~shrieking@201.231.16.156) |
| 14:26:39 | → | redb joins (~nmh@136.49.49.211) |
| 14:26:47 | → | stefan-_ joins (~cri@42dots.de) |
| 14:27:08 | → | bontaq joins (~user@ool-45779fe5.dyn.optonline.net) |
| 14:28:00 | <maerwald> | make it so :D |
| 14:28:05 | <tomsmeding> | :p |
| 14:28:07 | <tomsmeding> | I'll try |
| 14:28:41 | <maerwald> | arjun wanted to work on the CSS, but I'm worried he ragequitted |
| 14:28:47 | <tomsmeding> | lol |
| 14:28:50 | <tomsmeding> | I can have a look at css too |
| 14:28:57 | <maerwald> | well, css can only give you grief, so |
| 14:29:05 | <tomsmeding> | I won't be as fast and won't be as """modern""" probably, but eh |
| 14:29:13 | <tomsmeding> | perhaps I can use the same framework as I used for paste.tomsmeding.com |
| 14:29:20 | <maerwald> | it's like harvesting asparagus |
| 14:29:22 | <tomsmeding> | might be nice if the theme is consistent as well |
| 14:29:32 | tomsmeding | doesn't know anything about harvesting asparagus |
| 14:29:51 | <maerwald> | bleeding hands |
| 14:31:54 | × | gurkenglas quits (~gurkengla@178.12.18.212) (Ping timeout: 276 seconds) |
| 14:33:47 | <schuelermine[m]> | Do you have to explicitly declare your library as a dependency of your test suite in cabal? |
| 14:33:57 | → | bahamas joins (~lucian@84.232.140.158) |
| 14:34:23 | <tomsmeding> | eys |
| 14:34:26 | <tomsmeding> | schuelermine[m]: *yes |
| 14:34:51 | <schuelermine[m]> | goodness |
| 14:34:56 | <schuelermine[m]> | should I just write == <current-version> |
| 14:35:03 | <tomsmeding> | just don't put a version |
| 14:35:18 | <tomsmeding> | cabal will always use the version produced in the current package |
| 14:35:27 | <tomsmeding> | so in fact a version annotation there is always redundant |
| 14:35:40 | <tomsmeding> | (and cabal will even warn on that, IIRC) |
| 14:35:52 | → | abastro joins (~abab9579@220.75.216.63) |
| 14:36:53 | × | jlamothe quits (~jlamothe@198.251.61.229) (Quit: leaving) |
| 14:38:42 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 14:38:55 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 14:39:03 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 276 seconds) |
| 14:39:49 | × | aeka quits (~aeka@user/hiruji) (Ping timeout: 256 seconds) |
| 14:40:09 | → | vysn joins (~vysn@user/vysn) |
| 14:40:23 | → | bahamas joins (~lucian@84.232.140.158) |
| 14:40:53 | → | aeka joins (~aeka@user/hiruji) |
| 14:43:23 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 14:44:48 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 250 seconds) |
| 14:45:06 | → | DNH joins (~DNH@2a02:8109:b740:2c4:39b1:39b8:aa61:2e31) |
| 14:46:27 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 14:46:39 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 14:49:04 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Quit: Leaving) |
| 14:49:08 | × | CiaoSen quits (~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 14:49:40 | → | dyeplexer joins (~dyeplexer@user/dyeplexer) |
| 14:49:55 | → | sibnull[m] joins (~sibnullma@2001:470:69fc:105::1:1291) |
| 14:51:46 | → | bitmapper joins (uid464869@id-464869.lymington.irccloud.com) |
| 14:53:25 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 256 seconds) |
| 14:54:17 | → | jlamothe joins (~jlamothe@198.251.61.229) |
| 14:55:31 | × | hgolden quits (~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection) |
| 14:56:30 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 14:57:07 | → | hgolden joins (~hgolden2@cpe-172-251-233-141.socal.res.rr.com) |
| 14:57:28 | → | yauhsien joins (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) |
| 14:59:56 | Andrew | is now known as AndrewYu |
| 15:00:02 | → | _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl) |
| 15:02:29 | × | yauhsien quits (~yauhsien@61-231-24-129.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 15:07:21 | × | anomal quits (~anomal@87.227.196.109) (Remote host closed the connection) |
| 15:08:39 | × | kuribas quits (~user@ptr-17d51end1q9g3xjtvcu.18120a2.ip6.access.telenet.be) (Ping timeout: 240 seconds) |
| 15:12:36 | × | MajorBiscuit quits (~MajorBisc@145.94.234.148) (Ping timeout: 240 seconds) |
| 15:12:45 | → | jgeerds joins (~jgeerds@d5364b87.access.ecotel.net) |
| 15:13:01 | → | MajorBiscuit joins (~MajorBisc@145.94.234.148) |
| 15:19:21 | × | MajorBiscuit quits (~MajorBisc@145.94.234.148) (Ping timeout: 276 seconds) |
| 15:20:22 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:61e6:c8e5:1064:c52e) (Quit: WeeChat 2.8) |
| 15:20:34 | → | Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) |
| 15:22:27 | → | TCZ joins (~tcz@ip-91.246.66.101.skyware.pl) |
| 15:22:59 | ← | TCZ parts (~tcz@ip-91.246.66.101.skyware.pl) (...) |
| 15:24:42 | → | krappix joins (~krappix@nat-inria-interne-72-gw-01-lne.lille.inria.fr) |
| 15:25:09 | → | fciocan joins (~fciocan@188.24.47.102) |
| 15:25:46 | × | xff0x_ quits (~xff0x@om126194210237.10.openmobile.ne.jp) (Read error: Connection reset by peer) |
| 15:26:32 | × | fciocan quits (~fciocan@188.24.47.102) (Client Quit) |
| 15:29:08 | → | gurkenglas joins (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) |
| 15:30:39 | → | abiss27 joins (~abiss27@user/abiss) |
| 15:33:15 | → | bahamas joins (~lucian@84.232.140.158) |
| 15:33:56 | → | stackdroid18 joins (14094@user/stackdroid) |
| 15:35:18 | × | krappix quits (~krappix@nat-inria-interne-72-gw-01-lne.lille.inria.fr) (Ping timeout: 250 seconds) |
| 15:35:18 | <albet70> | what's the join implement for Cont? |
| 15:37:31 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 246 seconds) |
| 15:41:01 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
| 15:41:40 | <kritzefitz> | albet70: join is not a method, so it's the same for Cont as for any other monad. |
| 15:42:06 | <kritzefitz> | namely: `join x = x >>= id` |
| 15:44:26 | → | zer0bitz joins (~zer0bitz@2001:2003:f444:8f00:d86f:477d:4b86:10fd) |
| 15:45:37 | <albet70> | https://hackage.haskell.org/package/transformers-0.6.0.4/docs/src/Control.Monad.Trans.Cont.html#ContT |
| 15:46:05 | × | ccntrq quits (~Thunderbi@2a01:e34:eccb:b060:b49f:b4db:d687:55bf) (Remote host closed the connection) |
| 15:46:43 | <albet70> | join is not required to make type as an instance of monad? |
| 15:47:08 | × | abastro quits (~abab9579@220.75.216.63) (Remote host closed the connection) |
| 15:47:47 | <kritzefitz> | No, join is defined in terms of `>>=` for all Monads. |
| 15:47:58 | <kritzefitz> | i.e. it is not required. |
| 15:49:03 | <geekosaur> | in Haskell the fundamental Monad operations are return and >>= |
| 15:49:19 | <geekosaur> | not the mathematical version which uses join instead of >>= |
| 15:50:02 | <albet70> | join (*) = \x -> x * x, so join (*) = (*) >>= id? |
| 15:50:44 | <albet70> | > (*) >>= id $ 3 |
| 15:50:46 | <lambdabot> | 9 |
| 15:51:15 | <albet70> | > join (*) 3 |
| 15:51:17 | <lambdabot> | 9 |
| 15:51:41 | → | fciocan joins (~fciocan@188.24.47.102) |
| 15:51:42 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 15:51:49 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 15:52:04 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 15:52:30 | × | fciocan quits (~fciocan@188.24.47.102) (Client Quit) |
| 15:52:41 | <geekosaur> | so if I recall correctly m >>= f is mathematically join (fmap f m), so given the functor laws you recover join by making f id |
| 15:54:50 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 15:55:44 | → | Vajb joins (~Vajb@2001:999:504:1dda:267d:6860:bdf7:f68b) |
| 15:55:56 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 15:57:45 | <albet70> | > join (fmap (+1) [1..]) |
| 15:57:47 | <lambdabot> | error: |
| 15:57:47 | <lambdabot> | • No instance for (Num [()]) arising from a use of ‘e_111’ |
| 15:57:47 | <lambdabot> | • In the expression: e_111 |
| 15:57:57 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 15:59:09 | → | abastro joins (~abab9579@220.75.216.63) |
| 15:59:20 | → | lbseale joins (~ep1ctetus@user/ep1ctetus) |
| 15:59:52 | × | lbseale quits (~ep1ctetus@user/ep1ctetus) (Client Quit) |
| 16:00:11 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 16:00:14 | → | lbseale joins (~ep1ctetus@user/ep1ctetus) |
| 16:02:19 | × | Vajb quits (~Vajb@2001:999:504:1dda:267d:6860:bdf7:f68b) (Read error: Connection reset by peer) |
| 16:02:48 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 16:04:45 | <geekosaur> | that looks wrong |
| 16:06:05 | <monochrom> | Yeah, join m = m >>= id |
| 16:07:04 | <monochrom> | More concretely m >>= \foo -> foo so it's like saying "obtain the procedure, now run it". |
| 16:07:04 | <abastro[m]> | And I thought `[()] ~ Natural` |
| 16:07:31 | <albet70> | m >>= id, id is same as return? |
| 16:07:33 | × | ubert quits (~Thunderbi@2a02:8109:9880:303c:bbe6:420f:2b6c:e0f7) (Remote host closed the connection) |
| 16:07:41 | <albet70> | m >>= return? |
| 16:09:06 | × | cdman quits (~dcm@user/dmc/x-4369397) (Ping timeout: 272 seconds) |
| 16:09:52 | <monochrom> | Ugh why would you think that? But no. |
| 16:09:54 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 16:10:16 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:10:22 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
| 16:10:54 | <monochrom> | If you work at the layperson level of "they are similar therefore they are equal" you will never get anywhere in STEM. |
| 16:11:11 | <albet70> | > [3] >>= id |
| 16:11:12 | <lambdabot> | error: |
| 16:11:12 | <lambdabot> | • No instance for (Num [()]) arising from a use of ‘e_13’ |
| 16:11:13 | <lambdabot> | • In the expression: e_13 |
| 16:11:28 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 250 seconds) |
| 16:11:49 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
| 16:11:53 | <albet70> | > (Just 3) >>= id |
| 16:11:55 | <lambdabot> | error: |
| 16:11:55 | <lambdabot> | • No instance for (Num (Maybe ())) arising from a use of ‘e_13’ |
| 16:11:55 | <lambdabot> | • In the expression: e_13 |
| 16:12:20 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 250 seconds) |
| 16:13:27 | <geekosaur> | it's join, you gave it nothing to join |
| 16:13:31 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 16:13:35 | <geekosaur> | > Just (Just 3) >>= id |
| 16:13:36 | <lambdabot> | Just 3 |
| 16:14:25 | <albet70> | :t (Just 3) >>= |
| 16:14:26 | <lambdabot> | error: |
| 16:14:26 | <lambdabot> | parse error (possibly incorrect indentation or mismatched brackets) |
| 16:14:51 | <albet70> | :t (>>=) (Just 3) |
| 16:14:52 | <lambdabot> | Num a => (a -> Maybe b) -> Maybe b |
| 16:15:49 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 16:15:49 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 16:15:49 | finn_elija | is now known as FinnElija |
| 16:15:50 | <albet70> | :t id |
| 16:15:51 | <lambdabot> | a -> a |
| 16:17:14 | × | fjmorazan quits (~quassel@user/fjmorazan) (Quit: fjmorazan) |
| 16:17:28 | → | fjmorazan joins (~quassel@user/fjmorazan) |
| 16:19:04 | × | jgeerds quits (~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 248 seconds) |
| 16:20:03 | × | cheategg quits (~Username@user/cheater) (Quit: BitchX: the official IRC client of the 2004 Olympic Games) |
| 16:20:08 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 16:21:13 | × | fjmorazan quits (~quassel@user/fjmorazan) (Client Quit) |
| 16:21:28 | → | bahamas joins (~lucian@84.232.140.158) |
| 16:21:38 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 16:21:53 | → | fjmorazan joins (~quassel@user/fjmorazan) |
| 16:26:02 | <abastro[m]> | Recognizing similarity as equality would not serve well in any context imho |
| 16:26:18 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 276 seconds) |
| 16:26:37 | <albet70> | I wonder join Fix(Fix a) would get |
| 16:26:52 | × | abastro quits (~abab9579@220.75.216.63) (Ping timeout: 246 seconds) |
| 16:27:07 | → | jerry99 joins (~330f6b9c@cerf.good1.com) |
| 16:30:15 | → | redb joins (~nmh@136.49.49.211) |
| 16:30:19 | → | cheater joins (~Username@user/cheater) |
| 16:30:54 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 16:33:49 | → | bahamas joins (~lucian@84.232.140.158) |
| 16:34:42 | → | odnes joins (~odnes@5-203-242-183.pat.nym.cosmote.net) |
| 16:37:07 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 16:39:59 | × | stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!) |
| 16:40:45 | → | deadmarshal_ joins (~deadmarsh@95.38.228.226) |
| 16:42:27 | → | redb joins (~nmh@136.49.49.211) |
| 16:44:03 | <EvanR> | abastro[m], if we're talking strict data structures, then yeah they are bijective |
| 16:44:28 | × | off^ quits (~off@50-192-56-193-static.hfc.comcastbusiness.net) (Remote host closed the connection) |
| 16:45:09 | → | stackdroid18 joins (~stackdroi@user/stackdroid) |
| 16:47:31 | <EvanR> | but strict data structures is a terrible default! |
| 16:48:22 | <janus> | but how would stuff like 'zip [1..]' work if lists were strict? |
| 16:48:52 | <janus> | what's the point of some weird mix? isn't it better to be consistent? |
| 16:51:03 | <EvanR> | strict data fits into the framework haskell gives us, it has a flat definedness hierarchy. It's fine |
| 16:51:30 | <EvanR> | i.e. wouldn't machine int work better if the bits were lazy? no |
| 16:51:44 | <EvanR> | not in this century maybe |
| 16:55:01 | × | slaydr quits (~slaydr@173.239.197.74) (Remote host closed the connection) |
| 16:55:35 | <janus> | what do people mean when they say 'data'? if a record contains a function, is it data or not? |
| 16:57:59 | <EvanR> | that leads to the next question, what do you mean by "function" xD |
| 16:58:19 | <EvanR> | because a lambda expression is cromulent data |
| 16:58:34 | <janus> | every time somebody says 'zero argument function' they get scolded... |
| 16:58:57 | <EvanR> | yeah not those |
| 16:59:12 | cheater | is now known as cheategg |
| 16:59:52 | <janus> | what do you mean by 'cromulent'? |
| 16:59:56 | <EvanR> | lol |
| 17:00:06 | <janus> | you can't get Eq on functions, i think that is a big difference |
| 17:00:07 | <EvanR> | I guess I deserve that |
| 17:00:59 | <janus> | i don't mean to be daft, it's just that i don't understand whether there even is a technically correct definition or not |
| 17:01:00 | <EvanR> | you think deciding the extensional equality of functions is bad? Let me introduce you to the value of real numbers |
| 17:01:17 | <EvanR> | decidable equality is not a given, generally, it's a special power |
| 17:01:23 | <EvanR> | only some data types can do it |
| 17:01:54 | <janus> | Idris has the Dec type |
| 17:01:57 | <EvanR> | another example is comparing two infinite lists |
| 17:01:59 | <janus> | do you think that makes sense? |
| 17:02:14 | <EvanR> | Dec is for talking about decidable equality so yes |
| 17:02:17 | <janus> | they have strict data structures by default, no? so you consider that wrong? |
| 17:02:27 | <EvanR> | rather, for decidable things |
| 17:03:44 | <EvanR> | earlier I said strict data is a terrible default, this was supposed to be a throw away strong opinion based on nothing but audience |
| 17:04:10 | <EvanR> | particular situations could use strict data for fun and profit |
| 17:04:40 | <janus> | right, so i gather that since Idris has Lazy, it isn't so bad that it is the default |
| 17:04:58 | <janus> | but in haskell, there is no Lazy, so it would be a bad default? |
| 17:05:16 | <EvanR> | you get to decide because there's a pragma for it |
| 17:06:06 | <EvanR> | I feel like typical use of haskell would break badly if everything was strict |
| 17:06:38 | <geekosaur> | so do I |
| 17:06:55 | <janus> | but it seems that you can write Idris programs that looks a lot like Haskell programs |
| 17:07:04 | <geekosaur> | there are people who are convinced that haskell should default to strict and make you annotate the lazy stuff though |
| 17:07:04 | <EvanR> | I haven't seen that |
| 17:07:05 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 17:07:33 | <EvanR> | idris programs are more like classic functional programming, with accumulating parameters, carefully avoiding stack use |
| 17:07:55 | <janus> | to me, a typical haskell program is a HTTP server that talks to a postgres database |
| 17:07:56 | <EvanR> | when doing recursion |
| 17:08:14 | <janus> | the only things that need lazyness, that i can think of, is stuff like `zip [1..]` |
| 17:08:35 | <EvanR> | a web request handler is a very special case environment, you almost don't even need garbage collection |
| 17:08:35 | <janus> | and when i write my http2 library in idris, i don't seem to run into any hurdles |
| 17:08:52 | <EvanR> | just handle the request and tear everything down |
| 17:09:02 | <janus> | ok, so seems like we have different definitions of 'typical' ;) |
| 17:09:03 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:09:17 | <Franciman> | my typical haskell program is an interpreter |
| 17:09:29 | <Franciman> | i really enjoy the interpreter point of view |
| 17:09:29 | <EvanR> | yeah I'm on stage 11 of recovering from "web programming is typical" |
| 17:09:43 | <Franciman> | a web server is an interpreter |
| 17:09:54 | × | gdd quits (~gdd@129.199.146.230) (Ping timeout: 272 seconds) |
| 17:09:58 | <Franciman> | fortunately haskell is very smart about its runtime |
| 17:10:02 | <janus> | yeah, it's interpreting RealWorld# which comes from Postgres :P |
| 17:10:22 | → | gdd joins (~gdd@129.199.146.230) |
| 17:10:28 | <EvanR> | I still see everything as a database, it's not good |
| 17:10:35 | <Franciman> | EvanR: is ghc a database? |
| 17:10:47 | <EvanR> | it probably has many |
| 17:11:05 | <EvanR> | many databases with some compiler caked on the outside |
| 17:11:15 | <Franciman> | dope |
| 17:11:24 | <Franciman> | i see databases as logic programming |
| 17:11:34 | <Franciman> | am i totally astray? |
| 17:11:48 | <EvanR> | if it was logical that would be better |
| 17:12:02 | <janus> | Franciman: yes, because if you try swapping out your postgres layer for LogicT, you're gonna have a hard time |
| 17:12:29 | <EvanR> | sqlite takes a table definition that says floats go in column, and allows "strings" |
| 17:12:32 | <janus> | databases are about indexing and query optimization ;) |
| 17:12:55 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
| 17:13:04 | <EvanR> | databases could have nice laws and logic but usually don't |
| 17:13:36 | → | cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
| 17:13:49 | × | odnes quits (~odnes@5-203-242-183.pat.nym.cosmote.net) (Quit: Leaving) |
| 17:13:50 | <Franciman> | janus: uh uhuh thanks |
| 17:14:26 | <EvanR> | some of it can't be avoided, some of it entrenched 1980s ideology. Join the 90s, like haskell |
| 17:14:32 | <janus> | Franciman: do you disagree? i am genuinely curious whether you could use LogicT instead of Postgres |
| 17:14:58 | <Franciman> | if you speak of performance, i don't think it's possible |
| 17:15:09 | <Franciman> | but conceptually it seemed to me a pretty straightforward thing to do |
| 17:15:10 | → | RevoGen joins (~RevoGen@laptop-grs098eo.bc.edu) |
| 17:15:28 | <EvanR> | datalog exists |
| 17:16:07 | <janus> | but datomic doesn't allow you to work like you do with LogicT |
| 17:16:16 | <EvanR> | well datomic is datomic |
| 17:16:18 | <dolio> | LogicT isn't a logic language, it's just part of an implementation strategy for one. |
| 17:16:41 | × | dyeplexer quits (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
| 17:17:30 | <geekosaur> | logic language? https://curry.pages.ps.informatik.uni-kiel.de/curry-lang.org/ |
| 17:17:42 | <Franciman> | so you get to code in both haskell and burry |
| 17:17:44 | <Franciman> | curry* |
| 17:17:52 | <Franciman> | you just have to also learn B, and you'll know |
| 17:17:54 | <Franciman> | haskell b curry |
| 17:18:07 | <janus> | hahah :D |
| 17:19:13 | × | turlando quits (~turlando@user/turlando) (Ping timeout: 260 seconds) |
| 17:19:40 | → | turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it) |
| 17:19:40 | × | turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host) |
| 17:19:40 | → | turlando joins (~turlando@user/turlando) |
| 17:22:12 | → | MajorBiscuit joins (~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) |
| 17:22:55 | × | jerry99 quits (~330f6b9c@cerf.good1.com) (Quit: CGI:IRC (Ping timeout)) |
| 17:23:12 | × | RevoGen quits (~RevoGen@laptop-grs098eo.bc.edu) (Ping timeout: 250 seconds) |
| 17:25:43 | → | mrosenbe joins (~mrosenbe@4.7.173.100) |
| 17:25:46 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 17:26:10 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 17:30:15 | → | merijn joins (~merijn@c-001-002-001.client.esciencecenter.eduvpn.nl) |
| 17:30:48 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 17:30:48 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 17:30:48 | → | wroathe joins (~wroathe@user/wroathe) |
| 17:32:57 | → | JordiGH joins (~jordi@user/jordigh) |
| 17:33:15 | <JordiGH> | Is there a simple way to syntactically transliterate `int x = y = 42` from C? |
| 17:33:50 | <geekosaur> | not if you expect them to subsequently be C-like variables |
| 17:34:06 | → | RevoGen joins (~RevoGen@136.167.196.105) |
| 17:34:25 | × | euandreh quits (~euandreh@2804:14c:33:9fe5:2165:73d6:1630:f174) (Quit: WeeChat 3.5) |
| 17:34:31 | <JordiGH> | That's what I thought, Haskell doesn't really have an assingment operator, right? Like, you can't do (=) x 5 |
| 17:34:42 | <JordiGH> | (I forget the syntax for calling operators without infix notation) |
| 17:35:17 | → | whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com) |
| 17:35:18 | <geekosaur> | right |
| 17:35:41 | → | rawley joins (~rawley@142.99.241.242) |
| 17:35:44 | <geekosaur> | closest you get is writeIORef/writeSTRef, I think |
| 17:36:21 | <JordiGH> | Oh that is the syntax. |
| 17:36:21 | <geekosaur> | unless you count State in which case lens has some operators that look like assignment and modification |
| 17:36:37 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 17:40:07 | <JordiGH> | So in particular, there are no associativity rules for = because you just can't put more than one per statement. |
| 17:40:14 | → | jgeerds joins (~jgeerds@d5364b87.access.ecotel.net) |
| 17:40:38 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4) |
| 17:41:16 | mstksg | is now known as jle` |
| 17:42:47 | <geekosaur> | it's not even a statement, really, unless you mean do syntax |
| 17:42:56 | <geekosaur> | let … in is an expression |
| 17:43:34 | <geekosaur> | let {<bindings>} in <expression> (braces are usually replaced by layout) |
| 17:43:49 | → | redb joins (~nmh@136.49.49.211) |
| 17:44:00 | <geekosaur> | and a binding is <pattern> = <expression> |
| 17:44:01 | → | euandreh joins (~euandreh@2804:14c:33:9fe5:2165:73d6:1630:f174) |
| 17:44:20 | <geekosaur> | (which can be quite useful, but watch out for failed pattern matches) |
| 17:47:01 | × | clever quits (~clever@99.192.114.98) (Ping timeout: 240 seconds) |
| 17:47:24 | → | econo joins (uid147250@user/econo) |
| 17:48:31 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 17:50:43 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 17:51:15 | → | niemand joins (~niemand@p2e52fdfd.dip0.t-ipconnect.de) |
| 17:52:06 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 276 seconds) |
| 17:53:41 | × | niemand quits (~niemand@p2e52fdfd.dip0.t-ipconnect.de) (Client Quit) |
| 17:55:19 | × | deadmarshal_ quits (~deadmarsh@95.38.228.226) (Ping timeout: 256 seconds) |
| 17:58:11 | × | RevoGen quits (~RevoGen@136.167.196.105) (Remote host closed the connection) |
| 17:59:19 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 17:59:22 | × | merijn quits (~merijn@c-001-002-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
| 17:59:42 | → | slack1256 joins (~slack1256@191.125.99.208) |
| 18:02:53 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:06:28 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 18:06:33 | → | redb joins (~nmh@136.49.49.211) |
| 18:10:39 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
| 18:11:35 | × | bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 18:12:32 | → | redb joins (~nmh@136.49.49.211) |
| 18:13:00 | × | sprout quits (~quassel@2a02-a45f-f170-1-2c70-4ee9-c067-7549.fixed6.kpn.net) (Ping timeout: 240 seconds) |
| 18:17:49 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 18:22:58 | <slack1256> | Does a complementary package for aeson exist to parsed malformed JSONs on a best effort basis? |
| 18:24:57 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 18:25:37 | → | redb joins (~nmh@136.49.49.211) |
| 18:26:42 | <mrosenbe> | the docs for withMVar say it is atomic if there are no other producers, does that mean that two withMVars will be atomic, but withMVar and putMVar aren't atomic? |
| 18:28:26 | → | sprout joins (~quassel@2a02-a45f-f170-1-2c70-4ee9-c067-7549.fixed6.kpn.net) |
| 18:30:55 | × | fryguybob quits (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (Quit: leaving) |
| 18:31:18 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.5) |
| 18:32:02 | × | coot_ quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot_) |
| 18:32:26 | → | myme joins (~myme@2a01:799:d5a:cd00:e3b:86e:c55b:7eff) |
| 18:33:20 | → | coot joins (~coot@213.134.190.95) |
| 18:38:29 | → | neceve joins (~quassel@2.29.116.221) |
| 18:38:48 | × | sprout quits (~quassel@2a02-a45f-f170-1-2c70-4ee9-c067-7549.fixed6.kpn.net) (Ping timeout: 248 seconds) |
| 18:47:54 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 18:49:19 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 18:49:29 | → | acidjnk joins (~acidjnk@p200300d0c722df64b44bf627258f714f.dip0.t-ipconnect.de) |
| 18:50:15 | → | redb joins (~nmh@136.49.49.211) |
| 18:52:49 | × | mbuf quits (~Shakthi@136.185.79.70) (Quit: Leaving) |
| 18:53:57 | → | bollu4 joins (~bollu@159.65.151.13) |
| 18:55:02 | × | bollu quits (~bollu@159.65.151.13) (Ping timeout: 272 seconds) |
| 18:55:03 | bollu4 | is now known as bollu |
| 18:55:24 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 18:55:42 | × | MajorBiscuit quits (~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) (Ping timeout: 250 seconds) |
| 18:57:39 | × | nerdypepper quits (~nerdypepp@user/nerdypepper) (Ping timeout: 256 seconds) |
| 18:57:53 | × | abiss27 quits (~abiss27@user/abiss) (Quit: hasta la vista... tchau!) |
| 18:58:11 | → | nerdypepper joins (~nerdypepp@user/nerdypepper) |
| 18:59:03 | × | jinsun quits (~jinsun@user/jinsun) (Ping timeout: 276 seconds) |
| 18:59:55 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 19:01:03 | → | Tuplanolla joins (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) |
| 19:01:59 | × | jgeerds quits (~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 240 seconds) |
| 19:02:02 | <EvanR> | mrosenbe, it's referring to how withMVar will do a take, run your code, then do a put. Obviously there is time there for someone else to put their own thing back before you do |
| 19:02:23 | → | dsrt^ joins (~dsrt@50-192-56-193-static.hfc.comcastbusiness.net) |
| 19:02:31 | × | DNH quits (~DNH@2a02:8109:b740:2c4:39b1:39b8:aa61:2e31) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 19:02:38 | <EvanR> | which would break atomicity |
| 19:03:17 | <EvanR> | if multiple threads are doing withMVar, it's ok because everyone is waiting to take |
| 19:04:27 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 19:05:10 | <EvanR> | see TVars for something less brittle |
| 19:06:43 | → | DNH joins (~DNH@2a02:8109:b740:2c4:39b1:39b8:aa61:2e31) |
| 19:09:19 | → | MajorBiscuit joins (~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) |
| 19:16:16 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 19:18:43 | × | myme quits (~myme@2a01:799:d5a:cd00:e3b:86e:c55b:7eff) (Quit: WeeChat 3.4.1) |
| 19:21:20 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 19:25:04 | → | redb joins (~nmh@136.49.49.211) |
| 19:29:19 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
| 19:31:56 | → | myme joins (~myme@2a01:799:d5a:cd00:7ca6:39bc:e22b:ee2b) |
| 19:32:04 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 19:33:21 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 256 seconds) |
| 19:34:43 | → | sprout joins (~quassel@2a02-a467-ccd6-1-6cc6-7e1b-4577-8227.fixed6.kpn.net) |
| 19:37:00 | → | anomal joins (~anomal@87.227.196.109) |
| 19:43:03 | → | redb joins (~nmh@136.49.49.211) |
| 19:43:53 | <mrosenbe> | EvanR: mvar is fine for my uses, I mostly wanted to make sure my interpretation of that was correct, and it sounds like it is. |
| 19:48:14 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 19:49:22 | × | zer0bitz quits (~zer0bitz@2001:2003:f444:8f00:d86f:477d:4b86:10fd) (Read error: Connection reset by peer) |
| 19:50:24 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 276 seconds) |
| 19:50:52 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 19:51:00 | → | Guest292 joins (~Guest29@S01061056118fff83.wp.shawcable.net) |
| 19:51:56 | × | Guest292 quits (~Guest29@S01061056118fff83.wp.shawcable.net) (Client Quit) |
| 19:52:05 | → | redb joins (~nmh@136.49.49.211) |
| 19:54:20 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 19:56:23 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 19:56:31 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 20:00:41 | → | redb joins (~nmh@136.49.49.211) |
| 20:00:48 | × | neurocyte8614492 quits (~neurocyte@user/neurocyte) (Ping timeout: 276 seconds) |
| 20:02:54 | → | pavonia joins (~user@user/siracusa) |
| 20:04:22 | × | _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
| 20:07:19 | × | MajorBiscuit quits (~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) (Ping timeout: 240 seconds) |
| 20:07:30 | × | Inoperable quits (~PLAYER_1@fancydata.science) (Quit: All your buffer are belong to us!) |
| 20:08:02 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:08:29 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 20:09:15 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds) |
| 20:09:44 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 20:12:09 | → | redb joins (~nmh@136.49.49.211) |
| 20:12:53 | × | romesrf quits (~romes@185.5.8.134) (Quit: WeeChat 3.4.1) |
| 20:14:01 | → | MajorBiscuit joins (~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) |
| 20:17:33 | × | dcoutts_ quits (~duncan@host213-122-143-81.range213-122.btcentralplus.com) (Ping timeout: 256 seconds) |
| 20:20:19 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
| 20:20:26 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 20:21:06 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 20:24:21 | → | dcoutts_ joins (~duncan@host213-122-143-81.range213-122.btcentralplus.com) |
| 20:25:50 | → | akegalj joins (~akegalj@141-136-168-234.dsl.iskon.hr) |
| 20:25:58 | → | redb joins (~nmh@136.49.49.211) |
| 20:27:52 | → | Inoperable joins (~PLAYER_1@fancydata.science) |
| 20:27:55 | → | lbseale_ joins (~ep1ctetus@user/ep1ctetus) |
| 20:30:10 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 250 seconds) |
| 20:30:49 | × | lbseale quits (~ep1ctetus@user/ep1ctetus) (Ping timeout: 246 seconds) |
| 20:31:21 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds) |
| 20:32:12 | → | redb joins (~nmh@136.49.49.211) |
| 20:39:09 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 276 seconds) |
| 20:40:32 | → | redb joins (~nmh@136.49.49.211) |
| 20:42:33 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:44:39 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
| 20:46:36 | → | redb joins (~nmh@136.49.49.211) |
| 20:48:52 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 20:50:59 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 20:53:15 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 20:53:34 | → | Pickchea joins (~private@user/pickchea) |
| 20:54:11 | <ggVGc> | I think "it's fine for my use-case" is how every story leading up to a race condition starts |
| 20:54:29 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 20:54:30 | <ggVGc> | (not that I haven't also said it to myself, and used MVars) |
| 20:56:12 | <ggVGc> | sometimes I wonder if geekosaur remembers how much I was pestering him 10 years ago while trying to use xmonad and knowing 0 Haskell |
| 20:56:30 | <geekosaur> | I do, actually :) |
| 20:56:34 | <ggVGc> | actually... it's more like 12 years now :( |
| 20:56:37 | <ggVGc> | haha |
| 20:56:45 | <ggVGc> | well here I am writing Haskell and not using xmonad |
| 20:56:52 | <ggVGc> | so it worked out in the end I guess |
| 20:57:25 | → | redb joins (~nmh@136.49.49.211) |
| 20:57:30 | <ggVGc> | I think "I'll use xmonad so I'll learn Haskell" is a pretty bad trap that I see many people fall into |
| 20:57:35 | <ggVGc> | but there's no stopping it |
| 20:59:35 | × | fendor quits (~fendor@91.141.37.72.wireless.dyn.drei.com) (Remote host closed the connection) |
| 21:01:37 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 21:01:48 | × | akegalj quits (~akegalj@141-136-168-234.dsl.iskon.hr) (Quit: leaving) |
| 21:03:12 | × | neceve quits (~quassel@2.29.116.221) (Ping timeout: 276 seconds) |
| 21:07:36 | → | kaph joins (~kaph@ge-19-125-59.service.infuturo.it) |
| 21:10:38 | × | anomal quits (~anomal@87.227.196.109) (Remote host closed the connection) |
| 21:10:57 | → | anomal joins (~anomal@87.227.196.109) |
| 21:14:16 | <janus> | ggVGc: Wayland can stop it |
| 21:14:20 | → | redb joins (~nmh@136.49.49.211) |
| 21:15:04 | <geekosaur> | waymonad exists :þ |
| 21:15:22 | <geekosaur> | that said, xmonad can work asan intro to haskell *if* you're willing to put in the work |
| 21:15:38 | <geekosaur> | but most folks just copy around configs and don't try to figureout what they're doing |
| 21:16:47 | <janus> | geekosaur: which is the better intro to haskell, tidal cycles or waymonad? :D |
| 21:16:48 | <geekosaur> | and we don't generally try to teach Haskell because most people just want a working config and don't care about the why |
| 21:17:38 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:18:31 | <geekosaur> | no idea about tidal cyclesbut I noteits repo has ports to js and python so I assume it's not exactly grabbing people into haskell very well :) |
| 21:18:46 | <geekosaur> | then again I hgave no idea how well waymonad is doing in that area either |
| 21:21:06 | <janus> | i think there are ports to other languages because e.g. indian classical music aren't as strongly correlated intrests as workspace organization and haskell are |
| 21:22:16 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 21:22:22 | <ggVGc> | Personally I don't think xmonad was a good intro to Haskell for me. I had already been doing F# for a while, so was no stranger to functional programming in general, but xmonad is too much "Real world" for beginner Haskell, in my personal experience |
| 21:22:54 | <ggVGc> | it also doesn't help that, as you say, the user wants "it to work" because it's your WM... |
| 21:23:10 | <ggVGc> | so there's a bad pressure to make things work, rather than learning |
| 21:23:13 | <geekosaur> | dig too deepand you find yourself learning more about X11 than about Haskell |
| 21:23:17 | <systemfault> | Reminds me of "Real-world Haskell"... which was, in a hindsight, not real "real world" |
| 21:23:27 | <systemfault> | *really |
| 21:23:39 | <geekosaur> | actually xmonad's an examplein there :) |
| 21:23:52 | <janus> | if xmonad is of the real world, is tidal cycles from the unreal realm? :O |
| 21:24:12 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 21:24:20 | → | redb joins (~nmh@136.49.49.211) |
| 21:25:10 | → | renzhi joins (~xp@2607:fa49:6500:b100::229c) |
| 21:28:34 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 21:31:11 | × | rawley quits (~rawley@142.99.241.242) (Remote host closed the connection) |
| 21:35:27 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:36:54 | × | michalz quits (~michalz@185.246.204.61) (Remote host closed the connection) |
| 21:38:25 | × | MajorBiscuit quits (~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) (Quit: WeeChat 3.4) |
| 21:39:55 | → | redb joins (~nmh@136.49.49.211) |
| 21:41:20 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 21:44:48 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 276 seconds) |
| 21:48:02 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 21:49:58 | × | DNH quits (~DNH@2a02:8109:b740:2c4:39b1:39b8:aa61:2e31) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 21:52:35 | → | redb joins (~nmh@136.49.49.211) |
| 21:57:06 | → | xkuru joins (~xkuru@user/xkuru) |
| 21:57:32 | → | nihilazo joins (~nihilazo@tilde.town) |
| 21:58:10 | <nihilazo> | hi, what would be the best way to learn haskell for somebody who already knows FP but only in dynamic languages (haskell for a lisper, basically)? is learn you a haskell still considered good? |
| 21:59:45 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 276 seconds) |
| 21:59:47 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:00:00 | <nihilazo> | I tried learning before from "real-world haskell" but found myself feeling like I was fighting against haskell's type system instead of really grokking it |
| 22:00:02 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 22:02:19 | × | mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds) |
| 22:02:22 | → | redb joins (~nmh@136.49.49.211) |
| 22:02:23 | × | hyiltiz_ quits (~quassel@31.220.5.250) (Ping timeout: 256 seconds) |
| 22:03:23 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
| 22:03:59 | → | python476 joins (~user@88.163.231.79) |
| 22:04:05 | × | python476 quits (~user@88.163.231.79) (Remote host closed the connection) |
| 22:04:49 | → | agumonkey joins (~user@88.163.231.79) |
| 22:05:26 | <geekosaur> | RWH is perhaps notthe best for a beginner, it's more of an intermediate book I think |
| 22:05:36 | → | hyiltiz joins (~quassel@31.220.5.250) |
| 22:05:45 | → | DNH joins (~DNH@2a02:8109:b740:2c4:39b1:39b8:aa61:2e31) |
| 22:05:54 | × | kaph quits (~kaph@ge-19-125-59.service.infuturo.it) (Read error: Connection reset by peer) |
| 22:06:03 | → | kaph joins (~kaph@151.19.233.38) |
| 22:06:05 | <geekosaur> | LYAH… is okay if you can find some exercises to do along with it; otherwise it's kinda the "grand tour", you can mostly read code after it but not really write it |
| 22:06:17 | <geekosaur> | currently we prefer something like |
| 22:06:20 | <geekosaur> | @where cis194 |
| 22:06:21 | <lambdabot> | https://www.seas.upenn.edu/~cis194/spring13/lectures.html |
| 22:06:55 | × | slack1256 quits (~slack1256@191.125.99.208) (Ping timeout: 256 seconds) |
| 22:07:46 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 22:08:51 | → | redb joins (~nmh@136.49.49.211) |
| 22:12:04 | → | xff0x_ joins (~xff0x@om126194210237.10.openmobile.ne.jp) |
| 22:12:22 | × | zeenk quits (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) (Quit: Konversation terminated!) |
| 22:12:38 | <geekosaur> | I can't think of anything specifically for folks who know some FP but not strong typing or laziness |
| 22:13:19 | <geekosaur> | closest I can think of is the old "Gentle Introduction" but that still assumes strong typing / SML background |
| 22:17:49 | <sm> | there's no universal "best", but how about |
| 22:17:49 | <sm> | @where HTAC |
| 22:17:50 | <lambdabot> | "Haskell Tutorial and Cookbook" by Mark Watson in 2017-09-04 at <https://leanpub.com/haskell-cookbook> |
| 22:17:57 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 276 seconds) |
| 22:19:24 | <sm> | @where books |
| 22:19:24 | <sm> | has the rest, if not |
| 22:19:24 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Read error: Connection reset by peer) |
| 22:19:24 | <lambdabot> | https://www.extrema.is/articles/haskell-books, see also @where LYAH, RWH, YAHT, SOE, HR, PIH, TFwH, wikibook, PCPH, HPFFP, HTAC, TwT, FoP, PFAD, WYAH, non-haskell-books |
| 22:20:01 | → | deadmarshal_ joins (~deadmarsh@95.38.114.27) |
| 22:20:10 | × | anomal quits (~anomal@87.227.196.109) (Remote host closed the connection) |
| 22:20:19 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds) |
| 22:20:30 | → | anomal joins (~anomal@87.227.196.109) |
| 22:20:31 | × | Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Ping timeout: 256 seconds) |
| 22:21:39 | × | Midjak quits (~Midjak@82.66.147.146) (Ping timeout: 260 seconds) |
| 22:23:06 | × | mastarija__ quits (~mastarija@2a05:4f46:e04:6000:a5e2:63ce:2368:50db) (Read error: Connection reset by peer) |
| 22:23:10 | <geekosaur> | @where TwT |
| 22:23:10 | <lambdabot> | "Thinking with Types: Type-Level Programming in Haskell" by Sandy Maguire in 2019-01-10 at <https://leanpub.com/thinking-with-types> |
| 22:23:16 | <geekosaur> | hm, no |
| 22:24:00 | → | redb joins (~nmh@136.49.49.211) |
| 22:24:27 | × | deadmarshal_ quits (~deadmarsh@95.38.114.27) (Ping timeout: 260 seconds) |
| 22:24:54 | → | waleee joins (~waleee@h-155-4-221-82.NA.cust.bahnhof.se) |
| 22:24:55 | × | Moyst_ quits (~moyst@user/moyst) (Ping timeout: 260 seconds) |
| 22:26:28 | → | RevoGen joins (~RevoGen@136.167.108.147) |
| 22:26:37 | → | vall456 joins (~vall@178.71.51.200) |
| 22:27:03 | × | vall456 quits (~vall@178.71.51.200) (Quit: Leaving) |
| 22:28:08 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
| 22:29:04 | <Las[m]> | Does anyone know whether there's literature on what sound restrictions would be on overlapping instances to ensure coherence? |
| 22:29:57 | → | redb joins (~nmh@136.49.49.211) |
| 22:31:31 | → | statusbot1 joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) |
| 22:31:36 | × | statusbot quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection) |
| 22:31:47 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 22:32:02 | <geekosaur> | hm, I didn't think coherence was the problem, just an inability to guarantee that the intended instance would be chosen in some module which used the class but didn't have all instances in scope? |
| 22:32:27 | × | Tuplanolla quits (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.) |
| 22:33:14 | <Las[m]> | Is that possible in the absence of orphan instances? |
| 22:33:32 | <Las[m]> | https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/instances.html?highlight=overlapping has an example of incoherence |
| 22:34:32 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
| 22:34:35 | <geekosaur> | sure. you don't have to have all instances known at a use site. something that uses fmap doesn't have to know every possible Functor instance |
| 22:36:06 | <Las[m]> | well what would the sound restriction be then? |
| 22:36:25 | <Las[m]> | If possible I want to implement checks in GHC to allow coherent use of overlapping instances |
| 22:37:34 | <geekosaur> | well, that would be an exampleof what I said |
| 22:37:52 | <geekosaur> | I suppose that does mean incoherence, hm |
| 22:44:18 | × | n3t quits (~n3t@user/n3t) (Quit: WeeChat 2.9) |
| 22:46:39 | → | redb joins (~nmh@136.49.49.211) |
| 22:49:32 | × | bgs quits (~bgs@cpe-212-85-160-171.cable.telemach.net) (Remote host closed the connection) |
| 22:49:46 | → | bgs joins (~bgs@cpe-212-85-160-171.cable.telemach.net) |
| 22:50:13 | → | Moyst joins (~moyst@user/moyst) |
| 22:50:39 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
| 22:52:34 | → | perrierj1 joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 22:53:44 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 248 seconds) |
| 22:54:10 | → | cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
| 22:55:05 | × | agumonkey quits (~user@88.163.231.79) (Ping timeout: 256 seconds) |
| 22:57:33 | × | DNH quits (~DNH@2a02:8109:b740:2c4:39b1:39b8:aa61:2e31) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 22:58:19 | → | DNH joins (~DNH@2a02:8109:b740:2c4:39b1:39b8:aa61:2e31) |
| 23:00:14 | → | redb joins (~nmh@136.49.49.211) |
| 23:00:51 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 276 seconds) |
| 23:01:24 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 23:04:59 | × | JordiGH quits (~jordi@user/jordigh) (Ping timeout: 240 seconds) |
| 23:07:04 | × | acidjnk quits (~acidjnk@p200300d0c722df64b44bf627258f714f.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 23:09:03 | → | yauhsien joins (~yauhsien@61-231-27-3.dynamic-ip.hinet.net) |
| 23:10:12 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.1)) |
| 23:12:47 | → | bitmapper joins (uid464869@id-464869.lymington.irccloud.com) |
| 23:13:31 | <shapr> | category theory joke: what makes everything feel good? an endorphism |
| 23:15:39 | × | yauhsien quits (~yauhsien@61-231-27-3.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 23:21:54 | → | Guest99 joins (~Guest99@187.105.124.126) |
| 23:23:23 | × | kaskal quits (~kaskal@2001:4bb8:2e0:b5bd:e3c0:d71b:f32:84d8) (Ping timeout: 252 seconds) |
| 23:23:38 | → | kaskal joins (~kaskal@2001:4bb8:2e0:b5bd:e3c0:d71b:f32:84d8) |
| 23:23:47 | → | bgs_ joins (~bgs@cpe-212-85-160-171.cable.telemach.net) |
| 23:25:07 | × | bgs quits (~bgs@cpe-212-85-160-171.cable.telemach.net) (Ping timeout: 256 seconds) |
| 23:25:23 | bgs_ | is now known as bgs |
| 23:25:50 | × | Guest99 quits (~Guest99@187.105.124.126) (Client Quit) |
| 23:26:03 | × | DNH quits (~DNH@2a02:8109:b740:2c4:39b1:39b8:aa61:2e31) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 23:26:56 | <hpc> | that pun made me want to yawneda |
| 23:30:28 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
| 23:30:39 | × | chomwitt quits (~chomwitt@2a02:587:dc1b:da00:1339:e02b:9822:2360) (Ping timeout: 240 seconds) |
| 23:30:43 | × | gurkenglas quits (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 260 seconds) |
| 23:33:50 | → | rsify[m] joins (~rsifymatr@2001:470:69fc:105::1:fd44) |
| 23:34:21 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 23:35:41 | <EvanR> | ggVGc, cheers, good to see you survived the freenode-a-lypse |
| 23:37:11 | <EvanR> | so I'm about to mix makefiles and cabal |
| 23:37:22 | <EvanR> | if I'm not back in 30 minutes you know what to do |
| 23:37:45 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 23:37:58 | <sm> | what happened poor Freenode since, anyway |
| 23:38:05 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 23:38:05 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 23:38:05 | → | wroathe joins (~wroathe@user/wroathe) |
| 23:38:28 | <sm> | looks like a reddit now |
| 23:40:34 | <EvanR> | a reddit-class soul destroyer |
| 23:48:36 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 23:48:41 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 23:48:49 | → | Midjak joins (~Midjak@82.66.147.146) |
| 23:50:25 | <Axman6> | nihilazo: was there anything in particular you felt you were getting stuck on? |
| 23:53:39 | <Axman6> | ... wtf? what on earth did they do? |
| 23:56:17 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 23:56:25 | <Axman6> | Clicked on "Node of the day" on freenode... and it's an empty... subreddit? what the actual fuck are they doing, this is so bad. it's just a bunch of job ads for cryptocurrency and conspiracies? |
| 23:56:35 | <EvanR> | be the first to post in /n/lilo |
| 23:57:05 | <Axman6> | New Post: What the flip is LILO? |
| 23:57:20 | <Axman6> | all these subreddit things were created by [Deleted] |
| 23:57:45 | × | Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
| 23:58:00 | <EvanR> | lilo was the founder of freenode |
| 23:58:10 | <Axman6> | Deleted a comment with reason "shane" <- haha, wtdf |
| 23:58:13 | <Axman6> | wtf* |
| 23:58:20 | <Axman6> | https://freenode.net/n/conspiracy/sublog |
| 23:59:02 | × | waleee quits (~waleee@h-155-4-221-82.NA.cust.bahnhof.se) (Ping timeout: 250 seconds) |
| 23:59:07 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 23:59:26 | <Axman6> | ... their equivalent of reddit's karma, and I swear I'm not making this up, is called "Phuks given" |
| 23:59:28 | × | allbery_b quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 250 seconds) |
All times are in UTC on 2022-04-19.