2023-01-24 00:04:35 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
2023-01-24 00:05:10 +0100 | mechap1 | (~mechap@user/mechap) (Quit: WeeChat 3.8) |
2023-01-24 00:05:24 +0100 | mechap | (~mechap@user/mechap) |
2023-01-24 00:07:40 +0100 | barium | (~barium@user/oldfashionedcow/bot/barium) |
2023-01-24 00:07:52 +0100 | barium | (~barium@user/oldfashionedcow/bot/barium) () |
2023-01-24 00:10:25 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds) |
2023-01-24 00:12:08 +0100 | mizlan | (~mizlan@2607:f010:2a7:1005:9ca4:ebdf:8ee7:9f2e) |
2023-01-24 00:16:44 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-181-040.46.114.pool.telefonica.de) (Ping timeout: 255 seconds) |
2023-01-24 00:20:11 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
2023-01-24 00:20:50 +0100 | mcglk | (~mcglk@131.191.49.120) (Quit: (zzz)) |
2023-01-24 00:21:27 +0100 | astra_ | astra |
2023-01-24 00:25:58 +0100 | <alexfmpe[m]> | uuuh where to import floating point's infinity from? ghci knows about it but I can't get it in scope |
2023-01-24 00:25:58 +0100 | <alexfmpe[m]> | > read "Infinity" :: Double |
2023-01-24 00:25:58 +0100 | <alexfmpe[m]> | Infinity |
2023-01-24 00:25:58 +0100 | <alexfmpe[m]> | closest I find is GHC.Real.infinity which is Rational |
2023-01-24 00:25:59 +0100 | <lambdabot> | Infinity |
2023-01-24 00:26:28 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 265 seconds) |
2023-01-24 00:26:54 +0100 | <alexfmpe[m]> | I guess 1/0 works, shrug |
2023-01-24 00:30:01 +0100 | <geekosaur> | "Infinity" is a hack for read since it can't use 1/0; conversely; "Infinity" can't be a constructor for Double or Float or Rational |
2023-01-24 00:30:42 +0100 | CiaoSen | (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
2023-01-24 00:31:08 +0100 | mizlan | (~mizlan@2607:f010:2a7:1005:9ca4:ebdf:8ee7:9f2e) (Ping timeout: 255 seconds) |
2023-01-24 00:33:24 +0100 | <EvanR> | 1/0 is fine |
2023-01-24 00:33:38 +0100 | <monochrom> | I bet converting GHC.Real.infinity to Double does the right thing. For the former is merely 1 :% 0, using :% the internal data constructor of Rational, the intention being that a:%b is always converted to a/b when converting. |
2023-01-24 00:33:58 +0100 | mizlan | (~mizlan@169.150.203.45) |
2023-01-24 00:33:58 +0100 | <EvanR> | it has theoretical justification on graphical linear algebra blog xD |
2023-01-24 00:34:12 +0100 | <monochrom> | Similarly for notANumber = 0 :% 0. |
2023-01-24 00:34:49 +0100 | <EvanR> | > 1 % 0 |
2023-01-24 00:34:51 +0100 | <lambdabot> | *Exception: Ratio has zero denominator |
2023-01-24 00:35:38 +0100 | <monochrom> | Yeah this is why they use the internal data constructor :% directly and avoid the restrictive smart constructor % |
2023-01-24 00:35:47 +0100 | <monochrom> | even circumvent |
2023-01-24 00:37:06 +0100 | <monochrom> | A life hack that exploits how fromRational is usually just \(a :% b) -> a/b |
2023-01-24 00:38:54 +0100 | <Maxdamantus> | Out of interest, why couldn't they use "1/0"? So people can construct `ReadS` parsers that consume the "/" after reading a double? |
2023-01-24 00:39:06 +0100 | <Maxdamantus> | > readsPrec 0 "1/0" :: [(Double, String)] |
2023-01-24 00:39:09 +0100 | <lambdabot> | [(1.0,"/0")] |
2023-01-24 00:40:03 +0100 | <Maxdamantus> | Presumably that could just be worked around by adding "(..)" if the precedence is too high. |
2023-01-24 00:40:34 +0100 | <geekosaur> | maybe it could get away with it for Float or Double. Rational would be more difficult because of the :% thing |
2023-01-24 00:41:15 +0100 | <geekosaur> | but yes, there's a conflict between reading "1/0" as a Double vs. someone using a ReadS parser to parse an expression |
2023-01-24 00:41:17 +0100 | <Maxdamantus> | Does `Rational` have infinity? |
2023-01-24 00:41:30 +0100 | <monochrom> | Consider what the Read instance for Double should do instead. |
2023-01-24 00:41:56 +0100 | <monochrom> | Or better yet, what geekosaur just said. |
2023-01-24 00:42:03 +0100 | mikoto-chan | (~mikoto-ch@2001:999:400:22bc:5dfb:b243:3fed:bd17) (Ping timeout: 260 seconds) |
2023-01-24 00:42:26 +0100 | <geekosaur> | hm, right re Rational, it doesn't do infinity |
2023-01-24 00:42:32 +0100 | <Maxdamantus> | It could always just use "(1/0)" to be safe. |
2023-01-24 00:42:42 +0100 | <monochrom> | Does GHC.Real.infinity count? :) |
2023-01-24 00:44:47 +0100 | telser | (~quassel@user/telser) (Ping timeout: 268 seconds) |
2023-01-24 00:45:04 +0100 | telser | (~quassel@user/telser) |
2023-01-24 00:45:21 +0100 | <geekosaur> | Maxdamantus, the more you complicate it, the more complicated the edge cases get |
2023-01-24 00:45:58 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:a9a4:a50f:5f82:e15) |
2023-01-24 00:46:03 +0100 | <Maxdamantus> | It doesn't seem particularly complicated. It's really just replacing the special case for "Infinity" with the special case for "(1/0)" |
2023-01-24 00:46:04 +0100 | <geekosaur> | you basically end up saying "ReadS can only be used by `read`/`readsPrec`. although one could argue that you should say that… |
2023-01-24 00:46:17 +0100 | <Maxdamantus> | and it means the output is valid Haskell code. |
2023-01-24 00:46:58 +0100 | <Maxdamantus> | You mean that `Show` can only be used by `read`/`readsPrec`? |
2023-01-24 00:47:24 +0100 | <Maxdamantus> | but yeah, I think that's already the case with "Infinity" |
2023-01-24 00:47:52 +0100 | <Maxdamantus> | "Infinity" doesn't even normally work as a Haskell expression. It *only* works with `read`. |
2023-01-24 00:48:10 +0100 | <geekosaur> | no, I mean you steal more and more of ReadP's expressiveness and reserve it to Double/Float parsing, so you can't use a more generl ReadP parser |
2023-01-24 00:49:24 +0100 | <geekosaur> | which will among other things annoy the folks who used general ReadP parsers for AoC |
2023-01-24 00:49:41 +0100 | <Maxdamantus> | How does it steal from ReadP's expressiveness? |
2023-01-24 00:50:11 +0100 | <geekosaur> | you just took away use of parentheses and / |
2023-01-24 00:50:20 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:a9a4:a50f:5f82:e15) (Ping timeout: 246 seconds) |
2023-01-24 00:50:33 +0100 | <Maxdamantus> | No I didn't. Other parsers can still use parentheses. |
2023-01-24 00:51:01 +0100 | <geekosaur> | but you can't reuse existing parsers, you must reimplement them to avoiid the cases you took away for `read` |
2023-01-24 00:51:02 +0100 | <Maxdamantus> | The "/" is also unaffected using my latest suggestion (always using parentheses) |
2023-01-24 00:51:11 +0100 | <Maxdamantus> | gtg |
2023-01-24 00:55:02 +0100 | <monochrom> | No, I write ReadP parsers all the time, and I use readS_to_P for the lexical level all the time. |
2023-01-24 00:56:05 +0100 | <monochrom> | And I would still like to write a ReadP parser for "data X = Lit Double | Div X X" and I would still like to parse "(((1/0)))" to Div 1 0 not infinity. |
2023-01-24 00:56:38 +0100 | <monochrom> | So if the Read instance for Double stole my 1/0 or (1/0) or (((1/0))) or what have you, I would be pissed. |
2023-01-24 00:59:00 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2023-01-24 01:00:36 +0100 | iteratee | (~kyle@162.218.222.107) (Read error: Connection reset by peer) |
2023-01-24 01:03:28 +0100 | Midjak | (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
2023-01-24 01:04:35 +0100 | iteratee | (~kyle@162.218.222.107) |
2023-01-24 01:07:34 +0100 | <EvanR> | Show and Read aren't for pretty printing, but seat of your pants debugging in which case their behavior can be totally automated. Get rid of them xD |
2023-01-24 01:09:59 +0100 | <geekosaur> | until you need to debug that record with the inconvenient function within it, so you want to write your own Show instance |
2023-01-24 01:11:18 +0100 | <geekosaur> | (yes, there's the function instance somewhere in Data.Function, but that's a generalization of this) |
2023-01-24 01:13:11 +0100 | <geekosaur> | also, even automated they'll still use some framework underneath like ShowS and ReadS |
2023-01-24 01:16:57 +0100 | <EvanR> | records with a function in them should also work </heresy> |
2023-01-24 01:17:30 +0100 | <EvanR> | ghc "you can't show a function" me "I don't care!" |
2023-01-24 01:17:59 +0100 | <EvanR> | a lot of times I implement a Show instance for a record with a function in some ad hoc way that doesn't show anything use for the function field |
2023-01-24 01:18:07 +0100 | <EvanR> | useful |
2023-01-24 01:19:09 +0100 | <geekosaur> | sorry, I was thinking of https://downloads.haskell.org/ghc/9.2.5/docs/html/libraries/base-4.16.4.0/Text-Show-Functions.html |
2023-01-24 01:24:18 +0100 | Guest75 | (~Guest75@178.141.138.233) (Ping timeout: 260 seconds) |
2023-01-24 01:24:40 +0100 | Lycurgus | (~juan@user/Lycurgus) |
2023-01-24 01:26:20 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c429c1bce9b910063906.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2023-01-24 01:28:40 +0100 | Lycurgus | (~juan@user/Lycurgus) (Client Quit) |
2023-01-24 01:31:59 +0100 | angelore | (~angelore@5.46.161.208) |
2023-01-24 01:37:47 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving) |
2023-01-24 01:45:25 +0100 | <carbolymer> | @hoogle Int -> Natural |
2023-01-24 01:45:26 +0100 | <lambdabot> | GHC.Natural intToNatural :: Int -> Natural |
2023-01-24 01:45:26 +0100 | <lambdabot> | Basement.Numerical.Number toNatural :: IsNatural a => a -> Natural |
2023-01-24 01:45:26 +0100 | <lambdabot> | Foundation toNatural :: IsNatural a => a -> Natural |
2023-01-24 01:45:35 +0100 | <carbolymer> | where intToNatural comes from? |
2023-01-24 01:45:45 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-24 01:46:28 +0100 | angelore | (~angelore@5.46.161.208) (Ping timeout: 260 seconds) |
2023-01-24 01:48:26 +0100 | <monochrom> | Interesting, GHC.Numeric doesn't actually have intToNatural. |
2023-01-24 01:48:32 +0100 | jeetelongname | (~jeet@217.79.169.181) |
2023-01-24 01:48:39 +0100 | <monochrom> | Do you mind naturalFromInteger? |
2023-01-24 01:48:42 +0100 | angelore | (~angelore@5.46.161.208) |
2023-01-24 01:49:11 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.8) |
2023-01-24 01:49:18 +0100 | <carbolymer> | yeah that should do the trick, thx |
2023-01-24 01:49:56 +0100 | <carbolymer> | also idk why but numbers conversion is totally not obvious for me in Haskell |
2023-01-24 01:51:08 +0100 | <monochrom> | Interesting, naturalFromInteger (-2) = 2 |
2023-01-24 01:51:51 +0100 | <monochrom> | Generally speaking, fromIntegral and realToFrac cover most cases. Although, they don't do range checks. |
2023-01-24 01:52:00 +0100 | <c_wraith> | The basic principle is that numbers never change types. The normal operators require two operands of the same type and return a value of that type. Literals are polymorphic in ways that are often, but not always convenient. And whenever you need to do a numeric type conversion, choose a function very carefully. |
2023-01-24 01:52:20 +0100 | <c_wraith> | monochrom: don't forget the floor, ceil, round family for non-integral to integral |
2023-01-24 01:52:33 +0100 | <monochrom> | Ah right. |
2023-01-24 01:52:57 +0100 | opticblast | (~Thunderbi@secure-165.caltech.edu) |
2023-01-24 01:53:21 +0100 | <geekosaur> | it went away with ghc-bignum |
2023-01-24 01:53:28 +0100 | angelore | (~angelore@5.46.161.208) (Ping timeout: 260 seconds) |
2023-01-24 01:54:32 +0100 | <jeetelongname> | @pl twiceSum x + y = 2 * (x + y) |
2023-01-24 01:54:32 +0100 | <lambdabot> | (line 1, column 17): |
2023-01-24 01:54:33 +0100 | <lambdabot> | unexpected " " |
2023-01-24 01:54:33 +0100 | <lambdabot> | expecting operator |
2023-01-24 01:54:48 +0100 | <jeetelongname> | whoops |
2023-01-24 01:54:53 +0100 | <jeetelongname> | @pl twiceSum x y = 2 * (x + y) |
2023-01-24 01:54:54 +0100 | <lambdabot> | twiceSum = ((2 *) .) . (+) |
2023-01-24 01:55:02 +0100 | <jeetelongname> | good to know |
2023-01-24 01:57:04 +0100 | angelore | (~angelore@5.46.161.208) |
2023-01-24 01:58:03 +0100 | <c_wraith> | You can rewrite that one with the distributive property to use funnier combinators, which isn't generally possible |
2023-01-24 01:58:12 +0100 | <c_wraith> | > let f = (+) `on` (2*) in f 4 5 |
2023-01-24 01:58:14 +0100 | <lambdabot> | 18 |
2023-01-24 01:59:39 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-01-24 01:59:39 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-01-24 01:59:39 +0100 | wroathe | (~wroathe@user/wroathe) |
2023-01-24 01:59:42 +0100 | angelore | (~angelore@5.46.161.208) () |
2023-01-24 01:59:42 +0100 | <monochrom> | Generally pl'ing curried functions is a pain. |
2023-01-24 02:00:39 +0100 | <monochrom> | Morally you should be looking at \(x,y) -> 2*(x+y) which is straightforwardly (2 *) . (uncurry (+)), a simple pipeline indeed. |
2023-01-24 02:01:40 +0100 | <c_wraith> | and then you just curry the composition! |
2023-01-24 02:04:11 +0100 | mcglk | (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) |
2023-01-24 02:04:33 +0100 | carbolymer | saw curry trees in africa |
2023-01-24 02:04:52 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.) |
2023-01-24 02:05:45 +0100 | <c_wraith> | the source of the magical curry powder! |
2023-01-24 02:06:46 +0100 | mizlan | (~mizlan@169.150.203.45) (Remote host closed the connection) |
2023-01-24 02:06:49 +0100 | <jeetelongname> | Curry leaves are also a very underated flavour |
2023-01-24 02:08:06 +0100 | <jeetelongname> | monochrom: I did not think to use a tuple. It is very neat |
2023-01-24 02:08:38 +0100 | <c_wraith> | > let f = curry $ (2 *) . uncurry (+) in f 6 7 |
2023-01-24 02:08:39 +0100 | <lambdabot> | 26 |
2023-01-24 02:09:06 +0100 | <monochrom> | > let f = curry $ (2 *) . uncurry (+) in f x y |
2023-01-24 02:09:07 +0100 | <lambdabot> | 2 * (x + y) |
2023-01-24 02:09:10 +0100 | <monochrom> | :) |
2023-01-24 02:09:23 +0100 | <monochrom> | "Aim higher" >:D |
2023-01-24 02:11:02 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-01-24 02:11:15 +0100 | mizlan | (~mizlan@169.150.203.45) |
2023-01-24 02:12:55 +0100 | mcglk | (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) (Quit: (zzz)) |
2023-01-24 02:15:26 +0100 | jeetelongname | (~jeet@217.79.169.181) (Ping timeout: 268 seconds) |
2023-01-24 02:17:09 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-01-24 02:20:13 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
2023-01-24 02:22:27 +0100 | <Maxdamantus> | monochrom: okay, I guess that's partly fair. I guess you do always have to reason to some extent about the parser that you're invoking. |
2023-01-24 02:22:46 +0100 | <Maxdamantus> | eg, if the parser is a double parser, you can't expect to have created some input with a "0" immediately after the double. |
2023-01-24 02:24:10 +0100 | <EvanR> | greedy parser, maximal munch |
2023-01-24 02:36:51 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
2023-01-24 02:38:57 +0100 | codaraxis__ | (~codaraxis@user/codaraxis) |
2023-01-24 02:39:48 +0100 | codaraxis__ | (~codaraxis@user/codaraxis) (Remote host closed the connection) |
2023-01-24 02:39:58 +0100 | mizlan | (~mizlan@169.150.203.45) (Remote host closed the connection) |
2023-01-24 02:40:12 +0100 | codaraxis__ | (~codaraxis@user/codaraxis) |
2023-01-24 02:40:44 +0100 | xff0x_ | (~xff0x@2405:6580:b080:900:2967:46fd:7767:4b83) (Ping timeout: 255 seconds) |
2023-01-24 02:41:12 +0100 | codaraxis__ | (~codaraxis@user/codaraxis) (Max SendQ exceeded) |
2023-01-24 02:41:14 +0100 | Guest75 | (~Guest75@178.141.138.233) |
2023-01-24 02:41:42 +0100 | codaraxis__ | (~codaraxis@user/codaraxis) |
2023-01-24 02:42:35 +0100 | codaraxis | (~codaraxis@user/codaraxis) (Ping timeout: 248 seconds) |
2023-01-24 02:44:27 +0100 | mizlan | (~mizlan@169.150.203.45) |
2023-01-24 02:44:50 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2023-01-24 02:46:50 +0100 | mizlan | (~mizlan@169.150.203.45) (Remote host closed the connection) |
2023-01-24 02:47:31 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
2023-01-24 02:51:59 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Ping timeout: 255 seconds) |
2023-01-24 02:52:47 +0100 | masterbuilder | (~master@user/masterbuilder) |
2023-01-24 02:56:29 +0100 | mizlan | (~mizlan@169.150.203.45) |
2023-01-24 02:59:03 +0100 | mcglk | (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) |
2023-01-24 03:00:07 +0100 | mcglk | (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) (Client Quit) |
2023-01-24 03:05:30 +0100 | m1dnight | (~christoph@78-22-0-121.access.telenet.be) (Ping timeout: 256 seconds) |
2023-01-24 03:06:09 +0100 | m1dnight | (~christoph@78-22-0-121.access.telenet.be) |
2023-01-24 03:07:39 +0100 | ddellacosta | (~ddellacos@143.244.47.89) (Ping timeout: 248 seconds) |
2023-01-24 03:08:25 +0100 | mcglk | (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) |
2023-01-24 03:10:29 +0100 | mcglk | (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) (Client Quit) |
2023-01-24 03:18:38 +0100 | gmg | (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
2023-01-24 03:19:48 +0100 | gmg | (~user@user/gehmehgeh) |
2023-01-24 03:23:48 +0100 | xff0x_ | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2023-01-24 03:26:16 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 265 seconds) |
2023-01-24 03:28:42 +0100 | razetime | (~Thunderbi@117.193.5.253) |
2023-01-24 03:34:01 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2023-01-24 03:35:34 +0100 | mizlan | (~mizlan@169.150.203.45) (Ping timeout: 252 seconds) |
2023-01-24 03:35:46 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2023-01-24 03:39:35 +0100 | mizlan | (~mizlan@169.150.203.65) |
2023-01-24 03:42:08 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2023-01-24 03:43:23 +0100 | gmg | (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
2023-01-24 03:51:50 +0100 | sgarcia | (sgarcia@swarm.znchost.com) (Ping timeout: 255 seconds) |
2023-01-24 03:52:12 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds) |
2023-01-24 03:54:01 +0100 | sgarcia | (sgarcia@swarm.znchost.com) |
2023-01-24 03:58:39 +0100 | jero98772 | (~jero98772@2800:484:1d80:d8ce:3490:26c5:1782:da8c) (Remote host closed the connection) |
2023-01-24 04:14:19 +0100 | Lycurgus | (~juan@user/Lycurgus) |
2023-01-24 04:16:28 +0100 | thegeekinside | (~thegeekin@189.180.66.244) (Remote host closed the connection) |
2023-01-24 04:20:16 +0100 | discuss9128 | (~discuss91@bb119-74-93-26.singnet.com.sg) |
2023-01-24 04:21:44 +0100 | discuss9128 | (~discuss91@bb119-74-93-26.singnet.com.sg) (Client Quit) |
2023-01-24 04:22:07 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6) |
2023-01-24 04:23:42 +0100 | thegeekinside | (~thegeekin@189.180.66.244) |
2023-01-24 04:26:23 +0100 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
2023-01-24 04:27:13 +0100 | Lycurgus | (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
2023-01-24 04:30:01 +0100 | mizlan | (~mizlan@169.150.203.65) (Ping timeout: 252 seconds) |
2023-01-24 04:32:46 +0100 | thegeekinside | (~thegeekin@189.180.66.244) (Ping timeout: 252 seconds) |
2023-01-24 04:35:05 +0100 | mcglk | (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) |
2023-01-24 04:38:39 +0100 | mei | (~mei@user/mei) (Ping timeout: 260 seconds) |
2023-01-24 04:40:39 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
2023-01-24 04:40:53 +0100 | razetime | (~Thunderbi@117.193.5.253) (Ping timeout: 255 seconds) |
2023-01-24 04:42:27 +0100 | mei | (~mei@user/mei) |
2023-01-24 04:44:44 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2023-01-24 04:47:33 +0100 | discuss9128 | (~discuss91@bb119-74-93-26.singnet.com.sg) |
2023-01-24 04:48:38 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
2023-01-24 04:48:41 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2023-01-24 04:48:41 +0100 | finn_elija | FinnElija |
2023-01-24 04:48:55 +0100 | td_ | (~td@83.135.9.19) (Ping timeout: 265 seconds) |
2023-01-24 04:50:33 +0100 | td_ | (~td@i53870917.versanet.de) |
2023-01-24 04:56:29 +0100 | mizlan | (~mizlan@89.46.114.51) |
2023-01-24 04:58:26 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2023-01-24 05:02:54 +0100 | Sciencentistguy9 | (~sciencent@hacksoc/ordinary-member) |
2023-01-24 05:03:57 +0100 | mechap1 | (~mechap@user/mechap) |
2023-01-24 05:05:35 +0100 | Sciencentistguy | (~sciencent@hacksoc/ordinary-member) (Ping timeout: 264 seconds) |
2023-01-24 05:05:36 +0100 | Sciencentistguy9 | Sciencentistguy |
2023-01-24 05:07:29 +0100 | mechap | (~mechap@user/mechap) (Ping timeout: 268 seconds) |
2023-01-24 05:11:16 +0100 | Guest|11 | (~Guest|11@c-76-22-56-82.hsd1.wa.comcast.net) |
2023-01-24 05:16:15 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-24 05:22:35 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6) |
2023-01-24 05:23:07 +0100 | razetime | (~Thunderbi@117.193.5.253) |
2023-01-24 05:26:18 +0100 | razetime | (~Thunderbi@117.193.5.253) (Client Quit) |
2023-01-24 05:28:21 +0100 | eruditass | (uid248673@id-248673.uxbridge.irccloud.com) |
2023-01-24 05:32:57 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
2023-01-24 05:34:03 +0100 | <segfaultfizzbuzz> | ok i asked about this in #haskell-offtopic but didn't get much of a response so i thought i would ask here,... are there any automatic differentiation nerds here? |
2023-01-24 05:34:46 +0100 | <Axman6> | don't ask to ask, just ask - the answer is probably yes but no one is going to stick their hand up to answer a question if they don't know what it is |
2023-01-24 05:35:03 +0100 | mizlan | (~mizlan@89.46.114.51) (Remote host closed the connection) |
2023-01-24 05:35:56 +0100 | <segfaultfizzbuzz> | i have heard that whether to use forward propagation, backprop, or some other thing is context dependent--where can i find more information on this |
2023-01-24 05:36:01 +0100 | <segfaultfizzbuzz> | or is that false |
2023-01-24 05:36:32 +0100 | <segfaultfizzbuzz> | i don't care about optimality, just a "good solution" |
2023-01-24 05:39:32 +0100 | mizlan | (~mizlan@89.46.114.51) |
2023-01-24 05:39:33 +0100 | <jackdk> | https://hackage.haskell.org/package/ad probably, but I'm not an AD nerd |
2023-01-24 05:40:02 +0100 | <segfaultfizzbuzz> | well yeah i mean as you can see you have to pick how you want it to do AD |
2023-01-24 05:42:37 +0100 | <segfaultfizzbuzz> | also, regarding ad in particular, usually there needs to be an associated matrix math library (blas etc) but i don't see that mentioned in the repo or on hackage? |
2023-01-24 05:43:16 +0100 | <jackdk> | The contents page seems to map methods to use cases, even if you have to pick specific functions yourself |
2023-01-24 05:44:11 +0100 | <segfaultfizzbuzz> | i don't think this is going to really be at a level of performance with consideration unless it has BLAS etc |
2023-01-24 05:44:49 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds) |
2023-01-24 05:45:28 +0100 | <jackdk> | I would be surprised if Ed released something that was unavoidably slow, but you should definitely benchmark |
2023-01-24 05:46:08 +0100 | <segfaultfizzbuzz> | uh i doubt even super haskell programmers can go up against really well established linalg libraries,... but who knows |
2023-01-24 05:48:58 +0100 | ub | (~Thunderbi@p200300ecdf264e3f7f9ba4aff8511836.dip0.t-ipconnect.de) |
2023-01-24 05:49:49 +0100 | discuss9128 | (~discuss91@bb119-74-93-26.singnet.com.sg) (Quit: Client closed) |
2023-01-24 05:50:21 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
2023-01-24 05:50:24 +0100 | ubert | (~Thunderbi@p548c9ce5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2023-01-24 05:50:24 +0100 | ub | ubert |
2023-01-24 05:50:41 +0100 | <segfaultfizzbuzz> | yeah i mean if you look at the *one* example, this is a very low dimensional function https://github.com/ekmett/ad/blob/master/bench/BlackScholes.hs |
2023-01-24 05:51:25 +0100 | <segfaultfizzbuzz> | i can count the number of parameters by hand, so they aren't thinking about like comparatively serious linalg here |
2023-01-24 05:52:25 +0100 | <davean> | ad has ABSOLUTELY been used in extremely high dimensional cases, thats an *example* |
2023-01-24 05:52:58 +0100 | <jackdk> | this is all a lot of context that you did not put in your original question. I don't know enough about this stuff to help you or evaluate what fits your needs, and the issue trackers seem to have a bunch of open loops around ad/accelerate or ad/hmatrix integrations but it's all several years old. You may want to try to work on one of those open loops — I wish you luck. |
2023-01-24 05:53:27 +0100 | <segfaultfizzbuzz> | yes integration of ad with accelerate would be an example of something necessary here |
2023-01-24 05:53:32 +0100 | <segfaultfizzbuzz> | thanks |
2023-01-24 05:53:34 +0100 | <davean> | IIRC you want the jet stuff for high dimension case |
2023-01-24 05:54:08 +0100 | <segfaultfizzbuzz> | davean: https://hackage.haskell.org/package/ad-4.3.2/docs/Numeric-AD-Jet.html - this? |
2023-01-24 05:54:12 +0100 | <jackdk> | I also note that we've gone from "i don't care about optimality, just a \"good solution\"" to "i don't think this is going to really be a at a level of performance with[sic] consideration unless it has BLAS etc" |
2023-01-24 05:55:31 +0100 | Vajb | (~Vajb@2001:999:78d:d7:457c:7773:573e:6903) (Read error: Connection reset by peer) |
2023-01-24 05:56:01 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) |
2023-01-24 05:56:32 +0100 | <segfaultfizzbuzz> | as was mentioned: https://github.com/ekmett/ad/issues/70 |
2023-01-24 05:59:33 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer) |
2023-01-24 06:00:04 +0100 | Guest75 | (~Guest75@178.141.138.233) (Quit: Client closed) |
2023-01-24 06:00:13 +0100 | Vajb | (~Vajb@2001:999:78d:d7:457c:7773:573e:6903) |
2023-01-24 06:00:37 +0100 | <davean> | well if you want matrixes thats a bit different than wanting a lot of variables. |
2023-01-24 06:01:28 +0100 | <segfaultfizzbuzz> | 🤯 |
2023-01-24 06:03:02 +0100 | <davean> | matrixes are a set of structured variables with optimizable relations |
2023-01-24 06:03:50 +0100 | <segfaultfizzbuzz> | ok |
2023-01-24 06:07:57 +0100 | <davean> | matrix operations decompose into more primitive operations in the components but we don't like to talk about them like that. If you shove the decomposition into AD - or use AD "under" the matrix library - it'll crunch away on the equation, but it won't give it to you in matrix terms |
2023-01-24 06:09:03 +0100 | <davean> | You'd be unhappy, but if the variables have no relation, thats how you expect it |
2023-01-24 06:11:06 +0100 | <segfaultfizzbuzz> | i think you are saying to use AD to do algebra and then translate the algebra to matrix operations...? |
2023-01-24 06:12:26 +0100 | <davean> | No, I'm saying you want AD to know matrixs natively so its not a mess, I'm also saying there are MANY times matrixes are not how you get a lot of variables. |
2023-01-24 06:13:16 +0100 | <segfaultfizzbuzz> | ok... |
2023-01-24 06:14:10 +0100 | <davean> | something like https://github.com/Mikolaj/horde-ad orients towards matrixes, but thats a VERY different use case. (I don't know that library because my equations are not matrix like) |
2023-01-24 06:16:24 +0100 | <segfaultfizzbuzz> | ah interesting thanks for the suggestion i will look at this library |
2023-01-24 06:17:06 +0100 | <davean> | I don't know that library to be clear |
2023-01-24 06:17:14 +0100 | <segfaultfizzbuzz> | gotta start somewhere |
2023-01-24 06:18:21 +0100 | <segfaultfizzbuzz> | hmatrix is basically openblas btw |
2023-01-24 06:20:21 +0100 | mizlan | (~mizlan@89.46.114.51) (Remote host closed the connection) |
2023-01-24 06:20:28 +0100 | <davean> | Yah which is why its too annoying to work with |
2023-01-24 06:21:05 +0100 | <davean> | https://hackage.haskell.org/package/hmatrix-0.20.2/docs/Numeric-LinearAlgebra.html#t:Numeric <-- damning |
2023-01-24 06:23:11 +0100 | <segfaultfizzbuzz> | yeahhhhhh |
2023-01-24 06:24:50 +0100 | mizlan | (~mizlan@89.46.114.51) |
2023-01-24 06:25:39 +0100 | <davean> | I mean what more do you expect of blas? |
2023-01-24 06:25:50 +0100 | mizlan | (~mizlan@89.46.114.51) (Remote host closed the connection) |
2023-01-24 06:26:04 +0100 | <segfaultfizzbuzz> | idk i've used plenty of matlab,... isn't that blas under the hood or,...? |
2023-01-24 06:26:58 +0100 | <segfaultfizzbuzz> | sometimes i am thinking maybe i should just do the linear algebra myself as crazy as that sounds and then just find ways to offset the fact that my implementation is slow |
2023-01-24 06:27:20 +0100 | int-index | (~Vladislav@2a00:1370:8178:5994:b468:f8e7:cc8e:1c79) |
2023-01-24 06:29:15 +0100 | int-index-r | (~Vladislav@2a00:1370:8178:5994:10dc:d324:9b0e:2d30) |
2023-01-24 06:32:41 +0100 | int-index | (~Vladislav@2a00:1370:8178:5994:b468:f8e7:cc8e:1c79) (Ping timeout: 246 seconds) |
2023-01-24 06:33:38 +0100 | barzo | (~hd@31.223.41.44) |
2023-01-24 06:35:19 +0100 | int-index-r | int-index |
2023-01-24 06:43:03 +0100 | mizlan | (~mizlan@89.46.114.169) |
2023-01-24 06:48:00 +0100 | mizlan | (~mizlan@89.46.114.169) (Ping timeout: 268 seconds) |
2023-01-24 06:51:45 +0100 | caef^ | (~caef@c-24-30-76-89.hsd1.ga.comcast.net) |
2023-01-24 06:52:35 +0100 | int-index | (~Vladislav@2a00:1370:8178:5994:10dc:d324:9b0e:2d30) (Ping timeout: 246 seconds) |
2023-01-24 06:56:42 +0100 | rekahsoft | (~rekahsoft@bras-base-orllon1122w-grc-07-174-95-68-39.dsl.bell.ca) (Ping timeout: 256 seconds) |
2023-01-24 06:57:42 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 255 seconds) |
2023-01-24 07:18:44 +0100 | mizlan | (~mizlan@169.150.203.62) |
2023-01-24 07:23:09 +0100 | mizlan | (~mizlan@169.150.203.62) (Ping timeout: 268 seconds) |
2023-01-24 07:27:30 +0100 | ubert | (~Thunderbi@p200300ecdf264e3f7f9ba4aff8511836.dip0.t-ipconnect.de) (Remote host closed the connection) |
2023-01-24 07:27:44 +0100 | trev | (~trev@user/trev) |
2023-01-24 07:27:48 +0100 | ubert | (~Thunderbi@p200300ecdf264e3f7f9ba4aff8511836.dip0.t-ipconnect.de) |
2023-01-24 07:28:59 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
2023-01-24 07:31:39 +0100 | ddellacosta | (~ddellacos@143.244.47.100) |
2023-01-24 07:33:32 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 256 seconds) |
2023-01-24 07:33:47 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2023-01-24 07:36:21 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Remote host closed the connection) |
2023-01-24 07:37:13 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2023-01-24 07:41:28 +0100 | mizlan | (~mizlan@169.150.203.51) |
2023-01-24 07:43:08 +0100 | phma_ | (~phma@host-67-44-208-249.hnremote.net) |
2023-01-24 07:46:03 +0100 | phma | (~phma@2001:5b0:211c:c048:963e:eaf4:804a:2fe0) (Ping timeout: 248 seconds) |
2023-01-24 07:46:45 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
2023-01-24 07:54:43 +0100 | potash | (~foghorn@user/foghorn) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-01-24 08:07:40 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2023-01-24 08:14:11 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) |
2023-01-24 08:14:20 +0100 | mizlan | (~mizlan@169.150.203.51) (Ping timeout: 256 seconds) |
2023-01-24 08:15:38 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
2023-01-24 08:17:18 +0100 | phma_ | (~phma@host-67-44-208-249.hnremote.net) (Read error: Connection reset by peer) |
2023-01-24 08:17:32 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-01-24 08:17:51 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2023-01-24 08:18:11 +0100 | phma_ | (phma@2001:5b0:210d:1408:a51f:2104:bbf6:4363) |
2023-01-24 08:18:17 +0100 | mikoto-chan | (~mikoto-ch@2001:999:400:22bc:5dfb:b243:3fed:bd17) |
2023-01-24 08:19:42 +0100 | potash | (~foghorn@user/foghorn) |
2023-01-24 08:20:26 +0100 | phma_ | phma |
2023-01-24 08:22:18 +0100 | shriekingnoise | (~shrieking@186.137.175.87) (Ping timeout: 255 seconds) |
2023-01-24 08:22:23 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2023-01-24 08:31:05 +0100 | mizlan | (~mizlan@89.46.114.43) |
2023-01-24 08:45:13 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds) |
2023-01-24 08:46:53 +0100 | hrberg | (~quassel@171.79-160-161.customer.lyse.net) (Remote host closed the connection) |
2023-01-24 08:47:46 +0100 | Square | (~a@user/square) (Ping timeout: 256 seconds) |
2023-01-24 08:48:05 +0100 | hrberg | (~quassel@171.79-160-161.customer.lyse.net) |
2023-01-24 08:51:09 +0100 | potash | (~foghorn@user/foghorn) (Read error: Connection reset by peer) |
2023-01-24 08:51:50 +0100 | Square | (~a@user/square) |
2023-01-24 08:51:55 +0100 | phma_ | (~phma@host-67-44-208-205.hnremote.net) |
2023-01-24 08:52:07 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds) |
2023-01-24 08:53:28 +0100 | xff0x_ | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds) |
2023-01-24 08:53:52 +0100 | phma__ | (~phma@2001:5b0:210d:1698:e52:a359:3461:7a25) |
2023-01-24 08:54:25 +0100 | phma | (phma@2001:5b0:210d:1408:a51f:2104:bbf6:4363) (Ping timeout: 252 seconds) |
2023-01-24 08:55:08 +0100 | ubert | (~Thunderbi@p200300ecdf264e3f7f9ba4aff8511836.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2023-01-24 08:55:26 +0100 | ubert | (~Thunderbi@p548c9ce5.dip0.t-ipconnect.de) |
2023-01-24 08:56:16 +0100 | phma_ | (~phma@host-67-44-208-205.hnremote.net) (Ping timeout: 256 seconds) |
2023-01-24 09:00:20 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) |
2023-01-24 09:01:48 +0100 | xff0x_ | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2023-01-24 09:05:56 +0100 | phma__ | phma |
2023-01-24 09:09:24 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.8) |
2023-01-24 09:12:29 +0100 | opticblast | (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 260 seconds) |
2023-01-24 09:13:31 +0100 | mmhat | (~mmh@p200300f1c7123c98ee086bfffe095315.dip0.t-ipconnect.de) |
2023-01-24 09:13:36 +0100 | mmhat | (~mmh@p200300f1c7123c98ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit) |
2023-01-24 09:16:29 +0100 | mikoto-chan | (~mikoto-ch@2001:999:400:22bc:5dfb:b243:3fed:bd17) (Ping timeout: 256 seconds) |
2023-01-24 09:19:42 +0100 | manwithluck | (~manwithlu@194.177.28.192) (Ping timeout: 268 seconds) |
2023-01-24 09:20:20 +0100 | theproffesor | (~theproffe@user/theproffesor) (Ping timeout: 246 seconds) |
2023-01-24 09:20:35 +0100 | manwithluck | (~manwithlu@194.177.28.155) |
2023-01-24 09:20:35 +0100 | xff0x_ | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 264 seconds) |
2023-01-24 09:21:09 +0100 | theproffesor | (~theproffe@user/theproffesor) |
2023-01-24 09:21:34 +0100 | MajorBiscuit | (~MajorBisc@2001:1c00:2402:2d00:9eeb:34cf:63b3:9e5b) |
2023-01-24 09:22:20 +0100 | xff0x_ | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2023-01-24 09:28:54 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2023-01-24 09:29:05 +0100 | chele | (~chele@user/chele) |
2023-01-24 09:29:29 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-24 09:30:12 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-01-24 09:30:47 +0100 | mizlan | (~mizlan@89.46.114.43) (Ping timeout: 246 seconds) |
2023-01-24 09:30:58 +0100 | Sgeo_ | (~Sgeo@user/sgeo) |
2023-01-24 09:31:00 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2023-01-24 09:31:55 +0100 | poljar | (~poljar@93-139-120-188.adsl.net.t-com.hr) (Read error: Connection reset by peer) |
2023-01-24 09:32:19 +0100 | poljar | (~poljar@93-139-120-188.adsl.net.t-com.hr) |
2023-01-24 09:32:48 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2023-01-24 09:33:18 +0100 | Inst_ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
2023-01-24 09:33:39 +0100 | <Inst_> | is there a way to turn a type of kind Nat into a type of kind String? |
2023-01-24 09:33:43 +0100 | <Inst_> | kind coercion? |
2023-01-24 09:37:21 +0100 | fserucas | (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
2023-01-24 09:42:09 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c483c1bce9b910063906.dip0.t-ipconnect.de) |
2023-01-24 09:43:01 +0100 | manwithl- | (~manwithlu@194.177.28.192) |
2023-01-24 09:43:52 +0100 | manwithluck | (~manwithlu@194.177.28.155) (Ping timeout: 256 seconds) |
2023-01-24 09:48:17 +0100 | kuribas | (~user@ptr-17d51emsiv9cd4oypbm.18120a2.ip6.access.telenet.be) |
2023-01-24 09:48:45 +0100 | mizlan | (~mizlan@169.150.203.51) |
2023-01-24 09:48:47 +0100 | kuttenbrunzer | (~kuttenbru@2a02:8108:8b80:1d48:cd53:505b:6825:9d7f) |
2023-01-24 09:48:49 +0100 | <merijn> | Inst_: There is no type of kind String |
2023-01-24 09:48:56 +0100 | <merijn> | Inst_: Are you maybe thinking of Symbol? |
2023-01-24 09:48:59 +0100 | <Inst_> | Symbol |
2023-01-24 09:49:15 +0100 | <Inst_> | I'm trying to handwrite a type family for this now |
2023-01-24 09:49:16 +0100 | <dminuoso> | What would that "turning Nat into Symbol" even do? |
2023-01-24 09:49:31 +0100 | <dminuoso> | Do you mean a type level Show? |
2023-01-24 09:50:36 +0100 | <Inst_> | yeah |
2023-01-24 09:50:54 +0100 | Inst_ | Isnt |
2023-01-24 09:51:13 +0100 | Isnt | Inst |
2023-01-24 09:52:42 +0100 | codaraxis___ | (~codaraxis@user/codaraxis) |
2023-01-24 09:54:28 +0100 | codaraxis | (~codaraxis@user/codaraxis) |
2023-01-24 09:56:21 +0100 | codaraxis__ | (~codaraxis@user/codaraxis) (Ping timeout: 255 seconds) |
2023-01-24 09:57:13 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-01-24 09:57:45 +0100 | codaraxis___ | (~codaraxis@user/codaraxis) (Ping timeout: 260 seconds) |
2023-01-24 10:01:20 +0100 | <albet70> | :t filter |
2023-01-24 10:01:22 +0100 | <lambdabot> | (a -> Bool) -> [a] -> [a] |
2023-01-24 10:02:51 +0100 | <albet70> | :t filter @((->)_) |
2023-01-24 10:02:53 +0100 | <lambdabot> | error: parse error on input ‘->’ |
2023-01-24 10:06:44 +0100 | avicenzi | (~avicenzi@2a00:ca8:a1f:b004::c32) |
2023-01-24 10:06:47 +0100 | kuribas | (~user@ptr-17d51emsiv9cd4oypbm.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
2023-01-24 10:12:42 +0100 | CiaoSen | (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2023-01-24 10:17:42 +0100 | ft | (~ft@p4fc2a257.dip0.t-ipconnect.de) (Quit: leaving) |
2023-01-24 10:21:17 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-181-040.46.114.pool.telefonica.de) |
2023-01-24 10:21:22 +0100 | caef^ | (~caef@c-24-30-76-89.hsd1.ga.comcast.net) (Ping timeout: 268 seconds) |
2023-01-24 10:25:09 +0100 | mikoto-chan | (~mikoto-ch@2001:999:705:2347:8a80:665c:2482:fb76) |
2023-01-24 10:27:54 +0100 | BasL | (~BasL@92-108-215-26.cable.dynamic.v4.ziggo.nl) |
2023-01-24 10:29:50 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2023-01-24 10:36:12 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2023-01-24 10:36:22 +0100 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2023-01-24 10:43:17 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-01-24 10:44:12 +0100 | Guest|11 | (~Guest|11@c-76-22-56-82.hsd1.wa.comcast.net) (Quit: Connection closed) |
2023-01-24 10:46:17 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2023-01-24 10:47:11 +0100 | mizlan | (~mizlan@169.150.203.51) (Ping timeout: 255 seconds) |
2023-01-24 10:51:56 +0100 | <tomsmeding> | segfaultfizzbuzz: I happen to know that horde-ad library, and while it does indeed do AD on programs with matrices, it's in active development and not necessarily ready for public usage |
2023-01-24 10:52:16 +0100 | <tomsmeding> | sharp edges and breaking changes are to be expected |
2023-01-24 10:53:03 +0100 | <tomsmeding> | re AD on accelerate: this is one of the things I'd like to achieve/get done in my phd, so get in touch if you'd like to work on that :p |
2023-01-24 10:53:16 +0100 | <Inst> | ugh |
2023-01-24 10:53:24 +0100 | <Inst> | do you know how to get rid of a known symbol constraint? |
2023-01-24 10:54:11 +0100 | <tomsmeding> | Inst: is that related to horde-ad or a general question? |
2023-01-24 10:54:25 +0100 | <Inst> | general question |
2023-01-24 10:54:56 +0100 | <tomsmeding> | Inst: haddocs seem to say " There are instances of the class for every concrete literal: "hello", etc." |
2023-01-24 10:55:49 +0100 | <Inst> | yes, but i'm getting type checker errors; I'm trying to work with reify on Data.Reflection |
2023-01-24 10:58:27 +0100 | BasL | (~BasL@92-108-215-26.cable.dynamic.v4.ziggo.nl) (Quit: Client closed) |
2023-01-24 10:58:30 +0100 | <tomsmeding> | code? |
2023-01-24 10:59:29 +0100 | <Inst> | https://paste.tomsmeding.com/a7QY0RQo |
2023-01-24 11:00:25 +0100 | Sgeo_ | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2023-01-24 11:00:36 +0100 | mikoto-chan | (~mikoto-ch@2001:999:705:2347:8a80:665c:2482:fb76) (Ping timeout: 265 seconds) |
2023-01-24 11:00:43 +0100 | <Inst> | it won't work with reify or reify nat |
2023-01-24 11:03:02 +0100 | mizlan | (~mizlan@169.150.203.52) |
2023-01-24 11:04:39 +0100 | <tomsmeding> | Inst: problem seems to be that ConsSymbol doesn't have KnownSymbol on it |
2023-01-24 11:05:16 +0100 | <Inst> | lol |
2023-01-24 11:05:22 +0100 | <Inst> | there's no type-level show, is there? |
2023-01-24 11:06:40 +0100 | <tomsmeding> | Inst: KnownSymbol seems to just be a class with 1 method producing an SSymbol, defined as `newtype SSymbol (s :: Symbol) = SSymbol String` |
2023-01-24 11:07:08 +0100 | <tomsmeding> | but that stuff is not exported, not sure why |
2023-01-24 11:07:15 +0100 | <tomsmeding> | probably a good reason for it |
2023-01-24 11:07:44 +0100 | xff0x_ | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 256 seconds) |
2023-01-24 11:07:54 +0100 | <Inst> | so there's no way to "show" a Nat? |
2023-01-24 11:08:28 +0100 | <dminuoso> | In principle you can write that type family I suppose. |
2023-01-24 11:08:55 +0100 | <tomsmeding> | dminuoso: they did |
2023-01-24 11:09:16 +0100 | <tomsmeding> | % :set -XDataKinds |
2023-01-24 11:09:16 +0100 | <yahb2> | <no output> |
2023-01-24 11:09:28 +0100 | <tomsmeding> | % import GHC.TypeLits |
2023-01-24 11:09:29 +0100 | <yahb2> | <no output> |
2023-01-24 11:09:47 +0100 | <tomsmeding> | % symbolVal (Data.Proxy.Proxy @(ConsSymbol 'h' "ello")) |
2023-01-24 11:09:47 +0100 | <yahb2> | "hello" |
2023-01-24 11:09:52 +0100 | <tomsmeding> | so that's not the issue |
2023-01-24 11:11:10 +0100 | <Inst> | am i screwed? |
2023-01-24 11:11:29 +0100 | <tomsmeding> | Inst: what are you trying to call, fizzString (Proxy @3)? |
2023-01-24 11:11:41 +0100 | <Inst> | reify |
2023-01-24 11:11:54 +0100 | <Inst> | reify or reifyNat |
2023-01-24 11:11:55 +0100 | <tomsmeding> | package? |
2023-01-24 11:12:09 +0100 | <Inst> | toFizz u = reifyNat u fizzString |
2023-01-24 11:12:18 +0100 | <tomsmeding> | reify from which package |
2023-01-24 11:12:43 +0100 | <Inst> | https://hackage.haskell.org/package/reflection-2.1.6/docs/Data-Reflection.html |
2023-01-24 11:13:31 +0100 | <tomsmeding> | I mean, the semantics sort of check out |
2023-01-24 11:13:44 +0100 | <tomsmeding> | if you know the Nat only at runtime, then surely the string isn't known statically |
2023-01-24 11:13:56 +0100 | <tomsmeding> | which is what the Known typeclasses sort of mean |
2023-01-24 11:14:33 +0100 | <Inst> | so i'd need to play with SomeString types? |
2023-01-24 11:14:49 +0100 | <tomsmeding> | you need the string on the value level as well, so for example that way, yes |
2023-01-24 11:14:56 +0100 | <tomsmeding> | types are erased at runtime |
2023-01-24 11:15:03 +0100 | <tomsmeding> | so type-level computation at runtime is not a thing you can do |
2023-01-24 11:15:23 +0100 | <tomsmeding> | or just, you know, do the whole thing on the value level :p |
2023-01-24 11:15:51 +0100 | <Inst> | yeah but this is the most trivial one, ugh |
2023-01-24 11:15:59 +0100 | <Inst> | people already solved this, maybe i can crib from them |
2023-01-24 11:16:09 +0100 | <tomsmeding> | people did type-level computation at runtime? |
2023-01-24 11:16:11 +0100 | <tomsmeding> | I'd like to see that |
2023-01-24 11:16:20 +0100 | <tomsmeding> | because ostensibly that is impossible in haskell |
2023-01-24 11:16:35 +0100 | <tomsmeding> | without having some witnesses at the value level |
2023-01-24 11:16:53 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:eb4b:602d:4e:447d) |
2023-01-24 11:17:11 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 246 seconds) |
2023-01-24 11:17:40 +0100 | boxscape_ | (~boxscape_@213.52.37.155) |
2023-01-24 11:17:44 +0100 | <Inst> | https://gist.github.com/cdepillabout/d63fcbf8e343b691681f43d287d9d191#file-fizzbuzzone-hs |
2023-01-24 11:18:11 +0100 | <c_wraith> | that's importing singletons and doing SNat stuff |
2023-01-24 11:18:23 +0100 | <tomsmeding> | and even doing some stuff value-level only |
2023-01-24 11:20:10 +0100 | mokee | (~mokee@37.228.215.106) |
2023-01-24 11:23:30 +0100 | <boxscape_> | and singletons has Show_ which is pretty much type-level show https://hackage.haskell.org/package/singletons-base-3.1.1/docs/Prelude-Singletons.html#t:Show_ |
2023-01-24 11:24:28 +0100 | <boxscape_> | more specifically, this is where the Nat instance is generated https://hackage.haskell.org/package/singletons-base-3.1.1/docs/src/Text.Show.Singletons.html#Shows… |
2023-01-24 11:28:14 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
2023-01-24 11:29:06 +0100 | <Inst> | shit, i don't think Show_ guarantees KnownSymbol |
2023-01-24 11:30:43 +0100 | <boxscape_> | I imagine you'd have to use sShow_ to get something like that, i.e. operate on a singleton of a Nat to get a Singleton of a Symbol |
2023-01-24 11:31:54 +0100 | <boxscape_> | tomsmeding SSymbol probably isn't exported so that it can be changed later without backcompat concerns, the whole Symbol/String thing is still in flux, see e.g. https://github.com/ghc-proposals/ghc-proposals/pull/562 |
2023-01-24 11:33:33 +0100 | ubert1 | (~Thunderbi@2a02:8109:abc0:6434:7175:25c6:a924:f8cd) |
2023-01-24 11:34:46 +0100 | ub | (~Thunderbi@p200300ecdf264e3f7f9ba4aff8511836.dip0.t-ipconnect.de) |
2023-01-24 11:35:53 +0100 | ubert | (~Thunderbi@p548c9ce5.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
2023-01-24 11:35:53 +0100 | ub | ubert |
2023-01-24 11:35:53 +0100 | ubert | 078AAJKZH |
2023-01-24 11:35:53 +0100 | ubert1 | 082AAKLAD |
2023-01-24 11:36:53 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
2023-01-24 11:38:23 +0100 | <boxscape_> | fyi maybe you know this but having a "KnownSymbol" instance on a Symbol is essentially the same thing as having a singleton of that Symbol |
2023-01-24 11:38:54 +0100 | <boxscape_> | (I meant to ping Inst) |
2023-01-24 11:41:20 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Ping timeout: 246 seconds) |
2023-01-24 11:44:24 +0100 | <tomsmeding> | boxscape_: Inst: Show_ seems to take a _value_ and show that into a SomeSymbol, which it then throws away the value-level info of |
2023-01-24 11:44:30 +0100 | <tomsmeding> | not sure why that would be useful |
2023-01-24 11:45:14 +0100 | <tomsmeding> | Inst: to do computation at runtime, you must have values :p |
2023-01-24 11:45:40 +0100 | <boxscape_> | tomsmeding that doesn't sound right? e.g. I have a ghci instance where I type `ghci> :kind! Show_ 12`, and as result it prints the type `"12"` |
2023-01-24 11:45:48 +0100 | <tomsmeding> | boxscape_: that's static computation |
2023-01-24 11:45:54 +0100 | <boxscape_> | sure |
2023-01-24 11:45:55 +0100 | <tomsmeding> | oh right |
2023-01-24 11:46:08 +0100 | <tomsmeding> | right, but that means Show_ is only ever useful on statically-known values |
2023-01-24 11:46:11 +0100 | <tomsmeding> | which is a use-case |
2023-01-24 11:46:19 +0100 | <tomsmeding> | but not Inst's one |
2023-01-24 11:46:28 +0100 | <boxscape_> | yeah I think Inst needs to use sShow_ |
2023-01-24 11:46:31 +0100 | <tomsmeding> | yeah |
2023-01-24 11:46:41 +0100 | <Inst> | sigh |
2023-01-24 11:47:16 +0100 | <tomsmeding> | I think even in Agda and Idris, types are erased at runtime if you extract to haskell? |
2023-01-24 11:47:24 +0100 | <tomsmeding> | but not sure about that |
2023-01-24 11:47:31 +0100 | <boxscape_> | hmm not sure how that works |
2023-01-24 11:47:54 +0100 | <boxscape_> | (sShow_ example: `ghci> sShow_ (sing @12)` produces `SSym @"12"`) |
2023-01-24 11:48:53 +0100 | <tomsmeding> | iirc at least agda just extracts the value-level part of your program and puts unsafeCoerce everywhere the haskell typesystem cannot express agda's derived equalities |
2023-01-24 11:49:02 +0100 | <tomsmeding> | s/express/prove/ |
2023-01-24 11:49:23 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2023-01-24 11:50:14 +0100 | <boxscape_> | btw there might be a difference here between compiling to haskell and extracting to haskell |
2023-01-24 11:50:29 +0100 | <boxscape_> | i.e. in the latter case you care about what your code looks like |
2023-01-24 11:53:39 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Remote host closed the connection) |
2023-01-24 11:54:04 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2023-01-24 11:58:45 +0100 | xff0x_ | (~xff0x@2405:6580:b080:900:ece5:bb89:923a:51c8) |
2023-01-24 12:00:56 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c483c1bce9b910063906.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-01-24 12:01:02 +0100 | 082AAKLAD | (~Thunderbi@2a02:8109:abc0:6434:7175:25c6:a924:f8cd) (Quit: 082AAKLAD) |
2023-01-24 12:01:14 +0100 | ubert | (~Thunderbi@2a02:8109:abc0:6434:7175:25c6:a924:f8cd) |
2023-01-24 12:01:19 +0100 | <albet70> | can filter apply on function? |
2023-01-24 12:01:39 +0100 | mizlan | (~mizlan@169.150.203.52) (Ping timeout: 260 seconds) |
2023-01-24 12:01:45 +0100 | <juri_> | filterWith |
2023-01-24 12:02:03 +0100 | <albet70> | :t filterWith |
2023-01-24 12:02:04 +0100 | <lambdabot> | error: |
2023-01-24 12:02:04 +0100 | <lambdabot> | • Variable not in scope: filterWith |
2023-01-24 12:02:04 +0100 | <lambdabot> | • Perhaps you meant one of these: |
2023-01-24 12:02:09 +0100 | <juri_> | er. gah, by brain's not working. |
2023-01-24 12:02:18 +0100 | <albet70> | :t filter |
2023-01-24 12:02:19 +0100 | <lambdabot> | (a -> Bool) -> [a] -> [a] |
2023-01-24 12:02:57 +0100 | <albet70> | this could be more general? [a] to m a or t a? |
2023-01-24 12:03:25 +0100 | <albet70> | :t fmap |
2023-01-24 12:03:25 +0100 | <lambdabot> | Functor f => (a -> b) -> f a -> f b |
2023-01-24 12:03:38 +0100 | <albet70> | :t foldl1 |
2023-01-24 12:03:40 +0100 | <lambdabot> | Foldable t => (a -> a -> a) -> t a -> a |
2023-01-24 12:03:41 +0100 | <boxscape_> | albet70 see https://hackage.haskell.org/package/witherable-0.4.2/docs/Witherable.html |
2023-01-24 12:05:16 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
2023-01-24 12:06:11 +0100 | <albet70> | boxscape_ , Reader isn't Filterable? |
2023-01-24 12:07:03 +0100 | <carbolymer> | why GHC is complaining here: https://bpa.st/W4QLC ? shouldn't this record update be unambiguous in this case, because the type S is specified? |
2023-01-24 12:07:23 +0100 | <albet70> | (a->Bool) -> (a->b) -> a -> b isn't possible for filter? |
2023-01-24 12:07:41 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
2023-01-24 12:08:05 +0100 | <carbolymer> | even with patterh matching of a constructor I still get the warning |
2023-01-24 12:08:10 +0100 | boxscape_ | (~boxscape_@213.52.37.155) (Ping timeout: 252 seconds) |
2023-01-24 12:09:32 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 255 seconds) |
2023-01-24 12:10:31 +0100 | jonathanx_ | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
2023-01-24 12:12:26 +0100 | <carbolymer> | oh, when I update two fields, everything is fine suddenly, even if records contains 1034876 fields |
2023-01-24 12:12:43 +0100 | <carbolymer> | fine then https://www.youtube.com/watch?v=caXeAMseve0 |
2023-01-24 12:13:04 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-181-040.46.114.pool.telefonica.de) (Ping timeout: 252 seconds) |
2023-01-24 12:14:54 +0100 | Midjak | (~Midjak@82.66.147.146) |
2023-01-24 12:15:08 +0100 | jonathanx | (~jonathan@h-178-174-176-109.a357.priv.bahnhof.se) |
2023-01-24 12:18:25 +0100 | <lyxia> | carbolymer: disambiguation happens before type-checking. At that point it doesn't know the type of r yet. Disambiguation relies on it being written literally as (r :: S). |
2023-01-24 12:18:46 +0100 | <carbolymer> | lyxia: that sheds some light, thanks |
2023-01-24 12:19:42 +0100 | mizlan | (~mizlan@169.150.203.64) |
2023-01-24 12:20:48 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) |
2023-01-24 12:24:39 +0100 | <jackdk> | albet70: just from looking at that type signature, I can say that function _must_ apply the `a -> b` parameter to the `a` parameter, because I _must_ return a `b`. |
2023-01-24 12:28:55 +0100 | <lyxia> | carbolymer: more precisely it is considered a misfeature that it works currently (too complicated implementation, non-intuitive behavior beyond the simplest cases), and the warning was added in prevision for phasing that feature out so that explicit signatures are the only way to disambiguate record updates |
2023-01-24 12:28:57 +0100 | <lyxia> | https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0366-no-ambiguous-field-acces… |
2023-01-24 12:36:30 +0100 | razetime | (~Thunderbi@117.193.5.253) |
2023-01-24 12:36:36 +0100 | use-value1 | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
2023-01-24 12:37:44 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-01-24 12:37:49 +0100 | <carbolymer> | lyxia: it feels like it. thanks for the link, those workarounds are useful |
2023-01-24 12:37:55 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:44e8:662a:49b5:c27) (Ping timeout: 260 seconds) |
2023-01-24 12:37:55 +0100 | use-value1 | use-value |
2023-01-24 12:38:46 +0100 | kuttenbrunzer | (~kuttenbru@2a02:8108:8b80:1d48:cd53:505b:6825:9d7f) (Quit: Leaving) |
2023-01-24 12:41:35 +0100 | <jackdk> | See also https://github.com/ghc-proposals/ghc-proposals/pull/537 - the disambiguation story could remain |
2023-01-24 12:45:56 +0100 | jonathanx | (~jonathan@h-178-174-176-109.a357.priv.bahnhof.se) (Remote host closed the connection) |
2023-01-24 12:47:41 +0100 | jonathanx | (~jonathan@h-178-174-176-109.a357.priv.bahnhof.se) |
2023-01-24 12:49:02 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-01-24 12:51:09 +0100 | boxscape_ | (~boxscape_@213.52.37.155) |
2023-01-24 12:55:44 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
2023-01-24 13:00:20 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 260 seconds) |
2023-01-24 13:05:10 +0100 | use-value1 | (~Thunderbi@2a00:23c6:8a03:2f01:1128:5091:e8f3:b17a) |
2023-01-24 13:06:51 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Ping timeout: 260 seconds) |
2023-01-24 13:06:51 +0100 | use-value1 | use-value |
2023-01-24 13:08:33 +0100 | michalz | (~michalz@185.246.207.200) |
2023-01-24 13:10:07 +0100 | use-value1 | (~Thunderbi@2a00:23c6:8a03:2f01:1128:5091:e8f3:b17a) |
2023-01-24 13:11:17 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:1128:5091:e8f3:b17a) (Ping timeout: 246 seconds) |
2023-01-24 13:11:17 +0100 | use-value1 | use-value |
2023-01-24 13:21:08 +0100 | mizlan | (~mizlan@169.150.203.64) (Ping timeout: 246 seconds) |
2023-01-24 13:23:08 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-01-24 13:34:41 +0100 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds) |
2023-01-24 13:36:08 +0100 | Inst_ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
2023-01-24 13:36:33 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c483f5265d28049d82bf.dip0.t-ipconnect.de) |
2023-01-24 13:37:00 +0100 | eruditass | (uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2023-01-24 13:39:03 +0100 | ddellacosta | (~ddellacos@143.244.47.100) (Ping timeout: 260 seconds) |
2023-01-24 13:39:32 +0100 | Inst | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Ping timeout: 255 seconds) |
2023-01-24 13:41:00 +0100 | ddellacosta | (~ddellacos@static-198-44-136-184.cust.tzulo.com) |
2023-01-24 13:42:01 +0100 | anpad | (~pandeyan@user/anpad) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-01-24 13:45:23 +0100 | anpad | (~pandeyan@user/anpad) |
2023-01-24 13:46:32 +0100 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
2023-01-24 13:46:37 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
2023-01-24 13:46:43 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds) |
2023-01-24 13:48:19 +0100 | mei | (~mei@user/mei) (Remote host closed the connection) |
2023-01-24 13:48:49 +0100 | mei | (~mei@user/mei) |
2023-01-24 13:50:35 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
2023-01-24 13:50:39 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2023-01-24 13:50:41 +0100 | mizlan | (~mizlan@169.150.203.51) |
2023-01-24 13:50:53 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 246 seconds) |
2023-01-24 13:56:08 +0100 | ubert | (~Thunderbi@2a02:8109:abc0:6434:7175:25c6:a924:f8cd) (Remote host closed the connection) |
2023-01-24 13:56:08 +0100 | 078AAJKZH | ubert |
2023-01-24 13:56:22 +0100 | ubert1 | (~Thunderbi@2a02:8109:abc0:6434:8ea:a44d:5c6d:60e6) |
2023-01-24 13:59:11 +0100 | cheater_ | (~Username@user/cheater) |
2023-01-24 14:01:42 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 256 seconds) |
2023-01-24 14:01:48 +0100 | cheater_ | cheater |
2023-01-24 14:04:10 +0100 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) |
2023-01-24 14:12:55 +0100 | Bocaneri | (~sauvin@user/Sauvin) |
2023-01-24 14:12:56 +0100 | Lears | (~Leary]@user/Leary/x-0910699) |
2023-01-24 14:13:18 +0100 | Bocaneri | Guest4358 |
2023-01-24 14:13:22 +0100 | EvanR_ | (~EvanR@user/evanr) |
2023-01-24 14:13:23 +0100 | the_proffesor | (~theproffe@2601:282:8800:3f30::b942) |
2023-01-24 14:13:23 +0100 | the_proffesor | (~theproffe@2601:282:8800:3f30::b942) (Changing host) |
2023-01-24 14:13:23 +0100 | the_proffesor | (~theproffe@user/theproffesor) |
2023-01-24 14:13:31 +0100 | dagi41990 | (~dagit@c-24-21-226-72.hsd1.or.comcast.net) |
2023-01-24 14:13:34 +0100 | raoul9 | (~raoul@95.179.203.88) |
2023-01-24 14:13:34 +0100 | \yrlnry | (~yrlnry@2600:4040:738e:5400:b8c6:a4da:9f09:51fa) |
2023-01-24 14:13:38 +0100 | jelewis2 | (~lewisje@72.49.207.113) |
2023-01-24 14:13:42 +0100 | raehik_ | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2023-01-24 14:14:03 +0100 | tabemann_ | (~tabemann@2600:1700:7990:24e0:2b1c:a4e:d843:5301) |
2023-01-24 14:14:11 +0100 | Midjak2 | (~Midjak@82.66.147.146) |
2023-01-24 14:14:28 +0100 | AndreasK_ | (sid320732@id-320732.uxbridge.irccloud.com) |
2023-01-24 14:14:28 +0100 | jtmar | (~james@jtmar.me) |
2023-01-24 14:14:45 +0100 | pjlsergeant__ | (sid143467@id-143467.hampstead.irccloud.com) |
2023-01-24 14:14:48 +0100 | img_ | (~img@user/img) |
2023-01-24 14:14:50 +0100 | dysfigured | (dfg@dfg.rocks) |
2023-01-24 14:14:57 +0100 | Taneb0 | (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) |
2023-01-24 14:15:03 +0100 | natto17 | (~natto@140.238.225.67) |
2023-01-24 14:15:05 +0100 | jinsl- | (~jinsl@2408:8207:255b:27c0:211:32ff:fec8:6aea) |
2023-01-24 14:15:08 +0100 | comerijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-24 14:15:26 +0100 | johnw_ | (~johnw@2600:1700:cf00:db0:ed68:6ce8:98a1:2c83) |
2023-01-24 14:15:34 +0100 | gawen_ | (~gawen@user/gawen) |
2023-01-24 14:15:52 +0100 | kadobanana | (~mud@user/kadoban) |
2023-01-24 14:15:53 +0100 | jrm2 | (~jrm@user/jrm) |
2023-01-24 14:16:04 +0100 | burakcan- | (burakcank@has.arrived.and.is.ready-to.party) |
2023-01-24 14:16:22 +0100 | hololeap_ | (~quassel@user/hololeap) |
2023-01-24 14:16:34 +0100 | piele_ | (~piele@tbonesteak.creativeserver.net) |
2023-01-24 14:16:52 +0100 | glguy_ | (~glguy@libera/staff-emeritus/glguy) |
2023-01-24 14:16:52 +0100 | _mokee_ | (~mokee@37.228.215.106) |
2023-01-24 14:16:58 +0100 | some02 | (~cat@user/sudden) |
2023-01-24 14:17:07 +0100 | shachaf_ | (~shachaf@li227-219.members.linode.com) |
2023-01-24 14:17:10 +0100 | gentauro_ | (~gentauro@cgn-cgn11-185-107-12-141.static.kviknet.net) |
2023-01-24 14:17:22 +0100 | pja_ | (~pja@2a02:8010:6098:0:e65f:1ff:fe1f:660f) |
2023-01-24 14:17:33 +0100 | takuan_dozo | (~takuan@178-116-218-225.access.telenet.be) |
2023-01-24 14:17:50 +0100 | Momentum_ | (momentum@tilde.team) |
2023-01-24 14:17:51 +0100 | tessier_ | (~treed@98.171.210.130) |
2023-01-24 14:17:55 +0100 | Major_Biscuit | (~MajorBisc@2001:1c00:2402:2d00:9eeb:34cf:63b3:9e5b) |
2023-01-24 14:17:56 +0100 | cstml | (cstml@tilde.club) |
2023-01-24 14:18:13 +0100 | k33 | (~~kee@user/wizzwizz4) |
2023-01-24 14:18:25 +0100 | mei | (~mei@user/mei) (Killed (copper.libera.chat (Nickname regained by services))) |
2023-01-24 14:18:30 +0100 | mei | (~mei@user/mei) |
2023-01-24 14:19:05 +0100 | Maxdaman1us | (~Maxdamant@user/maxdamantus) |
2023-01-24 14:20:36 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (*.net *.split) |
2023-01-24 14:20:36 +0100 | anpad | (~pandeyan@user/anpad) (*.net *.split) |
2023-01-24 14:20:36 +0100 | Midjak | (~Midjak@82.66.147.146) (*.net *.split) |
2023-01-24 14:20:36 +0100 | mokee | (~mokee@37.228.215.106) (*.net *.split) |
2023-01-24 14:20:36 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (*.net *.split) |
2023-01-24 14:20:36 +0100 | MajorBiscuit | (~MajorBisc@2001:1c00:2402:2d00:9eeb:34cf:63b3:9e5b) (*.net *.split) |
2023-01-24 14:20:36 +0100 | theproffesor | (~theproffe@user/theproffesor) (*.net *.split) |
2023-01-24 14:20:36 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (*.net *.split) |
2023-01-24 14:20:36 +0100 | pjlsergeant_ | (sid143467@id-143467.hampstead.irccloud.com) (*.net *.split) |
2023-01-24 14:20:36 +0100 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (*.net *.split) |
2023-01-24 14:20:36 +0100 | dfg | (dfg@user/dfg) (*.net *.split) |
2023-01-24 14:20:36 +0100 | jinsl | (~jinsl@2408:8207:255b:27c0:211:32ff:fec8:6aea) (*.net *.split) |
2023-01-24 14:20:36 +0100 | tessier | (~treed@98.171.210.130) (*.net *.split) |
2023-01-24 14:20:36 +0100 | shachaf | (~shachaf@user/shachaf) (*.net *.split) |
2023-01-24 14:20:36 +0100 | yrlnry | (~yrlnry@2600:4040:738e:5400:b8c6:a4da:9f09:51fa) (*.net *.split) |
2023-01-24 14:20:36 +0100 | natto | (~natto@140.238.225.67) (*.net *.split) |
2023-01-24 14:20:36 +0100 | dagit | (~dagit@2001:558:6025:38:71c6:9d58:7252:8976) (*.net *.split) |
2023-01-24 14:20:36 +0100 | sudden | (~cat@user/sudden) (*.net *.split) |
2023-01-24 14:20:36 +0100 | Momentum | (momentum@tilde.team) (*.net *.split) |
2023-01-24 14:20:36 +0100 | _koolazer | (~koo@user/koolazer) (*.net *.split) |
2023-01-24 14:20:36 +0100 | hololeap | (~quassel@user/hololeap) (*.net *.split) |
2023-01-24 14:20:36 +0100 | img | (~img@user/img) (*.net *.split) |
2023-01-24 14:20:36 +0100 | EvanR | (~EvanR@user/evanr) (*.net *.split) |
2023-01-24 14:20:36 +0100 | tabemann | (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (*.net *.split) |
2023-01-24 14:20:36 +0100 | [Leary] | (~Leary]@user/Leary/x-0910699) (*.net *.split) |
2023-01-24 14:20:36 +0100 | Maxdamantus | (~Maxdamant@user/maxdamantus) (*.net *.split) |
2023-01-24 14:20:36 +0100 | pja | (~pja@2a02:8010:6098:0:e65f:1ff:fe1f:660f) (*.net *.split) |
2023-01-24 14:20:36 +0100 | Taneb | (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) (*.net *.split) |
2023-01-24 14:20:36 +0100 | cstml_ | (cstml@tilde.club) (*.net *.split) |
2023-01-24 14:20:36 +0100 | son0p | (~ff@181.136.122.143) (*.net *.split) |
2023-01-24 14:20:36 +0100 | arflech__ | (~lewisje@72.49.207.113) (*.net *.split) |
2023-01-24 14:20:36 +0100 | tureba | (~tureba@tureba.org) (*.net *.split) |
2023-01-24 14:20:36 +0100 | burakcank | (burakcank@has.arrived.and.is.ready-to.party) (*.net *.split) |
2023-01-24 14:20:36 +0100 | jrm | (~jrm@user/jrm) (*.net *.split) |
2023-01-24 14:20:36 +0100 | Sauvin | (~sauvin@user/Sauvin) (*.net *.split) |
2023-01-24 14:20:36 +0100 | gentauro | (~gentauro@user/gentauro) (*.net *.split) |
2023-01-24 14:20:36 +0100 | glguy | (~glguy@libera/staff-emeritus/glguy) (*.net *.split) |
2023-01-24 14:20:36 +0100 | kee | (~~kee@user/wizzwizz4) (*.net *.split) |
2023-01-24 14:20:36 +0100 | gawen | (~gawen@user/gawen) (*.net *.split) |
2023-01-24 14:20:36 +0100 | raoul | (~raoul@95.179.203.88) (*.net *.split) |
2023-01-24 14:20:36 +0100 | piele | (~piele@tbonesteak.creativeserver.net) (*.net *.split) |
2023-01-24 14:20:36 +0100 | mud | (~mud@user/kadoban) (*.net *.split) |
2023-01-24 14:20:37 +0100 | peutri | (~peutri@bobo.desast.re) (*.net *.split) |
2023-01-24 14:20:37 +0100 | AndreasK | (sid320732@id-320732.uxbridge.irccloud.com) (*.net *.split) |
2023-01-24 14:20:37 +0100 | jamestmartin | (~james@jtmar.me) (*.net *.split) |
2023-01-24 14:20:37 +0100 | jjhoo | (~jahakala@user/jjhoo) (*.net *.split) |
2023-01-24 14:20:38 +0100 | AndreasK_ | AndreasK |
2023-01-24 14:20:40 +0100 | burakcan- | burakcank |
2023-01-24 14:20:46 +0100 | jrm2 | jrm |
2023-01-24 14:20:46 +0100 | raoul9 | raoul |
2023-01-24 14:21:42 +0100 | <dminuoso> | Mmm, Im beginning to really like haskell.nix. |
2023-01-24 14:21:50 +0100 | peutri | (~peutri@bobo.desast.re) |
2023-01-24 14:22:01 +0100 | koolazer | (~koo@user/koolazer) |
2023-01-24 14:22:16 +0100 | jjhoo | (jahakala@user/jjhoo) |
2023-01-24 14:22:39 +0100 | <boxscape_> | what do you like about it? |
2023-01-24 14:23:19 +0100 | <dminuoso> | It gives me coherences with non-nix builds, and doesnt have this stupid "stack-like" curated but buggy and not-well-maintained subset of hackage |
2023-01-24 14:23:33 +0100 | <dminuoso> | And unlike the nixpkgs builders stuff, its very well documented |
2023-01-24 14:23:38 +0100 | <boxscape_> | hm I see |
2023-01-24 14:23:54 +0100 | Niclelscore | (~Niclelsco@94.25.229.249) |
2023-01-24 14:23:55 +0100 | <boxscape_> | I have had trouble with documentation when using non-haskell.nix nix with haskell |
2023-01-24 14:23:59 +0100 | <dminuoso> | Like, it describes every function, every argument, tells you what kind of "types" go in and out |
2023-01-24 14:24:32 +0100 | <dminuoso> | with callCabal2nix, its mostly "screw you, here's some absurdly obfuscated nix code with zero comments, and zero documentation, zero guides" |
2023-01-24 14:24:51 +0100 | opticblast | (~Thunderbi@secure-165.caltech.edu) |
2023-01-24 14:26:10 +0100 | tureba | (tureba@tureba.org) |
2023-01-24 14:26:14 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2023-01-24 14:26:19 +0100 | <boxscape_> | the solution I used a few years ago was this sort of file https://github.com/JakobBruenker/assembler/blob/master/default.nix but I don't know if that still works, and yeah if you wanted to do anything non-standard it was pretty difficult to figure out how |
2023-01-24 14:27:05 +0100 | Niclelscore | (~Niclelsco@94.25.229.249) (Client Quit) |
2023-01-24 14:27:11 +0100 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2023-01-24 14:27:14 +0100 | <dminuoso> | Ah yeah |
2023-01-24 14:27:33 +0100 | <dminuoso> | I mean nixpkgs has improved much over the past few months, but honestly I still have a sore taste in my mouth |
2023-01-24 14:27:40 +0100 | <fendor[m]> | :k '['()] |
2023-01-24 14:27:41 +0100 | <lambdabot> | error: parse error on input ‘'’ |
2023-01-24 14:27:41 +0100 | <dminuoso> | And the code quality is often subpar |
2023-01-24 14:27:51 +0100 | <dminuoso> | :k [()] |
2023-01-24 14:27:52 +0100 | <lambdabot> | * |
2023-01-24 14:27:55 +0100 | <fendor[m]> | :k '[ '()] |
2023-01-24 14:27:56 +0100 | <lambdabot> | [()] |
2023-01-24 14:28:18 +0100 | <fendor[m]> | any idea why the space is needed here |
2023-01-24 14:28:28 +0100 | Midjak2 | (~Midjak@82.66.147.146) (Quit: Leaving) |
2023-01-24 14:28:29 +0100 | <boxscape_> | because otherwise '[' is parsed as a character |
2023-01-24 14:28:53 +0100 | <boxscape_> | or, reserved to be parsed as character? not sure, especially since it's lambdabot |
2023-01-24 14:29:03 +0100 | <dminuoso> | Its not just lambdabot |
2023-01-24 14:29:04 +0100 | Midjak | (~Midjak@82.66.147.146) |
2023-01-24 14:29:07 +0100 | <dminuoso> | ghci chokes as well |
2023-01-24 14:29:13 +0100 | <fendor[m]> | it happens in ghci and ghc as well |
2023-01-24 14:29:33 +0100 | <boxscape_> | but it has a different parse error |
2023-01-24 14:29:39 +0100 | <boxscape_> | because I think it does parse it as character |
2023-01-24 14:29:45 +0100 | <fendor[m]> | but that parsing ambiguity makes sense, I didn't of it |
2023-01-24 14:29:49 +0100 | <dminuoso> | 14:28:29 boxscape_ | because otherwise '[' is parsed as a characte |
2023-01-24 14:29:51 +0100 | <dminuoso> | ^- |
2023-01-24 14:29:55 +0100 | <dminuoso> | Well lexing ambiguity. |
2023-01-24 14:29:59 +0100 | <boxscape_> | right |
2023-01-24 14:30:00 +0100 | <dminuoso> | The parser could deal with it, but not the lexer |
2023-01-24 14:30:25 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-01-24 14:30:33 +0100 | <dminuoso> | Though Im not sure, are characters promoted as well? |
2023-01-24 14:30:34 +0100 | <boxscape_> | % :k '[' |
2023-01-24 14:30:34 +0100 | <yahb2> | '[' :: Char |
2023-01-24 14:30:38 +0100 | <boxscape_> | :k '[' |
2023-01-24 14:30:39 +0100 | <lambdabot> | error: parse error on input ‘'’ |
2023-01-24 14:30:41 +0100 | <fendor[m]> | reminds me of the time I forgot about comments in ghci |
2023-01-24 14:30:47 +0100 | anpad | (~pandeyan@user/anpad) |
2023-01-24 14:30:47 +0100 | <boxscape_> | the character kind is newish but does exist, yeah |
2023-01-24 14:30:53 +0100 | <dminuoso> | % f :: Const () '['; f = undefined |
2023-01-24 14:30:53 +0100 | <yahb2> | <no output> |
2023-01-24 14:30:57 +0100 | <dminuoso> | Ahh. Here. |
2023-01-24 14:31:10 +0100 | <dminuoso> | ^- so I guess that conclusively proves that character literals are promoted as well |
2023-01-24 14:32:07 +0100 | razetime | (~Thunderbi@117.193.5.253) (Quit: See You Space Cowboy) |
2023-01-24 14:32:09 +0100 | <dminuoso> | fendor[m]: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/data_kinds.html#distinguishing-between-typ… |
2023-01-24 14:32:13 +0100 | <dminuoso> | its even explicitly documented |
2023-01-24 14:32:17 +0100 | <dminuoso> | ```Just as in the case of Template Haskell (Syntax), GHC gets confused if you put a quote mark before a data constructor whose second character is a quote mark. In this case, just put a space between the promotion quote and the data constructor: |
2023-01-24 14:32:21 +0100 | <boxscape_> | % :kind! UnconsSymbol "foo" |
2023-01-24 14:32:22 +0100 | <yahb2> | UnconsSymbol "foo" :: Maybe (Char, Symbol) ; = 'Just '('f', "oo") |
2023-01-24 14:32:42 +0100 | <dminuoso> | :S |
2023-01-24 14:32:53 +0100 | <dminuoso> | Now we just need an IO kind |
2023-01-24 14:32:59 +0100 | <boxscape_> | true |
2023-01-24 14:33:03 +0100 | <dminuoso> | So we can do things like launch missiles during type checking |
2023-01-24 14:34:14 +0100 | <dminuoso> | Just imagine the fun of working with PrimTypes, something as mundane as `IO \rw -> case f rw of (rw', a) -> ...` would be a lot of gibberish spaghetti code |
2023-01-24 14:34:20 +0100 | <fendor[m]> | dminuoso, thank you very much! |
2023-01-24 14:36:11 +0100 | <boxscape_> | I guess having IO alone isn't enough, you also need a typeruntime to execute the effects |
2023-01-24 14:36:21 +0100 | <boxscape_> | s/typeruntime/compile-time runtime |
2023-01-24 14:36:39 +0100 | <dminuoso> | boxscape_: The end of the story is just: Just use idris. |
2023-01-24 14:36:41 +0100 | michalz | michalz_ |
2023-01-24 14:36:49 +0100 | <boxscape_> | can you use IO during type checking in Idris though |
2023-01-24 14:36:56 +0100 | <dminuoso> | Yup |
2023-01-24 14:37:00 +0100 | <boxscape_> | oh, neat |
2023-01-24 14:37:10 +0100 | <dminuoso> | Well no sorry |
2023-01-24 14:37:13 +0100 | <dminuoso> | I misread |
2023-01-24 14:37:15 +0100 | <boxscape_> | oh :( |
2023-01-24 14:37:31 +0100 | ccapndave | (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
2023-01-24 14:37:39 +0100 | <dminuoso> | But for what its worth, you can always insert a type checker plugin to do anything you want in GHC |
2023-01-24 14:38:11 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) |
2023-01-24 14:41:21 +0100 | <boxscape_> | or do arbitrary IO with TH |
2023-01-24 14:42:48 +0100 | <dminuoso> | Im a bit sad you can do that |
2023-01-24 14:43:06 +0100 | <dminuoso> | I kind of wish we had a more limited macro subsystem that can do some limited effects, but not full blown IO |
2023-01-24 14:43:15 +0100 | <dminuoso> | Something standardized, not tied to GHCs internal representation |
2023-01-24 14:43:27 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds) |
2023-01-24 14:43:27 +0100 | <boxscape_> | yeah sounds useful |
2023-01-24 14:44:12 +0100 | <comerijn> | I (kinda) like (T)TH, but it's a bit unfortunate there was not though given to how it interacts/should interact with cross-compilation |
2023-01-24 14:44:19 +0100 | <comerijn> | and retro-fitting sane semantics for that is hard |
2023-01-24 14:46:05 +0100 | jero98772 | (~jero98772@2800:484:1d80:d8ce:3490:26c5:1782:da8c) |
2023-01-24 14:48:13 +0100 | xff0x_ | (~xff0x@2405:6580:b080:900:ece5:bb89:923a:51c8) (Ping timeout: 252 seconds) |
2023-01-24 14:48:35 +0100 | xff0x_ | (~xff0x@178.255.149.135) |
2023-01-24 14:48:35 +0100 | Guest|20 | (~Guest|20@c-73-176-81-178.hsd1.il.comcast.net) (Ping timeout: 260 seconds) |
2023-01-24 14:48:47 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2023-01-24 14:49:15 +0100 | michalz | (~michalz@185.246.207.221) |
2023-01-24 14:51:26 +0100 | mizlan | (~mizlan@169.150.203.51) (Ping timeout: 246 seconds) |
2023-01-24 14:52:33 +0100 | ccapndave | (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: Textual IRC Client: www.textualapp.com) |
2023-01-24 14:56:43 +0100 | raehik_ | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Remote host closed the connection) |
2023-01-24 15:01:07 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c483f5265d28049d82bf.dip0.t-ipconnect.de) (Remote host closed the connection) |
2023-01-24 15:01:19 +0100 | xff0x_ | (~xff0x@178.255.149.135) (Ping timeout: 260 seconds) |
2023-01-24 15:01:25 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c48339b8d345b07b8534.dip0.t-ipconnect.de) |
2023-01-24 15:02:48 +0100 | xff0x_ | (~xff0x@2405:6580:b080:900:ece5:bb89:923a:51c8) |
2023-01-24 15:06:02 +0100 | kurbus | (~kurbus@user/kurbus) |
2023-01-24 15:09:09 +0100 | Axman6 | (~Axman6@user/axman6) (Ping timeout: 268 seconds) |
2023-01-24 15:10:13 +0100 | hugo | (znc@verdigris.lysator.liu.se) (Ping timeout: 252 seconds) |
2023-01-24 15:11:06 +0100 | Axman6 | (~Axman6@user/axman6) |
2023-01-24 15:16:52 +0100 | hugo | (znc@verdigris.lysator.liu.se) |
2023-01-24 15:18:51 +0100 | kurbus | (~kurbus@user/kurbus) (Quit: Client closed) |
2023-01-24 15:19:12 +0100 | comerijn | sighs |
2023-01-24 15:19:20 +0100 | mizlan | (~mizlan@89.46.114.27) |
2023-01-24 15:19:28 +0100 | <comerijn> | That moment where you gotta modify 98 modules for a simple refactor >.> |
2023-01-24 15:20:51 +0100 | <dminuoso> | Be glad it is Haskell. |
2023-01-24 15:21:05 +0100 | <comerijn> | I am, but still |
2023-01-24 15:21:26 +0100 | comerijn | merijn |
2023-01-24 15:22:06 +0100 | <merijn> | Also simple enough I can macro it in vim, but horrible diff >.> |
2023-01-24 15:24:21 +0100 | michalz_ | (~michalz@185.246.207.200) (Quit: Client closed) |
2023-01-24 15:25:21 +0100 | <boxscape_> | tomsmeding I was wrong, SSymbol is exported in base 4.18 |
2023-01-24 15:25:35 +0100 | <boxscape_> | see https://github.com/haskell/core-libraries-committee/issues/85 |
2023-01-24 15:25:51 +0100 | thegeekinside | (~thegeekin@189.180.66.244) |
2023-01-24 15:26:01 +0100 | kurbus | (~kurbus@user/kurbus) |
2023-01-24 15:27:33 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
2023-01-24 15:31:48 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 252 seconds) |
2023-01-24 15:35:59 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c48339b8d345b07b8534.dip0.t-ipconnect.de) (Remote host closed the connection) |
2023-01-24 15:36:23 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c483e1c7cd94b291a585.dip0.t-ipconnect.de) |
2023-01-24 15:41:29 +0100 | wombat8756 | (~wombat875@2600:4041:5bea:f800:83f2:bf42:de49:b596) (Ping timeout: 246 seconds) |
2023-01-24 15:41:56 +0100 | razetime | (~Thunderbi@117.193.5.253) |
2023-01-24 15:41:57 +0100 | caef^ | (~caef@c-24-30-76-89.hsd1.ga.comcast.net) |
2023-01-24 15:43:04 +0100 | wombat8756 | (~wombat875@2600:4041:5bea:f800:da64:71f6:cfa2:558) |
2023-01-24 15:44:29 +0100 | barzo | (~hd@31.223.41.44) (Ping timeout: 260 seconds) |
2023-01-24 15:47:40 +0100 | shawwwn_ | shawwwn |
2023-01-24 15:50:38 +0100 | Inst__ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
2023-01-24 15:52:55 +0100 | <alexfmpe[m]> | <boxscape_> "can you use IO during type..." <- I dunno about arbitrary IO, but type providers do some of that - https://docs.idris-lang.org/en/latest/guides/type-providers-ffi.html#a-simple-example |
2023-01-24 15:53:17 +0100 | <boxscape_> | oh, interesting |
2023-01-24 15:54:05 +0100 | Inst_ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Ping timeout: 255 seconds) |
2023-01-24 15:54:57 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-01-24 15:54:59 +0100 | Lycurgus | (~juan@user/Lycurgus) |
2023-01-24 15:59:20 +0100 | <kuribas> | but idris2 doesn't have type providers... |
2023-01-24 16:00:12 +0100 | <kuribas> | but type providers can be done easily in haskell with TH. |
2023-01-24 16:05:59 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2023-01-24 16:07:01 +0100 | Guest75 | (~Guest75@178.141.138.233) |
2023-01-24 16:10:43 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c483e1c7cd94b291a585.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2023-01-24 16:16:54 +0100 | barzo | (~hd@31.223.41.44) |
2023-01-24 16:19:11 +0100 | mizlan | (~mizlan@89.46.114.27) (Ping timeout: 252 seconds) |
2023-01-24 16:20:15 +0100 | <boxscape_> | right, true |
2023-01-24 16:21:33 +0100 | <carbolymer> | `%=` is analogous to `modify`, so is there a lens doing what `state` is doing? |
2023-01-24 16:21:55 +0100 | <carbolymer> | i.e. `s -> (a, s)` |
2023-01-24 16:22:40 +0100 | shriekingnoise | (~shrieking@186.137.175.87) |
2023-01-24 16:22:57 +0100 | <dminuoso> | carbolymer: l %= f = State.modify (l %~ f) |
2023-01-24 16:23:05 +0100 | <dminuoso> | It's nothing special, just a very minor convenience thing |
2023-01-24 16:23:28 +0100 | <geekosaur> | AIUI lens does not incorporate state, just some helpers for it |
2023-01-24 16:23:46 +0100 | son0p | (~ff@181.136.122.143) |
2023-01-24 16:24:07 +0100 | <dminuoso> | So its not "analogous" to modify, it's just a wrapper around modify + %~ :) |
2023-01-24 16:24:17 +0100 | Niclelscore | (~Niclelsco@94.25.229.249) |
2023-01-24 16:24:19 +0100 | <dminuoso> | (Or it *is* modify) |
2023-01-24 16:25:02 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
2023-01-24 16:25:41 +0100 | <kuribas> | IMO 95% of lens is convenience things |
2023-01-24 16:25:52 +0100 | <kuribas> | the other 5% is very handy. |
2023-01-24 16:25:54 +0100 | <boxscape_> | does `\l f -> state (l %~ f)` do anything sensible? |
2023-01-24 16:26:15 +0100 | GoldsteinQ | (~goldstein@goldstein.rs) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-01-24 16:26:19 +0100 | <kuribas> | :t state |
2023-01-24 16:26:20 +0100 | <lambdabot> | MonadState s m => (s -> (a, s)) -> m a |
2023-01-24 16:26:51 +0100 | <boxscape_> | I guess you need a fairly strange Setter for that to work out |
2023-01-24 16:26:54 +0100 | <kuribas> | :t (%~) |
2023-01-24 16:26:55 +0100 | <lambdabot> | ASetter s t a b -> (a -> b) -> s -> t |
2023-01-24 16:27:25 +0100 | <geekosaur> | `state` is what used to be `State` before `State s` was made a type alias for `StateT s Identity` |
2023-01-24 16:27:48 +0100 | GoldsteinQ | (~goldstein@goldstein.rs) |
2023-01-24 16:28:32 +0100 | <carbolymer> | dminuoso: those are only setters, but I'd like to combine getter with setter |
2023-01-24 16:29:05 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 246 seconds) |
2023-01-24 16:29:37 +0100 | <carbolymer> | @hoogle <.~ |
2023-01-24 16:29:37 +0100 | <lambdabot> | Control.Lens.Operators (<.~) :: ASetter s t a b -> b -> s -> (b, t) |
2023-01-24 16:29:37 +0100 | <lambdabot> | Control.Lens.Setter (<.~) :: ASetter s t a b -> b -> s -> (b, t) |
2023-01-24 16:29:37 +0100 | <lambdabot> | Diagrams.Prelude (<.~) :: () => ASetter s t a b -> b -> s -> (b, t) |
2023-01-24 16:29:46 +0100 | <carbolymer> | looks like what I need |
2023-01-24 16:30:23 +0100 | Guest4358 | Sauvin |
2023-01-24 16:30:43 +0100 | <carbolymer> | except not in MonadState |
2023-01-24 16:30:46 +0100 | <dminuoso> | carbolymer: ah heh I misread your question, pardon me |
2023-01-24 16:30:56 +0100 | <dminuoso> | carbolymer: yes thats fine, you can just use `lift` |
2023-01-24 16:31:12 +0100 | <dminuoso> | or `state` rather |
2023-01-24 16:31:36 +0100 | <kuribas> | This all looks like line-noise to me. |
2023-01-24 16:31:49 +0100 | <dminuoso> | make up your own operator name, sau s <.= f = state (l <.~ f) |
2023-01-24 16:32:04 +0100 | <boxscape_> | :t <.= |
2023-01-24 16:32:05 +0100 | <lambdabot> | error: parse error on input ‘<.=’ |
2023-01-24 16:32:10 +0100 | <boxscape_> | :t (<.=) |
2023-01-24 16:32:11 +0100 | <lambdabot> | MonadState s m => ASetter s s a b -> b -> m b |
2023-01-24 16:32:26 +0100 | <carbolymer> | kuribas: that's where name came from: LinE NoiSe = LENS |
2023-01-24 16:32:40 +0100 | <kuribas> | carbolymer: heheh |
2023-01-24 16:33:06 +0100 | Inst_ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
2023-01-24 16:33:18 +0100 | <geekosaur> | those who don't know Perl are doomed to repeat it? |
2023-01-24 16:33:19 +0100 | <carbolymer> | dminuoso: yep, I'll probably do that, thanks |
2023-01-24 16:35:45 +0100 | <boxscape_> | carbolymer but it already exists? See my lambdabot message above |
2023-01-24 16:36:25 +0100 | Inst__ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Ping timeout: 252 seconds) |
2023-01-24 16:37:54 +0100 | carbolymer | squints harder at the operator |
2023-01-24 16:38:39 +0100 | <geekosaur> | you might want to look up the table of operators; they all follow patterns, so you can often construct an operator name just by knowing what you want to do |
2023-01-24 16:38:43 +0100 | Inst_ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Read error: Connection reset by peer) |
2023-01-24 16:38:44 +0100 | <carbolymer> | boxscape_: it's not what I need, I need exactly `state` but in lens form |
2023-01-24 16:38:52 +0100 | <boxscape_> | ah |
2023-01-24 16:39:06 +0100 | Inst_ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
2023-01-24 16:39:28 +0100 | <dminuoso> | carbolymer: You can also just use `state` yourself. :p |
2023-01-24 16:39:35 +0100 | <dminuoso> | state (l <.~ f) is not unreadable |
2023-01-24 16:39:50 +0100 | <carbolymer> | yeah, I'm going into that direction |
2023-01-24 16:39:54 +0100 | <boxscape_> | state (l <.~ f) is the same as <.= |
2023-01-24 16:40:01 +0100 | <boxscape_> | well, the types are anyway |
2023-01-24 16:40:02 +0100 | <dminuoso> | Ahh heh |
2023-01-24 16:40:05 +0100 | <dminuoso> | boxscape_: that already exists :p |
2023-01-24 16:40:09 +0100 | <boxscape_> | yep :) |
2023-01-24 16:40:10 +0100 | <dminuoso> | https://hackage.haskell.org/package/lens-5.2/docs/Control-Lens-Operators.html#v:-60-.-61- |
2023-01-24 16:40:22 +0100 | <dminuoso> | But thats a different thing |
2023-01-24 16:40:37 +0100 | <dminuoso> | So no, its not the same |
2023-01-24 16:40:53 +0100 | <dminuoso> | % :t \l f -> state (l <.~ f) |
2023-01-24 16:40:53 +0100 | <yahb2> | <interactive>:1:9: error: Variable not in scope: state :: t0 -> t2 ; ; <interactive>:1:18: error: ; Variable not in scope: (<.~) :: t -> t1 -> t0 |
2023-01-24 16:41:01 +0100 | <dminuoso> | :t \l f -> state (l <.~ f) |
2023-01-24 16:41:03 +0100 | <lambdabot> | MonadState s m => ASetter s s a1 a2 -> a2 -> m a2 |
2023-01-24 16:41:10 +0100 | <dminuoso> | uh oh maybe it is the same |
2023-01-24 16:41:27 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
2023-01-24 16:41:34 +0100 | <dminuoso> | % :t (%=) |
2023-01-24 16:41:34 +0100 | <yahb2> | <interactive>:1:1: error: ; • Variable not in scope: %= ; • Perhaps you meant one of these: ; ‘/=’ (imported from Prelude), ‘<=’ (imported from Prelude), ; ‘==’ (imported fr... |
2023-01-24 16:41:36 +0100 | <dminuoso> | :t (%=) |
2023-01-24 16:41:37 +0100 | <lambdabot> | MonadState s m => ASetter s s a b -> (a -> b) -> m () |
2023-01-24 16:44:09 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c483e1c7cd94b291a585.dip0.t-ipconnect.de) |
2023-01-24 16:45:51 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Ping timeout: 255 seconds) |
2023-01-24 16:48:54 +0100 | caef^ | (~caef@c-24-30-76-89.hsd1.ga.comcast.net) (Remote host closed the connection) |
2023-01-24 16:49:17 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
2023-01-24 16:50:17 +0100 | mizlan | (~mizlan@169.150.203.59) |
2023-01-24 16:53:39 +0100 | Lycurgus | (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
2023-01-24 16:53:43 +0100 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2023-01-24 16:55:05 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2023-01-24 16:56:06 +0100 | <raehik> | if I want the best performance possible (for a low level lib which most users won't see), must I use unboxed values everywhere? How "reliable" is GHC's unboxing? |
2023-01-24 16:56:43 +0100 | <raehik> | is `Addr#` better than `Ptr a`; is `Word#` better than `Word` |
2023-01-24 16:57:11 +0100 | chiselfuse | (~chiselfus@user/chiselfuse) (Ping timeout: 255 seconds) |
2023-01-24 16:57:51 +0100 | <merijn> | I don't think you can generalise like that |
2023-01-24 16:58:03 +0100 | chiselfuse | (~chiselfus@user/chiselfuse) |
2023-01-24 16:58:20 +0100 | <merijn> | Outside of your hot loop the difference shouldn't be giant |
2023-01-24 16:58:39 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
2023-01-24 17:01:26 +0100 | <raehik> | ok. I don't have a good feel for how GHC will and won't optimize yet and have been lured in by the recent primitives improvements |
2023-01-24 17:01:49 +0100 | <raehik> | I think eventually I will try both and have a look at the core |
2023-01-24 17:01:54 +0100 | <geekosaur> | your best bet is to examine Core, yeh |
2023-01-24 17:02:15 +0100 | <merijn> | It's not even necessarily about "will GHC always optimise unboxing things" it's also just that unboxed values are just more inconvenient to work with, so you don't wanna unbox values where it doesn't matter |
2023-01-24 17:02:43 +0100 | <merijn> | And outside of your hot loop it should (generally) not matter *that* much |
2023-01-24 17:02:56 +0100 | halting | (~Oliver@177.129.53.34) |
2023-01-24 17:03:06 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 252 seconds) |
2023-01-24 17:04:27 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
2023-01-24 17:04:31 +0100 | <raehik> | merijn: I appreciate it generally should not matter. I don't touch the stuff in regular boring code |
2023-01-24 17:04:52 +0100 | <raehik> | I wouldn't mind some inconvenience for additional performance or less mem usage |
2023-01-24 17:05:11 +0100 | <raehik> | (in this one place) |
2023-01-24 17:06:38 +0100 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds) |
2023-01-24 17:07:05 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
2023-01-24 17:07:26 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Remote host closed the connection) |
2023-01-24 17:08:21 +0100 | q0r | (~user@162.255.84.96) (Ping timeout: 255 seconds) |
2023-01-24 17:08:30 +0100 | mixphix | (~cigsender@74.124.58.162) |
2023-01-24 17:08:59 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2023-01-24 17:09:34 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:eb4b:602d:4e:447d) (Ping timeout: 252 seconds) |
2023-01-24 17:10:36 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2023-01-24 17:17:14 +0100 | Niclelscore | (~Niclelsco@94.25.229.249) (Ping timeout: 260 seconds) |
2023-01-24 17:22:39 +0100 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
2023-01-24 17:24:12 +0100 | k33 | kee |
2023-01-24 17:24:20 +0100 | opticblast | (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 246 seconds) |
2023-01-24 17:24:42 +0100 | halting | (~Oliver@177.129.53.34) (Quit: Leaving) |
2023-01-24 17:26:47 +0100 | shriekingnoise_ | (~shrieking@186.137.175.87) |
2023-01-24 17:28:26 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2023-01-24 17:29:19 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2023-01-24 17:30:04 +0100 | shriekingnoise | (~shrieking@186.137.175.87) (Ping timeout: 260 seconds) |
2023-01-24 17:31:42 +0100 | troydm | (~troydm@user/troydm) (Ping timeout: 252 seconds) |
2023-01-24 17:35:52 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2023-01-24 17:36:44 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
2023-01-24 17:41:44 +0100 | boxscape_ | (~boxscape_@213.52.37.155) (Ping timeout: 260 seconds) |
2023-01-24 17:48:37 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 252 seconds) |
2023-01-24 17:48:43 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
2023-01-24 17:50:19 +0100 | mizlan | (~mizlan@169.150.203.59) (Ping timeout: 248 seconds) |
2023-01-24 17:53:34 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
2023-01-24 17:57:11 +0100 | shriekingnoise | (~shrieking@186.137.175.87) |
2023-01-24 17:59:39 +0100 | shriekingnoise_ | (~shrieking@186.137.175.87) (Ping timeout: 252 seconds) |
2023-01-24 18:00:44 +0100 | <carbolymer> | how can I build an infinite list with `State`? https://bpa.st/7PVMG this doesn't seem to be cutting it |
2023-01-24 18:00:53 +0100 | q0r | (~user@162.255.84.96) |
2023-01-24 18:02:18 +0100 | <int-e> | You don't... intuitively, there's no point in that evaluation where it's clear that the state can't be reset completely. You can use a Writer instead. |
2023-01-24 18:03:34 +0100 | <int-e> | > execWriter $ forever (tell [True]) |
2023-01-24 18:03:35 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 246 seconds) |
2023-01-24 18:03:36 +0100 | <lambdabot> | [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,... |
2023-01-24 18:03:37 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) |
2023-01-24 18:04:00 +0100 | <carbolymer> | hmm... so what's the purpose of lazy State? |
2023-01-24 18:04:36 +0100 | <c_wraith> | in most cases, creating a space leak |
2023-01-24 18:05:04 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
2023-01-24 18:05:33 +0100 | <carbolymer> | so if I need state to compute my list, I should layer writer on top of state... |
2023-01-24 18:05:40 +0100 | <int-e> | knot-tying through the state; you can also build a result lazily: inflist = do ...; xs <- inflist; return (True : inflist) will work, and the ... part is allowed to modify the state. |
2023-01-24 18:05:57 +0100 | barzo | (~hd@31.223.41.44) (Quit: Leaving) |
2023-01-24 18:06:04 +0100 | <int-e> | But the final state can't be produced lazily. |
2023-01-24 18:06:05 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-24 18:06:10 +0100 | russruss | (~russruss@my.russellmcc.com) (Quit: The Lounge - https://thelounge.chat) |
2023-01-24 18:06:20 +0100 | barzo | (~hd@31.223.41.44) |
2023-01-24 18:06:23 +0100 | <carbolymer> | I see |
2023-01-24 18:06:26 +0100 | <carbolymer> | i'll try that |
2023-01-24 18:06:31 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
2023-01-24 18:06:33 +0100 | <carbolymer> | I mean, writer |
2023-01-24 18:06:35 +0100 | <carbolymer> | thanks |
2023-01-24 18:07:45 +0100 | russruss | (~russruss@my.russellmcc.com) |
2023-01-24 18:08:05 +0100 | mizlan | (~mizlan@89.46.114.150) |
2023-01-24 18:08:15 +0100 | <c_wraith> | > take 10 $ evalState (let s = do { x <- get ; put (x + 1) ; xs <- s ; pure (x:xs) } in s) 0 |
2023-01-24 18:08:17 +0100 | <lambdabot> | [0,1,2,3,4,5,6,7,8,9] |
2023-01-24 18:09:05 +0100 | <c_wraith> | that requires lazy state |
2023-01-24 18:16:18 +0100 | mei | (~mei@user/mei) (Quit: mei) |
2023-01-24 18:17:27 +0100 | michalz | (~michalz@185.246.207.221) (Remote host closed the connection) |
2023-01-24 18:18:46 +0100 | stiell_ | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2023-01-24 18:19:11 +0100 | stiell_ | (~stiell@gateway/tor-sasl/stiell) |
2023-01-24 18:22:34 +0100 | mechap1 | (~mechap@user/mechap) (Ping timeout: 260 seconds) |
2023-01-24 18:22:54 +0100 | cheater_ | (~Username@user/cheater) |
2023-01-24 18:23:08 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
2023-01-24 18:23:42 +0100 | mei | (~mei@user/mei) |
2023-01-24 18:24:25 +0100 | mechap1 | (~mechap@user/mechap) |
2023-01-24 18:26:03 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2023-01-24 18:26:35 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 264 seconds) |
2023-01-24 18:26:41 +0100 | cheater_ | cheater |
2023-01-24 18:30:03 +0100 | <raehik> | I have `data A (a :: Bool) = A`, and some `instance C (A 'True)`, `instance C (A 'False)`. Why can't GHC figure out "ok, `instance C (A a)`"? |
2023-01-24 18:31:03 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-01-24 18:31:31 +0100 | <raehik> | I use a pattern like this to bring together a bunch of types under one newtype constructor, and I often have to add "obvious" contexts to deriving clauses |
2023-01-24 18:31:48 +0100 | <raehik> | I get the gist as to why, but I always wonder if there's another way |
2023-01-24 18:32:32 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2023-01-24 18:33:18 +0100 | <geekosaur> | not with ghc, unless there's a plugin that fills in the holes. I still think ghc is kinda pretend type level and if you really want this stuff you should be using a stronger language |
2023-01-24 18:35:11 +0100 | <raehik> | geekosaur: would you have an example? (you're probably gonna tell me to look at Agda or Idris ;_;) |
2023-01-24 18:35:21 +0100 | <geekosaur> | pretty much, yes 🙂 |
2023-01-24 18:35:52 +0100 | <raehik> | heheh. maybe next time I will play with Idris, in the knowledge that it's more Haskell-y |
2023-01-24 18:35:59 +0100 | <raehik> | thx |
2023-01-24 18:36:12 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
2023-01-24 18:37:13 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-01-24 18:37:34 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
2023-01-24 18:40:56 +0100 | ubert1 | (~Thunderbi@2a02:8109:abc0:6434:8ea:a44d:5c6d:60e6) (Remote host closed the connection) |
2023-01-24 18:41:46 +0100 | econo | (uid147250@user/econo) |
2023-01-24 18:45:28 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-01-24 18:47:21 +0100 | Major_Biscuit | (~MajorBisc@2001:1c00:2402:2d00:9eeb:34cf:63b3:9e5b) (Ping timeout: 255 seconds) |
2023-01-24 18:49:56 +0100 | sajith | (~sajith@user/sajith) (Quit: Gone) |
2023-01-24 18:49:56 +0100 | nonzen | (~nonzen@user/nonzen) (Quit: Gone) |
2023-01-24 18:50:13 +0100 | nonzen | (~nonzen@user/nonzen) |
2023-01-24 18:50:45 +0100 | sajith | (~sajith@user/sajith) |
2023-01-24 18:51:32 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
2023-01-24 18:52:08 +0100 | Inst__ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
2023-01-24 18:54:33 +0100 | dunj3 | (~dunj3@kingdread.de) (Quit: ZNC 1.7.2+deb3 - https://znc.in) |
2023-01-24 18:54:43 +0100 | dunj3 | (~dunj3@kingdread.de) |
2023-01-24 18:55:10 +0100 | Inst_ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Ping timeout: 252 seconds) |
2023-01-24 18:57:20 +0100 | dunj3 | (~dunj3@kingdread.de) (Client Quit) |
2023-01-24 18:57:57 +0100 | CiaoSen | (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2023-01-24 18:59:23 +0100 | razetime | (~Thunderbi@117.193.5.253) (Quit: See You Space Cowboy) |
2023-01-24 19:01:39 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds) |
2023-01-24 19:04:00 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-01-24 19:07:07 +0100 | segfaultfizzbuzz | (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 248 seconds) |
2023-01-24 19:09:03 +0100 | segfaultfizzbuzz | (~segfaultf@2607:fb91:1104:3754:64cc:21ba:e1db:e740) |
2023-01-24 19:12:20 +0100 | slack1256 | (~slack1256@181.42.52.9) |
2023-01-24 19:13:04 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-01-24 19:17:49 +0100 | Guest75 | (~Guest75@178.141.138.233) (Quit: Client closed) |
2023-01-24 19:19:23 +0100 | rustisafungus | (~segfaultf@108.211.201.53) |
2023-01-24 19:20:12 +0100 | segfaultfizzbuzz | (~segfaultf@2607:fb91:1104:3754:64cc:21ba:e1db:e740) (Ping timeout: 255 seconds) |
2023-01-24 19:21:56 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2023-01-24 19:23:31 +0100 | shachaf_ | shachaf |
2023-01-24 19:23:56 +0100 | shachaf | (~shachaf@li227-219.members.linode.com) (Changing host) |
2023-01-24 19:23:56 +0100 | shachaf | (~shachaf@user/shachaf) |
2023-01-24 19:25:29 +0100 | avicenzi | (~avicenzi@2a00:ca8:a1f:b004::c32) (Ping timeout: 246 seconds) |
2023-01-24 19:28:10 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 252 seconds) |
2023-01-24 19:32:03 +0100 | mizlan | (~mizlan@89.46.114.150) (Ping timeout: 252 seconds) |
2023-01-24 19:36:28 +0100 | codaraxis | (~codaraxis@user/codaraxis) (Quit: Leaving) |
2023-01-24 19:38:28 +0100 | kurbus | (~kurbus@user/kurbus) (Quit: Client closed) |
2023-01-24 19:38:30 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
2023-01-24 19:42:58 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 252 seconds) |
2023-01-24 19:44:50 +0100 | Maxdaman1us | Maxdamantus |
2023-01-24 19:47:56 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Remote host closed the connection) |
2023-01-24 19:48:03 +0100 | kurbus | (~kurbus@user/kurbus) |
2023-01-24 19:53:44 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
2023-01-24 19:57:04 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Remote host closed the connection) |
2023-01-24 19:57:29 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2023-01-24 19:58:59 +0100 | mizlan | (~mizlan@169.150.203.52) |
2023-01-24 19:59:59 +0100 | barzo | (~hd@31.223.41.44) (Ping timeout: 260 seconds) |
2023-01-24 20:03:50 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
2023-01-24 20:03:56 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
2023-01-24 20:04:45 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2023-01-24 20:06:36 +0100 | Lycurgus | (~juan@user/Lycurgus) |
2023-01-24 20:12:57 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2023-01-24 20:15:32 +0100 | mizlan | (~mizlan@169.150.203.52) (Ping timeout: 246 seconds) |
2023-01-24 20:17:30 +0100 | mizlan | (~mizlan@169.150.203.45) |
2023-01-24 20:20:24 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
2023-01-24 20:21:04 +0100 | mizlan | (~mizlan@169.150.203.45) (Remote host closed the connection) |
2023-01-24 20:27:51 +0100 | hugo | (znc@verdigris.lysator.liu.se) (Ping timeout: 260 seconds) |
2023-01-24 20:30:11 +0100 | AlexNoo | (~AlexNoo@178.34.160.228) (Read error: Connection reset by peer) |
2023-01-24 20:30:34 +0100 | AlexNoo | (~AlexNoo@178.34.160.228) |
2023-01-24 20:32:57 +0100 | nehsou^ | (~nehsou@c-24-30-76-89.hsd1.ga.comcast.net) |
2023-01-24 20:33:32 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-01-24 20:34:02 +0100 | rustisafungus | (~segfaultf@108.211.201.53) (Ping timeout: 246 seconds) |
2023-01-24 20:35:28 +0100 | ft | (~ft@p4fc2a257.dip0.t-ipconnect.de) |
2023-01-24 20:35:34 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-24 20:35:42 +0100 | hugo | (znc@verdigris.lysator.liu.se) |
2023-01-24 20:40:44 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 255 seconds) |
2023-01-24 20:41:09 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
2023-01-24 20:42:28 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-01-24 20:43:38 +0100 | mizlan | (~mizlan@131.179.77.187) |
2023-01-24 20:48:30 +0100 | Lycurgus | (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
2023-01-24 20:48:37 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-01-24 20:49:03 +0100 | troydm | (~troydm@user/troydm) |
2023-01-24 20:55:45 +0100 | mizlan | (~mizlan@131.179.77.187) (Ping timeout: 256 seconds) |
2023-01-24 21:01:47 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
2023-01-24 21:02:15 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 252 seconds) |
2023-01-24 21:06:46 +0100 | slack1256 | (~slack1256@181.42.52.9) (Remote host closed the connection) |
2023-01-24 21:07:13 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-01-24 21:07:38 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
2023-01-24 21:08:22 +0100 | mikoto-chan | (~mikoto-ch@2001:999:784:4cb8:d8e9:51ca:a70:b0e5) |
2023-01-24 21:08:53 +0100 | asivitz | (uid178348@id-178348.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
2023-01-24 21:08:56 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
2023-01-24 21:09:06 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 255 seconds) |
2023-01-24 21:11:17 +0100 | angelore | (~u0_a291@5.46.161.208) |
2023-01-24 21:13:41 +0100 | <monochrom> | > take 10 (execState (let m n = do { m (n+1); s <- get; put (n : s)} in m 0) undefined) |
2023-01-24 21:13:43 +0100 | <lambdabot> | [0,1,2,3,4,5,6,7,8,9] |
2023-01-24 21:14:01 +0100 | <monochrom> | That is the "final" state being a bit lazy, too. :D |
2023-01-24 21:16:59 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:13ef:295c:1ca0:c7a2) |
2023-01-24 21:20:05 +0100 | pavonia | (~user@user/siracusa) |
2023-01-24 21:21:53 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Remote host closed the connection) |
2023-01-24 21:22:21 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
2023-01-24 21:25:18 +0100 | kuttenbrunzer | (~kuttenbru@2a02:8108:8b80:1d48:21ed:337e:734b:fe6a) |
2023-01-24 21:25:23 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Remote host closed the connection) |
2023-01-24 21:26:41 +0100 | angelore | (~u0_a291@5.46.161.208) (WeeChat 3.8) |
2023-01-24 21:26:46 +0100 | angelore | (~u0_a291@5.46.161.208) |
2023-01-24 21:28:29 +0100 | smol-hors | (sid524992@smol/hors) |
2023-01-24 21:36:56 +0100 | <int-e> | monochrom: ah good point |
2023-01-24 21:39:02 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
2023-01-24 21:39:06 +0100 | kurbus | (~kurbus@user/kurbus) (Quit: Client closed) |
2023-01-24 21:40:03 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-01-24 21:40:23 +0100 | <int-e> | > execState $ do undefined; put 42 |
2023-01-24 21:40:24 +0100 | <lambdabot> | <Integer -> Integer> |
2023-01-24 21:40:26 +0100 | waleee | (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) |
2023-01-24 21:40:35 +0100 | <int-e> | > execState (do undefined; put 42) undefined |
2023-01-24 21:40:36 +0100 | <lambdabot> | 42 |
2023-01-24 21:40:54 +0100 | manwithl- | (~manwithlu@194.177.28.192) (Ping timeout: 260 seconds) |
2023-01-24 21:41:16 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
2023-01-24 21:45:29 +0100 | mikoto-chan | (~mikoto-ch@2001:999:784:4cb8:d8e9:51ca:a70:b0e5) (Ping timeout: 246 seconds) |
2023-01-24 21:48:11 +0100 | hololeap_ | hololeap |
2023-01-24 21:50:06 +0100 | angelore | (~u0_a291@5.46.161.208) (Quit: WeeChat 3.8) |
2023-01-24 21:56:22 +0100 | Guest75 | (~Guest75@178.141.160.158) |
2023-01-24 21:56:24 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
2023-01-24 22:00:53 +0100 | zero | (~z@user/zero) |
2023-01-24 22:03:45 +0100 | yin | (~z@user/zero) (Ping timeout: 256 seconds) |
2023-01-24 22:08:40 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:13ef:295c:1ca0:c7a2) (Quit: WeeChat 2.8) |
2023-01-24 22:21:52 +0100 | kuttenbrunzer | (~kuttenbru@2a02:8108:8b80:1d48:21ed:337e:734b:fe6a) (Quit: Leaving) |
2023-01-24 22:21:55 +0100 | angelore | (~u0_a291@5.46.161.208) |
2023-01-24 22:23:09 +0100 | angelore | (~u0_a291@5.46.161.208) (Client Quit) |
2023-01-24 22:23:28 +0100 | angelore | (~u0_a291@5.46.161.208) |
2023-01-24 22:24:57 +0100 | segfaultfizzbuzz | (~segfaultf@108.211.201.53) |
2023-01-24 22:25:52 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
2023-01-24 22:25:54 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
2023-01-24 22:29:04 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-01-24 22:30:10 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Ping timeout: 252 seconds) |
2023-01-24 22:30:17 +0100 | angelore | (~u0_a291@5.46.161.208) (Quit: WeeChat 3.8) |
2023-01-24 22:30:29 +0100 | angelore | (~u0_a291@5.46.161.208) |
2023-01-24 22:30:34 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
2023-01-24 22:31:50 +0100 | zapa1 | (~zapa1@95.64.72.60) |
2023-01-24 22:32:58 +0100 | angelore | (~u0_a291@5.46.161.208) (Client Quit) |
2023-01-24 22:33:11 +0100 | angelore | (~u0_a291@5.46.161.208) |
2023-01-24 22:33:33 +0100 | <zapa1> | hi ,Is there anyone who can be my mentor? I am a beginner to programming and I am just familiar with some basics of python |
2023-01-24 22:37:30 +0100 | angelore | (~u0_a291@5.46.161.208) (Client Quit) |
2023-01-24 22:38:25 +0100 | <mauke> | that sounds like something you'd hire someone for |
2023-01-24 22:40:15 +0100 | <zapa1> | i am sorry ,English is not my first language ,thats why I may write something with a meaning I don't mean |
2023-01-24 22:41:10 +0100 | <zapa1> | would you please tell me how finding a mentor works in the programming world? |
2023-01-24 22:42:09 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2023-01-24 22:42:19 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
2023-01-24 22:43:27 +0100 | Lord_of_Life_ | Lord_of_Life |
2023-01-24 22:45:55 +0100 | elevenkb | (~elevenkb@105.224.34.126) |
2023-01-24 22:49:30 +0100 | <darkling> | Generally, I don't think you do. However, there's a lot of good books and web resources that will help with specific languages, and most languages have some kind of chat or forum system that you can ask specific questions in if you get stuck. |
2023-01-24 22:51:49 +0100 | CiaoSen | (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2023-01-24 22:52:18 +0100 | mikoto-chan | (~mikoto-ch@2001:999:784:4cb8:d8e9:51ca:a70:b0e5) |
2023-01-24 22:53:30 +0100 | <zapa1> | Is learning Haskell as the first language with relatively limited learning resources worth it? or I do learn python as most people recommend? |
2023-01-24 22:54:13 +0100 | <zapa1> | I am very patient ,Its important for me to learn the fundamentals in the best possible way |
2023-01-24 22:54:19 +0100 | <monochrom> | I disagree with "limited resources". |
2023-01-24 22:55:05 +0100 | <monochrom> | Lack of spoonfeeding, sure. But spoonfeeding is the antithesis to learning anyway. |
2023-01-24 22:55:44 +0100 | <monochrom> | As a corollary, with the abundance of spoonfeeding in python and javascript "resources", it's doubtful that most people learned anything. |
2023-01-24 22:55:49 +0100 | <darkling> | Yeah, there's a lot of stuff for Haskell out there. |
2023-01-24 22:56:20 +0100 | <monochrom> | Spoonfeeding and cookbooks. |
2023-01-24 22:56:32 +0100 | darkling | is hungry now |
2023-01-24 22:57:54 +0100 | <zapa1> | would you please recommend some books,please consider my lack of knowldge of basics and the fact i am self studying? |
2023-01-24 22:58:07 +0100 | <monochrom> | I'm also doubtful that python is good for fundamentals. It depends on who teaches it, or in other words what is emphasized and what is omitted. |
2023-01-24 22:58:19 +0100 | <Rembane> | And what fundamentals. |
2023-01-24 22:58:25 +0100 | <monochrom> | Because python contains some very bad ideas. |
2023-01-24 22:59:21 +0100 | mizlan | (~mizlan@131.179.76.231) |
2023-01-24 22:59:26 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
2023-01-24 22:59:46 +0100 | <monochrom> | My http://www.vex.net/~trebla/haskell/learn-sources.html lists some stuff. It is not comprehensive, but it is what I know. |
2023-01-24 23:01:20 +0100 | <oats> | monochrom, it's been too long since I did some haskell, my brain is hurting trying to expand that expression |
2023-01-24 23:03:18 +0100 | <monochrom> | Oh, that one requires pretty deep understand of lazy evaluation and what State.Lazy's >>= really does. In other words many hours of studying and experience before you can predict what it does, even to think it up in the first place. |
2023-01-24 23:04:48 +0100 | <jackdk> | zapa1: I like monochrom's list too. While he hasn't read Chris Allen's book, I did, and it was probably like the "third book" in the sense that he writes about at the bottom. I found it thorough and enlightening but it was the first one for which I worked through all the exercises and really thought about things. |
2023-01-24 23:05:25 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
2023-01-24 23:05:58 +0100 | <jackdk> | zapa1: I have also seen Haskell taught to first year students instead of the traditional whatever-imperative-language course and the pass rates were similar. But you learn better and more fundamental ideas with Haskell IMHO. |
2023-01-24 23:06:53 +0100 | elevenkb | (~elevenkb@105.224.34.126) (Ping timeout: 260 seconds) |
2023-01-24 23:07:06 +0100 | <oats> | unless you wanna learn about how computers work lol |
2023-01-24 23:07:23 +0100 | <oats> | though you could argue there's no "modern" languages that are well-suited for that |
2023-01-24 23:08:08 +0100 | <darkling> | Yeah, if you want to do that, start with assembly language. (*Don't* start with assembly language :) ). |
2023-01-24 23:08:40 +0100 | <mauke> | go full microcode |
2023-01-24 23:08:44 +0100 | <monochrom> | Yeah arguably it's a lost cause to use any non-assembly language to learn how current hardware works. |
2023-01-24 23:09:19 +0100 | <monochrom> | However, I also argue that "how computer works" ≠ "how current hardware works". |
2023-01-24 23:10:24 +0100 | <monochrom> | Because the Church-Turing thesis etc has taught us that all kinds of models, high or low level, all equally qualify as "how computers work". |
2023-01-24 23:11:13 +0100 | swamp_ | (~zmt00@user/zmt00) |
2023-01-24 23:11:23 +0100 | <monochrom> | So Haskell shows as much how computers work as C does. Sure, very drastically different models. But neither can claim superior authenticity. |
2023-01-24 23:12:05 +0100 | <monochrom> | Given how even C doesn't do justice to real hardware today. |
2023-01-24 23:12:13 +0100 | <dsal> | Also, what even is a processor? Do any machines natively support intel instruction sets? |
2023-01-24 23:12:31 +0100 | takuan_dozo | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2023-01-24 23:12:42 +0100 | <darkling> | monochrom: Just learn to code in Rule 110... :) |
2023-01-24 23:14:35 +0100 | merijn | (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 264 seconds) |
2023-01-24 23:14:39 +0100 | zmt01 | (~zmt00@user/zmt00) (Ping timeout: 255 seconds) |
2023-01-24 23:15:07 +0100 | <ephemient> | not even assembly language matches how modern hardware works very well |
2023-01-24 23:16:12 +0100 | <zapa1> | I am even ready to learn assembly language if it is necessary to be a good programmer |
2023-01-24 23:16:28 +0100 | <monochrom> | Learn the scientific method. |
2023-01-24 23:16:43 +0100 | <jackdk> | I would say Haskell gives you better training around problem decomposition and such , whereas something like C or Python adds a lot of incidental complexity. Haskell lets you express truths like `any f = or . map f` while to predict how a Python program works in corner cases, one must imagine how a busy C programmer first wrote the interrpeter |
2023-01-24 23:17:29 +0100 | <jackdk> | And then if you want to understand things at a lower level, jump down to something lower-level, learn how that works, and repeat until you are satisfied |
2023-01-24 23:17:31 +0100 | <dsal> | It's actually useful in cases that don't necessarily apply here. e.g., I was able to get some really nice stuff happening on an ATTINY85 chip with assembly. Ended up being just a tiny bit more code, but significantly faster and less complicated than the obvious C code. |
2023-01-24 23:18:31 +0100 | <dsal> | I wouldn't assume anyone actually knows much about how a modern processor works. That's the kind of thing where even learning might actually be harmful because stuff changes and people's knowledge of those things don't. People tend to keep doing things that were necessary 30 years ago when they learned them. |
2023-01-24 23:18:41 +0100 | ddellacosta | (~ddellacos@static-198-44-136-184.cust.tzulo.com) (Ping timeout: 255 seconds) |
2023-01-24 23:19:26 +0100 | <zapa1> | if you could start learning functional programming again , how would you start? |
2023-01-24 23:19:35 +0100 | <monochrom> | For hardware, please join computer engineering instead :) |
2023-01-24 23:19:52 +0100 | <[exa]> | zapa1: with a proof assistant :D |
2023-01-24 23:20:28 +0100 | <dsal> | I'm reasonably satisfied with where I got and still have plenty to learn, so I don't think I'd do things much differently. |
2023-01-24 23:20:50 +0100 | <zapa1> | what was your roadmap |
2023-01-24 23:20:56 +0100 | <monochrom> | I have no regret in how I started. Best way to start ever. Algebraic thinking; induction proof thinking for recursion. |
2023-01-24 23:21:13 +0100 | <dsal> | Read books, read code, write code, solve problems |
2023-01-24 23:21:19 +0100 | <dsal> | :t forever |
2023-01-24 23:21:21 +0100 | <lambdabot> | Applicative f => f a -> f b |
2023-01-24 23:21:43 +0100 | <monochrom> | http://www.vex.net/~trebla/haskell/prerequisite.xhtml and http://www.cs.utoronto.ca/~trebla/CSCC24-2022-Summer/01-haskell-basic.html#synev |
2023-01-24 23:22:59 +0100 | <mauke> | someone I knew in a perl channel asked for help with their programming homework, and it happened to be in ocaml |
2023-01-24 23:23:10 +0100 | <monochrom> | Haha |
2023-01-24 23:23:16 +0100 | <mauke> | and that's how I got into FP |
2023-01-24 23:24:11 +0100 | <darkling> | I got into FP because I realised that I'd been writing my Python in ever more functional style and wanted something that supported some of the things I was doing much better. |
2023-01-24 23:25:12 +0100 | <darkling> | (I'd tried lisp a few times before, but I'd never found a tutorial that I got on with, and it never stuck) |
2023-01-24 23:25:42 +0100 | <zapa1> | did you start with haskell? |
2023-01-24 23:25:46 +0100 | <[exa]> | darkling: teach-yourself-scheme-in-fixnum-days is pretty good btw |
2023-01-24 23:26:26 +0100 | <mauke> | I think I read Practical Common Lisp, realized that a lot of it was basically Perl, just with worse syntax (but better macro support), and then pretty much ignored it |
2023-01-24 23:26:45 +0100 | <geekosaur> | I got into it while I was staff at a university computer engineering department, and the folks I talked to in the computer science department had a bot that accepted SML/NJ snippets |
2023-01-24 23:27:17 +0100 | <darkling> | My programming life hsa gone: BASIC, ARM assembler, C, C++, PHP, Java, Perl, Python, Erlang, JavaScript, Haskell. (With significant overlap in places) |
2023-01-24 23:27:17 +0100 | <c_wraith> | ... as a gatekeeper for talking to them? |
2023-01-24 23:27:19 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837) |
2023-01-24 23:27:19 +0100 | <geekosaur> | don't recall how I ended up learning Haskell instead; I think it looked more interesting |
2023-01-24 23:28:24 +0100 | <geekosaur> | c_wraith, incidentally. I talked with the staff over there on an internal IM channel, and sometimes they did e.g. disk space queries to a bot on the same IM channel |
2023-01-24 23:29:12 +0100 | <geekosaur> | I didn't bother with such a bot for our stuff because (a) smaller computing plant (b) I would have been the only one to use it |
2023-01-24 23:30:13 +0100 | <mauke> | my first contact with Haskell was me trying to build pugs (the perl6 interpreter), which was written in Haskell |
2023-01-24 23:30:39 +0100 | <mauke> | it took forever, then the linker exhausted all available RAM and swap and died |
2023-01-24 23:30:47 +0100 | <geekosaur> | heh |
2023-01-24 23:31:10 +0100 | <geekosaur> | I had no trouble building pugs, it was modifying it that defeated me |
2023-01-24 23:31:46 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837) (Ping timeout: 252 seconds) |
2023-01-24 23:32:13 +0100 | <mauke> | from what I recall, my first attempt at learning Haskell failed because I couldn't wrap my head around laziness and I/O |
2023-01-24 23:32:21 +0100 | <zapa1> | It's a bit stressful to ask people with these degree of experience ,is Haskell easy to start with |
2023-01-24 23:32:36 +0100 | <monochrom> | Yes. |
2023-01-24 23:32:39 +0100 | <geekosaur> | (my background: BASIC, C, various quasi-LISPs including elisp and xlispstat, Perl, a little C++ and Prolog, some exposure to a bunch of other languages with no practical experience) |
2023-01-24 23:32:40 +0100 | <mauke> | the basic type system and syntax seemed pretty familiar, coming from OCaml |
2023-01-24 23:32:55 +0100 | <dsal> | Haskell is easier to start with if you don’t have to shed a lot of bad habits and assumptions. |
2023-01-24 23:33:34 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-01-24 23:33:35 +0100 | <geekosaur> | yeh, the biggest problem with starting with Haskell is having to unlearn habits from other languages. If you haven't worked with other languages, that'll be much easier |
2023-01-24 23:33:54 +0100 | <dsal> | People with Experience often come in here asking how to translate very strange code to Haskell |
2023-01-24 23:34:03 +0100 | cyphase | (~cyphase@user/cyphase) (Ping timeout: 252 seconds) |
2023-01-24 23:35:32 +0100 | <zapa1> | however I trust your ideas more than people who talk about programming languages like a holy phenomenon which no body can't argue about them |
2023-01-24 23:35:57 +0100 | <[exa]> | oh that reminds me of that new version of C, what was the name... |
2023-01-24 23:35:58 +0100 | <dsal> | It also depends a bit on what you want to do. Learning Haskell is a great path to becoming a good programmer, but it’s not a short path to making a killer Apple Watch app |
2023-01-24 23:36:00 +0100 | [exa] | hides |
2023-01-24 23:36:57 +0100 | jmorris | (uid537181@id-537181.uxbridge.irccloud.com) |
2023-01-24 23:37:04 +0100 | <geekosaur> | another one? |
2023-01-24 23:37:33 +0100 | <monochrom> | Think outside the box. The shortest path to making a killer app is to be a venture capital investor and buy someone else's startup that has made a killer app. |
2023-01-24 23:38:25 +0100 | <mauke> | Haskell BCPL Curry |
2023-01-24 23:38:58 +0100 | cyphase | (~cyphase@user/cyphase) |
2023-01-24 23:43:32 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2023-01-24 23:44:45 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-01-24 23:48:06 +0100 | use-value1 | (~Thunderbi@2a00:23c6:8a03:2f01:1128:5091:e8f3:b17a) |
2023-01-24 23:49:43 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:1128:5091:e8f3:b17a) (Ping timeout: 256 seconds) |
2023-01-24 23:49:43 +0100 | use-value1 | use-value |
2023-01-24 23:50:27 +0100 | mcglk | (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) (Quit: (zzz)) |
2023-01-24 23:51:52 +0100 | mcglk | (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) |
2023-01-24 23:55:23 +0100 | mizlan | (~mizlan@131.179.76.231) (Ping timeout: 264 seconds) |
2023-01-24 23:57:01 +0100 | zapa1 | (~zapa1@95.64.72.60) (Quit: Client closed) |
2023-01-24 23:59:17 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |