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.