Home liberachat/#haskell: Logs Calendar

Logs on 2021-11-17 (liberachat/#haskell)

00:02:55 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
00:05:02 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish)
00:06:14 × Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
00:06:34 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
00:08:03 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
00:10:51 eruditass joins (uid248673@uxbridge.irccloud.com)
00:13:48 Flonk joins (~Flonk@vps-zap441517-1.zap-srv.com)
00:14:14 × Flonk quits (~Flonk@vps-zap441517-1.zap-srv.com) (Client Quit)
00:15:31 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish)
00:16:06 Flonk joins (~Flonk@vps-zap441517-1.zap-srv.com)
00:16:22 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
00:19:33 EvanR joins (~evan@user/evanr)
00:19:59 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
00:20:19 alzgh joins (~alzgh@user/alzgh)
00:20:58 × Guest42 quits (~Guest42@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed)
00:21:59 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 250 seconds)
00:29:10 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish)
00:30:13 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds)
00:30:28 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:31:31 × vysn quits (~vysn@user/vysn) (Ping timeout: 250 seconds)
00:31:45 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
00:34:59 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
00:38:27 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
00:38:27 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
00:38:27 wroathe joins (~wroathe@user/wroathe)
00:38:42 lavaman joins (~lavaman@98.38.249.169)
00:43:00 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
00:43:17 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
00:44:24 × _________ quits (~nobody@user/noodly) (Ping timeout: 268 seconds)
00:44:47 × mark__ quits (~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
00:45:23 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 250 seconds)
00:45:25 _________ joins (~nobody@user/noodly)
00:46:39 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
00:49:47 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
00:52:17 × EvanR quits (~evan@user/evanr) (Quit: Leaving)
00:56:19 mark__ joins (~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de)
00:58:26 mvk joins (~mvk@2607:fea8:5cc3:e900::df92)
01:00:54 EvanR joins (~evan@user/evanr)
01:01:49 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
01:11:52 × alx741 quits (~alx741@181.196.68.87) (Ping timeout: 256 seconds)
01:12:20 <remexre> is there a type family of kind Nat -> Symbol?
01:16:51 <EvanR> ehm what would that do, print the thing out in base ten or something xD
01:17:32 <remexre> yeah
01:17:34 <remexre> exactly that
01:17:42 lavaman joins (~lavaman@98.38.249.169)
01:18:47 <EvanR> I'm sure it's possible
01:19:02 <awpr> it probably became possible to write in base-4.16.0.0 with the addition of AppendSymbol and ConsSymbol
01:19:44 <awpr> it's not gonna be super well-behaved in polymorphic contexts, though
01:20:57 <dsal> If you want to print in base10, you're going to have to wait for at least 6 more major releases.
01:26:11 alx741 joins (~alx741@181.196.69.19)
01:26:18 × moet quits (~moet@mobile-166-171-249-243.mycingular.net) (Ping timeout: 265 seconds)
01:27:58 moet joins (~moet@mobile-166-170-38-150.mycingular.net)
01:30:16 <remexre> oh, can you not use ConsSymbol in instances?
01:30:27 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 250 seconds)
01:32:40 jbox joins (~jbox@user/jbox)
01:36:20 <awpr> on the RHS of a type family instance? probably just needs UndecidableInstances
01:38:03 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
01:39:06 <remexre> looks like no
01:39:30 <moet> t
01:40:53 mimmy_ joins (~mimmy@72.142.88.18)
01:42:01 <ozzloy_> https://paste.tomsmeding.com/qEdr8PSc line 64, i created an answer for finding the minimum and maximum. i'd like to improve on it.
01:42:59 <ozzloy_> for example, one thing i'd like to do is use foldr, but i'm not sure how to create the function to send to foldr
01:43:04 <awpr> remexre: AppendSymbol in a type family instance RHS worked fine for me (I tried on a GHC version before ConsSymbol was added, so couldn't try that). what's the error?
01:43:26 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
01:43:27 <remexre> Illegal type synonym family application ‘ConsSymbol'_' (ToString n)’ in instance: HasField (ConsSymbol '_' (ToString n)) a b
01:43:36 × mimmy quits (~mimmy@146.70.75.156) (Ping timeout: 256 seconds)
01:43:43 <ozzloy_> line 59 seems like a good function, but i'd have to turn the initial list into a list of pairs
01:45:44 <jackdk> Is there a common name for this trick: writing `instance a ~ X => FooClass (Bar a)` instead of `instance FooClass (Bar X)`?
01:45:52 <EvanR> ozzloy_, you've nerd sniped me
01:47:42 <ozzloy_> EvanR, cool!
01:47:52 <awpr> oh, that's not the RHS of an instance but an instance head. yeah, you can't have type families in instance heads (presumably because GHC would have to compute the inverse of the type family to figure out whether the instance matched)
01:48:02 <ozzloy_> the code at the bottom was from someone in here. i should have written the name
01:48:11 <ozzloy_> from 85 and below
01:48:27 <ozzloy_> i'm not sure what it means, exactly, but i believe it addresses this problem
01:48:32 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
01:48:32 <remexre> awpr: hm, is there any way to like, get it to do that :P (at least for ConsSymbol and (1 +))
01:51:03 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.3)
01:51:21 <awpr> I don't think so, without changing the underlying kind to something that has cons/succ as data constructors
01:52:23 <awpr> for `HasField`, seems like you're kinda stuck since it's built into `base`. for things involving arithmetic, peano naturals tend to behave better than the built-in `Nat`s in that regard
01:53:14 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
01:55:58 <ozzloy_> https://paste.tomsmeding.com/Z0USB0gg everyK, line 109, is there a pattern matching way to say the two arguments are the same value?
01:58:56 <monochrom> No.
01:59:30 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:00:53 <EvanR> heh, "non-linear pattern"
02:01:27 <sm> I think it must be f a b | a==b = ...
02:02:20 <EvanR> you gotta admit that feature would be interesting, among other cool pattern match ideas not implemented in haskell
02:04:06 unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
02:08:06 × alx741 quits (~alx741@181.196.69.19) (Quit: alx741)
02:10:12 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
02:10:13 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
02:10:13 wroathe joins (~wroathe@user/wroathe)
02:12:24 <monochrom> Eh, I like Steve Buscemi too.
02:13:31 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
02:14:55 zaquest joins (~notzaques@5.130.79.72)
02:15:02 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
02:18:07 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:18:07 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:18:07 finn_elija is now known as FinnElija
02:18:23 perrierjouet is now known as Charles_Attends
02:24:20 alzgh joins (~alzgh@user/alzgh)
02:32:57 <EvanR> wth
02:34:02 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
02:34:15 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
02:37:43 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
02:39:08 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
02:40:06 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
02:40:44 × rtsn quits (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 265 seconds)
02:41:16 rtsn joins (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se)
02:47:53 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
02:48:42 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:48:57 × xff0x quits (~xff0x@port-92-195-74-242.dynamic.as20676.net) (Ping timeout: 265 seconds)
02:50:29 xff0x joins (~xff0x@2001:1a81:5370:a900:85a3:6303:a932:32a1)
02:52:02 × edwtjo quits (~edwtjo@user/edwtjo) (Ping timeout: 260 seconds)
03:05:53 edwtjo joins (~edwtjo@h-109-228-137-133.A213.priv.bahnhof.se)
03:05:53 × edwtjo quits (~edwtjo@h-109-228-137-133.A213.priv.bahnhof.se) (Changing host)
03:05:53 edwtjo joins (~edwtjo@user/edwtjo)
03:06:32 × JimL quits (~quassel@89-162-2-132.fiber.signal.no) (Ping timeout: 240 seconds)
03:08:03 jkaye joins (~jkaye@2601:281:8300:7530:c291:7247:e8a1:1137)
03:09:15 × boxscape_ quits (~boxscape_@i59F67A72.versanet.de) (Ping timeout: 265 seconds)
03:09:18 × mark__ quits (~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
03:14:28 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
03:14:53 <ozzloy_> https://paste.tomsmeding.com/0movjx2y when line 105 says "(Ord a)" the compiler says it should be "(Num a)" and when line 105 says "(Num a)" the compiler wants "(Ord a)"
03:15:24 × pfurla quits (~pfurla@2804:14d:5c81:4104:a029:e568:3465:8d9f) (Quit: gone to sleep. ZZZzzz…)
03:15:58 <ozzloy_> sm, oh, i'll try that
03:16:00 pfurla joins (~pfurla@2804:14d:5c81:4104:a029:e568:3465:8d9f)
03:17:19 <geekosaur> you need both
03:17:19 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 268 seconds)
03:18:13 <geekosaur> (Num does *not* imply Ord, because of types like Complex Double which are Num but not meaningfully Ord. except we have an Ord for it anyway because Maps need it. meh)
03:19:01 <dolio> People really shouldn't be using Complex Double as a map key.
03:20:25 <ozzloy_> what's the syntax for putting in both? i tried a few things. also, what word or phrase would i search to find out how to specify both?
03:20:27 <geekosaur> anyway you need Ord because you do a comparison via (<), and you need Num because you both substitute i with 0 and compute (i + 1)
03:20:38 <geekosaur> (Num a, Ord a) => ...
03:20:45 <ozzloy_> thanks!
03:21:04 <ozzloy_> so let's say i didn't know that syntax. what would i search for to find it?
03:21:38 <geekosaur> the only thing I know is "constraint tuple" but just the phrase would give you the answer :(
03:22:00 <ozzloy_> ah, so those things are called constraints
03:22:08 <sm> ozzloy_: browsing the GHC user guide would be a good way
03:22:09 <ozzloy_> 'which the error message does say
03:22:22 <sm> browsing the haskell wiki would also find examples, possibly a bit quicker
03:22:27 <ozzloy_> oh wait, no it doesn't
03:22:30 <geekosaur> "haskell multiple constraints" seems to get decent answers
03:22:36 <ozzloy_> i thought i remember seeing that phrase though
03:22:38 <ozzloy_> thanks!
03:22:46 <ozzloy_> s/phrase/term/
03:23:03 <sm> browsing any large haskell codebase would be another way
03:23:35 sm meant haskell wikibook, not haskell wiki
03:24:46 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
03:27:36 <monochrom> I read a proper tutorial back then. Today there are proper textbooks, even better.
03:28:49 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:28:49 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:28:49 finn_elija is now known as FinnElija
03:30:02 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
03:30:49 bliminse_ joins (~bliminse@host86-188-36-178.range86-188.btcentralplus.com)
03:30:55 × bliminse quits (~bliminse@host86-185-253-43.range86-185.btcentralplus.com) (Ping timeout: 250 seconds)
03:31:26 × mimmy_ quits (~mimmy@72.142.88.18) (Quit: WeeChat 3.3)
03:32:37 <EvanR> the haskell report explains all syntax (except for extensions...)
03:33:07 <ozzloy_> https://paste.tomsmeding.com/wzhWEcXe everyK now works!
03:33:27 <ozzloy_> i have started "learn you a haskell' a couple times
03:33:53 <monochrom> Pretty sure it covers that too somewhere.
03:34:06 <ozzloy_> probably
03:34:26 <ozzloy_> knowing that those are called "constraints" i think is going to be the most useful
03:34:47 <ozzloy_> in terms of quickly finding the right syntax for related things in the future
03:34:47 <monochrom> Maybe not exactly (Num a, Ord a) letter by letter, but surely the concept of having two constraints and the syntax for it.
03:35:14 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
03:35:28 <monochrom> And maybe not the exact wording "constraint" but surely "(XXX a, YYY a)" in which XXX and YYY are classes.
03:35:28 <ozzloy_> heh, it would be funny if it literally had "(Num a, Ord a) somewhere
03:36:55 <ozzloy_> yeah, "haskell multiple classes" gave a stackoverflow with the right syntax
03:37:03 <ozzloy_> thanks all
03:38:32 renzhi joins (~xp@2607:fa49:6500:b100::6e7f)
03:42:47 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
03:42:54 <ozzloy_> https://paste.tomsmeding.com/4XINUqY3 lol, i'm trying to reverse the result of everyK, but when i search "haskell reverse" there's a bunch of results about how to write reverse. so i guessed 'reverse l' and that worked
03:43:57 <ozzloy_> also, should everyK 2 [1,2,3,4,5] return [2,4] or [1,3,5] ? the problem statement doesn't say, so this is more of a "what's your opinion?".
03:46:08 × xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
03:46:45 <EvanR> > reverse [2,3,5,7,11]
03:46:46 <lambdabot> [11,7,5,3,2]
03:47:49 <ozzloy_> thanks
03:48:02 <EvanR> even putting a number in for k and asking the question is problematic
03:48:36 <EvanR> e.g. return every 2nd item, return every 1st item, return every 0th item?
03:49:13 <EvanR> ok it says k is positive
03:49:21 <ozzloy_> yeah, we need to switch as a species to 0 based indexing for everything
03:50:51 × moet quits (~moet@mobile-166-170-38-150.mycingular.net) (Ping timeout: 250 seconds)
03:51:15 × waleee quits (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Quit: WeeChat 3.3)
03:51:22 <EvanR> in [0..] every "5th item" is like 0, 5, 10, 15, ... my opinion xD
03:52:17 <EvanR> even though, the 5th item (4) isn't there
03:52:31 moet joins (~moet@mobile-166-170-38-148.mycingular.net)
03:53:28 <EvanR> 4, 9, 14, 19 is just ridiculous!
03:53:38 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
03:55:39 × td_ quits (~td@94.134.91.233) (Ping timeout: 265 seconds)
03:57:20 td_ joins (~td@94.134.91.227)
03:59:31 × pfurla quits (~pfurla@2804:14d:5c81:4104:a029:e568:3465:8d9f) (Quit: gone to sleep. ZZZzzz…)
04:00:53 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
04:08:31 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
04:08:48 img joins (~img@user/img)
04:09:31 <dsal> How come there's a reverse function but not a forward function?
04:09:51 <dsal> :t forward
04:09:52 <lambdabot> [a] -> [a]
04:09:57 <dsal> > forward [1, 2, 3]
04:09:58 <lambdabot> [1,2,3]
04:10:26 dlbh^ joins (~dlbh@h178.173.139.63.static.ip.windstream.net)
04:11:27 <EvanR> I know. There's even a "sideways"
04:11:33 <EvanR> > transpose [1,2,3]
04:11:34 <lambdabot> error:
04:11:34 <lambdabot> • No instance for (Num [()]) arising from a use of ‘e_1123’
04:11:34 <lambdabot> • In the expression: e_1123
04:11:43 <EvanR> shucks
04:12:21 <dsal> Sideways is pretty neat.
04:12:31 × jkaye quits (~jkaye@2601:281:8300:7530:c291:7247:e8a1:1137) (Ping timeout: 250 seconds)
04:15:42 <Axman6> we have a filter, but where's unfilter? Give me back what's been taken!
04:17:15 <EvanR> for that you need reversible computing, and we come full circle
04:17:23 × jle` quits (~jle`@2603-8001-3b02-84d4-0000-0000-0000-025d.res6.spectrum.com) (Quit: WeeChat 3.3)
04:22:44 jle` joins (~jle`@2603-8001-3b02-84d4-0000-0000-0000-025d.res6.spectrum.com)
04:24:16 × EvanR quits (~evan@user/evanr) (Quit: Leaving)
04:24:21 <dsal> That sounds a little bit like something I did in a codebase... What is that.
04:27:22 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
04:27:33 × dlbh^ quits (~dlbh@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 265 seconds)
04:27:34 <dsal> Oh yeah. I use that for some enum mapping in postgres instances. Given an `a -> ByteString` I could make a `ByteString -> Maybe a` for bidirectional coding.
04:27:41 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 250 seconds)
04:28:26 dlbh^ joins (~dlbh@h178.173.139.63.static.ip.windstream.net)
04:31:04 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
04:32:06 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:32:15 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
04:33:47 × mvk quits (~mvk@2607:fea8:5cc3:e900::df92) (Ping timeout: 268 seconds)
04:34:58 Guest80 joins (~Guest80@pd9ed7c7f.dip0.t-ipconnect.de)
04:35:04 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
04:37:03 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
04:37:03 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
04:37:03 wroathe joins (~wroathe@user/wroathe)
04:37:20 mbuf joins (~Shakthi@122.162.1.56)
04:37:47 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
04:37:52 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
04:38:24 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
04:40:59 <sm> which is the best gui viewer for profiles currently ?
04:44:35 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
04:45:21 deadmarshal joins (~deadmarsh@95.38.119.2)
04:47:48 <sm> maybe maerwald will add it to ghcup, and I'll stop having to ask this
04:51:05 × MoC_ quits (~moc@user/moc) (Ping timeout: 250 seconds)
04:51:13 MoC joins (~moc@user/moc)
05:00:54 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds)
05:02:26 boxscape_ joins (~boxscape_@i59F67A8D.versanet.de)
05:02:57 <ozzloy_> :t sidwats [1,2,3]
05:02:58 <lambdabot> error:
05:02:58 <lambdabot> Variable not in scope: sidwats :: [a0] -> t
05:03:16 <ozzloy_> :t sidways [1,2,3]
05:03:17 <lambdabot> error:
05:03:17 <lambdabot> Variable not in scope: sidways :: [a0] -> t
05:03:24 <ozzloy_> :t sideways [1,2,3]
05:03:25 <lambdabot> error:
05:03:25 <lambdabot> Variable not in scope: sideways :: [a0] -> t
05:03:49 <Axman6> ok, really dumb question - how do you run ghci so it can see pckages you have installed with cabal new-install foo
05:04:17 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
05:04:41 <ozzloy_> :t transpose [[1],[2],[3]]
05:04:42 <lambdabot> Num a => [[a]]
05:05:02 <ozzloy_> > transpose [[1],[2],[3]]
05:05:04 <lambdabot> [[1,2,3]]
05:05:18 <ozzloy_> transpose [[1,2,3]]
05:05:25 <ozzloy_> > transpose [[1,2,3]]
05:05:26 <lambdabot> [[1],[2],[3]]
05:05:45 <glguy> Axman6: I do: cabal repl --build-dep foo
05:06:43 <Axman6> huh, ok, I have never done that
05:07:09 <Axman6> I sense hacks: fake-package-0
05:10:47 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
05:11:15 sm discovers one command to generate a time-and-space profile from your default executable:
05:11:15 sm stack run --profile --rts-options -p
05:11:36 econo joins (uid147250@user/econo)
05:12:05 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
05:12:29 stiell joins (~stiell@gateway/tor-sasl/stiell)
05:18:07 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
05:18:07 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
05:18:07 wroathe joins (~wroathe@user/wroathe)
05:22:39 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds)
05:23:49 <dsal> > transpose ["dog", "ole", "mem"]
05:23:51 <lambdabot> ["dom","ole","gem"]
05:43:39 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
05:45:56 × renzhi quits (~xp@2607:fa49:6500:b100::6e7f) (Ping timeout: 268 seconds)
05:47:51 × deadmarshal quits (~deadmarsh@95.38.119.2) (Ping timeout: 250 seconds)
05:52:53 × aegon quits (~mike@174.127.249.180) (Remote host closed the connection)
05:53:32 × Guest80 quits (~Guest80@pd9ed7c7f.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
05:58:41 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 250 seconds)
06:02:36 × sagax quits (~sagax_nb@user/sagax) (Read error: Connection reset by peer)
06:09:28 × n8chan quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Read error: No route to host)
06:10:26 n8chan joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
06:10:47 × whatsupdoc quits (uid509081@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
06:14:41 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 245 seconds)
06:16:47 × moet quits (~moet@mobile-166-170-38-148.mycingular.net) (Ping timeout: 265 seconds)
06:19:33 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
06:21:43 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
06:22:18 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
06:25:26 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
06:25:50 ChaiTRex joins (~ChaiTRex@user/chaitrex)
06:26:51 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
06:29:07 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:31:50 Feuermagier_ joins (~Feuermagi@2a02:2488:4211:3400:b6fd:ec18:acf6:f1a8)
06:32:36 × christiaanb quits (sid84827@lymington.irccloud.com) (Ping timeout: 256 seconds)
06:34:02 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 268 seconds)
06:34:11 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
06:35:49 christiaanb joins (sid84827@lymington.irccloud.com)
06:36:59 × philpax_ quits (sid516926@lymington.irccloud.com) (Ping timeout: 264 seconds)
06:37:24 sagax joins (~sagax_nb@user/sagax)
06:38:50 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
06:40:10 philpax_ joins (sid516926@lymington.irccloud.com)
06:41:13 <ozzloy_> https://paste.tomsmeding.com/OfRIGoPO i'd like to rewrite minAndMax with foldr. i wrote one version which uses foldr, but does 2n comparisons
06:41:37 <ozzloy_> and i wrote a step function that would do 3n/2 comparisons instead
06:41:49 <ozzloy_> that's minAndMaxHelper
06:42:49 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
06:43:11 <ozzloy_> well, it's currently written as a function that takes 4 inputs, but it could easily be 2 tuples instead
06:43:15 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
06:43:24 <ozzloy_> but i don't know how to convert the incoming list into a list of tuples
06:43:44 <ozzloy_> even so, it feels like i'm missing something here
06:44:44 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
06:46:13 Vajb joins (~Vajb@nalkaylds2h97nzof-2.v6.elisa-mobile.fi)
06:49:02 × mrianbloom quits (sid350277@ilkley.irccloud.com) (Ping timeout: 256 seconds)
06:49:02 × teehemkay quits (sid14792@lymington.irccloud.com) (Ping timeout: 256 seconds)
06:49:02 teehemkay_ is now known as teehemkay
06:49:27 × ephemient quits (uid407513@lymington.irccloud.com) (Ping timeout: 268 seconds)
06:49:27 × jonrh quits (sid5185@ilkley.irccloud.com) (Ping timeout: 268 seconds)
06:50:00 ephemient joins (uid407513@lymington.irccloud.com)
06:52:12 mrianbloom joins (sid350277@ilkley.irccloud.com)
06:52:26 teehemkay_ joins (sid14792@lymington.irccloud.com)
06:52:39 jonrh joins (sid5185@ilkley.irccloud.com)
06:54:26 deadmarshal joins (~deadmarsh@95.38.119.2)
07:00:06 × superbil quits (~superbil@1-34-176-171.hinet-ip.hinet.net) (Quit: WeeChat 3.3)
07:00:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:01:31 rkrishnan joins (~user@122.167.19.65)
07:10:16 mmhat joins (~mmh@55d47379.access.ecotel.net)
07:10:44 retroid_ joins (~retro@97e2ba2e.skybroadband.com)
07:10:51 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
07:13:30 × retro_ quits (~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds)
07:14:00 aegon joins (~mike@174.127.249.180)
07:15:45 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
07:23:31 superbil joins (~superbil@1-34-176-171.hinet-ip.hinet.net)
07:23:55 Guest80 joins (~Guest80@pd9ed7c7f.dip0.t-ipconnect.de)
07:26:39 × deadmarshal quits (~deadmarsh@95.38.119.2) (Ping timeout: 250 seconds)
07:31:34 <ozzloy_> anyone in here use spacemacs?
07:34:26 michalz joins (~michalz@185.246.204.57)
07:34:37 deadmarshal joins (~deadmarsh@95.38.119.2)
07:35:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
07:35:11 × xff0x quits (~xff0x@2001:1a81:5370:a900:85a3:6303:a932:32a1) (Ping timeout: 264 seconds)
07:35:41 xff0x joins (~xff0x@2001:1a81:5370:a900:40b1:f398:28bb:45d6)
07:37:39 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
07:38:47 × jbox quits (~jbox@user/jbox) (Ping timeout: 264 seconds)
07:39:39 neurocyte0132889 joins (~neurocyte@45.136.170.104)
07:39:39 × neurocyte0132889 quits (~neurocyte@45.136.170.104) (Changing host)
07:39:39 neurocyte0132889 joins (~neurocyte@user/neurocyte)
07:41:15 × DoseMeBoofy quits (~cads@ip-64-72-99-234.lasvegas.net) (Ping timeout: 268 seconds)
07:47:04 retro_ joins (~retro@97e2ba2e.skybroadband.com)
07:48:19 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
07:50:30 × retroid_ quits (~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds)
07:51:35 cads joins (~cads@ip-64-72-99-234.lasvegas.net)
07:53:27 <johnjay> no
07:53:41 <tomsmeding> ozzloy_: pairList (a:b:xs) = (a,b) : pairList xs ; pairList [] = [] ; pairList _ = error "odd length input"
07:53:43 <tomsmeding> :p
07:54:17 <tomsmeding> if you want to use one foldr reduction only, you could add a boolean to the state, indicating whether you're in the first or the second component of the pair
07:54:38 <johnjay> is miranda similar to haskell? the paper i'm looking at has examples in miranda
07:54:50 <ozzloy_> i ... could
07:55:05 fef joins (~thedawn@user/thedawn)
07:55:23 <ozzloy_> then i have to check that boolean, which seems like it defeats the 3n/2 thing
07:55:41 <ozzloy_> tomsmeding, thanks for the feedback
07:56:00 <tomsmeding> depending on whether you count that as a comparison :D
07:56:19 <tomsmeding> johnjay: haskell is inspired by miranda iirc
07:56:27 <ozzloy_> to check a boolean's value, doesn't something somewhere get compared with 0?
07:56:42 <johnjay> ok.
07:56:56 <tomsmeding> yeah, but to fold over a list, you also have to compare the top-level constructor with [] and with (:) each time ;)
07:56:58 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
07:57:06 alzgh joins (~alzgh@user/alzgh)
07:57:11 <tomsmeding> which happens implicitly in pattern matching
07:57:19 <ozzloy_> ah
07:57:38 <ozzloy_> it was always more than 3n/2
07:57:39 <tomsmeding> and presumably that one doesn't count
07:57:42 <ozzloy_> always has been
07:57:48 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
07:57:48 <tomsmeding> always will be
07:57:56 <ozzloy_> the mask falls away
07:58:16 <tomsmeding> and the light reveals itself
07:58:17 lortabac joins (~lortabac@2a01:e0a:541:b8f0:d1a7:a86b:c4f9:1801)
07:59:21 <ozzloy_> thanks. the truth is brutal, but i prefer living in reality
07:59:31 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
08:00:01 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
08:00:19 <ozzloy_> well, for reals, thanks. i'm off to bed
08:00:35 <tomsmeding> have a good night :)
08:02:37 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
08:07:17 × hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection)
08:08:43 hololeap joins (~hololeap@user/hololeap)
08:09:17 gehmehgeh joins (~user@user/gehmehgeh)
08:11:49 × chomwitt quits (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) (Remote host closed the connection)
08:12:08 chomwitt joins (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374)
08:14:14 × rtsn quits (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 265 seconds)
08:14:53 rtsn joins (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se)
08:16:08 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:21:57 chexum_ joins (~quassel@gateway/tor-sasl/chexum)
08:21:58 × deadmarshal quits (~deadmarsh@95.38.119.2) (Ping timeout: 256 seconds)
08:21:59 × fef quits (~thedawn@user/thedawn) (Quit: Leaving)
08:22:00 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 276 seconds)
08:22:51 JimL joins (~quassel@89-162-2-132.fiber.signal.no)
08:24:52 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 265 seconds)
08:25:18 × boxscape_ quits (~boxscape_@i59F67A8D.versanet.de) (Quit: Connection closed)
08:28:13 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
08:28:40 × hololeap quits (~hololeap@user/hololeap) (Read error: Connection reset by peer)
08:29:59 hololeap joins (~hololeap@user/hololeap)
08:37:53 cfricke joins (~cfricke@user/cfricke)
08:38:49 mc47 joins (~mc47@xmonad/TheMC47)
08:40:48 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
08:43:53 vysn joins (~vysn@user/vysn)
08:47:13 <Profpatsch> If I export Foo(getFoo) instead of Foo(Foo, getFoo), will I still be able to construct Foo outside of the module?
08:47:31 <Profpatsch> (I want to prevent that)
08:47:36 boxscape_ joins (~boxscape_@134.171.69.87)
08:50:19 × aarchi quits (sid486183@uxbridge.irccloud.com) (Ping timeout: 268 seconds)
08:52:31 aarchi joins (sid486183@uxbridge.irccloud.com)
08:52:35 × Codaraxis quits (~Codaraxis@user/codaraxis) (Quit: Leaving)
08:53:06 whatsupdoc joins (uid509081@hampstead.irccloud.com)
08:54:14 <tomsmeding> no, because the constructor is not exported
08:54:16 timCF joins (~timCF@200-149-20-81.sta.estpak.ee)
08:54:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:56:07 <tomsmeding> barring unsafeCoerce of course
08:56:17 <tomsmeding> normal 'coerce' seems to be protected!
08:57:34 <tomsmeding> Profpatsch: note that while not exporting the constructor prevents well-meaning people from constructing a Foo; malicious people can do unsafeCoerce and get a Foo anyway
08:57:58 <boxscape_> :o how dare they
08:58:21 <tomsmeding> still better than the enforcement of 'private' in C++ :p
08:58:31 <boxscape_> true
08:58:46 <tomsmeding> boxscape_: offtopic, I wonder, why the _
08:59:02 <boxscape_> because I'm too lazy to log into matrix, where I'm logged in as boxscape
08:59:12 <tomsmeding> ah :)
09:00:06 × santiagopim[m] quits (~santiagop@2001:470:69fc:105::e57d) (Quit: You have been kicked for being idle)
09:03:37 <lortabac> Profpatsch: you may still be able to construct a Foo if it is an instance of Num, IsString, IsList...
09:05:43 <Profpatsch> tomsmeding: strange, it felt like Foo(getFoo) would also allow construction, at least I didn’t get an error.
09:06:03 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
09:07:01 <tomsmeding> Profpatsch: seeing is believing
09:07:50 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
09:08:13 <merijn> tomsmeding: Not with current levels of generative ML :p
09:09:09 <kritzefitz> Profpatsch: Is "getFoo" a record field of "Foo"? In that case you can use it to update that field in existing "Foo"s outside of the module.
09:09:53 chele joins (~chele@user/chele)
09:11:51 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
09:13:07 × timCF quits (~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving)
09:15:57 zava joins (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
09:16:36 × zava quits (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Client Quit)
09:16:52 zava joins (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
09:16:58 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
09:17:32 geekosaur joins (~geekosaur@xmonad/geekosaur)
09:25:04 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
09:28:05 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
09:36:51 × ByronJohnson quits (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Ping timeout: 250 seconds)
09:37:01 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
09:44:42 × rtsn quits (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 256 seconds)
09:45:07 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
09:45:31 rtsn joins (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se)
09:45:58 <Profpatsch> kritzefitz: yeah it is
09:46:13 <Profpatsch> But it looked to me like (Foo "test") also worked
09:50:16 <boxscape_> I finally understand how Applicative is a Monoid
09:50:17 × Vajb quits (~Vajb@nalkaylds2h97nzof-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
09:50:20 <boxscape_> pure :: Identity ~> f
09:50:31 <boxscape_> (<*>) :: f `Day` f ~> f
09:50:55 <boxscape_> (I think that's <*> anyway)
09:51:20 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
09:52:08 <boxscape_> (type f ~> g = forall a . f a -> g a)
09:54:02 <lortabac> boxscape_: I find this alternative formulation of Applicative simpler to understand: https://wiki.haskell.org/Typeclassopedia#Alternative_formulation
09:54:27 <boxscape_> interesting
09:54:33 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
09:55:16 deadmarshal joins (~deadmarsh@95.38.119.2)
09:55:57 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
09:56:18 zincy_ joins (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3)
09:57:10 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
09:58:09 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
09:59:02 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:00:35 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:00:44 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:01:03 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
10:02:17 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:02:25 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:04:49 × cads quits (~cads@ip-64-72-99-234.lasvegas.net) (Ping timeout: 250 seconds)
10:05:45 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:05:53 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:07:13 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:07:20 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
10:07:21 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:07:40 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:07:47 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:07:50 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:08:04 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:08:20 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
10:09:26 <kuribas> dminuoso: good news, my pr was merged :)
10:09:46 <kuribas> dminuoso: the one that adds the label to the error message in cassava.
10:10:12 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Remote host closed the connection)
10:10:20 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:11:21 × alzgh quits (~alzgh@user/alzgh) (Ping timeout: 256 seconds)
10:12:20 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
10:14:11 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Ping timeout: 268 seconds)
10:14:54 ubert joins (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
10:15:08 × aegon quits (~mike@174.127.249.180) (Remote host closed the connection)
10:16:45 <dminuoso> kuribas: Yeah just saw.
10:17:02 <dminuoso> Im tempted to just attoparsec through this csv instead though
10:17:11 × rtpg quits (sid443069@ilkley.irccloud.com) (Ping timeout: 264 seconds)
10:17:12 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
10:17:29 <dminuoso> With a first lexing phase, naively it seems rather simple
10:17:34 × davetapley quits (sid666@uxbridge.irccloud.com) (Ping timeout: 256 seconds)
10:17:34 rtpg joins (sid443069@ilkley.irccloud.com)
10:17:50 <dminuoso> Then I can simply use <?> to annotate parts
10:18:08 × gonz____ quits (sid304396@lymington.irccloud.com) (Ping timeout: 256 seconds)
10:18:42 × christiaanb quits (sid84827@lymington.irccloud.com) (Ping timeout: 256 seconds)
10:18:42 × bjs quits (sid190364@user/bjs) (Ping timeout: 256 seconds)
10:18:42 × Pent quits (sid313808@lymington.irccloud.com) (Ping timeout: 256 seconds)
10:18:42 × awpr quits (uid446117@lymington.irccloud.com) (Ping timeout: 256 seconds)
10:19:06 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Quit: Leaving.)
10:19:14 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:19:40 bjs joins (sid190364@user/bjs)
10:19:41 christiaanb joins (sid84827@lymington.irccloud.com)
10:19:41 awpr joins (uid446117@lymington.irccloud.com)
10:19:42 Pent joins (sid313808@lymington.irccloud.com)
10:20:45 davetapley joins (sid666@uxbridge.irccloud.com)
10:20:56 fef joins (~thedawn@user/thedawn)
10:21:23 gonz____ joins (sid304396@lymington.irccloud.com)
10:22:04 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:22:12 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:22:41 × zincy_ quits (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection)
10:23:17 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:23:27 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:24:32 <kuribas> dminuoso: for my libraries, I am going to always use structured errors, instead of just `String`.
10:25:09 alzgh joins (alzgh@user/alzgh)
10:26:35 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:26:42 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:28:10 <Maxdamantus> Does that mean you're not allowed to change what errors are produced?
10:28:31 <Maxdamantus> Since that would presumably be breaking your API.
10:29:29 × alzgh quits (alzgh@user/alzgh) (Ping timeout: 256 seconds)
10:29:47 <Maxdamantus> (if the error just has an unstructured string, you should be able to change that because obviously noone is meant to match on a random string)
10:30:17 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:30:41 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:31:55 rond_ joins (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
10:32:04 × rond_ quits (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Client Quit)
10:32:12 rond_ joins (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
10:32:46 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:32:57 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:33:11 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:33:24 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:33:25 alzgh joins (~alzgh@user/alzgh)
10:33:44 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:33:58 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:34:01 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:34:07 <kuribas> Maxdamantus: Typically I have "MyError c", with a data constructor "CustomErr c", so you can add your own error type.
10:34:51 <kuribas> Maxdamantus: Or do you mean keeping backwards compatibility?
10:35:28 <kuribas> No, I may add data constructors if necessary, potentially breaking code.
10:35:51 <kuribas> Though it shouldn't change much once the API is stable.
10:36:05 chele_ joins (~chele@user/chele)
10:36:15 <Maxdamantus> Yes. Presumably the reason for structuring errors is that a user will match on the different errors, so they assume certain errors are produced under certain circumstances.
10:36:56 <kuribas> Indeed.
10:37:09 chele is now known as Guest6942
10:37:09 chele_ is now known as chele
10:37:17 <kuribas> But if the user only wants to catch some errors, it can be still backwards compatible.
10:37:19 <Maxdamantus> Linux isn't allowed to decide to replace EPERM with a different set of more granular permission errors.
10:38:02 <kuribas> like: case err of SomeErrorICareAbout foo bar -> process foo bar; _ -> otherCases
10:38:45 × Guest6942 quits (~chele@user/chele) (Ping timeout: 265 seconds)
10:39:07 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
10:39:21 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
10:40:32 <kuribas> Maxdamantus: for my SQL library, the error messages haven't changed lately.
10:40:32 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
10:42:17 <kuribas> Maxdamantus: https://hackage.haskell.org/package/hasqlator-mysql-0.1.0/docs/Database-MySQL-Hasqlator.html#t:SQLError
10:42:25 mark___ joins (~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de)
10:42:28 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
10:44:26 __monty__ joins (~toonn@user/toonn)
10:46:16 gentauro joins (~gentauro@user/gentauro)
10:47:27 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
10:48:17 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
10:48:17 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
10:50:22 <Maxdamantus> Does the `SQLError` data constructor include connection errors as well as errors produced by the SQL server (eg, SQL syntax error due to malformed query, or integrity constraint violation due to state of database)?
10:50:57 <Maxdamantus> I'd probably be inclined to be more granular in that case, but yeah, at some point you just have to have a string.
10:51:16 gentauro joins (~gentauro@user/gentauro)
10:53:05 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
10:53:11 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
10:53:19 mastarija joins (~mastarija@2a05:4f46:e06:ff00:a943:a997:c897:f5b)
10:53:55 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
10:54:30 <Maxdamantus> Oh, looks like there are different errors for those cases raised by mysql-haskell.
10:54:56 <kuribas> Maxdamantus: hmm, it looks like I am never throwing that one.
10:55:06 <kuribas> I might as well delete it then.
10:55:23 <kuribas> I guess my original idea was to rethrow the ones from mysql-haskell.
10:56:28 <kuribas> Maxdamantus: it's perhaps a bad example, because these are the kinds of errors you typically don't catch.
10:56:46 <Maxdamantus> Errors you don't catch should just be strings imo.
10:56:46 <kuribas> Maxdamantus: At least not in a granular way, you normally assume the queries are correct.
10:57:48 <kuribas> Perhaps... But it's easy to go from structured to a string. The other way is not true.
10:58:11 pfurla joins (~pfurla@177.142.247.67)
10:58:31 gentauro joins (~gentauro@user/gentauro)
10:58:56 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
11:00:35 alx741 joins (~alx741@181.196.69.19)
11:01:25 max22- joins (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
11:03:45 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:d1a7:a86b:c4f9:1801) (Ping timeout: 250 seconds)
11:04:39 lavaman joins (~lavaman@98.38.249.169)
11:05:23 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
11:06:25 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
11:09:08 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
11:10:10 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
11:11:04 × mastarija quits (~mastarija@2a05:4f46:e06:ff00:a943:a997:c897:f5b) (Quit: Leaving)
11:11:53 gentauro joins (~gentauro@user/gentauro)
11:13:50 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
11:14:58 pfurla_ joins (~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53)
11:16:47 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
11:16:53 gentauro joins (~gentauro@user/gentauro)
11:18:52 × pfurla quits (~pfurla@177.142.247.67) (Ping timeout: 265 seconds)
11:18:52 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
11:21:36 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
11:21:53 gentauro joins (~gentauro@user/gentauro)
11:22:57 × whatsupdoc quits (uid509081@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
11:23:10 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
11:25:00 × gonz____ quits (sid304396@lymington.irccloud.com) (Ping timeout: 256 seconds)
11:25:06 × acertain quits (sid470584@hampstead.irccloud.com) (Ping timeout: 245 seconds)
11:25:06 × amir quits (sid22336@user/amir) (Ping timeout: 268 seconds)
11:25:35 × whez quits (sid470288@lymington.irccloud.com) (Ping timeout: 264 seconds)
11:25:43 × integral quits (sid296274@user/integral) (Ping timeout: 268 seconds)
11:26:20 × bw quits (sid2730@user/betawaffle) (Ping timeout: 268 seconds)
11:26:20 × scav quits (sid309693@helmsley.irccloud.com) (Ping timeout: 268 seconds)
11:26:42 × cln quits (sid336875@ilkley.irccloud.com) (Ping timeout: 256 seconds)
11:27:34 × rtpg quits (sid443069@ilkley.irccloud.com) (Ping timeout: 268 seconds)
11:27:34 × glowcoil quits (sid3405@tinside.irccloud.com) (Ping timeout: 268 seconds)
11:27:48 cln joins (sid336875@ilkley.irccloud.com)
11:27:56 cv joins (~cv@103.142.31.135)
11:27:59 bw joins (sid2730@user/betawaffle)
11:28:11 × astra` quits (sid289983@user/amish) (Ping timeout: 268 seconds)
11:28:15 gonz____ joins (sid304396@lymington.irccloud.com)
11:28:18 acertain joins (sid470584@hampstead.irccloud.com)
11:28:18 amir joins (sid22336@user/amir)
11:28:46 integral joins (sid296274@user/integral)
11:28:47 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
11:28:48 × idnar quits (sid12240@debian/mithrandi) (Ping timeout: 268 seconds)
11:28:52 scav joins (sid309693@helmsley.irccloud.com)
11:29:08 gentauro joins (~gentauro@user/gentauro)
11:29:31 rtpg joins (sid443069@ilkley.irccloud.com)
11:29:52 astra` joins (sid289983@user/amish)
11:29:53 idnar joins (sid12240@debian/mithrandi)
11:30:22 glowcoil joins (sid3405@tinside.irccloud.com)
11:30:29 whez joins (sid470288@lymington.irccloud.com)
11:30:33 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
11:33:51 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
11:36:24 gentauro joins (~gentauro@user/gentauro)
11:36:54 × NiKaN quits (sid385034@helmsley.irccloud.com) (Ping timeout: 256 seconds)
11:36:54 × AndreasK__ quits (sid320732@uxbridge.irccloud.com) (Ping timeout: 256 seconds)
11:37:28 × rubin55 quits (sid175221@hampstead.irccloud.com) (Ping timeout: 256 seconds)
11:39:09 rubin55 joins (sid175221@hampstead.irccloud.com)
11:39:22 sprout_ joins (~quassel@2a02:a467:ccd6:1:2c29:7076:9399:3f2e)
11:39:49 NiKaN joins (sid385034@helmsley.irccloud.com)
11:40:18 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
11:40:18 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
11:40:26 lavaman joins (~lavaman@98.38.249.169)
11:41:12 AndreasK__ joins (sid320732@uxbridge.irccloud.com)
11:41:12 × rubin55 quits (sid175221@hampstead.irccloud.com) (Max SendQ exceeded)
11:41:24 gentauro joins (~gentauro@user/gentauro)
11:42:18 rubin55 joins (sid175221@hampstead.irccloud.com)
11:43:02 × sprout quits (~quassel@2a02:a467:ccd6:1:e14a:d90e:46d2:87c4) (Ping timeout: 265 seconds)
11:43:02 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
11:45:23 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
11:45:38 × michalz quits (~michalz@185.246.204.57) (Read error: No route to host)
11:46:09 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
11:46:42 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
11:46:55 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
11:47:10 lavaman joins (~lavaman@98.38.249.169)
11:47:17 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
11:47:31 lavaman joins (~lavaman@98.38.249.169)
11:47:39 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
11:47:53 lavaman joins (~lavaman@98.38.249.169)
11:48:01 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
11:48:39 gentauro joins (~gentauro@user/gentauro)
11:49:47 zincy_ joins (~zincy@host86-181-60-139.range86-181.btcentralplus.com)
11:49:52 geekosaur joins (~geekosaur@xmonad/geekosaur)
11:50:33 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
11:51:05 <cv> Iam wrting a simple API
11:51:06 <cv> I am planning to have formatted logs with timestamp log level etc
11:51:06 <cv> I am planning just write a simple function that takes some arguments and formats the message before printing it to  console or file
11:51:07 <cv> Is this alright or should I use some library like hslogger
11:51:51 × zincy_ quits (~zincy@host86-181-60-139.range86-181.btcentralplus.com) (Remote host closed the connection)
11:52:06 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
11:56:44 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
11:57:44 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
12:02:15 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
12:03:26 <dminuoso> It's not really for us to say whether its alright.
12:03:32 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
12:03:33 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 250 seconds)
12:05:12 <dminuoso> Personally Im a fan of monad-logger because it provides a clean separation between the logging interface and the implementation. Sadly it just pulls in quite a few dependencies.
12:05:19 tengu1 joins (~tengu1@cpe-70-121-244-14.neb.res.rr.com)
12:06:19 <dminuoso> So even if I handrolled it, I would do the same.
12:06:42 <dminuoso> newtype LoggingT m a = LoggingT { runLoggingT :: (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) -> m a }
12:06:47 lortabac joins (~lortabac@2a01:e0a:541:b8f0:93ca:4590:d6e0:969f)
12:07:22 <dminuoso> That way your code that does the logging is completely decoupled from how logging occurs
12:08:04 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
12:09:21 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
12:11:28 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
12:12:15 × cv quits (~cv@103.142.31.135) (Quit: Client closed)
12:12:25 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:14:18 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
12:15:07 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
12:17:21 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
12:17:50 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
12:18:04 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:18:33 lavaman joins (~lavaman@98.38.249.169)
12:19:46 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
12:20:55 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
12:23:22 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
12:23:29 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
12:23:38 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:23:54 × bliminse_ quits (~bliminse@host86-188-36-178.range86-188.btcentralplus.com) (Quit: leaving)
12:23:55 × mark___ quits (~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
12:23:56 jakalx joins (~jakalx@base.jakalx.net)
12:24:47 × deadmarshal quits (~deadmarsh@95.38.119.2) (Ping timeout: 250 seconds)
12:25:32 stef204 joins (~stef204@user/stef204)
12:25:39 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
12:26:50 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
12:27:23 jespada joins (~jespada@252-155-231-201.fibertel.com.ar)
12:31:22 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
12:32:28 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
12:34:09 bliminse joins (~bliminse@host86-188-36-178.range86-188.btcentralplus.com)
12:37:32 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
12:37:54 deadmarshal joins (~deadmarsh@95.38.119.2)
12:38:17 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
12:40:37 betelgeuse joins (~betelgeus@94-225-47-8.access.telenet.be)
12:42:38 × deadmarshal quits (~deadmarsh@95.38.119.2) (Ping timeout: 256 seconds)
12:42:58 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
12:44:03 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
12:46:02 mark___ joins (~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de)
12:46:32 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
12:47:05 machinedgod joins (~machinedg@24.105.81.50)
12:48:37 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
12:49:49 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
12:52:01 × pfurla_ quits (~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53) (Quit: gone to sleep. ZZZzzz…)
12:52:46 pfurla joins (~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53)
12:53:50 × Charles_Attends quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
12:54:14 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
12:54:16 lavaman joins (~lavaman@98.38.249.169)
12:55:03 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
12:55:37 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
12:56:23 × mmhat quits (~mmh@55d47379.access.ecotel.net) (Quit: WeeChat 3.3)
12:58:55 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
13:00:12 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
13:01:23 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
13:01:27 fef joins (~thedawn@user/thedawn)
13:04:26 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
13:05:12 × max22- quits (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Ping timeout: 265 seconds)
13:05:57 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
13:07:10 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
13:09:41 miled joins (~miled@37.211.46.14)
13:09:51 × rkrishnan quits (~user@122.167.19.65) (Ping timeout: 250 seconds)
13:10:10 <miled> Hey guys
13:10:32 <miled> could anyone help me in the Test section
13:10:51 <miled> Uploaded file: https://uploads.kiwiirc.com/files/31e65220f6e6fa9172af43d86c4a8d60/pasted.txt
13:11:36 <maerwald> what is the question
13:12:06 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
13:12:16 <miled> I want to test the function myOr using generated inputs tests
13:12:22 × pfurla quits (~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53) (Quit: gone to sleep. ZZZzzz…)
13:13:16 <maerwald> miled: https://www.stackbuilders.com/news/a-quickcheck-tutorial-generators
13:14:36 pfurla joins (~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53)
13:16:13 deadmarshal joins (~deadmarsh@95.38.119.2)
13:17:49 <kuribas> miled: your myOr function is not total.
13:17:56 <kuribas> miled: try "myOr []"
13:18:33 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
13:19:14 <kuribas> miled: also: 'x == True' == x
13:19:26 <kuribas> > let x = True in x == True
13:19:28 <lambdabot> True
13:19:31 <kuribas> > let x = True in x
13:19:33 <lambdabot> True
13:20:15 <xddq[m]> Uhmm.. I want to convert a list of strings like ```["hello","world"]``` to [hello, world]
13:20:15 <xddq[m]> Is there some simple function for this?
13:20:15 <xddq[m]> ```show ["hello","world"]``` results in ```"[\"hello\",\"world\"]"``` which results in ```["hello","world"]``` when calling print on that string.
13:20:42 <dminuoso> xddq[m]: readMaybe gives you roundtripping via show
13:20:47 <dminuoso> At least if the instances behave correctly
13:20:54 × Feuermagier_ quits (~Feuermagi@2a02:2488:4211:3400:b6fd:ec18:acf6:f1a8) (Quit: Leaving)
13:20:58 Feuermagier joins (~Feuermagi@user/feuermagier)
13:21:30 <dminuoso> % import Text.Read (readMaybe)
13:21:30 <yahb> dminuoso:
13:21:42 <dminuoso> % let x :: Maybe [String]; x = readMaybe (show ["hello", "world"]) in x
13:21:42 <yahb> dminuoso: Just ["hello","world"]
13:22:21 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
13:22:28 nschoe joins (~quassel@178.251.84.79)
13:23:34 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
13:24:41 <xddq[m]> dminuoso: Thank you for the answer. But the result is ["hello","world"] and I want it to become [hello, world]
13:25:05 <boxscape_> you want to print [hello, world] to the terminal?
13:25:23 <xddq[m]> yeah, to a file
13:25:51 <kuribas> > show ["hello", "world"]
13:25:52 <lambdabot> "[\"hello\",\"world\"]"
13:26:18 <dminuoso> xddq[m]: Ideally just write this manually.
13:26:19 <kuribas> xddq[m]: you want to remove the quotes?
13:26:21 <boxscape_> > putStrLn $ "[" <> intercalate "," ["hello", "world"] <> "]"
13:26:22 <lambdabot> <IO ()>
13:26:25 <boxscape_> % putStrLn $ "[" <> intercalate "," ["hello", "world"] <> "]"
13:26:25 <yahb> boxscape_: [hello,world]
13:26:34 <dminuoso> Neither `show` nor `read` are good mechanisms for actual serialization or deserializatoin
13:26:41 <dminuoso> They are developer shortcuts for quick introspection at best
13:26:49 <kuribas> > filter (/= '"') $ show ["hello", "world"]
13:26:50 <lambdabot> "[hello,world]"
13:27:00 <dminuoso> kuribas: Yes, and if you have "hello\""?
13:27:12 <kuribas> > filter (/= '"') $ show ["hello\"", "world"]
13:27:13 <lambdabot> "[hello\\,world]"
13:27:29 <boxscape_> % putStrLn $ "[" <> intercalate "," ["hello\"", "world"] <> "]"
13:27:29 <yahb> boxscape_: [hello",world]
13:28:42 <dminuoso> The solution is to simply do: let xs = ["hello", "world"] in "[" <> intercalate ", " <> "]"
13:28:48 <xddq[m]> boxscape_: that's perfect, thank you!
13:28:50 <dminuoso> Yup, what boxscape_ wrote
13:29:05 cv joins (~cv@103.142.31.135)
13:29:24 <dminuoso> xddq[m]: Also, if you want to take full control of output, consider a prettyprinter library like `prettyprinter` or `pretty`
13:29:33 × jmorris quits (uid433911@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
13:29:41 <dminuoso> Very useful if you want to do some nice human readable formatting
13:29:58 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
13:30:01 <dminuoso> But perfectly useable for machine readable content as well
13:30:06 <dminuoso> We generate config files with it :)
13:31:10 <dminuoso> (Altenative f, Foldable t) => t (f a) -> f a
13:31:16 <dminuoso> Does this exist in base?
13:31:53 × miled quits (~miled@37.211.46.14) (Quit: Connection closed)
13:32:09 <opqdonut> :t Control.Applicative.Alternative.asum
13:32:09 <lambdabot> error:
13:32:10 <lambdabot> Not in scope: ‘Control.Applicative.Alternative.asum’
13:32:10 <lambdabot> No module named ‘Control.Applicative.Alternative’ is imported.
13:32:20 <opqdonut> well anyway, asum :: (Foldable t, Alternative f) => t (f a) -> f a
13:32:42 <opqdonut> oh huh that's from the monadplus package, I thought I was in base
13:32:49 <kuribas> @hoogle asum
13:32:49 <lambdabot> Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a
13:32:49 <lambdabot> Data.Conduit.Combinators asum :: (Monad m, Alternative f) => ConduitT (f a) o m (f a)
13:32:49 <lambdabot> Protolude asum :: (Foldable t, Alternative f) => t (f a) -> f a
13:32:53 <boxscape_> % newtype RawString = RawString {getRawString :: String}
13:32:53 <yahb> boxscape_:
13:32:55 <dminuoso> opqdonut: Ah! Hoogle apparently failed when you switch those constraints around
13:32:56 <boxscape_> % instance Show RawString where show = getRawString
13:32:56 <yahb> boxscape_:
13:32:59 <kuribas> Pretty sure that's in base
13:33:00 <dminuoso> Thanks.
13:33:03 <boxscape_> % print . map RawString $ ["hello", "world"]
13:33:03 <yahb> boxscape_: [hello,world]
13:33:15 <dminuoso> opqdonut: And it's in base, its just not imported in yahb
13:33:19 <dminuoso> Anyway. Thanks!
13:33:30 ByronJohnson joins (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
13:33:31 <opqdonut> yeah so it seems
13:33:41 <kuribas> https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-Foldable.html#v:asum
13:33:49 <boxscape_> (violating the unspoken Show law I suppose)
13:33:54 <dminuoso> Oh the module specification is wrong
13:33:57 <kuribas> :t Data.Foldable.asum
13:33:58 <lambdabot> (Foldable t, Alternative f) => t (f a) -> f a
13:33:58 <dminuoso> its either Data.Foldable or Control.Applicative
13:34:42 <opqdonut> I ended up here from google: https://hackage.haskell.org/package/monadplus-1.4.2/docs/Control-Applicative-Alternative.html
13:34:46 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
13:34:48 <opqdonut> trying to land in the control.applicative docs
13:35:23 <xddq[m]> Why did you use "<>" instead of "++" for ```"[" <> intercalate ", " ["hello","world"] <> "]"``` ? Do you always use <> on lists? Is there a difference?
13:35:35 <boxscape_> xddq[m] you can use either, <> is more general
13:36:05 <boxscape_> google can be pretty terrible for searching hackage, I've been confused at times as to why the API is very different from what I expect, before realizing it took me to a ten-year old version of the library
13:36:06 <dminuoso> <> being more general means less refactoring if you swap things out later
13:36:22 <dminuoso> xddq[m]: Consider, if you later used prettyprinter, <> still remains the operator to concatenate two documents
13:36:27 <dminuoso> But if you had used ++, you'd have to replace that
13:36:47 <xddq[m]> interesting, thanks!
13:36:56 <dminuoso> Added benefit of ++ is, if you're using variables, it's more obvious what the arguments types are
13:36:59 <kuribas> boxscape_: doesn't ++ have better optimization?
13:37:04 <kuribas> with rewrite rules?
13:37:53 <dminuoso> If you're relying on rewrite rules on String for acceptable performance, you probably shouldn't be using String in the firstp lace
13:38:08 <dminuoso> Or lists in general
13:38:26 <dminuoso> So Ill file this under premature optimization
13:38:33 <boxscape_> kuribas (<>) is defined as (++) and is being inlined, so I would expect the performance to be the same as long as it's clear that it's being instantiated to (++) at the call site, but I'm not super familiar with how RULES work so, idk
13:38:46 <dminuoso> boxscape_: The inlining happens in the simplifier
13:38:49 <dminuoso> Where do RULES fire?
13:38:56 <boxscape_> I don't know
13:39:13 <dminuoso> Ah, rules are applied in the simplifier
13:39:29 <boxscape_> so should be equivalent then?
13:39:35 <dminuoso> Yes? No?
13:39:39 <boxscape_> ok :)
13:39:39 <yushyin> Maybe?
13:39:50 <dminuoso> The interaction between simplifier steps are incredibly subtle and they all influence each other
13:41:55 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
13:41:59 <dminuoso> Can GHC inline recursive functions to a degree?
13:42:33 <dminuoso> That is, would it ever turn `"a" ++ "bc" into "abc"?
13:43:02 dminuoso remembers GHC not inlining recursive things as a fundamental rule, but is not quite sure whether he misremembers
13:44:07 <maerwald> dminuoso: top-level recursion yes
13:44:29 <geekosaur> it doesn't inline when recursion is directly involved, and there's no direct recursion in "a" ++ "bc". but it also doesn't do constant folding
13:44:47 × ByronJohnson quits (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Ping timeout: 264 seconds)
13:44:48 <maerwald> e.g. https://hackage.haskell.org/package/base-4.16.0.0/docs/src/GHC.Base.html#map
13:44:49 <boxscape_> just tested it, the Core only contains "abc"
13:44:49 <dminuoso> geekosaur: The definition of (++) is recursive
13:44:51 <maerwald> doesn't inline
13:45:00 × rond_ quits (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
13:45:03 <maerwald> but there are rewrite rules
13:45:15 <boxscape_> (in fact it only contains "abc"#)
13:45:19 <geekosaur> right, but the definition doesn't matter here, the rewrite rule would be on ++ not its definition
13:45:33 <geekosaur> huh, so it does constant fold
13:45:38 <dminuoso> "++" [~1] forall xs ys. xs ++ ys = augment (\c n -> foldr c n xs) ys
13:45:40 <dminuoso> Ah
13:46:14 michalz joins (~michalz@185.246.204.121)
13:46:46 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
13:47:25 <cv> How do I convert base64 encoded string to png
13:47:35 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:49:07 <maerwald> what did you encode? :D
13:49:41 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
13:49:59 <boxscape_> also tested this: the core representation of two functions is identical if you use (<>) for one and (+) for the other. ( kuribas , dminuoso )
13:50:45 <boxscape_> (...and when (<>) is instantiated to [], of course)
13:51:24 <dminuoso> boxscape_: Perhaps, I still wouldn't rely on it.
13:51:30 <boxscape_> that's fair
13:51:46 × infinity0 quits (~infinity0@occupy.ecodis.net) (Ping timeout: 256 seconds)
13:51:56 × dwt_ quits (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
13:52:03 drdo1 joins (~drdo@roach0.drdo.eu)
13:52:05 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 265 seconds)
13:52:08 <dminuoso> Use what is more expressive/maintainable, and worry about performance later iff profiling determines it to be a hot spot
13:52:08 × drdo quits (~drdo@roach0.drdo.eu) (Read error: Connection reset by peer)
13:52:09 drdo1 is now known as drdo
13:53:01 × jackhill quits (~jackhill@kalessin.dragonsnail.net) (Ping timeout: 245 seconds)
13:53:15 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
13:53:57 jackhill joins (~jackhill@kalessin.dragonsnail.net)
13:54:15 dwt_ joins (~dwt_@c-98-200-58-177.hsd1.tx.comcast.net)
13:54:37 infinity0 joins (~infinity0@occupy.ecodis.net)
13:55:23 motherfsck joins (~motherfsc@user/motherfsck)
13:55:49 ByronJohnson joins (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
13:56:45 × fef quits (~thedawn@user/thedawn) (Ping timeout: 276 seconds)
13:57:16 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
13:57:37 stiell joins (~stiell@gateway/tor-sasl/stiell)
13:57:53 × deadmarshal quits (~deadmarsh@95.38.119.2) (Ping timeout: 265 seconds)
13:57:57 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
13:59:20 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
14:00:18 × vysn quits (~vysn@user/vysn) (Ping timeout: 265 seconds)
14:03:26 ystael joins (~ystael@user/ystael)
14:04:01 × ByronJohnson quits (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (Ping timeout: 250 seconds)
14:04:12 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
14:04:16 <boxscape_> % unpackCString# "foo"# -- what exactly happens here? Does GHC place a C String "foo\0" at address some address aliased to "foo"# when I use "foo"#? Or is the C String created by the call to unpackCString?
14:04:16 <yahb> boxscape_: "foo"
14:05:03 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
14:05:08 <boxscape_> in other words, if I use "foo"# for something other than unpackCString#, is the C String not created?
14:05:41 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
14:07:17 cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
14:07:25 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
14:09:35 <geekosaur> my knowledge is limited here but I gather "foo"# is a packed utf8 string with a nul at the end
14:09:39 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
14:09:53 <geekosaur> so it just happens to work with unpackCString# as long as it doesn't have an embedded NUL
14:09:56 ByronJohnson joins (~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
14:10:06 <boxscape_> hm I see
14:10:18 jkaye joins (~jkaye@2601:281:8300:7530:3845:93d:d6fd:67fb)
14:10:18 <geekosaur> I don't know how the unboxed string rep works if there's a NUL in the middle; it may be encoded
14:10:25 <boxscape_> I guess what's confusing me is that the type of "foo"# is Addr#, which doesn't sound very much like it's String-like
14:10:51 <geekosaur> I do know for certain that ghc does not store string literals in their normal boxed form, but in a packed representation
14:10:51 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
14:10:59 <boxscape_> ok
14:11:18 <geekosaur> which is why IsString and friends were so easy to add
14:11:39 <boxscape_> % unpackCString# "fo\0o"# -- geekosaur there you go
14:11:39 <yahb> boxscape_: "fo"
14:12:03 <geekosaur> right, as I said, it just happens to work as long as there's no embedded NUL
14:12:04 <maerwald> geekosaur: IsString instance for String isn't even valid Haskell2010 :D
14:12:08 <boxscape_> right, ok
14:12:11 <opqdonut> I love how simple the source of unpackCString# is
14:12:13 × chomwitt quits (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) (Remote host closed the connection)
14:12:27 <geekosaur> but "fo\0"# used as a packed string literal doesn't choke on the \0
14:12:28 <opqdonut> https://hackage.haskell.org/package/ghc-prim-0.8.0/docs/src/GHC.CString.html#unpackCString%23
14:12:46 <opqdonut> just straightforward recursive list generation, not even using build
14:12:49 chomwitt joins (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374)
14:14:49 <boxscape_> Okay so if I'm understanding correctly, "foo"# really is morally a String literal, not an address, and the reason its type is Addr# is just that the address is how you access the resulting String
14:15:34 <geekosaur> the only place these literals live is in the initialized data segment of the executable, not the heap, so Addr# is the only way to represent their address
14:15:34 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
14:15:49 <boxscape_> ok
14:16:12 <geekosaur> (normally)
14:16:36 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
14:16:42 <boxscape_> (I guess ideally I'd like to see them be of type `newtype String# = String# Addr#` or something)
14:17:49 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
14:18:00 <geekosaur> I don't think newtypes exist at the level those strings are normally found (Core)
14:18:03 <hippoid> is reading a csv from stdin and then creating a data type considered parsing?
14:18:15 <geekosaur> it's a form of parsing, yes
14:18:24 × pfurla quits (~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53) (Quit: gone to sleep. ZZZzzz…)
14:18:25 <boxscape_> geekosaur right but I can create them in surface haskell as well. I guess it's not a common thing though
14:18:33 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
14:18:47 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
14:18:47 <geekosaur> that said, "csv" is really poorly defined and goes all over the place, you are better off using a library like cassava instead of trying to do it yourself
14:18:55 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
14:19:43 <hippoid> ok thanks... going to check out cassava
14:19:50 <geekosaur> boxscape_, right, but then we don't have newtype Int# either, the type of 3# is Int# which is primitive
14:20:07 <geekosaur> because when these normally come up you're down in primitive-land
14:20:21 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
14:20:30 <boxscape_> yes, but the type there makes much more sense to me - 3# is some sort of integer-like type. Whereas "foo"# is a string literal, not an address
14:20:39 <boxscape_> s/type/value
14:21:14 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
14:22:40 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
14:22:48 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
14:22:48 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
14:23:00 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
14:23:46 rond_ joins (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
14:23:59 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
14:24:14 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
14:24:20 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:24:20 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
14:24:20 wroathe joins (~wroathe@user/wroathe)
14:27:11 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Client Quit)
14:27:52 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
14:29:36 × cv quits (~cv@103.142.31.135) (Quit: Client closed)
14:32:54 × dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 260 seconds)
14:33:11 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
14:34:31 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
14:39:21 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 268 seconds)
14:42:11 × rond_ quits (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
14:44:46 shriekingnoise joins (~shrieking@186.137.144.80)
14:47:10 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
14:48:29 dibblego joins (~dibblego@122-199-1-30.ip4.superloop.com)
14:48:29 × dibblego quits (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
14:48:29 dibblego joins (~dibblego@haskell/developer/dibblego)
14:49:32 DNH joins (~DNH@2a02:8109:b740:2c4:5132:6531:a874:2df6)
14:50:54 max22- joins (~maxime@2a01cb0883359800b81dd38911f0cee9.ipv6.abo.wanadoo.fr)
14:53:32 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
14:54:19 pfurla joins (~pfurla@201.17.118.230)
14:54:23 × mark___ quits (~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
14:54:45 mark___ joins (~a@p200300ef973db1f2502293e1a26d2ca1.dip0.t-ipconnect.de)
15:00:30 <merijn> boxscape_: String literals are already more primitive
15:00:43 <boxscape_> more primitive than what?
15:01:02 <merijn> boxscape_: String literals are stored as specific byte arrays in the binary that get converted to String lazily
15:01:20 <merijn> boxscape_: Text uses this to have a more efficient conversion for String literals when using OverloadedStrings
15:01:30 <boxscape_> okay
15:02:26 <merijn> (basically it has a rewrite rule that converts "internalToString . stringToText" with "internalToText"
15:03:35 <boxscape_> I see, interesting
15:05:08 × dibblego quits (~dibblego@haskell/developer/dibblego) (Excess Flood)
15:05:28 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
15:05:45 dibblego joins (~dibblego@122-199-1-30.ip4.superloop.com)
15:05:45 × dibblego quits (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
15:05:45 dibblego joins (~dibblego@haskell/developer/dibblego)
15:13:17 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 265 seconds)
15:13:51 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
15:18:03 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
15:18:23 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Ping timeout: 264 seconds)
15:22:39 rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
15:24:08 × johnjay quits (~pi@192.142.100.50) (Ping timeout: 256 seconds)
15:24:50 × tengu1 quits (~tengu1@cpe-70-121-244-14.neb.res.rr.com) (Quit: Client closed)
15:26:11 johnjay joins (~pi@192.142.100.50)
15:41:33 xkuru joins (~xkuru@user/xkuru)
15:48:41 × Guest80 quits (~Guest80@pd9ed7c7f.dip0.t-ipconnect.de) (Quit: Client closed)
15:49:21 Guest80 joins (~Guest80@pd9ed7c7f.dip0.t-ipconnect.de)
15:53:13 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
15:56:16 × boxscape_ quits (~boxscape_@134.171.69.87) (Quit: Connection closed)
16:00:08 × codygman[m] quits (~codygman@2001:470:69fc:105::b4ba) (Quit: You have been kicked for being idle)
16:02:40 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
16:04:08 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
16:06:00 × jespada quits (~jespada@252-155-231-201.fibertel.com.ar) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:08:54 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
16:10:30 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
16:11:10 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
16:11:15 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:93ca:4590:d6e0:969f) (Quit: WeeChat 2.8)
16:17:24 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 268 seconds)
16:17:46 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:17:46 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
16:17:46 wroathe joins (~wroathe@user/wroathe)
16:21:06 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:23:04 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
16:23:58 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
16:24:05 zebrag joins (~chris@user/zebrag)
16:25:43 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
16:26:24 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
16:28:50 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
16:29:34 zmt00 joins (~zmt00@user/zmt00)
16:33:03 EvanR joins (~evan@user/evanr)
16:35:46 Lycurgus joins (~juan@98.4.112.204)
16:39:39 lavaman joins (~lavaman@98.38.249.169)
16:42:32 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Remote host closed the connection)
16:43:12 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
16:44:02 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
16:44:05 × Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt)
16:44:17 × nschoe quits (~quassel@178.251.84.79) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
16:44:56 geekosaur joins (~geekosaur@xmonad/geekosaur)
16:53:52 × EvanR quits (~evan@user/evanr) (Quit: Leaving)
16:54:18 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 265 seconds)
16:56:42 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:01:05 slowButPresent joins (~slowButPr@user/slowbutpresent)
17:02:25 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
17:03:13 × pfurla quits (~pfurla@201.17.118.230) (Quit: gone to sleep. ZZZzzz…)
17:05:36 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
17:05:53 moet joins (~moet@mobile-166-171-251-63.mycingular.net)
17:07:31 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
17:08:54 img joins (~img@user/img)
17:09:03 pfurla joins (~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53)
17:09:13 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
17:10:15 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 265 seconds)
17:12:40 × tired- quits (~tired@user/tired) (Quit: /)
17:13:16 tired joins (~tired@user/tired)
17:14:04 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
17:15:04 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
17:17:09 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.3)
17:19:53 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
17:20:56 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
17:22:49 × dlbh^ quits (~dlbh@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 265 seconds)
17:24:17 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
17:25:58 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
17:27:22 × dibblego quits (~dibblego@haskell/developer/dibblego) (Excess Flood)
17:27:29 × mbuf quits (~Shakthi@122.162.1.56) (Quit: Leaving)
17:27:48 dibblego joins (~dibblego@122-199-1-30.ip4.superloop.com)
17:27:48 × dibblego quits (~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
17:27:48 dibblego joins (~dibblego@haskell/developer/dibblego)
17:27:54 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection)
17:28:36 × theproffesor quits (~theproffe@user/theproffesor) (Quit: Leaving)
17:29:04 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
17:30:07 <oats> does `base` not contain any functions for working with directories?
17:30:24 dlbh^ joins (~dlbh@h178.173.139.63.static.ip.windstream.net)
17:31:02 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 265 seconds)
17:31:02 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
17:32:15 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
17:32:45 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
17:35:20 EvanR joins (~evan@user/evanr)
17:37:35 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
17:38:07 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
17:40:00 <maerwald> no
17:40:57 <maerwald> directories make for a poor cross-platform abstraction, so either you use unix/Win32 or you hope `directory` does what you think it does
17:42:38 × img quits (~img@user/img) (Ping timeout: 265 seconds)
17:42:56 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
17:44:16 deadmarshal joins (~deadmarsh@95.38.119.2)
17:44:33 <oats> gotcha
17:44:40 whatsupdoc joins (uid509081@hampstead.irccloud.com)
17:45:39 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
17:46:43 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.3)
17:47:26 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Ping timeout: 268 seconds)
17:48:38 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
17:50:51 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 265 seconds)
17:52:18 × dlbh^ quits (~dlbh@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 265 seconds)
17:56:27 dlbh^ joins (~dlbh@h178.173.139.63.static.ip.windstream.net)
17:57:23 × jkaye quits (~jkaye@2601:281:8300:7530:3845:93d:d6fd:67fb) (Ping timeout: 264 seconds)
17:57:43 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
17:57:48 <EvanR> this is encouraging... trying to update my old ghc by doing ghcup, curl complains about certs, and the link for more info is at haxx.se which is a redirect xD
17:57:52 <EvanR> https://i.imgur.com/h6paSpY.png
18:00:29 <jneira[m]> you always can add `-k` but the script does subsequent curl calls to haskell.org andthey will fail as well
18:01:37 Successus joins (~Successus@gateway/tor-sasl/successus)
18:02:23 <EvanR> tried to add latest glfw-b as a dep, but base is too old gotta update ghc. curl is too old gotta update OSX I guess. OSX too old gotta buy a new Mac xD
18:02:46 × chele quits (~chele@user/chele) (Remote host closed the connection)
18:02:50 <jneira[m]> if i browse the url the certificate seems to be ok, with expired date `Thu, 27 Jan 2022 06:48:31 GMT`
18:03:05 <monochrom> I cannot reproduce the certificate error.
18:03:11 Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
18:03:32 <monochrom> One of us has a compromised internet connection.
18:03:57 alzgh joins (~alzgh@user/alzgh)
18:04:14 <Successus> Hi, does ghc 8.8.4 use editline? I was trying to set up some keybindings in ~/.editrc but none of them work in ghci. For example I tried bind ^R em-next-word. Could you please tell me if there is some error, or does ghc not read that file?
18:05:03 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
18:05:31 <EvanR> is haxx.se a normal thing to see in a curl error message
18:05:32 <monochrom> It uses haskeline. I forgot where is the doc for the config.
18:05:38 × dlbh^ quits (~dlbh@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 256 seconds)
18:05:56 <monochrom> curl.haxx.se is curl's website.
18:05:57 <awpr> I do remember haxx.se being the website for cURL
18:06:29 <EvanR> ok good
18:06:30 <Successus> yes it is the website of curl
18:06:54 <EvanR> it redirects to curl.se which is saner looking
18:06:57 <Successus> alright so I will find documentation for haskeline. Just to confirm it uses haskeline by default, no need to install it?
18:07:03 dlbh^ joins (~dlbh@h178.173.139.63.static.ip.windstream.net)
18:07:13 <awpr> brb checking if backdoor.nsa.gov is available to register for a new crypto library
18:07:28 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
18:07:46 × Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 265 seconds)
18:07:59 jpds joins (~jpds@gateway/tor-sasl/jpds)
18:08:05 <monochrom> https://github.com/judah/haskeline has links to how to config.
18:08:26 <Successus> Alright, thank you very much!
18:09:00 <EvanR> I wonder if this has to do with lets encrypt
18:10:15 quarkyalice joins (~quarkyali@user/quarkyalice)
18:10:20 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
18:11:43 <monochrom> Ah, missed one question. Yes, ghci already uses haskeline out of the box, nothing to install.
18:11:52 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
18:11:56 <gentauro> 19:05 < monochrom> curl.haxx.se is curl's website
18:12:03 jbox joins (~jbox@user/jbox)
18:12:04 <gentauro> and where you can get mozillas CA's ;0
18:12:06 <gentauro> ;)
18:12:30 <monochrom> I don't understand the joke.
18:12:50 <gentauro> `https://curl.haxx.se/ca/cacert.pem`
18:13:06 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
18:13:11 <Successus> great to hear, thank you!
18:13:19 <gentauro> `curl \ --remote-name \ --time-cond \ cacert.pem \ https://curl.haxx.se/ca/cacert.pem`
18:13:22 <gentauro> :)
18:13:45 <gentauro> I use those when I code my `http-clients` from scratch in Haskell (when I need support for TLS)
18:14:03 × ephemient quits (uid407513@lymington.irccloud.com) (Ping timeout: 265 seconds)
18:14:11 ephemient joins (uid407513@lymington.irccloud.com)
18:14:23 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
18:14:32 × dlbh^ quits (~dlbh@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 265 seconds)
18:14:41 jkaye joins (~jkaye@2601:281:8300:7530:75fb:eacf:8ea0:5f8)
18:14:44 alzgh joins (~alzgh@user/alzgh)
18:15:23 <monochrom> OK I see, tangential.
18:16:25 dlbh^ joins (~dlbh@h178.173.139.63.static.ip.windstream.net)
18:17:47 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
18:18:45 <maerwald> http-clients?
18:18:52 <Successus> I found this if someone is interested http://trac.haskell.org/haskeline/wiki/UserPrefs
18:19:00 <Successus> it's old link
18:19:11 <geekosaur> isn't trac long gone?
18:19:19 rusty joins (~rustyboy@82.77.237.221)
18:19:22 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 265 seconds)
18:22:07 × dhruvasagar quits (~dhruvasag@49.207.218.36) (Quit: WeeChat 3.3)
18:22:19 <maerwald> yeah, that link isn't useful
18:22:35 × ubert quits (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection)
18:24:30 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
18:26:03 gdown joins (~gavin@h69-11-248-109.kndrid.broadband.dynamic.tds.net)
18:27:40 <Successus> https://github.com/judah/haskeline/wiki/UserPreferences https://github.com/judah/haskeline/wiki/CustomKeyBindings https://blog.rcook.org/blog/2018/ghci-custom-key-bindings/
18:29:22 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
18:29:56 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
18:30:12 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Remote host closed the connection)
18:30:16 alzgh joins (~alzgh@user/alzgh)
18:32:08 jespada joins (~jespada@252-155-231-201.fibertel.com.ar)
18:33:21 zincy_ joins (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3)
18:35:53 × Guest80 quits (~Guest80@pd9ed7c7f.dip0.t-ipconnect.de) (Quit: Client closed)
18:35:58 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
18:36:36 Guest80 joins (~Guest80@pd9ed7c7f.dip0.t-ipconnect.de)
18:40:55 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
18:42:05 × deadmarshal quits (~deadmarsh@95.38.119.2) (Ping timeout: 265 seconds)
18:42:43 × zincy_ quits (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection)
18:43:16 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
18:44:02 × epolanski quits (uid312403@helmsley.irccloud.com) (Quit: Connection closed for inactivity)
18:46:01 × dlbh^ quits (~dlbh@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 268 seconds)
18:47:13 dlbh^ joins (~dlbh@h178.173.139.63.static.ip.windstream.net)
18:52:08 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
18:52:17 × dlbh^ quits (~dlbh@h178.173.139.63.static.ip.windstream.net) (Remote host closed the connection)
18:52:29 alzgh joins (~alzgh@user/alzgh)
18:52:38 dlbh^ joins (~dlbh@h178.173.139.63.static.ip.windstream.net)
18:53:20 Guest17 joins (~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
19:03:11 × tired quits (~tired@user/tired) (Quit: /)
19:03:26 × quarkyalice quits (~quarkyali@user/quarkyalice) (Ping timeout: 256 seconds)
19:03:50 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
19:03:53 <energizer> in pattern matching, i could say `| x < 5 = 5 | x < 10 = 10 | otherwise = 99` or `| -inf < x < 5 = 5 | 5 <= x < 10 = 10 | otherwise = 99`. does anybody do the latter, or is that considered overly verbose bad style?
19:04:37 <monochrom> The latter doesn't compile in the first place.
19:04:43 tired joins (~tired@user/tired)
19:05:11 <energizer> you know what i mean tho
19:05:17 × max22- quits (~maxime@2a01cb0883359800b81dd38911f0cee9.ipv6.abo.wanadoo.fr) (Ping timeout: 265 seconds)
19:05:33 <monochrom> Yes, I know that you write what you mean, no more no less.
19:05:57 <monochrom> Perhaps ask a math channel if you doesn't need your notation to compile.
19:06:11 aegon joins (~mike@174.127.249.180)
19:09:32 <shapr> energizer: I've never seen the latter used in production code.
19:09:40 <energizer> shapr: thank you
19:11:12 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
19:13:16 × Guest80 quits (~Guest80@pd9ed7c7f.dip0.t-ipconnect.de) (Quit: Client closed)
19:14:16 theproffesor joins (~theproffe@2601:282:847f:8010::390f)
19:14:16 × theproffesor quits (~theproffe@2601:282:847f:8010::390f) (Changing host)
19:14:16 theproffesor joins (~theproffe@user/theproffesor)
19:14:57 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
19:15:23 <EvanR> depending on who talk to, they may respond to IRC math notation as if they were a compiler xD
19:15:35 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
19:16:40 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
19:16:54 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
19:17:20 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
19:18:39 <sm> ERROR missing word at 1:18
19:19:51 × tired quits (~tired@user/tired) (Quit: /)
19:20:12 ProfSimm joins (~ProfSimm@87.227.196.109)
19:20:31 tired joins (~tired@user/tired)
19:21:43 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
19:22:42 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
19:23:27 × dlbh^ quits (~dlbh@h178.173.139.63.static.ip.windstream.net) (Remote host closed the connection)
19:23:53 dlbh^ joins (~dlbh@h178.173.139.63.static.ip.windstream.net)
19:25:00 × rusty quits (~rustyboy@82.77.237.221) (Remote host closed the connection)
19:27:17 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
19:27:22 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:28:17 zincy_ joins (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3)
19:28:22 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
19:29:27 × dlbh^ quits (~dlbh@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 250 seconds)
19:29:52 × zincy_ quits (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection)
19:30:12 dlbh^ joins (~dlbh@h178.173.139.63.static.ip.windstream.net)
19:30:36 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
19:30:43 <maerwald> is mingw32_HOST_OS define if you cross-compile for windows?
19:30:49 zincy_ joins (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3)
19:32:14 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
19:33:43 max22- joins (~maxime@2a01cb0883359800ee51d0bfa17b1585.ipv6.abo.wanadoo.fr)
19:34:07 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
19:35:11 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Ping timeout: 264 seconds)
19:38:33 adium joins (adium@user/adium)
19:39:03 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
19:39:50 × zincy_ quits (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection)
19:47:08 ubert joins (~Thunderbi@p200300ecdf0ba28041546fb5cdf9abd5.dip0.t-ipconnect.de)
19:51:27 evocatus joins (~evocatus@84.51.113.13)
19:51:52 zincy_ joins (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3)
19:51:54 tfeb joins (~tfb@88.98.95.237)
19:52:20 Pickchea joins (~private@user/pickchea)
19:55:31 × tafa quits (~tafa@2a04:52c0:101:85c::1) (Ping timeout: 245 seconds)
19:55:34 tafama joins (~tafa@tafa.xyz)
19:55:52 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
19:57:18 lyiriyah joins (~lyiriyah@user/lyiriyah)
19:58:23 × lyiriyah quits (~lyiriyah@user/lyiriyah) (Client Quit)
20:00:34 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
20:01:48 × hippoid quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
20:01:50 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
20:02:48 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
20:03:37 × dlbh^ quits (~dlbh@h178.173.139.63.static.ip.windstream.net) (Remote host closed the connection)
20:05:12 × juhp quits (~juhp@128.106.188.82) (Ping timeout: 256 seconds)
20:05:30 <ProfSimm> I started writing a language and i finally understood why referential transparency matters.
20:05:42 quarkyalice joins (~quarkyali@user/quarkyalice)
20:05:47 <ProfSimm> I was quite the "this is bullshit for nerds" guy before, and using mutable var
20:05:49 <ProfSimm> s*
20:06:18 <ProfSimm> Specifically in my languages every expression is like a separate thread (green), everything is massively parallel
20:06:22 <ProfSimm> Does Haskell have this/
20:06:24 <ProfSimm> ?
20:07:35 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 250 seconds)
20:07:56 juhp joins (~juhp@128.106.188.82)
20:08:05 <shapr> ProfSimm: no, but you can do something close with the Control.Parallel libraries.
20:08:33 <ProfSimm> Thanks
20:08:47 <awpr> there isn't automatic massive parallelization, but if you squint really hard, it might look like a thunk is a suspended green thread, and forcing a thunk is the current thread yielding to the particular suspended thread it's blocked on
20:08:57 <shapr> ProfSimm: there's overhead in creating a new computation for handing off to your other threads, so you probably want to use larger chunks than every expression
20:09:03 dsrt^ joins (~dsrt@h178.173.139.63.static.ip.windstream.net)
20:09:04 <shapr> ProfSimm: but I want to hear about your language, sounds nifty
20:09:10 <awpr> (but that's a really weird way of looking at thunks)
20:09:11 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
20:09:12 <ProfSimm> awpr, yup
20:09:45 <shapr> I've heard that Erlang is good at firing up a huge pile of tiny computations, but Erlang is also sort of single core last I checked (just really good at handing off work to other instances on other cores)
20:10:13 <shapr> ProfSimm: is there a blog about your language?
20:10:29 <ProfSimm> shapr, I need to have it take better shape. But I'll definitely come here when I have something to show
20:10:36 <shapr> Also, there was related work around cloud haskell https://haskell-distributed.github.io/
20:10:37 × tafama quits (~tafa@tafa.xyz) (Ping timeout: 250 seconds)
20:10:45 Midjak joins (~Midjak@82-65-111-221.subs.proxad.net)
20:10:46 <shapr> but I dunno how related to what you describe
20:11:55 <shapr> ProfSimm: in general it sounds like your language is based on graph reduction?
20:12:03 <ProfSimm> In short, like LISP everything in my thing is a sequence (read: iterator). Iterators are move-only, so they don't need referential transparency per se. Expressions themselves are also a sequence that's being reduced left to right (apply current item as a function to the next item until one item left).
20:12:18 <shapr> where you can then hand off chunks to be reduced to any free worker ?
20:12:42 shapr thinks about that
20:13:39 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
20:13:54 <shapr> ProfSimm: is your language also lazy (non-strict) ?
20:14:14 <awpr> sounds a bit like GHC's idea of spark-based parallelism: it can record that you want a particular thunk evaluated to WHNF, and go start doing that on any thread that's available
20:14:31 <awpr> (the "spark" is the name for the task of evaluating a particular thunk for its own sake)
20:14:55 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
20:15:03 hippoid joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net)
20:15:24 <awpr> I think the language-level interface to that is the builtin `par` function that creates a spark for its first argument and then returns the second
20:15:44 <shapr> yeah, you may want to read http://simonmar.github.io/pages/pcph.html or some of the related research papers.
20:16:37 <ProfSimm> shapr, the dominant "shape" is a tree of sequences. An expression is a sequence I reduce (foo bar baz qux) but if you put commas (foo bar, baz qux) then it's seen as separate sub-expressions, and each is evaluated in parallel. You can also generate sequences programmatically (the output of every function is implicitly a sequence). However you can apply labels on values and refer then in other
20:16:37 <ProfSimm> subexpressions, in which case the referring expression suspends as a thunk until the value is available, for ex: (x: 10, x + x) calculates the list (10, 20), it tries in parallel, but second one blocks until first is done.
20:16:48 <ProfSimm> And those "References" to vars, make it a graph in a way
20:16:49 <ProfSimm> yes
20:17:08 <EvanR> if expression, i.e. a tree, is being reduced "left to right", i.e. one child at a time, I imagine it is eager eval
20:17:37 <shapr> can a 'sequence' have a tree shape?
20:17:52 <ProfSimm> shachaf, by having subsequences yes
20:18:18 tafa joins (~tafa@2a04:52c0:101:85c::1)
20:18:50 <EvanR> (cond false (+ 1 2) (* 2 3)) => (cond false 3 (* 2 3)) => (cond false 3 6) => 6
20:18:58 <shapr> ProfSimm: I think you have *many* wonderful adventures ahead of you
20:19:05 <ProfSimm> shapr, EvanR, it's neither fully lazy, nor fully eager, in fact this is not finalized. But basically I leave something as a thunk or a sequence until it's "observed". But if a function as marked as having side effects it executes serially and eagerly
20:19:21 <EvanR> ok like a suspend form
20:19:25 <ProfSimm> Yes
20:19:45 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
20:19:47 <ProfSimm> shapr yeah :) it's a rabbit';s hole
20:19:53 <shapr> oh man, I had some optimal lambda calculas reduction papers around here somewhere
20:20:04 <ProfSimm> shapr, I'm dreaming the universe is made of evaluating sequences, it's getting nuts
20:20:52 <shapr> ProfSimm: have you read up on lazy evaluation and flavors that do sharing?
20:21:34 <awpr> there's actually a discussion of this just a bit ago in #haskell-beginners, incl. a book recommendation for implementing lazy evaluation efficiently on real hardware
20:21:49 <ProfSimm> shapr, I have a probably somewhat superficial idea. I've been thinking of adding memoization to "pure" functions
20:22:00 <EvanR> this book "the implementation of functional programming languages" (lazy) is pretty wild
20:22:08 <awpr> yeah, that one
20:22:24 <shapr> I consider the STG to be epic magic
20:22:32 <ProfSimm> https://www.microsoft.com/en-us/research/uploads/prod/1987/01/slpj-book-1987.pdf
20:22:32 <EvanR> though maybe quite old at this point
20:22:33 <ProfSimm> this/
20:22:34 <awpr> seems perfect as a jumping-off point for novel variations on the evaluation model
20:22:36 <awpr> yep
20:22:57 <ProfSimm> Thanks folks
20:23:02 <shapr> someone was recently telling me there are new developments in that area, but I forgot to ask for citations
20:23:07 <awpr> it is quite old, and GHC has newer, fancier stuff. but it's the best overview I've found of how the area generally works
20:23:18 <shapr> ProfSimm: feel free to hang around and chat, lots of fun things here
20:23:24 <ProfSimm> :D
20:24:17 <shapr> oh, this is the most recent thing I ran across for STG things https://github.com/quchen/stgi#ghcs-current-stg
20:24:49 <monochrom> Nice.
20:24:55 × tfeb quits (~tfb@88.98.95.237) (Ping timeout: 250 seconds)
20:25:53 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Read error: Connection reset by peer)
20:26:17 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
20:26:50 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
20:26:58 neurocyte0132889 joins (~neurocyte@45.136.170.104)
20:26:58 × neurocyte0132889 quits (~neurocyte@45.136.170.104) (Changing host)
20:26:58 neurocyte0132889 joins (~neurocyte@user/neurocyte)
20:27:58 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
20:29:02 <EvanR> the Scanning Tunneling G-machine
20:30:59 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
20:31:58 <janus> is a summary of the TemplateHaskell reverse dependencies problem available somewhere online?
20:32:20 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
20:34:01 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 250 seconds)
20:34:24 × m4lvin quits (~m4lvin@w4eg.de) (Quit: m4lvin)
20:34:30 m4lvin joins (~m4lvin@w4eg.de)
20:36:59 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
20:37:02 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
20:37:53 <ProfSimm> By the way I've been thinking. I'm reducing lists of expressions in parallel, but I reduce individual expressions left to right as in: (a b c d e) runs as a(b(c(d(e)))). Is there some kind of reduction process that doesn't have specific direction and is possibly parallelizable?
20:38:34 <ProfSimm> If the operations are commutative one could possibly flip the order
20:38:51 <ProfSimm> But not sure semantics we could have in other cases.
20:39:59 <EvanR> if you think of your list like that, you could subsume the of the sequence into the idea of an expression and only deal with 1 concept
20:40:36 <ProfSimm> EvanR, sorry I didn't understand
20:40:53 <EvanR> well what are the rules for forming an expression
20:41:36 <EvanR> what are the basic or atomic expressions, and how do you combine expressions to make a bigger one
20:41:58 <EvanR> in the process you may not need the idea of sequence
20:42:48 <EvanR> nvm that's a tangent
20:43:12 <ProfSimm> A function i call the "interpreter" receives all elements of an expression as an iterator. Then it interprets the first item according to custom rules (resolving a binding etc.) and that produces a result. I fetch the next item from the iterator, and I run result = result(next)
20:43:20 <ProfSimm> And I keep repeating this until the iterator is over
20:43:30 <EvanR> if you ignore side effects and evaluating an expression always completes, then you're free to reduce in whatever order you want
20:43:33 <ProfSimm> Finally I apply result with no arguments result = result();
20:43:35 <ProfSimm> And that's it
20:43:41 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
20:43:49 <EvanR> or in parallel
20:44:01 <ProfSimm> A specific item can itself be an expression, which is evaluated with a separate interpreter
20:44:45 <ProfSimm> I have a pipe operator too, though to apply this way: result = next(result)
20:44:49 <EvanR> sounds like your expressions have a lot more going on than being merely expressions
20:44:53 <awpr> this sounds like just expression trees and currying, in exactly the way Haskell has it
20:45:09 <awpr> modulo being able to generate expression "iterators" at runtime
20:45:29 <ProfSimm> awpr interesting
20:46:33 <ProfSimm> awpr, my model is entirely intepreted, I run the interpreter in the IDE and it reduces everything that's pure, and that generates type errors and so on
20:46:36 <awpr> er, in Haskell the resolution of sequences to "parenthesized" expression trees is up to the parser instead of anything at runtime, but it's the same kind of grouping
20:46:37 <EvanR> yes in haskell f x y z is really ((f x) y) z, application nodes only have 2 elements
20:46:42 <EvanR> f applied to x
20:46:45 <ProfSimm> I may have AOT/JIT compilation but that'll also be based on the interpreter
20:47:06 <janus> is the templatehaskell invalidation problem a bug or is it more of a fundamental design problem?
20:47:08 <EvanR> so there's no sequence
20:47:27 × evocatus quits (~evocatus@84.51.113.13) (Quit: Leaving)
20:47:39 <ProfSimm> EvanR, nice I didn't realize I'm doing exactly the same thing
20:48:07 <ProfSimm> EvanR one small difference is i apply with no arguments in the end, and every value is a function which when called with no arguments, returns itself
20:48:09 <EvanR> in lisp though you expect to get the sequence of arguments in some cases
20:48:15 <EvanR> (+ 1 2 3 4)
20:48:16 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
20:48:23 <EvanR> so it's different
20:48:27 <ProfSimm> EvanR, i do closures in another way, by adding a "placeholder" to generate a thunk with parameters
20:48:43 <EvanR> haskell gets by by having no such thing as function applied to no arguments
20:48:56 <EvanR> since it's pure, that would have to be a constant value
20:49:20 <ProfSimm> EvanR i.e. foo: sum (5, ?) would produce a closure. Which when called like this: bar: foo 7 // bar is 12 now
20:49:24 <EvanR> closures implemented as partially applied functions is a classic
20:50:36 <EvanR> did you say you were making a pure language?
20:50:57 <ProfSimm> EvanR, functions can be pure or not pure, they're pure by default.
20:51:26 <awpr> that syntax can get into some trouble w.r.t. how big the closure is: in something like `sum (mul (5, ?), 8)`, is that like `\x -> 5*x + 8`, or like `(\x -> 5 + x) * 8`?
20:51:26 <ProfSimm> EvanR, when they're not pure the use is quite restricted.
20:51:29 <EvanR> being able to assume everything is pure really simplifies some things xD
20:51:37 <ProfSimm> EvanR it does yesh
20:51:56 <ProfSimm> EvanR, I'm tempted to kinda wall off all the side-effects, but I'm *trying* to kinda keep them in for pragmatic purposes
20:53:09 <EvanR> idris has a nifty syntax for writing side effecting sub expression, which is desugared into >>=
20:53:38 <EvanR> which is itself a nifty way to express side effects (er, main effects)
20:53:38 <ProfSimm> EvanR, I actually had this conundrum. I had no null value per se. So applying a function with no parameters is like applying a function without applying a function.
20:54:39 <EvanR> in haskell a function with no args that is just supposed to have an effect is just something else entirely, a command. E.g. exitFailure :: IO a
20:54:48 <EvanR> which is just a value
20:55:00 <EvanR> no function arrow
20:55:04 <ProfSimm> Ah, command is an excellent name for impure function
20:55:12 <awpr> my understanding is that Haskell ended up with purity because it _had_ to, to make lazy evaluation make any sense
20:55:26 <awpr> you might be heading in the same direction :)
20:55:32 <EvanR> to have any hope of making sense at least xD
20:55:35 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
20:55:41 <EvanR> jury may still be out
20:56:13 × Guest17 quits (~Guest17@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed)
20:56:19 <ProfSimm> I wanna keep it syntactically similar and ideally differentiate only by keyword or something
20:56:27 <ProfSimm> But yeah
20:56:30 × jespada quits (~jespada@252-155-231-201.fibertel.com.ar) (Quit: Textual IRC Client: www.textualapp.com)
20:56:55 <EvanR> having many different things without different syntax is one of lisps warts imo xD
20:57:09 <ProfSimm> Yes
20:57:17 <ProfSimm> It's a hard balance
20:57:42 <ProfSimm> Make it explicit, looks like alien language to non-experts. Make it non-explicit, experts are pulling their hair out
20:58:55 acidjnk joins (~acidjnk@p200300d0c7271e86155557ae7ddf7b60.dip0.t-ipconnect.de)
20:59:04 servytor joins (uid525486@hampstead.irccloud.com)
21:00:02 <EvanR> after so much haskell I have to ask myself why functions turned out to be the thing associated with side effects and not say... memory writes or something else
21:00:17 <EvanR> or the stack
21:00:19 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
21:00:21 lavaman joins (~lavaman@98.38.249.169)
21:00:22 <EvanR> but here we are
21:00:57 <ProfSimm> EvanR, Pascal had the word function() for function with args and procedure; with functions without.
21:01:20 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
21:01:21 <ProfSimm> EvanR, where the implicit notion was functions are safe and procedures have side effects. Then other languages thought "eh, we'll use one keyword"
21:01:22 <ProfSimm> :P
21:01:31 <EvanR> interesting
21:01:57 <dsal> Eiffel was kind of neat like this. Things should either change state or view state, but not both.
21:02:02 <ProfSimm> I mean this is a bit like languages calling STRINGS... SCALAR
21:02:13 <ProfSimm> I mean a piece of text is not a scalar.
21:02:25 Gurkenglas_ joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
21:02:27 <ProfSimm> But there you go :)
21:02:47 <ProfSimm> Shows how the two audiences (mathematicians, and programmers) interact, but they don't understand all the words.
21:03:00 rusty joins (~rustyboy@82.77.237.221)
21:03:21 <dsal> That's all of humanity, though.
21:03:21 <EvanR> you can fit (c-string) "FOOBAR!" in a word64 xD
21:03:35 <EvanR> very scalar
21:03:52 <ProfSimm> ;-)
21:05:50 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
21:05:50 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
21:06:08 × Successus quits (~Successus@gateway/tor-sasl/successus) ()
21:06:45 <ProfSimm> Do you know one thing I find troublesome with functional languages. They kinda eliminate time, which is good, but all real-world systems depend heavily on things happening in time.
21:08:02 <EvanR> in haskell you have to access real time through IO
21:08:06 <ProfSimm> For example artificial neural networks tend to work like grids of numbers multiplied by other grids (matrixes, or tensors in general), and there's always a result flowing down the network. Actual neurons don't fire "zeroes" at other neurons. They spike with a specific pattern in time. Like morse code sort of
21:08:28 <EvanR> though you could build the concept of time into your DSL, possibly abstracting it
21:08:38 <EvanR> see FRP
21:08:48 <dsal> Time in TLA+ doesn't have anything to do with the wall.
21:09:25 mvk joins (~mvk@2607:fea8:5cc3:e900::df92)
21:09:42 <exarkun> Time in your ANNs also doesn't have to have anything to do with the wall, if you don't want it to.
21:09:51 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9)
21:10:09 <ProfSimm> Well, in ANN you can have time series and say "this data is sliced in these intervals"
21:10:15 <ProfSimm> And you can pass zeroes where you have no signal
21:10:29 <ProfSimm> But my point is there no "frames" in nature. There's no "null". And there's no "0"
21:10:40 <ProfSimm> Instead there's a lack of a thing.
21:10:48 <ProfSimm> And then it happens in specific time periods
21:10:51 × dsrt^ quits (~dsrt@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 250 seconds)
21:11:10 <exarkun> To put it differently, you can have time in your purely functional software.
21:11:23 <ProfSimm> How tho
21:11:27 <She> Is this a roundabout way of talking about mutability?
21:11:32 <ProfSimm> haha
21:11:37 <ProfSimm> Well. Not quite
21:11:54 <exarkun> If you're just modeling time as a real number then ... you have a real number, it is a parameter to your functions, you pass in a value for it.
21:12:02 <ProfSimm> More about "relative order and time proximity of related events"
21:12:33 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
21:12:40 <ProfSimm> Relative order could be seen as me talking about mutability actually
21:12:45 <ProfSimm> But time proximity is trickier
21:12:47 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
21:12:47 <exarkun> This is true whether you are writing functional code or not. It's more or less just good practice for writing good code.
21:12:50 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
21:12:57 <exarkun> I'm not talking about mutability, fwiw.
21:13:42 <exarkun> You have a function the computation of which depends on a value that you happen to call time? You pass that value in to the function as an argument.
21:14:04 <ProfSimm> exarkun, ok let me put it this way.
21:14:19 <ProfSimm> exarkun, say you are reading from 100 lazy sequences.
21:14:25 <EvanR> time may or may not also be needed in your semantics for concurrency
21:14:54 <ProfSimm> exarkun, input is calculated from those sequences very slowly, maybe you get a value or two a day
21:15:19 <exarkun> Laziness is a complication, I suppose.
21:15:23 <ProfSimm> exarkun, but sometimes 40+ values come within the span of 5 seconds. And then YOU want to emit a value from your own sequence to someone else
21:15:41 <ProfSimm> So question is how we model this effectively
21:15:45 <EvanR> another fun case to look at is that library to produce crypto computations that are resistant to timing attacks, by making each operation take the same amount of time... what was it called...
21:15:54 <exarkun> I can believe that /laziness/ makes dealing with time more difficult.
21:16:13 <ProfSimm> exarkun, frankly this is a hard problem even in imperative languages
21:16:40 <ProfSimm> exarkun our computers are inherently synchronous, they do things all the time, whether input is coming or not. Well there's an idle loop, but that's a cludge
21:16:40 <exarkun> Eh. There aren't "hard" problems in the way you mean that, I think. There are problems you know how to solve and problems you don't know how to solve.
21:16:51 <EvanR> you can encode the time cost into your type system, and then making it work with eager or lazy eval
21:16:55 <exarkun> Sure, if some person doesn't know how to solve it, it may be hard for that person.
21:17:21 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
21:17:26 <EvanR> then have the implementation ensure the time cost is accurate, in case that matters
21:17:38 <EvanR> usually we don't want that and just want it to go as fast as possible
21:17:46 <ProfSimm> I suppose I'd need some accumulator in my code, that, when i get a value, i read the clock, and I attenuate the accumulator based on "passed time" like a capacitor that's leaking
21:17:57 <ProfSimm> Then I add the value I got and check if i'm over the threshold
21:18:18 <ProfSimm> But it's clunky.
21:18:28 <exarkun> ProfSimm: I think laziness is the complicating factor because in the scenario you describe, you're using Haskell's implementation of laziness to control when things happen and Haskell's implementation of laziness does not give you time information along with that feature.
21:18:28 <EvanR> are we getting into real time OS too?
21:18:53 <exarkun> ProfSimm: If Haskell's implementation of laziness accounted for wanting to know /when/ lazy things resolved, then the solution would be obvious.
21:19:15 <exarkun> ProfSimm: Similarly, if you didn't use Haskell's implementation of laziness as part of your system, you could use a different tool that accounts for time better.
21:19:16 <ProfSimm> exarkun, yes
21:19:21 <exarkun> And then the solution would also be obvious.
21:19:39 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 265 seconds)
21:19:43 <ProfSimm> exarkun, maybe we can model the lazy sequence as a stream of values of the wall clock :)
21:19:48 <EvanR> estimating time costs has been easier so far with eager evaluation
21:20:07 <EvanR> but that's not the same as functional removing time
21:20:27 <awpr> this is pretty much exactly the domain of FRP: figuring out how to deal with continuously-varying quantities and discrete occurrences in terms of pure functional abstractions
21:20:42 <EvanR> yes! xD
21:20:56 <awpr> there's a ton of interesting research into it, lots of different approaches, etc.
21:20:59 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
21:21:29 <EvanR> FRP was all about including time in your semantics
21:21:54 <awpr> in fact I think some actual FRP implementations early on genuinely used lazy lists of (time, value) pairs
21:24:12 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
21:24:58 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Excess Flood)
21:27:01 × zincy_ quits (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection)
21:27:04 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
21:28:33 zincy_ joins (~zincy@host86-181-60-139.range86-181.btcentralplus.com)
21:28:35 × EvanR quits (~evan@user/evanr) (Ping timeout: 264 seconds)
21:29:04 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
21:31:42 × ubert quits (~Thunderbi@p200300ecdf0ba28041546fb5cdf9abd5.dip0.t-ipconnect.de) (Remote host closed the connection)
21:36:11 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
21:36:35 jmorris joins (uid433911@hampstead.irccloud.com)
21:37:42 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
21:37:46 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection)
21:38:25 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:38:42 geekosaur joins (~geekosaur@xmonad/geekosaur)
21:39:57 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
21:40:45 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
21:41:07 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
21:42:06 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
21:42:15 × robertm quits (robertm@lattice.rojoma.com) (Quit: WeeChat 3.0)
21:42:24 robertm joins (robertm@lattice.rojoma.com)
21:44:41 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Remote host closed the connection)
21:46:38 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
21:47:44 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
21:47:57 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
21:52:27 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
21:53:38 trillp joins (~trillp@69.233.98.238)
21:54:00 EvanR joins (~evan@2600:1700:ba69:10:c80:91ea:a064:8fa5)
21:54:37 trillp parts (~trillp@69.233.98.238) ()
21:56:46 × EvanR quits (~evan@2600:1700:ba69:10:c80:91ea:a064:8fa5) (Changing host)
21:56:46 EvanR joins (~evan@user/evanr)
21:57:27 × quarkyalice quits (~quarkyali@user/quarkyalice) (Remote host closed the connection)
21:58:01 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:59:09 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
22:00:44 dsrt^ joins (~dsrt@h178.173.139.63.static.ip.windstream.net)
22:01:10 emf_ joins (~emf@163.114.132.1)
22:03:43 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
22:04:07 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
22:04:35 × emf quits (~emf@2620:10d:c090:400::5:69fc) (Ping timeout: 268 seconds)
22:05:01 × dsrt^ quits (~dsrt@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 250 seconds)
22:10:11 <sm> oh is that "all" FRP is ?
22:10:12 <sm> TeaTime in https://en.wikipedia.org/wiki/Croquet_Project did that, I wonder if that was considered FRP
22:10:36 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
22:12:00 <EvanR> lol
22:12:29 <monochrom> Lazy [(time, value)] may or may not be an efficient representation. This also depends on languages. So, lazy [(time, value)] is not all of FRP, there is extra research and engineering for how to be efficient.
22:12:47 × Midjak quits (~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
22:13:22 <EvanR> having explicity access to the time value can make some weird situations possibl
22:13:33 <monochrom> However, assuming that someone has made an efficient implementation, then the user-side mental model is "time -> value". For a user, that is "all" of FRP.
22:14:37 × zincy_ quits (~zincy@host86-181-60-139.range86-181.btcentralplus.com) (Remote host closed the connection)
22:15:25 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
22:15:48 <EvanR> there's a lot packed into that "->" there xD
22:15:51 × mvk quits (~mvk@2607:fea8:5cc3:e900::df92) (Ping timeout: 250 seconds)
22:16:43 × pfurla quits (~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53) (Quit: gone to sleep. ZZZzzz…)
22:20:04 dsrt^ joins (~dsrt@h178.173.139.63.static.ip.windstream.net)
22:22:34 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
22:23:03 × juhp quits (~juhp@128.106.188.82) (Quit: juhp)
22:23:16 juhp joins (~juhp@128.106.188.82)
22:24:36 × rtsn quits (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 256 seconds)
22:25:06 rtsn joins (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se)
22:27:07 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
22:27:20 × michalz quits (~michalz@185.246.204.121) (Remote host closed the connection)
22:28:22 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
22:29:17 × dsrt^ quits (~dsrt@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 250 seconds)
22:29:49 zincy_ joins (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3)
22:30:43 dsrt^ joins (~dsrt@h178.173.139.63.static.ip.windstream.net)
22:32:19 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
22:33:07 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
22:34:10 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
22:36:11 dang72 joins (~dang@75-164-198-225.ptld.qwest.net)
22:37:52 texasmynsted joins (~texasmyns@99.96.221.112)
22:39:20 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
22:42:23 <monochrom> OK, regarding yesterday's GHC 9.2 impredicativity and user-defined "app :: (a -> b) -> a -> b" and runST: I just tested it, need to turn on ImpredicativeTypes but "meh = runST `app` pure ()" is accepted.
22:43:03 <texasmynsted> What would you recommend for simple text macro-style manipulation? attoparsec, something different? I would like make a collection of editor-style text transformation macros in Haskell
22:43:32 <monochrom> ($) is still special, yes, so that you can still have "runST $ ..." without turning on ImpredicativeTypes. This is good for existing code bases, I bet.
22:45:32 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
22:45:34 × dsrt^ quits (~dsrt@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 256 seconds)
22:45:57 dsrt^ joins (~dsrt@h178.173.139.63.static.ip.windstream.net)
22:47:17 × zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection)
22:48:06 × chomwitt quits (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) (Ping timeout: 265 seconds)
22:48:20 zaquest joins (~notzaques@5.130.79.72)
22:48:39 <monochrom> Ah here is the improved special treatment for ($): "even without ImpredicativeTypes GHC switches on Quick Look for applications of ($)". So, not very hacky now. :)
22:49:46 <geekosaur> right, that's pretty much what I said yesterday
22:50:31 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
22:52:27 vysn joins (~vysn@user/vysn)
22:53:17 × wolfshappen quits (~waff@irc.furworks.de) (Quit: later)
22:55:21 × rtsn quits (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 265 seconds)
22:55:27 <janus> monochrom: great thanks for testing
22:55:34 × obfusk quits (~quassel@a82-161-150-56.adsl.xs4all.nl) (Ping timeout: 260 seconds)
22:55:43 rtsn joins (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se)
22:57:02 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
22:57:05 obfusk joins (~quassel@a82-161-150-56.adsl.xs4all.nl)
23:00:15 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:01:47 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
23:03:39 renzhi joins (~xp@2607:fa49:6500:b100::6e7f)
23:05:49 Sgeo joins (~Sgeo@user/sgeo)
23:08:59 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
23:13:29 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
23:14:47 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
23:17:42 × dang72 quits (~dang@75-164-198-225.ptld.qwest.net) (Quit: Ping timeout (120 seconds))
23:17:49 × dsrt^ quits (~dsrt@h178.173.139.63.static.ip.windstream.net) (Ping timeout: 250 seconds)
23:19:31 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
23:20:42 yauhsien joins (~yauhsien@61-231-35-209.dynamic-ip.hinet.net)
23:22:18 × jle` quits (~jle`@2603-8001-3b02-84d4-0000-0000-0000-025d.res6.spectrum.com) (Quit: WeeChat 3.3)
23:24:50 × obfusk quits (~quassel@a82-161-150-56.adsl.xs4all.nl) (Ping timeout: 265 seconds)
23:24:54 CiaoSen joins (~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
23:25:11 × yauhsien quits (~yauhsien@61-231-35-209.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
23:26:15 obfusk joins (~quassel@a82-161-150-56.adsl.xs4all.nl)
23:26:19 × servytor quits (uid525486@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
23:27:38 pfurla joins (~pfurla@2804:14d:5c81:4104:99ae:703b:b7dc:fe53)
23:28:25 AlexNoo_ joins (~AlexNoo@178.34.161.211)
23:31:13 jle` joins (~jle`@2603-8001-3b02-84d4-0000-0000-0000-025d.res6.spectrum.com)
23:31:32 × AlexZenon quits (~alzenon@178.34.150.115) (Ping timeout: 268 seconds)
23:32:02 × AlexNoo quits (~AlexNoo@178.34.150.115) (Ping timeout: 256 seconds)
23:32:09 × Alex_test quits (~al_test@178.34.150.115) (Ping timeout: 268 seconds)
23:32:57 × sander quits (~sander@user/sander) (Ping timeout: 268 seconds)
23:33:06 sander joins (~sander@user/sander)
23:34:38 × cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Ping timeout: 268 seconds)
23:34:43 × acidjnk quits (~acidjnk@p200300d0c7271e86155557ae7ddf7b60.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
23:36:27 × CiaoSen quits (~Jura@p200300c95716ce002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
23:36:37 Alex_test joins (~al_test@178.34.161.211)
23:36:41 Cajun joins (~Cajun@user/cajun)
23:36:50 AlexZenon joins (~alzenon@178.34.161.211)
23:38:27 wolfshappen joins (~waff@irc.furworks.de)
23:40:11 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
23:44:38 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
23:45:54 × zincy_ quits (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection)
23:46:24 mvk joins (~mvk@2607:fea8:5cc3:e900::df92)
23:47:11 × jkaye quits (~jkaye@2601:281:8300:7530:75fb:eacf:8ea0:5f8) (Ping timeout: 264 seconds)
23:47:18 vicfred joins (~vicfred@user/vicfred)
23:48:32 × max22- quits (~maxime@2a01cb0883359800ee51d0bfa17b1585.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
23:52:07 <Cajun> what happened to the html view on hackage? it looks so weird now, is there any way to get the old view back?
23:53:03 <yushyin> looks the same to me as always oO
23:53:18 <hpc> you mean being all purple and such?
23:53:22 <hpc> it's been like that for years now
23:54:09 <geekosaur> the v1 view stuck around for a while, may be gone now
23:54:33 <geekosaur> no, v1's still there
23:54:58 <Cajun> oh i think it may be older not newer. i wound up on `Hedi` on hackage and it looked.. different
23:55:09 <geekosaur> not sure which one is more obnoxious now… the package view doesn't scale well
23:55:09 <Cajun> if thats what v1 is then that would make sense
23:55:47 <Cajun> the new one scales so much better for bigger monitors
23:55:55 <monochrom> You will soon discover that generated htmls in the past are preserved, not regenerated to the new look.
23:56:02 <geekosaur> no, I was talking about /packages vs. /packages/browse
23:56:20 <Axman6> ah, so much nostalgia
23:56:30 <geekosaur> the latter is more usable but takes for-freaking-ever to load
23:56:40 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
23:56:47 <monochrom> But yeah I don't understand the millenial obsession with big fonts, big boxes, big everything.
23:57:31 <monochrom> I mean the low-density sense.
23:57:32 <hpc> it's because they were born yesterday, but have old people eyes :P
23:57:55 <hpc> also phones
23:58:02 <geekosaur> from looking at facebook on their phones all the time? :þ
23:58:15 <hpc> the always-visible table of contents is nice though
23:58:19 <Axman6> r/boomerhumour is leaking
23:58:42 × alzgh quits (~alzgh@user/alzgh) (Ping timeout: 256 seconds)
23:59:07 <Cajun> if /packages/browse loaded faster it would be a great experience but its just borderline unusable
23:59:18 <geekosaur> ^
23:59:45 <geekosaur> it'd be nice if it paged, maybe 100 packages per page, instead of loading the whole list up front
23:59:51 <Axman6> isn't that just the same as the package search, but without the search? it sucks that it appears to load the metadata of every package to show the first 50...

All times are in UTC on 2021-11-17.