Home liberachat/#haskell: Logs Calendar

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.