Logs on 2023-01-24 (liberachat/#haskell)
| 00:00:36 | × | iteratee quits (~kyle@162.218.222.107) (Read error: Connection reset by peer) |
| 00:03:28 | × | Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
| 00:04:35 | → | iteratee joins (~kyle@162.218.222.107) |
| 00:07:34 | <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 |
| 00:09:59 | <geekosaur> | until you need to debug that record with the inconvenient function within it, so you want to write your own Show instance |
| 00:11:18 | <geekosaur> | (yes, there's the function instance somewhere in Data.Function, but that's a generalization of this) |
| 00:13:11 | <geekosaur> | also, even automated they'll still use some framework underneath like ShowS and ReadS |
| 00:16:57 | <EvanR> | records with a function in them should also work </heresy> |
| 00:17:30 | <EvanR> | ghc "you can't show a function" me "I don't care!" |
| 00:17:59 | <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 |
| 00:18:07 | <EvanR> | useful |
| 00:19:09 | <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 |
| 00:24:18 | × | Guest75 quits (~Guest75@178.141.138.233) (Ping timeout: 260 seconds) |
| 00:24:40 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 00:26:20 | × | acidjnk_new quits (~acidjnk@p200300d6e715c429c1bce9b910063906.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 00:28:40 | × | Lycurgus quits (~juan@user/Lycurgus) (Client Quit) |
| 00:31:59 | → | angelore joins (~angelore@5.46.161.208) |
| 00:37:47 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving) |
| 00:45:25 | <carbolymer> | @hoogle Int -> Natural |
| 00:45:26 | <lambdabot> | GHC.Natural intToNatural :: Int -> Natural |
| 00:45:26 | <lambdabot> | Basement.Numerical.Number toNatural :: IsNatural a => a -> Natural |
| 00:45:26 | <lambdabot> | Foundation toNatural :: IsNatural a => a -> Natural |
| 00:45:35 | <carbolymer> | where intToNatural comes from? |
| 00:45:45 | → | merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
| 00:46:28 | × | angelore quits (~angelore@5.46.161.208) (Ping timeout: 260 seconds) |
| 00:48:26 | <monochrom> | Interesting, GHC.Numeric doesn't actually have intToNatural. |
| 00:48:32 | → | jeetelongname joins (~jeet@217.79.169.181) |
| 00:48:39 | <monochrom> | Do you mind naturalFromInteger? |
| 00:48:42 | → | angelore joins (~angelore@5.46.161.208) |
| 00:49:11 | × | oldfashionedcow quits (~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.8) |
| 00:49:18 | <carbolymer> | yeah that should do the trick, thx |
| 00:49:56 | <carbolymer> | also idk why but numbers conversion is totally not obvious for me in Haskell |
| 00:51:08 | <monochrom> | Interesting, naturalFromInteger (-2) = 2 |
| 00:51:51 | <monochrom> | Generally speaking, fromIntegral and realToFrac cover most cases. Although, they don't do range checks. |
| 00:52:00 | <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. |
| 00:52:20 | <c_wraith> | monochrom: don't forget the floor, ceil, round family for non-integral to integral |
| 00:52:33 | <monochrom> | Ah right. |
| 00:52:57 | → | opticblast joins (~Thunderbi@secure-165.caltech.edu) |
| 00:53:21 | <geekosaur> | it went away with ghc-bignum |
| 00:53:28 | × | angelore quits (~angelore@5.46.161.208) (Ping timeout: 260 seconds) |
| 00:54:32 | <jeetelongname> | @pl twiceSum x + y = 2 * (x + y) |
| 00:54:32 | <lambdabot> | (line 1, column 17): |
| 00:54:33 | <lambdabot> | unexpected " " |
| 00:54:33 | <lambdabot> | expecting operator |
| 00:54:48 | <jeetelongname> | whoops |
| 00:54:53 | <jeetelongname> | @pl twiceSum x y = 2 * (x + y) |
| 00:54:54 | <lambdabot> | twiceSum = ((2 *) .) . (+) |
| 00:55:02 | <jeetelongname> | good to know |
| 00:57:04 | → | angelore joins (~angelore@5.46.161.208) |
| 00:58:03 | <c_wraith> | You can rewrite that one with the distributive property to use funnier combinators, which isn't generally possible |
| 00:58:12 | <c_wraith> | > let f = (+) `on` (2*) in f 4 5 |
| 00:58:14 | <lambdabot> | 18 |
| 00:59:39 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 00:59:39 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 00:59:39 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:59:42 | ← | angelore parts (~angelore@5.46.161.208) () |
| 00:59:42 | <monochrom> | Generally pl'ing curried functions is a pain. |
| 01:00:39 | <monochrom> | Morally you should be looking at \(x,y) -> 2*(x+y) which is straightforwardly (2 *) . (uncurry (+)), a simple pipeline indeed. |
| 01:01:40 | <c_wraith> | and then you just curry the composition! |
| 01:04:11 | → | mcglk joins (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) |
| 01:04:33 | carbolymer | saw curry trees in africa |
| 01:04:52 | × | Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:05:45 | <c_wraith> | the source of the magical curry powder! |
| 01:06:46 | × | mizlan quits (~mizlan@169.150.203.45) (Remote host closed the connection) |
| 01:06:49 | <jeetelongname> | Curry leaves are also a very underated flavour |
| 01:08:06 | <jeetelongname> | monochrom: I did not think to use a tuple. It is very neat |
| 01:08:38 | <c_wraith> | > let f = curry $ (2 *) . uncurry (+) in f 6 7 |
| 01:08:39 | <lambdabot> | 26 |
| 01:09:06 | <monochrom> | > let f = curry $ (2 *) . uncurry (+) in f x y |
| 01:09:07 | <lambdabot> | 2 * (x + y) |
| 01:09:10 | <monochrom> | :) |
| 01:09:23 | <monochrom> | "Aim higher" >:D |
| 01:11:02 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:11:15 | → | mizlan joins (~mizlan@169.150.203.45) |
| 01:12:55 | × | mcglk quits (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) (Quit: (zzz)) |
| 01:15:26 | × | jeetelongname quits (~jeet@217.79.169.181) (Ping timeout: 268 seconds) |
| 01:17:09 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:20:13 | × | merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
| 01:22:27 | <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. |
| 01:22:46 | <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. |
| 01:24:10 | <EvanR> | greedy parser, maximal munch |
| 01:36:51 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
| 01:38:57 | → | codaraxis__ joins (~codaraxis@user/codaraxis) |
| 01:39:48 | × | codaraxis__ quits (~codaraxis@user/codaraxis) (Remote host closed the connection) |
| 01:39:58 | × | mizlan quits (~mizlan@169.150.203.45) (Remote host closed the connection) |
| 01:40:12 | → | codaraxis__ joins (~codaraxis@user/codaraxis) |
| 01:40:44 | × | xff0x_ quits (~xff0x@2405:6580:b080:900:2967:46fd:7767:4b83) (Ping timeout: 255 seconds) |
| 01:41:12 | × | codaraxis__ quits (~codaraxis@user/codaraxis) (Max SendQ exceeded) |
| 01:41:14 | → | Guest75 joins (~Guest75@178.141.138.233) |
| 01:41:42 | → | codaraxis__ joins (~codaraxis@user/codaraxis) |
| 01:42:35 | × | codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 248 seconds) |
| 01:44:27 | → | mizlan joins (~mizlan@169.150.203.45) |
| 01:44:50 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 01:46:50 | × | mizlan quits (~mizlan@169.150.203.45) (Remote host closed the connection) |
| 01:47:31 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
| 01:51:59 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Ping timeout: 255 seconds) |
| 01:52:47 | → | masterbuilder joins (~master@user/masterbuilder) |
| 01:56:29 | → | mizlan joins (~mizlan@169.150.203.45) |
| 01:59:03 | → | mcglk joins (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) |
| 02:00:07 | × | mcglk quits (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) (Client Quit) |
| 02:05:30 | × | m1dnight quits (~christoph@78-22-0-121.access.telenet.be) (Ping timeout: 256 seconds) |
| 02:06:09 | → | m1dnight joins (~christoph@78-22-0-121.access.telenet.be) |
| 02:07:39 | × | ddellacosta quits (~ddellacos@143.244.47.89) (Ping timeout: 248 seconds) |
| 02:08:25 | → | mcglk joins (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) |
| 02:10:29 | × | mcglk quits (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) (Client Quit) |
| 02:18:38 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
| 02:19:48 | → | gmg joins (~user@user/gehmehgeh) |
| 02:23:48 | → | xff0x_ joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:26:16 | × | beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 265 seconds) |
| 02:28:42 | → | razetime joins (~Thunderbi@117.193.5.253) |
| 02:34:01 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 02:35:34 | × | mizlan quits (~mizlan@169.150.203.45) (Ping timeout: 252 seconds) |
| 02:35:46 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 02:39:35 | → | mizlan joins (~mizlan@169.150.203.65) |
| 02:42:08 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 02:43:23 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
| 02:51:50 | × | sgarcia quits (sgarcia@swarm.znchost.com) (Ping timeout: 255 seconds) |
| 02:52:12 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds) |
| 02:54:01 | → | sgarcia joins (sgarcia@swarm.znchost.com) |
| 02:58:39 | × | jero98772 quits (~jero98772@2800:484:1d80:d8ce:3490:26c5:1782:da8c) (Remote host closed the connection) |
| 03:14:19 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 03:16:28 | × | thegeekinside quits (~thegeekin@189.180.66.244) (Remote host closed the connection) |
| 03:20:16 | → | discuss9128 joins (~discuss91@bb119-74-93-26.singnet.com.sg) |
| 03:21:44 | × | discuss9128 quits (~discuss91@bb119-74-93-26.singnet.com.sg) (Client Quit) |
| 03:22:07 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6) |
| 03:23:42 | → | thegeekinside joins (~thegeekin@189.180.66.244) |
| 03:26:23 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 03:27:13 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 03:30:01 | × | mizlan quits (~mizlan@169.150.203.65) (Ping timeout: 252 seconds) |
| 03:32:46 | × | thegeekinside quits (~thegeekin@189.180.66.244) (Ping timeout: 252 seconds) |
| 03:35:05 | → | mcglk joins (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) |
| 03:38:39 | × | mei quits (~mei@user/mei) (Ping timeout: 260 seconds) |
| 03:40:39 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 03:40:53 | × | razetime quits (~Thunderbi@117.193.5.253) (Ping timeout: 255 seconds) |
| 03:42:27 | → | mei joins (~mei@user/mei) |
| 03:44:44 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 03:47:33 | → | discuss9128 joins (~discuss91@bb119-74-93-26.singnet.com.sg) |
| 03:48:38 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 03:48:41 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:48:41 | finn_elija | is now known as FinnElija |
| 03:48:55 | × | td_ quits (~td@83.135.9.19) (Ping timeout: 265 seconds) |
| 03:50:33 | → | td_ joins (~td@i53870917.versanet.de) |
| 03:56:29 | → | mizlan joins (~mizlan@89.46.114.51) |
| 03:58:26 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 04:02:54 | → | Sciencentistguy9 joins (~sciencent@hacksoc/ordinary-member) |
| 04:03:57 | → | mechap1 joins (~mechap@user/mechap) |
| 04:05:35 | × | Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 264 seconds) |
| 04:05:36 | Sciencentistguy9 | is now known as Sciencentistguy |
| 04:07:29 | × | mechap quits (~mechap@user/mechap) (Ping timeout: 268 seconds) |
| 04:11:16 | → | Guest|11 joins (~Guest|11@c-76-22-56-82.hsd1.wa.comcast.net) |
| 04:16:15 | → | merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
| 04:22:35 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6) |
| 04:23:07 | → | razetime joins (~Thunderbi@117.193.5.253) |
| 04:26:18 | × | razetime quits (~Thunderbi@117.193.5.253) (Client Quit) |
| 04:28:21 | → | eruditass joins (uid248673@id-248673.uxbridge.irccloud.com) |
| 04:32:57 | → | segfaultfizzbuzz joins (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
| 04:34:03 | <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? |
| 04:34:46 | <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 |
| 04:35:03 | × | mizlan quits (~mizlan@89.46.114.51) (Remote host closed the connection) |
| 04:35:56 | <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 |
| 04:36:01 | <segfaultfizzbuzz> | or is that false |
| 04:36:32 | <segfaultfizzbuzz> | i don't care about optimality, just a "good solution" |
| 04:39:32 | → | mizlan joins (~mizlan@89.46.114.51) |
| 04:39:33 | <jackdk> | https://hackage.haskell.org/package/ad probably, but I'm not an AD nerd |
| 04:40:02 | <segfaultfizzbuzz> | well yeah i mean as you can see you have to pick how you want it to do AD |
| 04:42:37 | <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? |
| 04:43:16 | <jackdk> | The contents page seems to map methods to use cases, even if you have to pick specific functions yourself |
| 04:44:11 | <segfaultfizzbuzz> | i don't think this is going to really be at a level of performance with consideration unless it has BLAS etc |
| 04:44:49 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds) |
| 04:45:28 | <jackdk> | I would be surprised if Ed released something that was unavoidably slow, but you should definitely benchmark |
| 04:46:08 | <segfaultfizzbuzz> | uh i doubt even super haskell programmers can go up against really well established linalg libraries,... but who knows |
| 04:48:58 | → | ub joins (~Thunderbi@p200300ecdf264e3f7f9ba4aff8511836.dip0.t-ipconnect.de) |
| 04:49:49 | × | discuss9128 quits (~discuss91@bb119-74-93-26.singnet.com.sg) (Quit: Client closed) |
| 04:50:21 | × | merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
| 04:50:24 | × | ubert quits (~Thunderbi@p548c9ce5.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 04:50:24 | ub | is now known as ubert |
| 04:50:41 | <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 |
| 04:51:25 | <segfaultfizzbuzz> | i can count the number of parameters by hand, so they aren't thinking about like comparatively serious linalg here |
| 04:52:25 | <davean> | ad has ABSOLUTELY been used in extremely high dimensional cases, thats an *example* |
| 04:52:58 | <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. |
| 04:53:27 | <segfaultfizzbuzz> | yes integration of ad with accelerate would be an example of something necessary here |
| 04:53:32 | <segfaultfizzbuzz> | thanks |
| 04:53:34 | <davean> | IIRC you want the jet stuff for high dimension case |
| 04:54:08 | <segfaultfizzbuzz> | davean: https://hackage.haskell.org/package/ad-4.3.2/docs/Numeric-AD-Jet.html - this? |
| 04:54:12 | <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" |
| 04:55:31 | × | Vajb quits (~Vajb@2001:999:78d:d7:457c:7773:573e:6903) (Read error: Connection reset by peer) |
| 04:56:01 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) |
| 04:56:32 | <segfaultfizzbuzz> | as was mentioned: https://github.com/ekmett/ad/issues/70 |
| 04:59:33 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 05:00:04 | × | Guest75 quits (~Guest75@178.141.138.233) (Quit: Client closed) |
| 05:00:13 | → | Vajb joins (~Vajb@2001:999:78d:d7:457c:7773:573e:6903) |
| 05:00:37 | <davean> | well if you want matrixes thats a bit different than wanting a lot of variables. |
| 05:01:28 | <segfaultfizzbuzz> | 🤯 |
| 05:03:02 | <davean> | matrixes are a set of structured variables with optimizable relations |
| 05:03:50 | <segfaultfizzbuzz> | ok |
| 05:07:57 | <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 |
| 05:09:03 | <davean> | You'd be unhappy, but if the variables have no relation, thats how you expect it |
| 05:11:06 | <segfaultfizzbuzz> | i think you are saying to use AD to do algebra and then translate the algebra to matrix operations...? |
| 05:12:26 | <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. |
| 05:13:16 | <segfaultfizzbuzz> | ok... |
| 05:14:10 | <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) |
| 05:16:24 | <segfaultfizzbuzz> | ah interesting thanks for the suggestion i will look at this library |
| 05:17:06 | <davean> | I don't know that library to be clear |
| 05:17:14 | <segfaultfizzbuzz> | gotta start somewhere |
| 05:18:21 | <segfaultfizzbuzz> | hmatrix is basically openblas btw |
| 05:20:21 | × | mizlan quits (~mizlan@89.46.114.51) (Remote host closed the connection) |
| 05:20:28 | <davean> | Yah which is why its too annoying to work with |
| 05:21:05 | <davean> | https://hackage.haskell.org/package/hmatrix-0.20.2/docs/Numeric-LinearAlgebra.html#t:Numeric <-- damning |
| 05:23:11 | <segfaultfizzbuzz> | yeahhhhhh |
| 05:24:50 | → | mizlan joins (~mizlan@89.46.114.51) |
| 05:25:39 | <davean> | I mean what more do you expect of blas? |
| 05:25:50 | × | mizlan quits (~mizlan@89.46.114.51) (Remote host closed the connection) |
| 05:26:04 | <segfaultfizzbuzz> | idk i've used plenty of matlab,... isn't that blas under the hood or,...? |
| 05:26:58 | <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 |
| 05:27:20 | → | int-index joins (~Vladislav@2a00:1370:8178:5994:b468:f8e7:cc8e:1c79) |
| 05:29:15 | → | int-index-r joins (~Vladislav@2a00:1370:8178:5994:10dc:d324:9b0e:2d30) |
| 05:32:41 | × | int-index quits (~Vladislav@2a00:1370:8178:5994:b468:f8e7:cc8e:1c79) (Ping timeout: 246 seconds) |
| 05:33:38 | → | barzo joins (~hd@31.223.41.44) |
| 05:35:19 | int-index-r | is now known as int-index |
| 05:43:03 | → | mizlan joins (~mizlan@89.46.114.169) |
| 05:48:00 | × | mizlan quits (~mizlan@89.46.114.169) (Ping timeout: 268 seconds) |
| 05:51:45 | → | caef^ joins (~caef@c-24-30-76-89.hsd1.ga.comcast.net) |
| 05:52:35 | × | int-index quits (~Vladislav@2a00:1370:8178:5994:10dc:d324:9b0e:2d30) (Ping timeout: 246 seconds) |
| 05:56:42 | × | rekahsoft quits (~rekahsoft@bras-base-orllon1122w-grc-07-174-95-68-39.dsl.bell.ca) (Ping timeout: 256 seconds) |
| 05:57:42 | × | segfaultfizzbuzz quits (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 255 seconds) |
| 06:18:44 | → | mizlan joins (~mizlan@169.150.203.62) |
| 06:23:09 | × | mizlan quits (~mizlan@169.150.203.62) (Ping timeout: 268 seconds) |
| 06:27:30 | × | ubert quits (~Thunderbi@p200300ecdf264e3f7f9ba4aff8511836.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 06:27:44 | → | trev joins (~trev@user/trev) |
| 06:27:48 | → | ubert joins (~Thunderbi@p200300ecdf264e3f7f9ba4aff8511836.dip0.t-ipconnect.de) |
| 06:28:59 | → | segfaultfizzbuzz joins (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
| 06:31:39 | → | ddellacosta joins (~ddellacos@143.244.47.100) |
| 06:33:32 | × | segfaultfizzbuzz quits (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 256 seconds) |
| 06:33:47 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:36:21 | × | gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 06:37:13 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 06:41:28 | → | mizlan joins (~mizlan@169.150.203.51) |
| 06:43:08 | → | phma_ joins (~phma@host-67-44-208-249.hnremote.net) |
| 06:46:03 | × | phma quits (~phma@2001:5b0:211c:c048:963e:eaf4:804a:2fe0) (Ping timeout: 248 seconds) |
| 06:46:45 | → | segfaultfizzbuzz joins (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
| 06:54:43 | × | potash quits (~foghorn@user/foghorn) (Quit: ZNC 1.8.2 - https://znc.in) |
| 07:07:40 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 07:14:11 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 07:14:20 | × | mizlan quits (~mizlan@169.150.203.51) (Ping timeout: 256 seconds) |
| 07:15:38 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
| 07:17:18 | × | phma_ quits (~phma@host-67-44-208-249.hnremote.net) (Read error: Connection reset by peer) |
| 07:17:32 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 07:17:51 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 07:18:11 | → | phma_ joins (phma@2001:5b0:210d:1408:a51f:2104:bbf6:4363) |
| 07:18:17 | → | mikoto-chan joins (~mikoto-ch@2001:999:400:22bc:5dfb:b243:3fed:bd17) |
| 07:19:42 | → | potash joins (~foghorn@user/foghorn) |
| 07:20:26 | phma_ | is now known as phma |
| 07:22:18 | × | shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 255 seconds) |
| 07:22:23 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 07:31:05 | → | mizlan joins (~mizlan@89.46.114.43) |
| 07:45:13 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds) |
| 07:46:53 | × | hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Remote host closed the connection) |
| 07:47:46 | × | Square quits (~a@user/square) (Ping timeout: 256 seconds) |
| 07:48:05 | → | hrberg joins (~quassel@171.79-160-161.customer.lyse.net) |
| 07:51:09 | × | potash quits (~foghorn@user/foghorn) (Read error: Connection reset by peer) |
| 07:51:50 | → | Square joins (~a@user/square) |
| 07:51:55 | → | phma_ joins (~phma@host-67-44-208-205.hnremote.net) |
| 07:52:07 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds) |
| 07:53:28 | × | xff0x_ quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds) |
| 07:53:52 | → | phma__ joins (~phma@2001:5b0:210d:1698:e52:a359:3461:7a25) |
| 07:54:25 | × | phma quits (phma@2001:5b0:210d:1408:a51f:2104:bbf6:4363) (Ping timeout: 252 seconds) |
| 07:55:08 | × | ubert quits (~Thunderbi@p200300ecdf264e3f7f9ba4aff8511836.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 07:55:26 | → | ubert joins (~Thunderbi@p548c9ce5.dip0.t-ipconnect.de) |
| 07:56:16 | × | phma_ quits (~phma@host-67-44-208-205.hnremote.net) (Ping timeout: 256 seconds) |
| 08:00:20 | → | oldfashionedcow joins (~Rahul_San@user/oldfashionedcow) |
| 08:01:48 | → | xff0x_ joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 08:05:56 | phma__ | is now known as phma |
| 08:09:24 | × | oldfashionedcow quits (~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.8) |
| 08:12:29 | × | opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 260 seconds) |
| 08:13:31 | → | mmhat joins (~mmh@p200300f1c7123c98ee086bfffe095315.dip0.t-ipconnect.de) |
| 08:13:36 | × | mmhat quits (~mmh@p200300f1c7123c98ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit) |
| 08:16:29 | × | mikoto-chan quits (~mikoto-ch@2001:999:400:22bc:5dfb:b243:3fed:bd17) (Ping timeout: 256 seconds) |
| 08:19:42 | × | manwithluck quits (~manwithlu@194.177.28.192) (Ping timeout: 268 seconds) |
| 08:20:20 | × | theproffesor quits (~theproffe@user/theproffesor) (Ping timeout: 246 seconds) |
| 08:20:35 | → | manwithluck joins (~manwithlu@194.177.28.155) |
| 08:20:35 | × | xff0x_ quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 264 seconds) |
| 08:21:09 | → | theproffesor joins (~theproffe@user/theproffesor) |
| 08:21:34 | → | MajorBiscuit joins (~MajorBisc@2001:1c00:2402:2d00:9eeb:34cf:63b3:9e5b) |
| 08:22:20 | → | xff0x_ joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 08:28:54 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 08:29:05 | → | chele joins (~chele@user/chele) |
| 08:29:29 | → | merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
| 08:30:12 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 08:30:47 | × | mizlan quits (~mizlan@89.46.114.43) (Ping timeout: 246 seconds) |
| 08:30:58 | → | Sgeo_ joins (~Sgeo@user/sgeo) |
| 08:31:00 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 08:31:55 | × | poljar quits (~poljar@93-139-120-188.adsl.net.t-com.hr) (Read error: Connection reset by peer) |
| 08:32:19 | → | poljar joins (~poljar@93-139-120-188.adsl.net.t-com.hr) |
| 08:32:48 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:33:18 | → | Inst_ joins (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
| 08:33:39 | <Inst_> | is there a way to turn a type of kind Nat into a type of kind String? |
| 08:33:43 | <Inst_> | kind coercion? |
| 08:37:21 | → | fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
| 08:42:09 | → | acidjnk_new joins (~acidjnk@p200300d6e715c483c1bce9b910063906.dip0.t-ipconnect.de) |
| 08:43:01 | → | manwithl- joins (~manwithlu@194.177.28.192) |
| 08:43:52 | × | manwithluck quits (~manwithlu@194.177.28.155) (Ping timeout: 256 seconds) |
| 08:48:17 | → | kuribas joins (~user@ptr-17d51emsiv9cd4oypbm.18120a2.ip6.access.telenet.be) |
| 08:48:45 | → | mizlan joins (~mizlan@169.150.203.51) |
| 08:48:47 | → | kuttenbrunzer joins (~kuttenbru@2a02:8108:8b80:1d48:cd53:505b:6825:9d7f) |
| 08:48:49 | <merijn> | Inst_: There is no type of kind String |
| 08:48:56 | <merijn> | Inst_: Are you maybe thinking of Symbol? |
| 08:48:59 | <Inst_> | Symbol |
| 08:49:15 | <Inst_> | I'm trying to handwrite a type family for this now |
| 08:49:16 | <dminuoso> | What would that "turning Nat into Symbol" even do? |
| 08:49:31 | <dminuoso> | Do you mean a type level Show? |
| 08:50:36 | <Inst_> | yeah |
| 08:50:54 | Inst_ | is now known as Isnt |
| 08:51:13 | Isnt | is now known as Inst |
| 08:52:42 | → | codaraxis___ joins (~codaraxis@user/codaraxis) |
| 08:54:28 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 08:56:21 | × | codaraxis__ quits (~codaraxis@user/codaraxis) (Ping timeout: 255 seconds) |
| 08:57:13 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 08:57:45 | × | codaraxis___ quits (~codaraxis@user/codaraxis) (Ping timeout: 260 seconds) |
| 09:01:20 | <albet70> | :t filter |
| 09:01:22 | <lambdabot> | (a -> Bool) -> [a] -> [a] |
| 09:02:51 | <albet70> | :t filter @((->)_) |
| 09:02:53 | <lambdabot> | error: parse error on input ‘->’ |
| 09:06:44 | → | avicenzi joins (~avicenzi@2a00:ca8:a1f:b004::c32) |
| 09:06:47 | × | kuribas quits (~user@ptr-17d51emsiv9cd4oypbm.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
| 09:12:42 | → | CiaoSen joins (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 09:17:42 | × | ft quits (~ft@p4fc2a257.dip0.t-ipconnect.de) (Quit: leaving) |
| 09:21:17 | → | gurkenglas joins (~gurkengla@dynamic-046-114-181-040.46.114.pool.telefonica.de) |
| 09:21:22 | × | caef^ quits (~caef@c-24-30-76-89.hsd1.ga.comcast.net) (Ping timeout: 268 seconds) |
| 09:25:09 | → | mikoto-chan joins (~mikoto-ch@2001:999:705:2347:8a80:665c:2482:fb76) |
| 09:27:54 | → | BasL joins (~BasL@92-108-215-26.cable.dynamic.v4.ziggo.nl) |
| 09:29:50 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 09:36:12 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 09:36:22 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 09:43:17 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 09:44:12 | × | Guest|11 quits (~Guest|11@c-76-22-56-82.hsd1.wa.comcast.net) (Quit: Connection closed) |
| 09:46:17 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 09:47:11 | × | mizlan quits (~mizlan@169.150.203.51) (Ping timeout: 255 seconds) |
| 09:51:56 | <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 |
| 09:52:16 | <tomsmeding> | sharp edges and breaking changes are to be expected |
| 09:53:03 | <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 |
| 09:53:16 | <Inst> | ugh |
| 09:53:24 | <Inst> | do you know how to get rid of a known symbol constraint? |
| 09:54:11 | <tomsmeding> | Inst: is that related to horde-ad or a general question? |
| 09:54:25 | <Inst> | general question |
| 09:54:56 | <tomsmeding> | Inst: haddocs seem to say " There are instances of the class for every concrete literal: "hello", etc." |
| 09:55:49 | <Inst> | yes, but i'm getting type checker errors; I'm trying to work with reify on Data.Reflection |
| 09:58:27 | × | BasL quits (~BasL@92-108-215-26.cable.dynamic.v4.ziggo.nl) (Quit: Client closed) |
| 09:58:30 | <tomsmeding> | code? |
| 09:59:29 | <Inst> | https://paste.tomsmeding.com/a7QY0RQo |
| 10:00:25 | × | Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 10:00:36 | × | mikoto-chan quits (~mikoto-ch@2001:999:705:2347:8a80:665c:2482:fb76) (Ping timeout: 265 seconds) |
| 10:00:43 | <Inst> | it won't work with reify or reify nat |
| 10:03:02 | → | mizlan joins (~mizlan@169.150.203.52) |
| 10:04:39 | <tomsmeding> | Inst: problem seems to be that ConsSymbol doesn't have KnownSymbol on it |
| 10:05:16 | <Inst> | lol |
| 10:05:22 | <Inst> | there's no type-level show, is there? |
| 10:06:40 | <tomsmeding> | Inst: KnownSymbol seems to just be a class with 1 method producing an SSymbol, defined as `newtype SSymbol (s :: Symbol) = SSymbol String` |
| 10:07:08 | <tomsmeding> | but that stuff is not exported, not sure why |
| 10:07:15 | <tomsmeding> | probably a good reason for it |
| 10:07:44 | × | xff0x_ quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 256 seconds) |
| 10:07:54 | <Inst> | so there's no way to "show" a Nat? |
| 10:08:28 | <dminuoso> | In principle you can write that type family I suppose. |
| 10:08:55 | <tomsmeding> | dminuoso: they did |
| 10:09:16 | <tomsmeding> | % :set -XDataKinds |
| 10:09:16 | <yahb2> | <no output> |
| 10:09:28 | <tomsmeding> | % import GHC.TypeLits |
| 10:09:29 | <yahb2> | <no output> |
| 10:09:47 | <tomsmeding> | % symbolVal (Data.Proxy.Proxy @(ConsSymbol 'h' "ello")) |
| 10:09:47 | <yahb2> | "hello" |
| 10:09:52 | <tomsmeding> | so that's not the issue |
| 10:11:10 | <Inst> | am i screwed? |
| 10:11:29 | <tomsmeding> | Inst: what are you trying to call, fizzString (Proxy @3)? |
| 10:11:41 | <Inst> | reify |
| 10:11:54 | <Inst> | reify or reifyNat |
| 10:11:55 | <tomsmeding> | package? |
| 10:12:09 | <Inst> | toFizz u = reifyNat u fizzString |
| 10:12:18 | <tomsmeding> | reify from which package |
| 10:12:43 | <Inst> | https://hackage.haskell.org/package/reflection-2.1.6/docs/Data-Reflection.html |
| 10:13:31 | <tomsmeding> | I mean, the semantics sort of check out |
| 10:13:44 | <tomsmeding> | if you know the Nat only at runtime, then surely the string isn't known statically |
| 10:13:56 | <tomsmeding> | which is what the Known typeclasses sort of mean |
| 10:14:33 | <Inst> | so i'd need to play with SomeString types? |
| 10:14:49 | <tomsmeding> | you need the string on the value level as well, so for example that way, yes |
| 10:14:56 | <tomsmeding> | types are erased at runtime |
| 10:15:03 | <tomsmeding> | so type-level computation at runtime is not a thing you can do |
| 10:15:23 | <tomsmeding> | or just, you know, do the whole thing on the value level :p |
| 10:15:51 | <Inst> | yeah but this is the most trivial one, ugh |
| 10:15:59 | <Inst> | people already solved this, maybe i can crib from them |
| 10:16:09 | <tomsmeding> | people did type-level computation at runtime? |
| 10:16:11 | <tomsmeding> | I'd like to see that |
| 10:16:20 | <tomsmeding> | because ostensibly that is impossible in haskell |
| 10:16:35 | <tomsmeding> | without having some witnesses at the value level |
| 10:16:53 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:eb4b:602d:4e:447d) |
| 10:17:11 | × | segfaultfizzbuzz quits (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 246 seconds) |
| 10:17:40 | → | boxscape_ joins (~boxscape_@213.52.37.155) |
| 10:17:44 | <Inst> | https://gist.github.com/cdepillabout/d63fcbf8e343b691681f43d287d9d191#file-fizzbuzzone-hs |
| 10:18:11 | <c_wraith> | that's importing singletons and doing SNat stuff |
| 10:18:23 | <tomsmeding> | and even doing some stuff value-level only |
| 10:20:10 | → | mokee joins (~mokee@37.228.215.106) |
| 10:23:30 | <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_ |
| 10:24:28 | <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#ShowsNat |
| 10:28:14 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 10:29:06 | <Inst> | shit, i don't think Show_ guarantees KnownSymbol |
| 10:30:43 | <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 |
| 10:31:54 | <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 |
| 10:33:33 | → | ubert1 joins (~Thunderbi@2a02:8109:abc0:6434:7175:25c6:a924:f8cd) |
| 10:34:46 | → | ub joins (~Thunderbi@p200300ecdf264e3f7f9ba4aff8511836.dip0.t-ipconnect.de) |
| 10:35:53 | × | ubert quits (~Thunderbi@p548c9ce5.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
| 10:35:53 | ub | is now known as ubert |
| 10:35:53 | ubert | is now known as 078AAJKZH |
| 10:35:53 | ubert1 | is now known as 082AAKLAD |
| 10:36:53 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
| 10:38:23 | <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 |
| 10:38:54 | <boxscape_> | (I meant to ping Inst) |
| 10:41:20 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Ping timeout: 246 seconds) |
| 10:44:24 | <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 |
| 10:44:30 | <tomsmeding> | not sure why that would be useful |
| 10:45:14 | <tomsmeding> | Inst: to do computation at runtime, you must have values :p |
| 10:45:40 | <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"` |
| 10:45:48 | <tomsmeding> | boxscape_: that's static computation |
| 10:45:54 | <boxscape_> | sure |
| 10:45:55 | <tomsmeding> | oh right |
| 10:46:08 | <tomsmeding> | right, but that means Show_ is only ever useful on statically-known values |
| 10:46:11 | <tomsmeding> | which is a use-case |
| 10:46:19 | <tomsmeding> | but not Inst's one |
| 10:46:28 | <boxscape_> | yeah I think Inst needs to use sShow_ |
| 10:46:31 | <tomsmeding> | yeah |
| 10:46:41 | <Inst> | sigh |
| 10:47:16 | <tomsmeding> | I think even in Agda and Idris, types are erased at runtime if you extract to haskell? |
| 10:47:24 | <tomsmeding> | but not sure about that |
| 10:47:31 | <boxscape_> | hmm not sure how that works |
| 10:47:54 | <boxscape_> | (sShow_ example: `ghci> sShow_ (sing @12)` produces `SSym @"12"`) |
| 10:48:53 | <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 |
| 10:49:02 | <tomsmeding> | s/express/prove/ |
| 10:49:23 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 10:50:14 | <boxscape_> | btw there might be a difference here between compiling to haskell and extracting to haskell |
| 10:50:29 | <boxscape_> | i.e. in the latter case you care about what your code looks like |
| 10:53:39 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Remote host closed the connection) |
| 10:54:04 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 10:58:45 | → | xff0x_ joins (~xff0x@2405:6580:b080:900:ece5:bb89:923a:51c8) |
| 11:00:56 | × | acidjnk_new quits (~acidjnk@p200300d6e715c483c1bce9b910063906.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 11:01:02 | × | 082AAKLAD quits (~Thunderbi@2a02:8109:abc0:6434:7175:25c6:a924:f8cd) (Quit: 082AAKLAD) |
| 11:01:14 | → | ubert joins (~Thunderbi@2a02:8109:abc0:6434:7175:25c6:a924:f8cd) |
| 11:01:19 | <albet70> | can filter apply on function? |
| 11:01:39 | × | mizlan quits (~mizlan@169.150.203.52) (Ping timeout: 260 seconds) |
| 11:01:45 | <juri_> | filterWith |
| 11:02:03 | <albet70> | :t filterWith |
| 11:02:04 | <lambdabot> | error: |
| 11:02:04 | <lambdabot> | • Variable not in scope: filterWith |
| 11:02:04 | <lambdabot> | • Perhaps you meant one of these: |
| 11:02:09 | <juri_> | er. gah, by brain's not working. |
| 11:02:18 | <albet70> | :t filter |
| 11:02:19 | <lambdabot> | (a -> Bool) -> [a] -> [a] |
| 11:02:57 | <albet70> | this could be more general? [a] to m a or t a? |
| 11:03:25 | <albet70> | :t fmap |
| 11:03:25 | <lambdabot> | Functor f => (a -> b) -> f a -> f b |
| 11:03:38 | <albet70> | :t foldl1 |
| 11:03:40 | <lambdabot> | Foldable t => (a -> a -> a) -> t a -> a |
| 11:03:41 | <boxscape_> | albet70 see https://hackage.haskell.org/package/witherable-0.4.2/docs/Witherable.html |
| 11:05:16 | → | segfaultfizzbuzz joins (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
| 11:06:11 | <albet70> | boxscape_ , Reader isn't Filterable? |
| 11:07:03 | <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? |
| 11:07:23 | <albet70> | (a->Bool) -> (a->b) -> a -> b isn't possible for filter? |
| 11:07:41 | → | beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
| 11:08:05 | <carbolymer> | even with patterh matching of a constructor I still get the warning |
| 11:08:10 | × | boxscape_ quits (~boxscape_@213.52.37.155) (Ping timeout: 252 seconds) |
| 11:09:32 | × | segfaultfizzbuzz quits (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 255 seconds) |
| 11:10:31 | × | jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
| 11:12:26 | <carbolymer> | oh, when I update two fields, everything is fine suddenly, even if records contains 1034876 fields |
| 11:12:43 | <carbolymer> | fine then https://www.youtube.com/watch?v=caXeAMseve0 |
| 11:13:04 | × | gurkenglas quits (~gurkengla@dynamic-046-114-181-040.46.114.pool.telefonica.de) (Ping timeout: 252 seconds) |
| 11:14:54 | → | Midjak joins (~Midjak@82.66.147.146) |
| 11:15:08 | → | jonathanx joins (~jonathan@h-178-174-176-109.a357.priv.bahnhof.se) |
| 11:18:25 | <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). |
| 11:18:46 | <carbolymer> | lyxia: that sheds some light, thanks |
| 11:19:42 | → | mizlan joins (~mizlan@169.150.203.64) |
| 11:20:48 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 11:24:39 | <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`. |
| 11:28:55 | <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 |
| 11:28:57 | <lyxia> | https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0366-no-ambiguous-field-access.rst |
| 11:36:30 | → | razetime joins (~Thunderbi@117.193.5.253) |
| 11:36:36 | → | use-value1 joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
| 11:37:44 | × | trev quits (~trev@user/trev) (Remote host closed the connection) |
| 11:37:49 | <carbolymer> | lyxia: it feels like it. thanks for the link, those workarounds are useful |
| 11:37:55 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:44e8:662a:49b5:c27) (Ping timeout: 260 seconds) |
| 11:37:55 | use-value1 | is now known as use-value |
| 11:38:46 | × | kuttenbrunzer quits (~kuttenbru@2a02:8108:8b80:1d48:cd53:505b:6825:9d7f) (Quit: Leaving) |
| 11:41:35 | <jackdk> | See also https://github.com/ghc-proposals/ghc-proposals/pull/537 - the disambiguation story could remain |
| 11:45:56 | × | jonathanx quits (~jonathan@h-178-174-176-109.a357.priv.bahnhof.se) (Remote host closed the connection) |
| 11:47:41 | → | jonathanx joins (~jonathan@h-178-174-176-109.a357.priv.bahnhof.se) |
| 11:49:02 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 11:51:09 | → | boxscape_ joins (~boxscape_@213.52.37.155) |
| 11:55:44 | → | segfaultfizzbuzz joins (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
| 12:00:20 | × | segfaultfizzbuzz quits (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 260 seconds) |
| 12:05:10 | → | use-value1 joins (~Thunderbi@2a00:23c6:8a03:2f01:1128:5091:e8f3:b17a) |
| 12:06:51 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Ping timeout: 260 seconds) |
| 12:06:51 | use-value1 | is now known as use-value |
| 12:08:33 | → | michalz joins (~michalz@185.246.207.200) |
| 12:10:07 | → | use-value1 joins (~Thunderbi@2a00:23c6:8a03:2f01:1128:5091:e8f3:b17a) |
| 12:11:17 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:1128:5091:e8f3:b17a) (Ping timeout: 246 seconds) |
| 12:11:17 | use-value1 | is now known as use-value |
| 12:21:08 | × | mizlan quits (~mizlan@169.150.203.64) (Ping timeout: 246 seconds) |
| 12:23:08 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 12:34:41 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds) |
| 12:36:08 | → | Inst_ joins (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
| 12:36:33 | → | acidjnk_new joins (~acidjnk@p200300d6e715c483f5265d28049d82bf.dip0.t-ipconnect.de) |
| 12:37:00 | × | eruditass quits (uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 12:39:03 | × | ddellacosta quits (~ddellacos@143.244.47.100) (Ping timeout: 260 seconds) |
| 12:39:32 | × | Inst quits (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Ping timeout: 255 seconds) |
| 12:41:00 | → | ddellacosta joins (~ddellacos@static-198-44-136-184.cust.tzulo.com) |
| 12:42:01 | × | anpad quits (~pandeyan@user/anpad) (Quit: ZNC 1.8.2 - https://znc.in) |
| 12:45:23 | → | anpad joins (~pandeyan@user/anpad) |
| 12:46:32 | → | stiell_ joins (~stiell@gateway/tor-sasl/stiell) |
| 12:46:37 | → | segfaultfizzbuzz joins (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
| 12:46:43 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds) |
| 12:48:19 | × | mei quits (~mei@user/mei) (Remote host closed the connection) |
| 12:48:49 | → | mei joins (~mei@user/mei) |
| 12:50:35 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 12:50:39 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 12:50:41 | → | mizlan joins (~mizlan@169.150.203.51) |
| 12:50:53 | × | segfaultfizzbuzz quits (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 246 seconds) |
| 12:56:08 | × | ubert quits (~Thunderbi@2a02:8109:abc0:6434:7175:25c6:a924:f8cd) (Remote host closed the connection) |
| 12:56:08 | 078AAJKZH | is now known as ubert |
| 12:56:22 | → | ubert1 joins (~Thunderbi@2a02:8109:abc0:6434:8ea:a44d:5c6d:60e6) |
| 12:59:11 | → | cheater_ joins (~Username@user/cheater) |
| 13:01:42 | × | cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds) |
| 13:01:48 | cheater_ | is now known as cheater |
| 13:04:10 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 13:12:55 | → | Bocaneri joins (~sauvin@user/Sauvin) |
| 13:12:56 | → | Lears joins (~Leary]@user/Leary/x-0910699) |
| 13:13:18 | Bocaneri | is now known as Guest4358 |
| 13:13:22 | → | EvanR_ joins (~EvanR@user/evanr) |
| 13:13:23 | → | the_proffesor joins (~theproffe@2601:282:8800:3f30::b942) |
| 13:13:23 | × | the_proffesor quits (~theproffe@2601:282:8800:3f30::b942) (Changing host) |
| 13:13:23 | → | the_proffesor joins (~theproffe@user/theproffesor) |
| 13:13:31 | → | dagi41990 joins (~dagit@c-24-21-226-72.hsd1.or.comcast.net) |
| 13:13:34 | → | raoul9 joins (~raoul@95.179.203.88) |
| 13:13:34 | → | \yrlnry joins (~yrlnry@2600:4040:738e:5400:b8c6:a4da:9f09:51fa) |
| 13:13:38 | → | jelewis2 joins (~lewisje@72.49.207.113) |
| 13:13:42 | → | raehik_ joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 13:14:03 | → | tabemann_ joins (~tabemann@2600:1700:7990:24e0:2b1c:a4e:d843:5301) |
| 13:14:11 | → | Midjak2 joins (~Midjak@82.66.147.146) |
| 13:14:28 | → | AndreasK_ joins (sid320732@id-320732.uxbridge.irccloud.com) |
| 13:14:28 | → | jtmar joins (~james@jtmar.me) |
| 13:14:45 | → | pjlsergeant__ joins (sid143467@id-143467.hampstead.irccloud.com) |
| 13:14:48 | → | img_ joins (~img@user/img) |
| 13:14:50 | → | dysfigured joins (dfg@dfg.rocks) |
| 13:14:57 | → | Taneb0 joins (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) |
| 13:15:03 | → | natto17 joins (~natto@140.238.225.67) |
| 13:15:05 | → | jinsl- joins (~jinsl@2408:8207:255b:27c0:211:32ff:fec8:6aea) |
| 13:15:08 | → | comerijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
| 13:15:26 | → | johnw_ joins (~johnw@2600:1700:cf00:db0:ed68:6ce8:98a1:2c83) |
| 13:15:34 | → | gawen_ joins (~gawen@user/gawen) |
| 13:15:52 | → | kadobanana joins (~mud@user/kadoban) |
| 13:15:53 | → | jrm2 joins (~jrm@user/jrm) |
| 13:16:04 | → | burakcan- joins (burakcank@has.arrived.and.is.ready-to.party) |
| 13:16:22 | → | hololeap_ joins (~quassel@user/hololeap) |
| 13:16:34 | → | piele_ joins (~piele@tbonesteak.creativeserver.net) |
| 13:16:52 | → | glguy_ joins (~glguy@libera/staff-emeritus/glguy) |
| 13:16:52 | → | _mokee_ joins (~mokee@37.228.215.106) |
| 13:16:58 | → | some02 joins (~cat@user/sudden) |
| 13:17:07 | → | shachaf_ joins (~shachaf@li227-219.members.linode.com) |
| 13:17:10 | → | gentauro_ joins (~gentauro@cgn-cgn11-185-107-12-141.static.kviknet.net) |
| 13:17:22 | → | pja_ joins (~pja@2a02:8010:6098:0:e65f:1ff:fe1f:660f) |
| 13:17:33 | → | takuan_dozo joins (~takuan@178-116-218-225.access.telenet.be) |
| 13:17:50 | → | Momentum_ joins (momentum@tilde.team) |
| 13:17:51 | → | tessier_ joins (~treed@98.171.210.130) |
| 13:17:55 | → | Major_Biscuit joins (~MajorBisc@2001:1c00:2402:2d00:9eeb:34cf:63b3:9e5b) |
| 13:17:56 | → | cstml joins (cstml@tilde.club) |
| 13:18:13 | → | k33 joins (~~kee@user/wizzwizz4) |
| 13:18:25 | × | mei quits (~mei@user/mei) (Killed (copper.libera.chat (Nickname regained by services))) |
| 13:18:30 | → | mei joins (~mei@user/mei) |
| 13:19:05 | → | Maxdaman1us joins (~Maxdamant@user/maxdamantus) |
| 13:20:36 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (*.net *.split) |
| 13:20:36 | × | anpad quits (~pandeyan@user/anpad) (*.net *.split) |
| 13:20:36 | × | Midjak quits (~Midjak@82.66.147.146) (*.net *.split) |
| 13:20:36 | × | mokee quits (~mokee@37.228.215.106) (*.net *.split) |
| 13:20:36 | × | merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (*.net *.split) |
| 13:20:36 | × | MajorBiscuit quits (~MajorBisc@2001:1c00:2402:2d00:9eeb:34cf:63b3:9e5b) (*.net *.split) |
| 13:20:36 | × | theproffesor quits (~theproffe@user/theproffesor) (*.net *.split) |
| 13:20:36 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (*.net *.split) |
| 13:20:36 | × | pjlsergeant_ quits (sid143467@id-143467.hampstead.irccloud.com) (*.net *.split) |
| 13:20:36 | × | johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (*.net *.split) |
| 13:20:36 | × | dfg quits (dfg@user/dfg) (*.net *.split) |
| 13:20:36 | × | jinsl quits (~jinsl@2408:8207:255b:27c0:211:32ff:fec8:6aea) (*.net *.split) |
| 13:20:36 | × | tessier quits (~treed@98.171.210.130) (*.net *.split) |
| 13:20:36 | × | shachaf quits (~shachaf@user/shachaf) (*.net *.split) |
| 13:20:36 | × | yrlnry quits (~yrlnry@2600:4040:738e:5400:b8c6:a4da:9f09:51fa) (*.net *.split) |
| 13:20:36 | × | natto quits (~natto@140.238.225.67) (*.net *.split) |
| 13:20:36 | × | dagit quits (~dagit@2001:558:6025:38:71c6:9d58:7252:8976) (*.net *.split) |
| 13:20:36 | × | sudden quits (~cat@user/sudden) (*.net *.split) |
| 13:20:36 | × | Momentum quits (momentum@tilde.team) (*.net *.split) |
| 13:20:36 | × | _koolazer quits (~koo@user/koolazer) (*.net *.split) |
| 13:20:36 | × | hololeap quits (~quassel@user/hololeap) (*.net *.split) |
| 13:20:36 | × | img quits (~img@user/img) (*.net *.split) |
| 13:20:36 | × | EvanR quits (~EvanR@user/evanr) (*.net *.split) |
| 13:20:36 | × | tabemann quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (*.net *.split) |
| 13:20:36 | × | [Leary] quits (~Leary]@user/Leary/x-0910699) (*.net *.split) |
| 13:20:36 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (*.net *.split) |
| 13:20:36 | × | pja quits (~pja@2a02:8010:6098:0:e65f:1ff:fe1f:660f) (*.net *.split) |
| 13:20:36 | × | Taneb quits (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) (*.net *.split) |
| 13:20:36 | × | cstml_ quits (cstml@tilde.club) (*.net *.split) |
| 13:20:36 | × | son0p quits (~ff@181.136.122.143) (*.net *.split) |
| 13:20:36 | × | arflech__ quits (~lewisje@72.49.207.113) (*.net *.split) |
| 13:20:36 | × | tureba quits (~tureba@tureba.org) (*.net *.split) |
| 13:20:36 | × | burakcank quits (burakcank@has.arrived.and.is.ready-to.party) (*.net *.split) |
| 13:20:36 | × | jrm quits (~jrm@user/jrm) (*.net *.split) |
| 13:20:36 | × | Sauvin quits (~sauvin@user/Sauvin) (*.net *.split) |
| 13:20:36 | × | gentauro quits (~gentauro@user/gentauro) (*.net *.split) |
| 13:20:36 | × | glguy quits (~glguy@libera/staff-emeritus/glguy) (*.net *.split) |
| 13:20:36 | × | kee quits (~~kee@user/wizzwizz4) (*.net *.split) |
| 13:20:36 | × | gawen quits (~gawen@user/gawen) (*.net *.split) |
| 13:20:36 | × | raoul quits (~raoul@95.179.203.88) (*.net *.split) |
| 13:20:36 | × | piele quits (~piele@tbonesteak.creativeserver.net) (*.net *.split) |
| 13:20:36 | × | mud quits (~mud@user/kadoban) (*.net *.split) |
| 13:20:37 | × | peutri quits (~peutri@bobo.desast.re) (*.net *.split) |
| 13:20:37 | × | AndreasK quits (sid320732@id-320732.uxbridge.irccloud.com) (*.net *.split) |
| 13:20:37 | × | jamestmartin quits (~james@jtmar.me) (*.net *.split) |
| 13:20:37 | × | jjhoo quits (~jahakala@user/jjhoo) (*.net *.split) |
| 13:20:38 | AndreasK_ | is now known as AndreasK |
| 13:20:40 | burakcan- | is now known as burakcank |
| 13:20:46 | jrm2 | is now known as jrm |
| 13:20:46 | raoul9 | is now known as raoul |
| 13:21:42 | <dminuoso> | Mmm, Im beginning to really like haskell.nix. |
| 13:21:50 | → | peutri joins (~peutri@bobo.desast.re) |
| 13:22:01 | → | koolazer joins (~koo@user/koolazer) |
| 13:22:16 | → | jjhoo joins (jahakala@user/jjhoo) |
| 13:22:39 | <boxscape_> | what do you like about it? |
| 13:23:19 | <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 |
| 13:23:33 | <dminuoso> | And unlike the nixpkgs builders stuff, its very well documented |
| 13:23:38 | <boxscape_> | hm I see |
| 13:23:54 | → | Niclelscore joins (~Niclelsco@94.25.229.249) |
| 13:23:55 | <boxscape_> | I have had trouble with documentation when using non-haskell.nix nix with haskell |
| 13:23:59 | <dminuoso> | Like, it describes every function, every argument, tells you what kind of "types" go in and out |
| 13:24:32 | <dminuoso> | with callCabal2nix, its mostly "screw you, here's some absurdly obfuscated nix code with zero comments, and zero documentation, zero guides" |
| 13:24:51 | → | opticblast joins (~Thunderbi@secure-165.caltech.edu) |
| 13:26:10 | → | tureba joins (tureba@tureba.org) |
| 13:26:14 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 13:26:19 | <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 |
| 13:27:05 | × | Niclelscore quits (~Niclelsco@94.25.229.249) (Client Quit) |
| 13:27:11 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 13:27:14 | <dminuoso> | Ah yeah |
| 13:27:33 | <dminuoso> | I mean nixpkgs has improved much over the past few months, but honestly I still have a sore taste in my mouth |
| 13:27:40 | <fendor[m]> | :k '['()] |
| 13:27:41 | <lambdabot> | error: parse error on input ‘'’ |
| 13:27:41 | <dminuoso> | And the code quality is often subpar |
| 13:27:51 | <dminuoso> | :k [()] |
| 13:27:52 | <lambdabot> | * |
| 13:27:55 | <fendor[m]> | :k '[ '()] |
| 13:27:56 | <lambdabot> | [()] |
| 13:28:18 | <fendor[m]> | any idea why the space is needed here |
| 13:28:28 | × | Midjak2 quits (~Midjak@82.66.147.146) (Quit: Leaving) |
| 13:28:29 | <boxscape_> | because otherwise '[' is parsed as a character |
| 13:28:53 | <boxscape_> | or, reserved to be parsed as character? not sure, especially since it's lambdabot |
| 13:29:03 | <dminuoso> | Its not just lambdabot |
| 13:29:04 | → | Midjak joins (~Midjak@82.66.147.146) |
| 13:29:07 | <dminuoso> | ghci chokes as well |
| 13:29:13 | <fendor[m]> | it happens in ghci and ghc as well |
| 13:29:33 | <boxscape_> | but it has a different parse error |
| 13:29:39 | <boxscape_> | because I think it does parse it as character |
| 13:29:45 | <fendor[m]> | but that parsing ambiguity makes sense, I didn't of it |
| 13:29:49 | <dminuoso> | 14:28:29 boxscape_ | because otherwise '[' is parsed as a characte |
| 13:29:51 | <dminuoso> | ^- |
| 13:29:55 | <dminuoso> | Well lexing ambiguity. |
| 13:29:59 | <boxscape_> | right |
| 13:30:00 | <dminuoso> | The parser could deal with it, but not the lexer |
| 13:30:25 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 13:30:33 | <dminuoso> | Though Im not sure, are characters promoted as well? |
| 13:30:34 | <boxscape_> | % :k '[' |
| 13:30:34 | <yahb2> | '[' :: Char |
| 13:30:38 | <boxscape_> | :k '[' |
| 13:30:39 | <lambdabot> | error: parse error on input ‘'’ |
| 13:30:41 | <fendor[m]> | reminds me of the time I forgot about comments in ghci |
| 13:30:47 | → | anpad joins (~pandeyan@user/anpad) |
| 13:30:47 | <boxscape_> | the character kind is newish but does exist, yeah |
| 13:30:53 | <dminuoso> | % f :: Const () '['; f = undefined |
| 13:30:53 | <yahb2> | <no output> |
| 13:30:57 | <dminuoso> | Ahh. Here. |
| 13:31:10 | <dminuoso> | ^- so I guess that conclusively proves that character literals are promoted as well |
| 13:32:07 | × | razetime quits (~Thunderbi@117.193.5.253) (Quit: See You Space Cowboy) |
| 13:32:09 | <dminuoso> | fendor[m]: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/data_kinds.html#distinguishing-between-types-and-constructors |
| 13:32:13 | <dminuoso> | its even explicitly documented |
| 13:32:17 | <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: |
| 13:32:21 | <boxscape_> | % :kind! UnconsSymbol "foo" |
| 13:32:22 | <yahb2> | UnconsSymbol "foo" :: Maybe (Char, Symbol) ; = 'Just '('f', "oo") |
| 13:32:42 | <dminuoso> | :S |
| 13:32:53 | <dminuoso> | Now we just need an IO kind |
| 13:32:59 | <boxscape_> | true |
| 13:33:03 | <dminuoso> | So we can do things like launch missiles during type checking |
| 13:34:14 | <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 |
| 13:34:20 | <fendor[m]> | dminuoso, thank you very much! |
| 13:36:11 | <boxscape_> | I guess having IO alone isn't enough, you also need a typeruntime to execute the effects |
| 13:36:21 | <boxscape_> | s/typeruntime/compile-time runtime |
| 13:36:39 | <dminuoso> | boxscape_: The end of the story is just: Just use idris. |
| 13:36:41 | michalz | is now known as michalz_ |
| 13:36:49 | <boxscape_> | can you use IO during type checking in Idris though |
| 13:36:56 | <dminuoso> | Yup |
| 13:37:00 | <boxscape_> | oh, neat |
| 13:37:10 | <dminuoso> | Well no sorry |
| 13:37:13 | <dminuoso> | I misread |
| 13:37:15 | <boxscape_> | oh :( |
| 13:37:31 | → | ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) |
| 13:37:39 | <dminuoso> | But for what its worth, you can always insert a type checker plugin to do anything you want in GHC |
| 13:38:11 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 13:41:21 | <boxscape_> | or do arbitrary IO with TH |
| 13:42:48 | <dminuoso> | Im a bit sad you can do that |
| 13:43:06 | <dminuoso> | I kind of wish we had a more limited macro subsystem that can do some limited effects, but not full blown IO |
| 13:43:15 | <dminuoso> | Something standardized, not tied to GHCs internal representation |
| 13:43:27 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 13:43:27 | <boxscape_> | yeah sounds useful |
| 13:44:12 | <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 |
| 13:44:19 | <comerijn> | and retro-fitting sane semantics for that is hard |
| 13:46:05 | → | jero98772 joins (~jero98772@2800:484:1d80:d8ce:3490:26c5:1782:da8c) |
| 13:48:13 | × | xff0x_ quits (~xff0x@2405:6580:b080:900:ece5:bb89:923a:51c8) (Ping timeout: 252 seconds) |
| 13:48:35 | → | xff0x_ joins (~xff0x@178.255.149.135) |
| 13:48:35 | × | Guest|20 quits (~Guest|20@c-73-176-81-178.hsd1.il.comcast.net) (Ping timeout: 260 seconds) |
| 13:48:47 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 13:49:15 | → | michalz joins (~michalz@185.246.207.221) |
| 13:51:26 | × | mizlan quits (~mizlan@169.150.203.51) (Ping timeout: 246 seconds) |
| 13:52:33 | × | ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: Textual IRC Client: www.textualapp.com) |
| 13:56:43 | × | raehik_ quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Remote host closed the connection) |
| 14:01:07 | × | acidjnk_new quits (~acidjnk@p200300d6e715c483f5265d28049d82bf.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 14:01:19 | × | xff0x_ quits (~xff0x@178.255.149.135) (Ping timeout: 260 seconds) |
| 14:01:25 | → | acidjnk_new joins (~acidjnk@p200300d6e715c48339b8d345b07b8534.dip0.t-ipconnect.de) |
| 14:02:48 | → | xff0x_ joins (~xff0x@2405:6580:b080:900:ece5:bb89:923a:51c8) |
| 14:06:02 | → | kurbus joins (~kurbus@user/kurbus) |
| 14:09:09 | × | Axman6 quits (~Axman6@user/axman6) (Ping timeout: 268 seconds) |
| 14:10:13 | × | hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 252 seconds) |
| 14:11:06 | → | Axman6 joins (~Axman6@user/axman6) |
| 14:16:52 | → | hugo joins (znc@verdigris.lysator.liu.se) |
| 14:18:51 | × | kurbus quits (~kurbus@user/kurbus) (Quit: Client closed) |
| 14:19:12 | comerijn | sighs |
| 14:19:20 | → | mizlan joins (~mizlan@89.46.114.27) |
| 14:19:28 | <comerijn> | That moment where you gotta modify 98 modules for a simple refactor >.> |
| 14:20:51 | <dminuoso> | Be glad it is Haskell. |
| 14:21:05 | <comerijn> | I am, but still |
| 14:21:26 | comerijn | is now known as merijn |
| 14:22:06 | <merijn> | Also simple enough I can macro it in vim, but horrible diff >.> |
| 14:24:21 | × | michalz_ quits (~michalz@185.246.207.200) (Quit: Client closed) |
| 14:25:21 | <boxscape_> | tomsmeding I was wrong, SSymbol is exported in base 4.18 |
| 14:25:35 | <boxscape_> | see https://github.com/haskell/core-libraries-committee/issues/85 |
| 14:25:51 | → | thegeekinside joins (~thegeekin@189.180.66.244) |
| 14:26:01 | → | kurbus joins (~kurbus@user/kurbus) |
| 14:27:33 | → | segfaultfizzbuzz joins (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
| 14:31:48 | × | segfaultfizzbuzz quits (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 252 seconds) |
| 14:35:59 | × | acidjnk_new quits (~acidjnk@p200300d6e715c48339b8d345b07b8534.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 14:36:23 | → | acidjnk_new joins (~acidjnk@p200300d6e715c483e1c7cd94b291a585.dip0.t-ipconnect.de) |
| 14:41:29 | × | wombat8756 quits (~wombat875@2600:4041:5bea:f800:83f2:bf42:de49:b596) (Ping timeout: 246 seconds) |
| 14:41:56 | → | razetime joins (~Thunderbi@117.193.5.253) |
| 14:41:57 | → | caef^ joins (~caef@c-24-30-76-89.hsd1.ga.comcast.net) |
| 14:43:04 | → | wombat8756 joins (~wombat875@2600:4041:5bea:f800:da64:71f6:cfa2:558) |
| 14:44:29 | × | barzo quits (~hd@31.223.41.44) (Ping timeout: 260 seconds) |
| 14:47:40 | shawwwn_ | is now known as shawwwn |
| 14:50:38 | → | Inst__ joins (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
| 14:52:55 | <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 |
| 14:53:17 | <boxscape_> | oh, interesting |
| 14:54:05 | × | Inst_ quits (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Ping timeout: 255 seconds) |
| 14:54:57 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 14:54:59 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 14:59:20 | <kuribas> | but idris2 doesn't have type providers... |
| 15:00:12 | <kuribas> | but type providers can be done easily in haskell with TH. |
| 15:05:59 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 15:07:01 | → | Guest75 joins (~Guest75@178.141.138.233) |
| 15:10:43 | × | acidjnk_new quits (~acidjnk@p200300d6e715c483e1c7cd94b291a585.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 15:16:54 | → | barzo joins (~hd@31.223.41.44) |
| 15:19:11 | × | mizlan quits (~mizlan@89.46.114.27) (Ping timeout: 252 seconds) |
| 15:20:15 | <boxscape_> | right, true |
| 15:21:33 | <carbolymer> | `%=` is analogous to `modify`, so is there a lens doing what `state` is doing? |
| 15:21:55 | <carbolymer> | i.e. `s -> (a, s)` |
| 15:22:40 | → | shriekingnoise joins (~shrieking@186.137.175.87) |
| 15:22:57 | <dminuoso> | carbolymer: l %= f = State.modify (l %~ f) |
| 15:23:05 | <dminuoso> | It's nothing special, just a very minor convenience thing |
| 15:23:28 | <geekosaur> | AIUI lens does not incorporate state, just some helpers for it |
| 15:23:46 | → | son0p joins (~ff@181.136.122.143) |
| 15:24:07 | <dminuoso> | So its not "analogous" to modify, it's just a wrapper around modify + %~ :) |
| 15:24:17 | → | Niclelscore joins (~Niclelsco@94.25.229.249) |
| 15:24:19 | <dminuoso> | (Or it *is* modify) |
| 15:25:02 | → | segfaultfizzbuzz joins (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
| 15:25:41 | <kuribas> | IMO 95% of lens is convenience things |
| 15:25:52 | <kuribas> | the other 5% is very handy. |
| 15:25:54 | <boxscape_> | does `\l f -> state (l %~ f)` do anything sensible? |
| 15:26:15 | × | GoldsteinQ quits (~goldstein@goldstein.rs) (Quit: ZNC 1.8.2 - https://znc.in) |
| 15:26:19 | <kuribas> | :t state |
| 15:26:20 | <lambdabot> | MonadState s m => (s -> (a, s)) -> m a |
| 15:26:51 | <boxscape_> | I guess you need a fairly strange Setter for that to work out |
| 15:26:54 | <kuribas> | :t (%~) |
| 15:26:55 | <lambdabot> | ASetter s t a b -> (a -> b) -> s -> t |
| 15:27:25 | <geekosaur> | `state` is what used to be `State` before `State s` was made a type alias for `StateT s Identity` |
| 15:27:48 | → | GoldsteinQ joins (~goldstein@goldstein.rs) |
| 15:28:32 | <carbolymer> | dminuoso: those are only setters, but I'd like to combine getter with setter |
| 15:29:05 | × | segfaultfizzbuzz quits (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 246 seconds) |
| 15:29:37 | <carbolymer> | @hoogle <.~ |
| 15:29:37 | <lambdabot> | Control.Lens.Operators (<.~) :: ASetter s t a b -> b -> s -> (b, t) |
| 15:29:37 | <lambdabot> | Control.Lens.Setter (<.~) :: ASetter s t a b -> b -> s -> (b, t) |
| 15:29:37 | <lambdabot> | Diagrams.Prelude (<.~) :: () => ASetter s t a b -> b -> s -> (b, t) |
| 15:29:46 | <carbolymer> | looks like what I need |
| 15:30:23 | Guest4358 | is now known as Sauvin |
| 15:30:43 | <carbolymer> | except not in MonadState |
| 15:30:46 | <dminuoso> | carbolymer: ah heh I misread your question, pardon me |
| 15:30:56 | <dminuoso> | carbolymer: yes thats fine, you can just use `lift` |
| 15:31:12 | <dminuoso> | or `state` rather |
| 15:31:36 | <kuribas> | This all looks like line-noise to me. |
| 15:31:49 | <dminuoso> | make up your own operator name, sau s <.= f = state (l <.~ f) |
| 15:32:04 | <boxscape_> | :t <.= |
| 15:32:05 | <lambdabot> | error: parse error on input ‘<.=’ |
| 15:32:10 | <boxscape_> | :t (<.=) |
| 15:32:11 | <lambdabot> | MonadState s m => ASetter s s a b -> b -> m b |
| 15:32:26 | <carbolymer> | kuribas: that's where name came from: LinE NoiSe = LENS |
| 15:32:40 | <kuribas> | carbolymer: heheh |
| 15:33:06 | → | Inst_ joins (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
| 15:33:18 | <geekosaur> | those who don't know Perl are doomed to repeat it? |
| 15:33:19 | <carbolymer> | dminuoso: yep, I'll probably do that, thanks |
| 15:35:45 | <boxscape_> | carbolymer but it already exists? See my lambdabot message above |
| 15:36:25 | × | Inst__ quits (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Ping timeout: 252 seconds) |
| 15:37:54 | carbolymer | squints harder at the operator |
| 15:38:39 | <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 |
| 15:38:43 | × | Inst_ quits (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Read error: Connection reset by peer) |
| 15:38:44 | <carbolymer> | boxscape_: it's not what I need, I need exactly `state` but in lens form |
| 15:38:52 | <boxscape_> | ah |
| 15:39:06 | → | Inst_ joins (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
| 15:39:28 | <dminuoso> | carbolymer: You can also just use `state` yourself. :p |
| 15:39:35 | <dminuoso> | state (l <.~ f) is not unreadable |
| 15:39:50 | <carbolymer> | yeah, I'm going into that direction |
| 15:39:54 | <boxscape_> | state (l <.~ f) is the same as <.= |
| 15:40:01 | <boxscape_> | well, the types are anyway |
| 15:40:02 | <dminuoso> | Ahh heh |
| 15:40:05 | <dminuoso> | boxscape_: that already exists :p |
| 15:40:09 | <boxscape_> | yep :) |
| 15:40:10 | <dminuoso> | https://hackage.haskell.org/package/lens-5.2/docs/Control-Lens-Operators.html#v:-60-.-61- |
| 15:40:22 | <dminuoso> | But thats a different thing |
| 15:40:37 | <dminuoso> | So no, its not the same |
| 15:40:53 | <dminuoso> | % :t \l f -> state (l <.~ f) |
| 15:40:53 | <yahb2> | <interactive>:1:9: error: Variable not in scope: state :: t0 -> t2 ; ; <interactive>:1:18: error: ; Variable not in scope: (<.~) :: t -> t1 -> t0 |
| 15:41:01 | <dminuoso> | :t \l f -> state (l <.~ f) |
| 15:41:03 | <lambdabot> | MonadState s m => ASetter s s a1 a2 -> a2 -> m a2 |
| 15:41:10 | <dminuoso> | uh oh maybe it is the same |
| 15:41:27 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
| 15:41:34 | <dminuoso> | % :t (%=) |
| 15:41:34 | <yahb2> | <interactive>:1:1: error: ; • Variable not in scope: %= ; • Perhaps you meant one of these: ; ‘/=’ (imported from Prelude), ‘<=’ (imported from Prelude), ; ‘==’ (imported fr... |
| 15:41:36 | <dminuoso> | :t (%=) |
| 15:41:37 | <lambdabot> | MonadState s m => ASetter s s a b -> (a -> b) -> m () |
| 15:44:09 | → | acidjnk_new joins (~acidjnk@p200300d6e715c483e1c7cd94b291a585.dip0.t-ipconnect.de) |
| 15:45:51 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Ping timeout: 255 seconds) |
| 15:48:54 | × | caef^ quits (~caef@c-24-30-76-89.hsd1.ga.comcast.net) (Remote host closed the connection) |
| 15:49:17 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
| 15:50:17 | → | mizlan joins (~mizlan@169.150.203.59) |
| 15:53:39 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 15:53:43 | × | epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:55:05 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 15:56:06 | <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? |
| 15:56:43 | <raehik> | is `Addr#` better than `Ptr a`; is `Word#` better than `Word` |
| 15:57:11 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 255 seconds) |
| 15:57:51 | <merijn> | I don't think you can generalise like that |
| 15:58:03 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 15:58:20 | <merijn> | Outside of your hot loop the difference shouldn't be giant |
| 15:58:39 | → | segfaultfizzbuzz joins (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
| 16:01:26 | <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 |
| 16:01:49 | <raehik> | I think eventually I will try both and have a look at the core |
| 16:01:54 | <geekosaur> | your best bet is to examine Core, yeh |
| 16:02:15 | <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 |
| 16:02:43 | <merijn> | And outside of your hot loop it should (generally) not matter *that* much |
| 16:02:56 | → | halting joins (~Oliver@177.129.53.34) |
| 16:03:06 | × | segfaultfizzbuzz quits (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 252 seconds) |
| 16:04:27 | → | segfaultfizzbuzz joins (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
| 16:04:31 | <raehik> | merijn: I appreciate it generally should not matter. I don't touch the stuff in regular boring code |
| 16:04:52 | <raehik> | I wouldn't mind some inconvenience for additional performance or less mem usage |
| 16:05:11 | <raehik> | (in this one place) |
| 16:06:38 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds) |
| 16:07:05 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds) |
| 16:07:26 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Remote host closed the connection) |
| 16:08:21 | × | q0r quits (~user@162.255.84.96) (Ping timeout: 255 seconds) |
| 16:08:30 | → | mixphix joins (~cigsender@74.124.58.162) |
| 16:08:59 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 16:09:34 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:eb4b:602d:4e:447d) (Ping timeout: 252 seconds) |
| 16:10:36 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 16:17:14 | × | Niclelscore quits (~Niclelsco@94.25.229.249) (Ping timeout: 260 seconds) |
| 16:22:39 | → | stiell_ joins (~stiell@gateway/tor-sasl/stiell) |
| 16:24:12 | k33 | is now known as kee |
| 16:24:20 | × | opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 246 seconds) |
| 16:24:42 | × | halting quits (~Oliver@177.129.53.34) (Quit: Leaving) |
| 16:26:47 | → | shriekingnoise_ joins (~shrieking@186.137.175.87) |
| 16:28:26 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 16:29:19 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 16:30:04 | × | shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 260 seconds) |
| 16:31:42 | × | troydm quits (~troydm@user/troydm) (Ping timeout: 252 seconds) |
| 16:35:52 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 16:36:44 | × | merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
| 16:41:44 | × | boxscape_ quits (~boxscape_@213.52.37.155) (Ping timeout: 260 seconds) |
| 16:48:37 | × | segfaultfizzbuzz quits (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 252 seconds) |
| 16:48:43 | → | segfaultfizzbuzz joins (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
| 16:50:19 | × | mizlan quits (~mizlan@169.150.203.59) (Ping timeout: 248 seconds) |
| 16:53:34 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 16:57:11 | → | shriekingnoise joins (~shrieking@186.137.175.87) |
| 16:59:39 | × | shriekingnoise_ quits (~shrieking@186.137.175.87) (Ping timeout: 252 seconds) |
| 17:00:44 | <carbolymer> | how can I build an infinite list with `State`? https://bpa.st/7PVMG this doesn't seem to be cutting it |
| 17:00:53 | → | q0r joins (~user@162.255.84.96) |
| 17:02:18 | <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. |
| 17:03:34 | <int-e> | > execWriter $ forever (tell [True]) |
| 17:03:35 | × | segfaultfizzbuzz quits (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 246 seconds) |
| 17:03:36 | <lambdabot> | [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,... |
| 17:03:37 | → | oldfashionedcow joins (~Rahul_San@user/oldfashionedcow) |
| 17:04:00 | <carbolymer> | hmm... so what's the purpose of lazy State? |
| 17:04:36 | <c_wraith> | in most cases, creating a space leak |
| 17:05:04 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
| 17:05:33 | <carbolymer> | so if I need state to compute my list, I should layer writer on top of state... |
| 17:05:40 | <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. |
| 17:05:57 | × | barzo quits (~hd@31.223.41.44) (Quit: Leaving) |
| 17:06:04 | <int-e> | But the final state can't be produced lazily. |
| 17:06:05 | → | merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
| 17:06:10 | × | russruss quits (~russruss@my.russellmcc.com) (Quit: The Lounge - https://thelounge.chat) |
| 17:06:20 | → | barzo joins (~hd@31.223.41.44) |
| 17:06:23 | <carbolymer> | I see |
| 17:06:26 | <carbolymer> | i'll try that |
| 17:06:31 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
| 17:06:33 | <carbolymer> | I mean, writer |
| 17:06:35 | <carbolymer> | thanks |
| 17:07:45 | → | russruss joins (~russruss@my.russellmcc.com) |
| 17:08:05 | → | mizlan joins (~mizlan@89.46.114.150) |
| 17:08:15 | <c_wraith> | > take 10 $ evalState (let s = do { x <- get ; put (x + 1) ; xs <- s ; pure (x:xs) } in s) 0 |
| 17:08:17 | <lambdabot> | [0,1,2,3,4,5,6,7,8,9] |
| 17:09:05 | <c_wraith> | that requires lazy state |
| 17:16:18 | × | mei quits (~mei@user/mei) (Quit: mei) |
| 17:17:27 | × | michalz quits (~michalz@185.246.207.221) (Remote host closed the connection) |
| 17:18:46 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 17:19:11 | → | stiell_ joins (~stiell@gateway/tor-sasl/stiell) |
| 17:22:34 | × | mechap1 quits (~mechap@user/mechap) (Ping timeout: 260 seconds) |
| 17:22:54 | → | cheater_ joins (~Username@user/cheater) |
| 17:23:08 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
| 17:23:42 | → | mei joins (~mei@user/mei) |
| 17:24:25 | → | mechap1 joins (~mechap@user/mechap) |
| 17:26:03 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 17:26:35 | × | cheater quits (~Username@user/cheater) (Ping timeout: 264 seconds) |
| 17:26:41 | cheater_ | is now known as cheater |
| 17:30:03 | <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)`"? |
| 17:31:03 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 17:31:31 | <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 |
| 17:31:48 | <raehik> | I get the gist as to why, but I always wonder if there's another way |
| 17:32:32 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 17:33:18 | <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 |
| 17:35:11 | <raehik> | geekosaur: would you have an example? (you're probably gonna tell me to look at Agda or Idris ;_;) |
| 17:35:21 | <geekosaur> | pretty much, yes 🙂 |
| 17:35:52 | <raehik> | heheh. maybe next time I will play with Idris, in the knowledge that it's more Haskell-y |
| 17:35:59 | <raehik> | thx |
| 17:36:12 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
| 17:37:13 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 17:37:34 | × | merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
| 17:40:56 | × | ubert1 quits (~Thunderbi@2a02:8109:abc0:6434:8ea:a44d:5c6d:60e6) (Remote host closed the connection) |
| 17:41:46 | → | econo joins (uid147250@user/econo) |
| 17:45:28 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 17:47:21 | × | Major_Biscuit quits (~MajorBisc@2001:1c00:2402:2d00:9eeb:34cf:63b3:9e5b) (Ping timeout: 255 seconds) |
| 17:49:56 | × | sajith quits (~sajith@user/sajith) (Quit: Gone) |
| 17:49:56 | × | nonzen quits (~nonzen@user/nonzen) (Quit: Gone) |
| 17:50:13 | → | nonzen joins (~nonzen@user/nonzen) |
| 17:50:45 | → | sajith joins (~sajith@user/sajith) |
| 17:51:32 | → | segfaultfizzbuzz joins (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) |
| 17:52:08 | → | Inst__ joins (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
| 17:54:33 | × | dunj3 quits (~dunj3@kingdread.de) (Quit: ZNC 1.7.2+deb3 - https://znc.in) |
| 17:54:43 | → | dunj3 joins (~dunj3@kingdread.de) |
| 17:55:10 | × | Inst_ quits (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Ping timeout: 252 seconds) |
| 17:57:20 | × | dunj3 quits (~dunj3@kingdread.de) (Client Quit) |
| 17:57:57 | × | CiaoSen quits (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 17:59:23 | × | razetime quits (~Thunderbi@117.193.5.253) (Quit: See You Space Cowboy) |
| 18:01:39 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds) |
| 18:04:00 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 18:07:07 | × | segfaultfizzbuzz quits (~segfaultf@2602:306:cd3c:9350:f9f2:82c3:f192:7b95) (Ping timeout: 248 seconds) |
| 18:09:03 | → | segfaultfizzbuzz joins (~segfaultf@2607:fb91:1104:3754:64cc:21ba:e1db:e740) |
| 18:12:20 | → | slack1256 joins (~slack1256@181.42.52.9) |
| 18:13:04 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 18:17:49 | × | Guest75 quits (~Guest75@178.141.138.233) (Quit: Client closed) |
| 18:19:23 | → | rustisafungus joins (~segfaultf@108.211.201.53) |
| 18:20:12 | × | segfaultfizzbuzz quits (~segfaultf@2607:fb91:1104:3754:64cc:21ba:e1db:e740) (Ping timeout: 255 seconds) |
| 18:21:56 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 18:23:31 | shachaf_ | is now known as shachaf |
| 18:23:56 | × | shachaf quits (~shachaf@li227-219.members.linode.com) (Changing host) |
| 18:23:56 | → | shachaf joins (~shachaf@user/shachaf) |
| 18:25:29 | × | avicenzi quits (~avicenzi@2a00:ca8:a1f:b004::c32) (Ping timeout: 246 seconds) |
| 18:28:10 | × | beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 252 seconds) |
| 18:32:03 | × | mizlan quits (~mizlan@89.46.114.150) (Ping timeout: 252 seconds) |
| 18:36:28 | × | codaraxis quits (~codaraxis@user/codaraxis) (Quit: Leaving) |
| 18:38:28 | × | kurbus quits (~kurbus@user/kurbus) (Quit: Client closed) |
| 18:38:30 | → | beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
| 18:42:58 | × | beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 252 seconds) |
| 18:44:50 | Maxdaman1us | is now known as Maxdamantus |
| 18:47:56 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Remote host closed the connection) |
| 18:48:03 | → | kurbus joins (~kurbus@user/kurbus) |
| 18:53:44 | → | beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
| 18:57:04 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Remote host closed the connection) |
| 18:57:29 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 18:58:59 | → | mizlan joins (~mizlan@169.150.203.52) |
| 18:59:59 | × | barzo quits (~hd@31.223.41.44) (Ping timeout: 260 seconds) |
| 19:03:50 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 19:03:56 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
| 19:04:45 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 19:06:36 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 19:12:57 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 19:15:32 | × | mizlan quits (~mizlan@169.150.203.52) (Ping timeout: 246 seconds) |
| 19:17:30 | → | mizlan joins (~mizlan@169.150.203.45) |
| 19:20:24 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 19:21:04 | × | mizlan quits (~mizlan@169.150.203.45) (Remote host closed the connection) |
| 19:27:51 | × | hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 260 seconds) |
| 19:30:11 | × | AlexNoo quits (~AlexNoo@178.34.160.228) (Read error: Connection reset by peer) |
| 19:30:34 | → | AlexNoo joins (~AlexNoo@178.34.160.228) |
| 19:32:57 | → | nehsou^ joins (~nehsou@c-24-30-76-89.hsd1.ga.comcast.net) |
| 19:33:32 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 19:34:02 | × | rustisafungus quits (~segfaultf@108.211.201.53) (Ping timeout: 246 seconds) |
| 19:35:28 | → | ft joins (~ft@p4fc2a257.dip0.t-ipconnect.de) |
| 19:35:34 | → | merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
| 19:35:42 | → | hugo joins (znc@verdigris.lysator.liu.se) |
| 19:40:44 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 255 seconds) |
| 19:41:09 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
| 19:42:28 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 19:43:38 | → | mizlan joins (~mizlan@131.179.77.187) |
| 19:48:30 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 19:48:37 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 19:49:03 | → | troydm joins (~troydm@user/troydm) |
| 19:55:45 | × | mizlan quits (~mizlan@131.179.77.187) (Ping timeout: 256 seconds) |
| 20:01:47 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 20:02:15 | × | beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 252 seconds) |
| 20:06:46 | × | slack1256 quits (~slack1256@181.42.52.9) (Remote host closed the connection) |
| 20:07:13 | × | mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in) |
| 20:07:38 | × | merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
| 20:08:22 | → | mikoto-chan joins (~mikoto-ch@2001:999:784:4cb8:d8e9:51ca:a70:b0e5) |
| 20:08:53 | × | asivitz quits (uid178348@id-178348.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 20:08:56 | → | mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
| 20:09:06 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 255 seconds) |
| 20:11:17 | → | angelore joins (~u0_a291@5.46.161.208) |
| 20:13:41 | <monochrom> | > take 10 (execState (let m n = do { m (n+1); s <- get; put (n : s)} in m 0) undefined) |
| 20:13:43 | <lambdabot> | [0,1,2,3,4,5,6,7,8,9] |
| 20:14:01 | <monochrom> | That is the "final" state being a bit lazy, too. :D |
| 20:16:59 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:13ef:295c:1ca0:c7a2) |
| 20:20:05 | → | pavonia joins (~user@user/siracusa) |
| 20:21:53 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Remote host closed the connection) |
| 20:22:21 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
| 20:25:18 | → | kuttenbrunzer joins (~kuttenbru@2a02:8108:8b80:1d48:21ed:337e:734b:fe6a) |
| 20:25:23 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Remote host closed the connection) |
| 20:26:41 | ← | angelore parts (~u0_a291@5.46.161.208) (WeeChat 3.8) |
| 20:26:46 | → | angelore joins (~u0_a291@5.46.161.208) |
| 20:28:29 | → | smol-hors joins (sid524992@smol/hors) |
| 20:36:56 | <int-e> | monochrom: ah good point |
| 20:39:02 | → | Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
| 20:39:06 | × | kurbus quits (~kurbus@user/kurbus) (Quit: Client closed) |
| 20:40:03 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 20:40:23 | <int-e> | > execState $ do undefined; put 42 |
| 20:40:24 | <lambdabot> | <Integer -> Integer> |
| 20:40:26 | → | waleee joins (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) |
| 20:40:35 | <int-e> | > execState (do undefined; put 42) undefined |
| 20:40:36 | <lambdabot> | 42 |
| 20:40:54 | × | manwithl- quits (~manwithlu@194.177.28.192) (Ping timeout: 260 seconds) |
| 20:41:16 | → | enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
| 20:45:29 | × | mikoto-chan quits (~mikoto-ch@2001:999:784:4cb8:d8e9:51ca:a70:b0e5) (Ping timeout: 246 seconds) |
| 20:48:11 | hololeap_ | is now known as hololeap |
| 20:50:06 | × | angelore quits (~u0_a291@5.46.161.208) (Quit: WeeChat 3.8) |
| 20:56:22 | → | Guest75 joins (~Guest75@178.141.160.158) |
| 20:56:24 | → | harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
| 21:00:53 | → | zero joins (~z@user/zero) |
| 21:03:45 | × | yin quits (~z@user/zero) (Ping timeout: 256 seconds) |
| 21:08:40 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:13ef:295c:1ca0:c7a2) (Quit: WeeChat 2.8) |
| 21:21:52 | × | kuttenbrunzer quits (~kuttenbru@2a02:8108:8b80:1d48:21ed:337e:734b:fe6a) (Quit: Leaving) |
| 21:21:55 | → | angelore joins (~u0_a291@5.46.161.208) |
| 21:23:09 | × | angelore quits (~u0_a291@5.46.161.208) (Client Quit) |
| 21:23:28 | → | angelore joins (~u0_a291@5.46.161.208) |
| 21:24:57 | → | segfaultfizzbuzz joins (~segfaultf@108.211.201.53) |
| 21:25:52 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
| 21:25:54 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) |
| 21:29:04 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 21:30:10 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:81b7:d6f6:7eee:d4f8) (Ping timeout: 252 seconds) |
| 21:30:17 | × | angelore quits (~u0_a291@5.46.161.208) (Quit: WeeChat 3.8) |
| 21:30:29 | → | angelore joins (~u0_a291@5.46.161.208) |
| 21:30:34 | × | enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
| 21:31:50 | → | zapa1 joins (~zapa1@95.64.72.60) |
| 21:32:58 | × | angelore quits (~u0_a291@5.46.161.208) (Client Quit) |
| 21:33:11 | → | angelore joins (~u0_a291@5.46.161.208) |
| 21:33:33 | <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 |
| 21:37:30 | × | angelore quits (~u0_a291@5.46.161.208) (Client Quit) |
| 21:38:25 | <mauke> | that sounds like something you'd hire someone for |
| 21:40:15 | <zapa1> | i am sorry ,English is not my first language ,thats why I may write something with a meaning I don't mean |
| 21:41:10 | <zapa1> | would you please tell me how finding a mentor works in the programming world? |
| 21:42:09 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 21:42:19 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
| 21:43:27 | Lord_of_Life_ | is now known as Lord_of_Life |
| 21:45:55 | → | elevenkb joins (~elevenkb@105.224.34.126) |
| 21:49:30 | <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. |
| 21:51:49 | → | CiaoSen joins (~Jura@p200300c9572d4e002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 21:52:18 | → | mikoto-chan joins (~mikoto-ch@2001:999:784:4cb8:d8e9:51ca:a70:b0e5) |
| 21:53:30 | <zapa1> | Is learning Haskell as the first language with relatively limited learning resources worth it? or I do learn python as most people recommend? |
| 21:54:13 | <zapa1> | I am very patient ,Its important for me to learn the fundamentals in the best possible way |
| 21:54:19 | <monochrom> | I disagree with "limited resources". |
| 21:55:05 | <monochrom> | Lack of spoonfeeding, sure. But spoonfeeding is the antithesis to learning anyway. |
| 21:55:44 | <monochrom> | As a corollary, with the abundance of spoonfeeding in python and javascript "resources", it's doubtful that most people learned anything. |
| 21:55:49 | <darkling> | Yeah, there's a lot of stuff for Haskell out there. |
| 21:56:20 | <monochrom> | Spoonfeeding and cookbooks. |
| 21:56:32 | darkling | is hungry now |
| 21:57:54 | <zapa1> | would you please recommend some books,please consider my lack of knowldge of basics and the fact i am self studying? |
| 21:58:07 | <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. |
| 21:58:19 | <Rembane> | And what fundamentals. |
| 21:58:25 | <monochrom> | Because python contains some very bad ideas. |
| 21:59:21 | → | mizlan joins (~mizlan@131.179.76.231) |
| 21:59:26 | × | harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
| 21:59:46 | <monochrom> | My http://www.vex.net/~trebla/haskell/learn-sources.html lists some stuff. It is not comprehensive, but it is what I know. |
| 22:01:20 | <oats> | monochrom, it's been too long since I did some haskell, my brain is hurting trying to expand that expression |
| 22:03:18 | <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. |
| 22:04:48 | <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. |
| 22:05:25 | → | merijn joins (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) |
| 22:05:58 | <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. |
| 22:06:53 | × | elevenkb quits (~elevenkb@105.224.34.126) (Ping timeout: 260 seconds) |
| 22:07:06 | <oats> | unless you wanna learn about how computers work lol |
| 22:07:23 | <oats> | though you could argue there's no "modern" languages that are well-suited for that |
| 22:08:08 | <darkling> | Yeah, if you want to do that, start with assembly language. (*Don't* start with assembly language :) ). |
| 22:08:40 | <mauke> | go full microcode |
| 22:08:44 | <monochrom> | Yeah arguably it's a lost cause to use any non-assembly language to learn how current hardware works. |
| 22:09:19 | <monochrom> | However, I also argue that "how computer works" ≠ "how current hardware works". |
| 22:10:24 | <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". |
| 22:11:13 | → | swamp_ joins (~zmt00@user/zmt00) |
| 22:11:23 | <monochrom> | So Haskell shows as much how computers work as C does. Sure, very drastically different models. But neither can claim superior authenticity. |
| 22:12:05 | <monochrom> | Given how even C doesn't do justice to real hardware today. |
| 22:12:13 | <dsal> | Also, what even is a processor? Do any machines natively support intel instruction sets? |
| 22:12:31 | × | takuan_dozo quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:12:42 | <darkling> | monochrom: Just learn to code in Rule 110... :) |
| 22:14:35 | × | merijn quits (~merijn@c-001-001-014.client.esciencecenter.eduvpn.nl) (Ping timeout: 264 seconds) |
| 22:14:39 | × | zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 255 seconds) |
| 22:15:07 | <ephemient> | not even assembly language matches how modern hardware works very well |
| 22:16:12 | <zapa1> | I am even ready to learn assembly language if it is necessary to be a good programmer |
| 22:16:28 | <monochrom> | Learn the scientific method. |
| 22:16:43 | <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 |
| 22:17:29 | <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 |
| 22:17:31 | <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. |
| 22:18:31 | <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. |
| 22:18:41 | × | ddellacosta quits (~ddellacos@static-198-44-136-184.cust.tzulo.com) (Ping timeout: 255 seconds) |
| 22:19:26 | <zapa1> | if you could start learning functional programming again , how would you start? |
| 22:19:35 | <monochrom> | For hardware, please join computer engineering instead :) |
| 22:19:52 | <[exa]> | zapa1: with a proof assistant :D |
| 22:20:28 | <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. |
| 22:20:50 | <zapa1> | what was your roadmap |
| 22:20:56 | <monochrom> | I have no regret in how I started. Best way to start ever. Algebraic thinking; induction proof thinking for recursion. |
| 22:21:13 | <dsal> | Read books, read code, write code, solve problems |
| 22:21:19 | <dsal> | :t forever |
| 22:21:21 | <lambdabot> | Applicative f => f a -> f b |
| 22:21:43 | <monochrom> | http://www.vex.net/~trebla/haskell/prerequisite.xhtml and http://www.cs.utoronto.ca/~trebla/CSCC24-2022-Summer/01-haskell-basic.html#synev |
| 22:22:59 | <mauke> | someone I knew in a perl channel asked for help with their programming homework, and it happened to be in ocaml |
| 22:23:10 | <monochrom> | Haha |
| 22:23:16 | <mauke> | and that's how I got into FP |
| 22:24:11 | <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. |
| 22:25:12 | <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) |
| 22:25:42 | <zapa1> | did you start with haskell? |
| 22:25:46 | <[exa]> | darkling: teach-yourself-scheme-in-fixnum-days is pretty good btw |
| 22:26:26 | <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 |
| 22:26:45 | <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 |
| 22:27:17 | <darkling> | My programming life hsa gone: BASIC, ARM assembler, C, C++, PHP, Java, Perl, Python, Erlang, JavaScript, Haskell. (With significant overlap in places) |
| 22:27:17 | <c_wraith> | ... as a gatekeeper for talking to them? |
| 22:27:19 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837) |
| 22:27:19 | <geekosaur> | don't recall how I ended up learning Haskell instead; I think it looked more interesting |
| 22:28:24 | <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 |
| 22:29:12 | <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 |
| 22:30:13 | <mauke> | my first contact with Haskell was me trying to build pugs (the perl6 interpreter), which was written in Haskell |
| 22:30:39 | <mauke> | it took forever, then the linker exhausted all available RAM and swap and died |
| 22:30:47 | <geekosaur> | heh |
| 22:31:10 | <geekosaur> | I had no trouble building pugs, it was modifying it that defeated me |
| 22:31:46 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5dd6:a35b:a6fd:3837) (Ping timeout: 252 seconds) |
| 22:32:13 | <mauke> | from what I recall, my first attempt at learning Haskell failed because I couldn't wrap my head around laziness and I/O |
| 22:32:21 | <zapa1> | It's a bit stressful to ask people with these degree of experience ,is Haskell easy to start with |
| 22:32:36 | <monochrom> | Yes. |
| 22:32:39 | <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) |
| 22:32:40 | <mauke> | the basic type system and syntax seemed pretty familiar, coming from OCaml |
| 22:32:55 | <dsal> | Haskell is easier to start with if you don’t have to shed a lot of bad habits and assumptions. |
| 22:33:34 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:33:35 | <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 |
| 22:33:54 | <dsal> | People with Experience often come in here asking how to translate very strange code to Haskell |
| 22:34:03 | × | cyphase quits (~cyphase@user/cyphase) (Ping timeout: 252 seconds) |
| 22:35:32 | <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 |
| 22:35:57 | <[exa]> | oh that reminds me of that new version of C, what was the name... |
| 22:35:58 | <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 |
| 22:36:00 | [exa] | hides |
| 22:36:57 | → | jmorris joins (uid537181@id-537181.uxbridge.irccloud.com) |
| 22:37:04 | <geekosaur> | another one? |
| 22:37:33 | <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. |
| 22:38:25 | <mauke> | Haskell BCPL Curry |
| 22:38:58 | → | cyphase joins (~cyphase@user/cyphase) |
| 22:43:32 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
| 22:44:45 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 22:48:06 | → | use-value1 joins (~Thunderbi@2a00:23c6:8a03:2f01:1128:5091:e8f3:b17a) |
| 22:49:43 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:1128:5091:e8f3:b17a) (Ping timeout: 256 seconds) |
| 22:49:43 | use-value1 | is now known as use-value |
| 22:50:27 | × | mcglk quits (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) (Quit: (zzz)) |
| 22:51:52 | → | mcglk joins (~mcglk@2601:600:9f7f:e300:4cfa:364e:e1e4:69ad) |
| 22:55:23 | × | mizlan quits (~mizlan@131.179.76.231) (Ping timeout: 264 seconds) |
| 22:57:01 | × | zapa1 quits (~zapa1@95.64.72.60) (Quit: Client closed) |
| 22:59:17 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 23:12:43 | → | zeenk joins (~zeenk@2a02:2f04:a014:8700::7fe) |
| 23:20:58 | × | Guest75 quits (~Guest75@178.141.160.158) (Ping timeout: 260 seconds) |
| 23:28:15 | × | fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 256 seconds) |
| 23:33:44 | × | segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 252 seconds) |
| 23:34:11 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 23:45:19 | → | unit73e joins (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) |
| 23:48:49 | <unit73e> | I just found out that GHC doesn't have that code of conduct fad nonsense and I'm glad it doesn't. code doesn't need that political crap. just my opinion. |
| 23:50:28 | <dsal> | Which codes of conduct have prevented you from participating? |
| 23:50:56 | <dsal> | Generally people who complain about "political crap" are just not affected by things. Which is pretty cool for you. |
| 23:51:57 | <byorgey> | https://github.com/ghc-proposals/ghc-proposals/blob/master/GRC.rst |
| 23:52:15 | → | Guest75 joins (~Guest75@178.141.149.12) |
| 23:52:34 | <monochrom> | Wait, so code doesn't need code? >:) |
| 23:53:10 | <unit73e> | true, but it does affect my patience when they put all over your face those code of conduct. just a little bit. |
| 23:53:54 | <unit73e> | ugh... so they are trying to put that annoying thing. very sad. well, whatever. |
| 23:54:03 | <monochrom> | IMO you should opine on codes of conducts on a case by case basis. Read an actual code of conduct before you like or dislike it. |
| 23:54:03 | <unit73e> | lol monochrom |
| 23:54:16 | <unit73e> | arch linux code of conduct is fine |
| 23:54:18 | <unit73e> | I guess |
| 23:54:26 | <dsal> | It's bizarre to complain about being asked to be polite and respectful. |
| 23:54:37 | <unit73e> | yeah but why have it? isn't that normal? |
| 23:54:38 | <monochrom> | Actually even better, observe how people actually interpret it and how they behave. |
| 23:54:57 | <dibblego> | observe how those who wrote it, adhere to it |
| 23:55:15 | <dsal> | It should be normal, but it clearly hasn't been. There are lots of toxic projects that have driven out good people for bad reasons. |
| 23:55:33 | → | ub joins (~Thunderbi@p548c9ce5.dip0.t-ipconnect.de) |
| 23:55:49 | <unit73e> | you won't stop conflicts with a code of conduct, polite or not |
| 23:55:58 | <unit73e> | just saying |
| 23:56:12 | <dsal> | Which codes of conduct disallows conflict? |
| 23:56:13 | <unit73e> | british are experts at being polite asshats |
| 23:56:19 | <c_wraith> | But you can clearly establish a policy for what you're going to do about conflicts up front. |
| 23:56:25 | <c_wraith> | And that's way better than not doing so |
| 23:56:29 | <monochrom> | You may as well ask why the UN has a charter of human rights, why countries have constitutions, why some governments distort those constitutions... |
| 23:56:35 | × | ubert quits (~Thunderbi@p200300ecdf264e3f7f9ba4aff8511836.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 23:56:35 | ub | is now known as ubert |
| 23:56:50 | <unit73e> | nah I disagree, I rather not have anything. but it's not my project, so not my call. |
| 23:57:26 | <byorgey> | then why come in here and immediately start complaining about it? |
| 23:57:33 | <unit73e> | because reasons |
| 23:57:35 | × | acidjnk_new quits (~acidjnk@p200300d6e715c483e1c7cd94b291a585.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 23:57:43 | byorgey | suggests we get back to discussing Haskell |
| 23:57:56 | <unit73e> | fair enough |
| 23:58:02 | <monochrom> | I would love to rhetocially ask "aren't human rights normal and universal and tautological, why do we need to state them" but clearly in the real world we see tons of governments disrepecting human rights. |
| 23:58:46 | <monochrom> | ObHaskell: Someone in haskell-cafe asked why we need monad laws, too, "isn't it common sense?" |
| 23:59:14 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 23:59:38 | <monochrom> | Fortunately, no, I have seen a blog article teaching an unlawful but intuitive monad instance. |
| 23:59:56 | <unit73e> | I'd say no, monad laws are clear and objective |
All times are in UTC on 2023-01-24.