Logs on 2020-11-29 (freenode/#haskell)
| 00:01:07 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 00:02:07 | → | aneksteind joins (~anekstein@pool-108-7-199-207.bstnma.fios.verizon.net) |
| 00:02:48 | × | coot quits (~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 00:03:09 | → | cosimone_ joins (~cosimone@5.170.241.230) |
| 00:03:25 | × | falafel_ quits (~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 240 seconds) |
| 00:03:31 | <aneksteind> | does there exist a generalization of `Either`, something like `OneOf a b c d` ... that can have an arbitrary number of constructors? |
| 00:04:17 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Ping timeout: 260 seconds) |
| 00:04:33 | cosimone_ | is now known as cosimone |
| 00:04:48 | <dminuoso> | aneksteind: Well Either is that already. |
| 00:04:56 | <dminuoso> | Since you can do `Either (Either Int String) Char` and so forth |
| 00:05:37 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 00:05:39 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving) |
| 00:05:58 | <dminuoso> | Or just plain ADTs. |
| 00:06:31 | <dminuoso> | That is, `Either (Either Int String) Char` is equivalent to `data T = T1 Int | T2 String | T3 Char` |
| 00:06:43 | <dminuoso> | (Or the better term here is isomorphic) |
| 00:07:03 | → | mikevdg joins (73bd80f5@115-189-128-245.mobile.spark.co.nz) |
| 00:07:58 | → | acarrico joins (~acarrico@68.142.39.249) |
| 00:09:33 | <sm[m]> | I'm not missing a capitalize function in base, am I ? |
| 00:09:36 | <nshepperd> | i think aneksteind is asking for anonymous cotuples, the dual of (a,b,c,d) |
| 00:09:49 | <dminuoso> | Well, (a,b,c,d) is not generalized either. |
| 00:10:01 | <dminuoso> | We just have all these tuple constructors hacked in manually... |
| 00:11:04 | <nshepperd> | sure |
| 00:11:19 | <nshepperd> | it's non generalised with fancy uniform syntax |
| 00:11:50 | <erisco> | aneksteind, you can get hacking with variants and row types, unadvisable without a high payoff |
| 00:11:53 | <dminuoso> | Even if we had some fancy uniform syntax for coproducts, pattern matching wouldn't be as pretty |
| 00:12:58 | × | mikevdg quits (73bd80f5@115-189-128-245.mobile.spark.co.nz) (Remote host closed the connection) |
| 00:13:27 | <aneksteind> | where can I look into variants (is that similar to C++ variants?) I'm mostly curious what can be done, this isn't for anything in particular |
| 00:14:02 | <nshepperd> | there's unboxed sums but that syntax feels a bit janky |
| 00:14:10 | <aneksteind> | I found this: https://hackage.haskell.org/package/haskus-utils-variant |
| 00:14:26 | <nshepperd> | https://gitlab.haskell.org/ghc/ghc/-/wikis/unpacked-sum-types |
| 00:14:56 | <dminuoso> | Gah that wiki is so awfully slow |
| 00:15:06 | dminuoso | hates gitlab with a passion |
| 00:17:54 | <erisco> | aneksteind, there seem to be a few packages floating around for it |
| 00:18:01 | × | mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz) |
| 00:18:45 | → | irc_user joins (uid423822@gateway/web/irccloud.com/x-bjmhyxzylfubvsgp) |
| 00:21:26 | <koz_> | nshepperd: "NOTE (osa): This part is not yet implemented, but the patch is trivial and I'm going to submit it soon)" |
| 00:21:26 | × | chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
| 00:21:28 | koz_ | laughs. |
| 00:21:36 | → | chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) |
| 00:25:12 | × | jchia__ quits (~jchia@58.32.37.146) (Ping timeout: 256 seconds) |
| 00:26:27 | × | acidjnk_new quits (~acidjnk@p200300d0c719ff59c0fa403c32c1f5ec.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 00:27:28 | <aneksteind> | found this as well for those curious: https://github.com/i-am-tom/learn-me-a-haskell/blob/master/src/OneOf.hs |
| 00:27:34 | <Uniaika> | koz_: hahaha |
| 00:28:52 | <nshepperd> | ah yes, the mythical trivial patch |
| 00:29:10 | <Uniaika> | nshepperd: that is arriving as soon as you have time |
| 00:29:15 | <Uniaika> | we've all done that |
| 00:30:25 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection) |
| 00:30:35 | × | mivael quits (c16e4caa@193.110.76.170) (Quit: ::::: see you, bye :::::) |
| 00:31:21 | → | DTZUZU_ joins (~DTZUZU@205.ip-149-56-132.net) |
| 00:31:37 | × | wayne quits (~wayne@unaffiliated/wayne) (Remote host closed the connection) |
| 00:32:42 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:33:25 | × | DTZUZU quits (~DTZUZU@207.81.171.116) (Ping timeout: 240 seconds) |
| 00:37:16 | × | sh9 quits (~sh9@softbank060116136158.bbtec.net) (Ping timeout: 240 seconds) |
| 00:38:01 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 00:41:16 | × | acarrico quits (~acarrico@68.142.39.249) (Ping timeout: 240 seconds) |
| 00:42:29 | → | mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) |
| 00:42:33 | × | Inoperable quits (~PLAYER_1@fancydata.science) (Excess Flood) |
| 00:43:42 | → | acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
| 00:45:48 | → | Inoperable joins (~PLAYER_1@fancydata.science) |
| 00:46:57 | × | mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
| 00:53:05 | → | sh9 joins (~sh9@softbank060116136158.bbtec.net) |
| 00:55:39 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:00:30 | → | frdg joins (~nick@pool-71-184-143-249.bstnma.fios.verizon.net) |
| 01:01:39 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 01:03:47 | → | AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl) |
| 01:05:45 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 01:06:03 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 01:09:27 | → | LKoen joins (~LKoen@169.244.88.92.rev.sfr.net) |
| 01:10:45 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 01:12:00 | × | AndreasK quits (sid320732@gateway/web/irccloud.com/x-jisuwtkhbrktjxky) (Quit: Connection closed for inactivity) |
| 01:17:25 | × | cosimone quits (~cosimone@5.170.241.230) (Quit: cosimone) |
| 01:17:33 | × | acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 256 seconds) |
| 01:20:48 | → | mbomba joins (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) |
| 01:25:41 | → | texasmyn_ joins (~texasmyns@212.102.45.106) |
| 01:26:05 | × | texasmynsted quits (~texasmyns@212.102.45.103) (Ping timeout: 240 seconds) |
| 01:27:16 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 01:29:17 | × | joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Remote host closed the connection) |
| 01:30:17 | → | joaoh82 joins (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) |
| 01:33:01 | × | unlink__ quits (~unlink2@p200300ebcf179a00278fd81c0246cc89.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 01:33:14 | → | unlink__ joins (~unlink2@p200300ebcf179a00278fd81c0246cc89.dip0.t-ipconnect.de) |
| 01:33:16 | × | _linker_ quits (~linker@2a02:a31a:a041:9a80:51cd:d8f1:9cea:4020) (Remote host closed the connection) |
| 01:35:07 | × | joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 256 seconds) |
| 01:38:40 | → | Lord_of_Life joins (~Lord@46.217.217.219) |
| 01:40:13 | × | Lord_of_Life_ quits (~Lord@46.217.216.13) (Ping timeout: 256 seconds) |
| 01:40:18 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 01:42:41 | <MarcelineVQ> | hey you |
| 01:42:46 | <MarcelineVQ> | good job today |
| 01:43:00 | <MarcelineVQ> | it was a tough day but you got through it |
| 01:43:10 | × | texasmyn_ quits (~texasmyns@212.102.45.106) (Ping timeout: 265 seconds) |
| 01:44:21 | → | iqubic joins (~user@2601:602:9500:4870:71ac:d28d:5123:4cbd) |
| 01:44:59 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 01:45:28 | × | aneksteind quits (~anekstein@pool-108-7-199-207.bstnma.fios.verizon.net) () |
| 01:46:06 | → | conal joins (~conal@64.71.133.70) |
| 01:46:06 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 01:47:20 | hackage | polysemy-resume 0.1.0.1 - Polysemy error tracking https://hackage.haskell.org/package/polysemy-resume-0.1.0.1 (tek) |
| 01:48:41 | → | conal joins (~conal@64.71.133.70) |
| 01:49:10 | → | triteraflops joins (~triterafl@host-208-96-90-136.public.eastlink.ca) |
| 01:52:08 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 01:52:14 | → | a-kiwi3 joins (61664b96@gateway/web/cgi-irc/kiwiirc.com/ip.97.102.75.150) |
| 01:52:20 | → | Volt_ joins (~Volt_@c-73-145-164-70.hsd1.mi.comcast.net) |
| 01:54:14 | → | wayne joins (~wayne@unaffiliated/wayne) |
| 01:57:27 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 01:58:20 | → | rcdilorenzo joins (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) |
| 01:58:30 | × | hidedagger quits (~nate@unaffiliated/hidedagger) (Ping timeout: 260 seconds) |
| 02:00:23 | → | reallymemorable joins (~quassel@ip68-9-215-56.ri.ri.cox.net) |
| 02:00:39 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 02:00:42 | → | jchia__ joins (~jchia@45.63.70.29) |
| 02:01:43 | × | jchia__ quits (~jchia@45.63.70.29) (Remote host closed the connection) |
| 02:02:44 | → | jchia__ joins (~jchia@45.63.70.29) |
| 02:03:46 | × | jchia__ quits (~jchia@45.63.70.29) (Remote host closed the connection) |
| 02:03:47 | <iqubic> | jle`: It seems that your advent-of-code-api library has broken. I'm trying to compile it with Cabal and GHC 8.10.2 and I'm getting this error: https://dpaste.com/A64ZXSQZS |
| 02:04:45 | → | jchia__ joins (~jchia@45.63.70.29) |
| 02:04:51 | ← | a-kiwi3 parts (61664b96@gateway/web/cgi-irc/kiwiirc.com/ip.97.102.75.150) () |
| 02:05:18 | <MarcelineVQ> | jle`: you monster |
| 02:05:30 | <iqubic> | What's the issue now? |
| 02:06:30 | × | jchia__ quits (~jchia@45.63.70.29) (Remote host closed the connection) |
| 02:06:41 | × | joaj quits (~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca) (Ping timeout: 272 seconds) |
| 02:06:53 | → | jchia__ joins (~jchia@58.32.37.146) |
| 02:07:21 | <Ariakenom> | MarcelineVQ: hey |
| 02:07:26 | <Ariakenom> | you even encouraged others |
| 02:07:30 | → | joaj joins (~joaj@138.104.115.89.rev.vodafone.pt) |
| 02:07:43 | <Ariakenom> | you wrecked today! |
| 02:10:41 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 02:11:28 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:12:16 | <iqubic> | From what I can tell, some package updated, and now jle` has a broken package |
| 02:16:29 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 02:18:02 | <ezzieyguywuf> | can you all recommend any packages for handling configuration files? |
| 02:18:09 | <ezzieyguywuf> | or you you typically just roll your own? |
| 02:18:56 | <ezzieyguywuf> | s/you you/do you / |
| 02:21:24 | × | Ariakenom quits (~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se) (Quit: Leaving) |
| 02:21:56 | → | livvy_ joins (~livvy@gateway/tor-sasl/livvy) |
| 02:22:12 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
| 02:22:55 | → | acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
| 02:23:26 | → | Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas) |
| 02:23:39 | × | reallymemorable quits (~quassel@ip68-9-215-56.ri.ri.cox.net) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
| 02:25:49 | → | reallymemorable joins (~quassel@ip68-9-215-56.ri.ri.cox.net) |
| 02:26:01 | → | ambidextrose joins (~fut-learn@mobile-166-171-123-173.mycingular.net) |
| 02:26:22 | <koz_> | ezzieyguywuf: Depends on format. |
| 02:27:19 | <dsal> | ezzieyguywuf: It's not a recommendation, but I typically just write the thing I want to express into a file, then I write a parser for that thing that made sense to me. |
| 02:27:25 | <dsal> | I used dhall once. |
| 02:27:38 | × | xff0x quits (~fox@2001:1a81:5212:df00:d7cf:4a87:a54b:9a9b) (Ping timeout: 264 seconds) |
| 02:27:40 | × | ambidextrose quits (~fut-learn@mobile-166-171-123-173.mycingular.net) (Client Quit) |
| 02:27:46 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 02:28:38 | <ezzieyguywuf> | dsal: I was thinking of something along those lines honestly |
| 02:28:51 | × | revprez_stg quits (~revprez_s@pool-108-49-213-40.bstnma.fios.verizon.net) (Quit: Lost terminal) |
| 02:29:18 | × | Digitteknohippie quits (~user@fsf/member/digit) (Ping timeout: 260 seconds) |
| 02:29:19 | → | conal joins (~conal@64.71.133.70) |
| 02:29:24 | → | xff0x joins (~fox@2001:1a81:524c:7b00:8105:569c:1b26:2c3d) |
| 02:29:41 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 02:30:50 | <ezzieyguywuf> | koz_: I don't have a set format. mostly just "git yur data into my code" |
| 02:31:18 | <koz_> | ezzieyguywuf: Then just pick one. There's a few conf-like thingoes floating around, or you can use like, YAML, or TOML, or JSON, or w/e. |
| 02:31:48 | <koz_> | (why do all these formats have four-letter acronyms rofl) |
| 02:32:50 | <ezzieyguywuf> | I've heard of yaml and json |
| 02:33:34 | <hololeap> | i've seen toml around in my system config files |
| 02:34:27 | <ezzieyguywuf> | maybe i'll try that |
| 02:34:31 | <ezzieyguywuf> | thanks for the tips y'all |
| 02:34:43 | <koz_> | I think there's a Haskell package for TOML parsing? |
| 02:34:45 | koz_ | shruggoes. |
| 02:34:54 | <koz_> | Dhall is an option, but a pretty nuclear one. |
| 02:35:18 | <koz_> | (it's a heavy dep, and I'm _still_ not 100% clear on what it does or doesn't do because it keeps moving around and the docs are lacking) |
| 02:35:56 | × | Chi1thangoo quits (~Chi1thang@87.112.60.168) (Ping timeout: 240 seconds) |
| 02:36:10 | <ezzieyguywuf> | koz_: I like to avoid heavy deps, haven't learned lens yet for that reason |
| 02:36:29 | <koz_> | Hmm. |
| 02:36:44 | <koz_> | Someone (I think it was glguy?) wrote something for parsing a conf-like format, but I forget. |
| 02:36:49 | <koz_> | It was pretty lightweight IIRC. |
| 02:37:12 | <nshepperd> | you can use a plain old ini file |
| 02:37:16 | <ezzieyguywuf> | I see some configparser-clones |
| 02:37:20 | <ezzieyguywuf> | but toml sounds nice. |
| 02:37:22 | <glguy> | Yeah, "config-value" has minimal dependencies |
| 02:37:41 | <koz_> | That was the one. |
| 02:38:13 | <glguy> | "config-schema" has a couple more but it's still pretty light. (It's a helper for making it easy to process configurations) |
| 02:39:04 | <glguy> | There's a live demo https://glguy.net/config-demo/ |
| 02:39:33 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 02:39:35 | × | LKoen quits (~LKoen@169.244.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”) |
| 02:39:59 | <ezzieyguywuf> | 4 dependencies, nice. https://hackage.haskell.org/package/toml-parser-0.1.0.0 |
| 02:40:12 | <ezzieyguywuf> | lol, one of which is base. |
| 02:40:21 | <koz_> | ezzieyguywuf: Those are all boot packages. |
| 02:40:24 | <koz_> | So it's actually 0. :P |
| 02:40:40 | <ezzieyguywuf> | but also v 0.1.0.0 |
| 02:40:42 | <ezzieyguywuf> | so *shrug* |
| 02:41:03 | <koz_> | glguy: config-schema is great and so are you. |
| 02:41:09 | <ezzieyguywuf> | hey it's his! |
| 02:41:19 | <ezzieyguywuf> | glguy made it (the toml parser I linked) |
| 02:41:57 | <ezzieyguywuf> | glguy: isyour toml parser good to go? repo looks stale and the version number suggests to me perhaps its incomplete? |
| 02:42:02 | <glguy> | I need to fix a bug in that toml parser that was pointed out here |
| 02:42:29 | <koz_> | ezzieyguywuf: Sub 1.0 version numbers mean basically nothing. |
| 02:42:34 | <ezzieyguywuf> | glguy: is it one of the two issues listed on github? |
| 02:42:36 | <glguy> | I don't use it for anything, I prefer the config-value stuff I made for my own work |
| 02:42:44 | <koz_> | (vector is sub-1.0 for example, and I doubt anyone would seriously suggest it's somehow incomplete) |
| 02:44:15 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 256 seconds) |
| 02:44:27 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:44:42 | <glguy> | Sub-1 doesn't mean anything special in pvp |
| 02:45:09 | <iqubic> | So jle`'s Advent Of Code API library is not compiling for me. I'm getting this error: https://dpaste.com/A64ZXSQZS |
| 02:45:19 | <iqubic> | Anyone know what's going on there? |
| 02:45:39 | → | ddellacosta joins (dd@gateway/vpn/mullvad/ddellacosta) |
| 02:45:51 | hackage | tweet-hs 1.0.2.2 - Command-line tool for twitter https://hackage.haskell.org/package/tweet-hs-1.0.2.2 (vmchale) |
| 02:47:56 | <hololeap> | can you run megaparsec "in reverse"? i'd like to grab the extentions of some files, and some have two-part extensions. if it parsed the string in reverse, it could save me a headache. |
| 02:48:44 | <koz_> | hololeap: Two-part meaning something like .tar.gz? |
| 02:49:16 | <hololeap> | koz_: correct, and some of the filename bodies have '.' in them, so System.Posix.Files is getting a little confused |
| 02:49:36 | <hololeap> | rather, System.FilePath.Posix |
| 02:49:52 | × | acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 272 seconds) |
| 02:51:06 | <ezzieyguywuf> | or reeverse the string is try to parse gz.rat. |
| 02:51:15 | <koz_> | zg.rat :P |
| 02:51:17 | → | conal joins (~conal@64.71.133.70) |
| 02:51:22 | <ezzieyguywuf> | lol yea |
| 02:51:25 | <hololeap> | i know i could do someting like `parse (string (reverse ".tar.gz") <|> string (reverse ".log")) f (reverse s)` |
| 02:51:28 | <koz_> | And you'd have to re-reverse (verse?) it again. |
| 02:51:41 | <ezzieyguywuf> | lol, verse. |
| 02:51:46 | → | wei2912 joins (~wei2912@unaffiliated/wei2912) |
| 02:52:59 | <ezzieyguywuf> | the config-value stuff looks really neat, per the live demo. |
| 02:53:04 | <ezzieyguywuf> | but also seems like a lot of work, lol. |
| 02:53:21 | <koz_> | ezzieyguywuf: In what sense? To use, or to implement? |
| 02:53:56 | × | m0rphism quits (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 240 seconds) |
| 02:54:35 | <ezzieyguywuf> | use. |
| 02:54:48 | <ezzieyguywuf> | i.e. b/c of the schema thingy. |
| 02:54:57 | <ezzieyguywuf> | i mean, once you learn it it's probs not that hard |
| 02:55:16 | <koz_> | ezzieyguywuf: You don't have to use config-schema though? |
| 02:55:35 | <ezzieyguywuf> | koz_: oh forrill? maybe I misunderstood tho point of the live demo then |
| 02:56:21 | <koz_> | ezzieyguywuf: http://hackage.haskell.org/package/config-value-0.8/docs/Config.html#v:parse |
| 02:56:59 | <koz_> | config-schema makes it more user-friendly and safe, but you can use just that to get 'whatever the hell', and take it apart by hand if you so wish. |
| 02:57:04 | → | joaoh82 joins (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) |
| 02:57:36 | × | joaj quits (~joaj@138.104.115.89.rev.vodafone.pt) (Ping timeout: 240 seconds) |
| 02:58:03 | <ezzieyguywuf> | hrm, I'll take a deeper look. |
| 03:01:08 | × | Volt_ quits (~Volt_@c-73-145-164-70.hsd1.mi.comcast.net) (Quit: ) |
| 03:01:12 | <ezzieyguywuf> | blahh, but config-schema makes it user-friendly and safe, why would I avoid. |
| 03:01:24 | <ezzieyguywuf> | lol, ok I'll spend moar than 2 seconds on this |
| 03:01:33 | <ezzieyguywuf> | I am, after all, on my adhd meds |
| 03:05:20 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 03:06:23 | → | conal joins (~conal@64.71.133.70) |
| 03:07:33 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 03:07:37 | <glguy> | ezzieyguywuf, just ping me if you have questions about how to use either |
| 03:07:58 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 03:08:20 | <glguy> | If you end up using the config-schema stuff I have examples in https://hackage.haskell.org/package/config-schema-1.2.1.0/docs/Config-Schema-Spec.html |
| 03:09:13 | × | joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 264 seconds) |
| 03:09:18 | <ezzieyguywuf> | glguy: thanks I appreciate the offer. |
| 03:10:38 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 03:13:51 | <ezzieyguywuf> | glguy: what file extension do you use for conf files? lol. |
| 03:13:51 | → | conal joins (~conal@64.71.133.70) |
| 03:13:59 | <glguy> | .cfg :) |
| 03:14:04 | <ezzieyguywuf> | nice. |
| 03:14:33 | <glguy> | I have vim syntax highlighting, but that's about it |
| 03:15:56 | <ezzieyguywuf> | glguy: yea I saw that, that's what had me wondering about file extension |
| 03:16:08 | <glguy> | I put this at the bottom so vim picks it up -- vim: filetype=config-value |
| 03:17:05 | justsomeguy | has a random thought -- syntax highlighting emphasizes the wrong things: keywords and punctuation rather than names. |
| 03:17:51 | <glguy> | That probably doesn't apply to a configuration language |
| 03:18:04 | <ezzieyguywuf> | justanotheruser: I've been using nofrils colorscheme in vim for a few months now, pretty happy |
| 03:18:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 03:18:28 | <ezzieyguywuf> | glguy: vim recognises that at the bottom of the file?! I didn't know vim could do that... |
| 03:19:27 | <glguy> | https://ibb.co/26yfm2y example from my IRC client configuration |
| 03:20:04 | <glguy> | highlighting helps notice escapes in string literals, distinguish strings from atoms, etc |
| 03:21:07 | <ezzieyguywuf> | altought I modified it to highlight strings https://i.imgur.com/yaAppbE.png |
| 03:21:32 | <iqubic> | I wish I knew why this fails to build with GHC 8.10.2 https://hackage.haskell.org/package/advent-of-code-api |
| 03:21:58 | <glguy> | iqubic, that packages doesn't list any package bounds; it's intended to decay and fail to build |
| 03:22:11 | <iqubic> | Really? |
| 03:22:34 | <iqubic> | So, will I just have to wait for jle` to come around and fix it? |
| 03:23:02 | <glguy> | or guess at the bounds and submit a PR |
| 03:23:12 | <iqubic> | Hmm, that sounds difficult. |
| 03:25:07 | <iqubic> | I was planning on using this to download my data for AOC, as I did last year, but that doesn't look like it will work. |
| 03:26:05 | <iqubic> | AOC = Advent of Code. I'm planning on making a toolkit of functions for use this year, and I wanted this to be part of it, like it was last year. |
| 03:28:55 | <iqubic> | Now, seeing as that might not be working this year, I'm going to ask a different question: what does readFile return? I know it's an IO String, but does that string contain a trailing new line or not? |
| 03:31:17 | <iqubic> | jle`: Do you have any plans on updating you AoC-API that's on Hackage anytime soon? |
| 03:31:35 | <iqubic> | glguy: Are you going to be creating a haskell leaderboard this year? |
| 03:31:41 | → | ambidextrose joins (~fut-learn@mobile-166-171-122-120.mycingular.net) |
| 03:32:27 | → | rayyyy joins (~nanoz@gateway/tor-sasl/nanoz) |
| 03:33:18 | × | ambidextrose quits (~fut-learn@mobile-166-171-122-120.mycingular.net) (Client Quit) |
| 03:33:33 | <glguy> | It's the same one every year |
| 03:33:58 | <glguy> | 43100-84040706 |
| 03:34:11 | <iqubic> | Do I need to do anything special to join it for this year, if I was on the leaderboard last year? |
| 03:34:17 | <glguy> | nuh uh |
| 03:34:32 | <glguy> | You're still there |
| 03:34:43 | <iqubic> | Oh, you can just see that? |
| 03:35:09 | <iqubic> | s/that/me/ |
| 03:37:03 | × | lagothrix quits (~lagothrix@unaffiliated/lagothrix) (Killed (adams.freenode.net (Nickname regained by services))) |
| 03:37:11 | → | lagothrix joins (~lagothrix@unaffiliated/lagothrix) |
| 03:39:24 | → | kupi joins (uid212005@gateway/web/irccloud.com/x-hiccaslramtbqzdd) |
| 03:39:48 | × | Wuzzy quits (~Wuzzy@p549c9976.dip0.t-ipconnect.de) (Quit: Wuzzy) |
| 03:39:49 | × | reallymemorable quits (~quassel@ip68-9-215-56.ri.ri.cox.net) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
| 03:39:55 | <kupi> | is it a good decision to write this function? if' :: a -> a -> Bool -> a |
| 03:40:14 | <glguy> | :t Data.Bool.bool |
| 03:40:15 | <lambdabot> | a -> a -> Bool -> a |
| 03:40:27 | <kupi> | thanks |
| 03:40:33 | <glguy> | kupi, 1) it's already defined 2) it generally leads to less-readable code |
| 03:41:03 | × | theDon quits (~td@muedsl-82-207-238-090.citykom.de) (Ping timeout: 272 seconds) |
| 03:41:14 | <kupi> | what else you recommend when I >>= a Monad Bool? |
| 03:42:30 | → | theDon joins (~td@94.134.91.51) |
| 03:43:08 | <glguy> | except in perhaps the most trivial cases: do usefulName <- something; if usefulName then this else that |
| 03:43:29 | → | trepanger joins (~z@ics141-225.icsincorporated.com) |
| 03:45:00 | → | hughjfchen joins (81221413@129.34.20.19) |
| 03:46:06 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:46:06 | × | hughjfchen quits (81221413@129.34.20.19) (Remote host closed the connection) |
| 03:47:31 | <solonarv> | if you don't want to name the thing you can turn on LambdaCase and write: something >>= \case True -> this; False -> that |
| 03:48:29 | <kupi> | or something >>= \case True -> this; _ -> that |
| 03:48:36 | × | andi- quits (~andi-@NixOS/user/andi-) (Remote host closed the connection) |
| 03:49:29 | caecilius | is now known as philopsos |
| 03:50:19 | × | lxsameer quits (~lxsameer@unaffiliated/lxsameer) (Ping timeout: 246 seconds) |
| 03:51:49 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 03:53:57 | <kupi> | but I prefer >>= bool this that |
| 03:55:34 | → | andi- joins (~andi-@NixOS/user/andi-) |
| 03:58:09 | → | lxsameer joins (~lxsameer@unaffiliated/lxsameer) |
| 03:59:18 | → | joaoh82 joins (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) |
| 03:59:30 | × | joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Remote host closed the connection) |
| 04:00:05 | → | joaoh82 joins (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) |
| 04:02:18 | × | trepanger quits (~z@ics141-225.icsincorporated.com) (Quit: leaving) |
| 04:03:03 | × | urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna) |
| 04:04:33 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 04:04:36 | × | alx741 quits (~alx741@181.196.69.215) (Ping timeout: 240 seconds) |
| 04:05:18 | × | mbomba quits (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 3.0) |
| 04:06:30 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 04:09:52 | <ezzieyguywuf> | glguy: so I hvaen't gotten to config-schema yet, but I made a basic config file, and parsed it succesfully. but I'm at a bit of a loss as to what to do next. This `Value Position` data I have seems very handy, but how do I interogate it? i.e. "give my the list in section 2" |
| 04:10:58 | <glguy> | You either write functions to take apart the Value type and find what you wnt |
| 04:11:04 | <glguy> | or you use the ones I provide for you in config-schema |
| 04:11:19 | <ezzieyguywuf> | ah hah! config-schema rears its head! |
| 04:11:21 | <ezzieyguywuf> | thanks |
| 04:12:22 | → | actuallybatman joins (~sam@S010664777dafd303.cg.shawcable.net) |
| 04:13:04 | <glguy> | ezzieyguywuf, but on its own you interrogate with pattern matching |
| 04:14:05 | <glguy> | There are some helpers defined for if you're using lens: https://hackage.haskell.org/package/config-value-0.8/docs/Config-Lens.html |
| 04:14:28 | <ezzieyguywuf> | glguy: I don't really gr0k lens at the moment |
| 04:14:36 | <glguy> | Well, then ignore that |
| 04:16:44 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 04:17:16 | × | darjeeling_ quits (~darjeelin@122.245.217.23) (Ping timeout: 240 seconds) |
| 04:17:44 | → | alx741 joins (~alx741@186.178.110.99) |
| 04:19:38 | <koz_> | ezzieyguywuf: Pattern matching in general gets you surprisingly far with everything. |
| 04:20:56 | → | jedws joins (~jedws@pa49-181-235-217.pa.nsw.optusnet.com.au) |
| 04:23:05 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 04:24:55 | × | actuallybatman quits (~sam@S010664777dafd303.cg.shawcable.net) (Quit: leaving) |
| 04:25:03 | × | marek quits (~mmahut@209.250.249.245) (Ping timeout: 260 seconds) |
| 04:26:09 | <glguy> | Prelude Config.Schema Config Data.Functor.Alt> let spec :: ValueSpec [Int]; spec = listSpec (0 <$ atomSpec "default" <!> numSpec) in case parse "[1,default,4]" of Right v -> print (loadValue spec v) >> print (generateDocs spec) |
| 04:26:10 | <glguy> | Right [1,0,4] |
| 04:26:10 | <glguy> | Top-level configuration file format: |
| 04:26:11 | <glguy> | list of (`default` or integral number) |
| 04:30:33 | → | marek joins (~mmahut@209.250.249.245) |
| 04:33:01 | <ezzieyguywuf> | the schema stuff seems to pretty much document itself, after reading the examples |
| 04:33:23 | × | rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds) |
| 04:33:47 | <glguy> | If you'll tell me anything that seems poorly explained I'd use that to improve the explanations |
| 04:35:02 | <ezzieyguywuf> | glguy: I'll let you know |
| 04:35:18 | × | vg quits (~vg@139.59.59.230) (Read error: Connection reset by peer) |
| 04:35:36 | → | vg joins (~vg@139.59.59.230) |
| 04:35:43 | → | actuallybatman joins (~sam@S010664777dafd303.cg.shawcable.net) |
| 04:35:45 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 04:35:52 | <MarcelineVQ> | glguy: hey, good job. you're a great guy, doing all your helpfuol stiff all the time |
| 04:36:17 | <glguy> | That's nice of you to say, MarcelineVQ. |
| 04:36:33 | <MarcelineVQ> | you're worth it |
| 04:37:22 | × | JJ15 quits (~JJ@94.197.17.236.threembb.co.uk) (Ping timeout: 256 seconds) |
| 04:38:09 | × | nek0 quits (~nek0@mail.nek0.eu) (Quit: The Lounge - https://thelounge.chat) |
| 04:38:14 | <koz_> | MarcelineVQ, the L'Oreal rep. :P |
| 04:39:25 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 04:41:23 | → | DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) |
| 04:43:15 | × | erisco quits (~erisco@d24-57-249-233.home.cgocable.net) (Ping timeout: 256 seconds) |
| 04:44:14 | × | ddellacosta quits (dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds) |
| 04:45:50 | <MarcelineVQ> | l' gariet frucitis o la config |
| 04:46:12 | <MarcelineVQ> | zhuehuee' |
| 04:47:38 | <koz_> | I think MarcelineVQ is malfunctioning. |
| 04:48:28 | <MarcelineVQ> | wwww |
| 04:48:36 | → | acidjnk_new joins (~acidjnk@p200300d0c719ff597d005cd8d9846e4e.dip0.t-ipconnect.de) |
| 04:49:07 | × | tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection) |
| 04:49:13 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 04:51:18 | → | tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64) |
| 04:56:56 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 04:58:55 | × | solonarv quits (~solonarv@anancy-651-1-197-136.w109-217.abo.wanadoo.fr) (Ping timeout: 265 seconds) |
| 04:59:39 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 05:03:27 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 05:04:51 | → | mbomba joins (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) |
| 05:06:49 | × | vg quits (~vg@139.59.59.230) (Ping timeout: 264 seconds) |
| 05:08:52 | → | petersen joins (~petersen@redhat/juhp) |
| 05:09:51 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 05:09:56 | → | xpika joins (~alan@2001:8003:5d32:1f00:a5ad:52a6:3658:edb9) |
| 05:11:28 | <xpika> | does anyone know a library that handles creations of Lists of Lists that makes it easy to apply breakpoints? |
| 05:11:42 | <xpika> | > let single = (\y ys -> (\(x:xs)->(y:x):xs) ys) ; break = [("":)] in foldr ($) [""] (map single "hello"++break++map single "world") |
| 05:11:45 | <lambdabot> | ["hello","world"] |
| 05:13:29 | <xpika> | perhaps could be used with the writer monad eg. tall (single 1) ; tell break |
| 05:15:21 | hackage | store 0.7.8 - Fast binary serialization https://hackage.haskell.org/package/store-0.7.8 (MichaelSloan) |
| 05:15:41 | <koz_> | xpika: What do you mean by 'breakpoints' here? |
| 05:16:21 | hackage | store-core 0.4.4.4 - Fast and lightweight binary serialization https://hackage.haskell.org/package/store-core-0.4.4.4 (MichaelSloan) |
| 05:16:22 | <xpika> | koz_: the boundaries between lists |
| 05:17:20 | × | mbomba quits (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 3.0) |
| 05:17:27 | × | Zao_ quits (~Zao_@185.204.1.185) (Remote host closed the connection) |
| 05:17:35 | <xpika> | koz_: I don't mean debug breakpoints if that's what you were thinking |
| 05:17:44 | <koz_> | xpika: Yeah, I was a bit confused there. |
| 05:18:24 | × | irc_user quits (uid423822@gateway/web/irccloud.com/x-bjmhyxzylfubvsgp) (Quit: Connection closed for inactivity) |
| 05:18:28 | × | jedws quits (~jedws@pa49-181-235-217.pa.nsw.optusnet.com.au) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 05:18:57 | <xpika> | char 'a' ; char 'b' ; break ; char '1' ; break ; char '4' |
| 05:18:58 | <xpika> | => ["ab","1",4"] |
| 05:19:53 | <koz_> | Are you dealing with general lists? Or are you really dealing with lists of strings? Do you care that it's expressly _lists_? |
| 05:20:16 | <xpika> | anything that I can convert to a list would be fine |
| 05:20:45 | → | trepanger joins (~z@ics141-225.icsincorporated.com) |
| 05:21:14 | × | remexre quits (~nathan@207-153-38-50.fttp.usinternet.com) (Ping timeout: 272 seconds) |
| 05:23:07 | <koz_> | Assuming the 'lists of strings' case, you could work with some wrapper around Seq Builder, then write some ops around that? |
| 05:23:23 | <koz_> | If it's general stuff, Seq (Seq a) maybe? |
| 05:23:30 | → | ambidextrose joins (~fut-learn@mobile-166-171-122-147.mycingular.net) |
| 05:25:05 | <xpika> | Yeah I could roll my own. But I'm interested if others made a library to do what seems very basic. |
| 05:25:33 | <koz_> | It's a pretty niche thing honestly. |
| 05:25:40 | <koz_> | I've yet to ever see need for such a thing. |
| 05:29:56 | → | Saukk joins (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) |
| 05:30:11 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:31:25 | × | petersen quits (~petersen@redhat/juhp) (Ping timeout: 256 seconds) |
| 05:31:35 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Quit: leaving) |
| 05:31:51 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 05:35:37 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 05:37:25 | × | Kaiepi quits (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Ping timeout: 240 seconds) |
| 05:37:58 | → | Kaiepi joins (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) |
| 05:41:44 | → | remexre joins (~nathan@207-153-38-50.fttp.usinternet.com) |
| 05:49:25 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
| 05:49:28 | × | pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!) |
| 05:50:07 | × | cads quits (~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 256 seconds) |
| 05:50:53 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 05:53:03 | <xpika> | > let single = (\y ys -> (\(x:xs)->(y:x):xs) ys) ; break = ([]:) in foldr ($) [[]] (concatMap (\x -> if odd x then [single x ,break] else [single x]) [1..10]) |
| 05:53:06 | <lambdabot> | [[1],[2,3],[4,5],[6,7],[8,9],[10]] |
| 05:53:07 | → | petersen joins (~petersen@redhat/juhp) |
| 05:54:21 | hackage | th-utilities 0.2.4.1 - Collection of useful functions for use with Template Haskell https://hackage.haskell.org/package/th-utilities-0.2.4.1 (MichaelSloan) |
| 05:55:51 | hackage | calamity 0.1.22.1 - A library for writing discord bots in haskell https://hackage.haskell.org/package/calamity-0.1.22.1 (nitros12) |
| 06:00:42 | <xpika> | > let single = (\y ys -> (\(x:xs)->(y:x):xs) ys) ; break = (\xs -> if head xs /= [] then []:xs else xs) in foldr ($) [[]] (concatMap (\x -> if rem x 5 == 0 || rem x 3 == 0 then [break,single "fizzOrbuzz",break ] else [single (show x)]) [1..16]) |
| 06:00:45 | <lambdabot> | [["1","2"],["fizzOrbuzz"],["4"],["fizzOrbuzz"],["fizzOrbuzz"],["7","8"],["fi... |
| 06:01:30 | → | alp joins (~alp@2a01:e0a:58b:4920:85ab:9e1c:e4ae:787d) |
| 06:02:26 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 06:02:41 | → | conal joins (~conal@64.71.133.70) |
| 06:03:13 | × | pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-39-70-27-244-102.dsl.bell.ca) (Quit: ZNC 1.7.5 - https://znc.in) |
| 06:04:10 | → | drbean joins (~drbean@TC210-63-209-156.static.apol.com.tw) |
| 06:05:17 | <jle`> | iqubic: it works for ghc 8.8 :) |
| 06:05:28 | <jle`> | but you're welcome to submit a pr too :) |
| 06:05:41 | <iqubic> | I'm not going to do that. |
| 06:05:47 | <iqubic> | I know what I'll be doing. |
| 06:07:43 | × | conal quits (~conal@64.71.133.70) (Ping timeout: 260 seconds) |
| 06:07:55 | <iqubic> | I'll just downgrade to 8.8. Is there any easy way to get cabal to do that? |
| 06:08:00 | ← | actuallybatman parts (~sam@S010664777dafd303.cg.shawcable.net) () |
| 06:08:17 | <jle`> | hm, i looked at the error and it seems like it's more likely a servant version mismatch |
| 06:08:26 | <jle`> | iqubic: yeah, cabal just uses whatever GHC is in your PATH |
| 06:08:37 | <iqubic> | Cool. That's what I like to hear. |
| 06:08:38 | <jle`> | so if you have GHC 8.8 in your path then it'll use that atuomatically |
| 06:08:44 | <glguy> | You'd do: cabal configure -w ghc-8.8 |
| 06:08:45 | <jle`> | but it looks like the problem is probably a servant update that broke it |
| 06:09:08 | <iqubic> | Now I just have to tell Nix to use GHC 8.8 instead of 8.10.2. That's not too big a deal. |
| 06:09:17 | × | stree quits (~stree@50-108-97-52.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception) |
| 06:09:35 | → | stree joins (~stree@50-108-97-52.adr01.mskg.mi.frontiernet.net) |
| 06:09:53 | <jle`> | looks like it's using servant 0.16 |
| 06:09:58 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 06:09:59 | → | cads joins (~cads@ip-64-72-99-232.lasvegas.net) |
| 06:10:05 | <jle`> | so if you use servant 0.16.x with ghc 8.10 it should be ok too |
| 06:10:25 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 06:10:36 | <jle`> | i wonder what changed |
| 06:11:21 | <iqubic> | Oh, it should? Is there a way to get a particular Servant version? |
| 06:11:37 | <siraben> | What should I use to derive Arbitrary instances? |
| 06:11:46 | <siraben> | I have a tree and want to generate arbitrary trees for use in QuickCheck |
| 06:11:47 | <jle`> | iqubic: you can specify in your cabal file or package.yaml |
| 06:12:15 | <iqubic> | I'm not sure how to do that? Can you tell me what I should add to my .cabal file? |
| 06:14:22 | × | wei2912 quits (~wei2912@unaffiliated/wei2912) (Remote host closed the connection) |
| 06:14:25 | <jle`> | 'servant ==0.16.2' where you are listing your servant dependency, i think |
| 06:14:26 | <xpika> | ok question: A HTML table (without rowspans) has an equal number of fields per row. Would a list of fixed length Vectors be a good option for constructing a table like this safely? |
| 06:15:01 | <jle`> | xpika: it depends on what sort of operations you'd want to do, i think. but yeah, having something like [Vector n a] would keep each row the same length |
| 06:15:03 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 06:15:28 | <iqubic> | jle`: I'm not listing a servant dependency, I'm letting Cabal get that for me. |
| 06:16:07 | <jle`> | ah hm. you can add that in as a dep then. but also i guess i should have made stricter upper bounds for the library D: |
| 06:16:39 | <iqubic> | Are you going to update the library, or not? |
| 06:17:09 | → | darjeeling_ joins (~darjeelin@112.16.171.8) |
| 06:17:49 | <iqubic> | Also, will your OCR library be broken too, or not. |
| 06:17:51 | → | Amras joins (~Amras@unaffiliated/amras) |
| 06:17:52 | <iqubic> | ? |
| 06:18:21 | → | hughjfchen joins (81221413@129.34.20.19) |
| 06:19:04 | <ambidextrose> | keep rockin' that single-quote, iqubic |
| 06:19:17 | <koz_> | siraben: You can just write the instance by hand, surely? |
| 06:19:17 | ← | ambidextrose parts (~fut-learn@mobile-166-171-122-147.mycingular.net) () |
| 06:19:19 | <iqubic> | What single quote? |
| 06:19:35 | <siraben> | koz_: `arbitrary = oneof [pure Leaf, Node <$> arbitrary <*> arbitrary <*> arbitrary]` |
| 06:19:36 | <siraben> | yeah |
| 06:19:45 | <koz_> | siraben: That's gonna have issues. |
| 06:19:50 | <jle`> | the ocr library doesn't use servant, so i think it should be fine. but i haven't tested all the bounds for all the deps |
| 06:19:52 | <koz_> | Mostly because it'll possibly loop forever. |
| 06:19:56 | <siraben> | koz_: why? |
| 06:20:02 | <siraben> | data Tree = Node Int Tree Tree | Leaf deriving Show |
| 06:20:13 | <koz_> | Because a possible path through that Arbitrary instance is 'Node for all eternity'. |
| 06:20:16 | <koz_> | So it'll never stop. |
| 06:20:38 | <koz_> | So you need to bound its depth, probably by using resize. |
| 06:20:47 | <koz_> | (`div` 2) is a good way to do that. |
| 06:21:04 | <koz_> | Every time you make a recursive call to 'arbitrary', ensure you wrap it in 'resize'. |
| 06:21:12 | → | hidedagger joins (~nate@unaffiliated/hidedagger) |
| 06:21:37 | <koz_> | And also check for the size (by using getSize) before you recurse - if you're at 0 or lower, ensure you get a Leaf. |
| 06:23:57 | → | vg joins (~vg@139.59.59.230) |
| 06:24:44 | <siraben> | koz_: ok |
| 06:25:23 | → | miuchan joins (2d880087@45.136.0.135) |
| 06:27:10 | <siraben> | koz_: s <- getSize then |
| 06:27:12 | <siraben> | `if s <= 0 then pure Leaf else Node <$> arbitrary <*> resize (s `div` 2) arbitrary <*> resize (s `div` 2) arbitrary` |
| 06:27:14 | <siraben> | Right? |
| 06:27:41 | <koz_> | Almost. |
| 06:28:05 | <koz_> | In the 'else' arm, you want to use oneOf to pick between Leaf and Node. |
| 06:28:15 | <koz_> | Otherwise you end up with a tree that's perfectly balanced every time. |
| 06:28:34 | → | adm joins (~adm@117.223.63.167) |
| 06:28:42 | <siraben> | koz_: Ah, I see. |
| 06:28:57 | <siraben> | How do I force shrinking of the tests to make the smallest counterexample? |
| 06:29:35 | <koz_> | Did you define 'shrink'? |
| 06:29:46 | <koz_> | If you didn't define the shrink method, nothing gets shrunk. |
| 06:30:04 | <siraben> | Ah |
| 06:30:20 | <siraben> | How do I define shrink? |
| 06:30:36 | × | phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds) |
| 06:30:38 | <siraben> | Oh it's in the arbitrary class |
| 06:30:43 | <koz_> | Leaf is not shrinkable. |
| 06:30:46 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Quit: leaving) |
| 06:30:54 | <koz_> | Node shrinks to its subtrees. |
| 06:31:07 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 06:31:43 | <siraben> | Nice, works great. |
| 06:31:47 | <siraben> | `shrink Leaf = []; shrink (Node x l r) = [Leaf] ++ [l, r] ++ [Node x' l' r' | (x', l', r') <- shrink (x, l, r)]` |
| 06:32:02 | <koz_> | Nah, you don't want to shrink Node to Leaf like that. |
| 06:32:08 | <koz_> | It's not a shrink - you're inventing data. |
| 06:32:24 | <koz_> | shrink (Node _ l r) = [l, r] is fine. |
| 06:32:41 | <siraben> | Interesting, the QuickCheck docs uses this tree example |
| 06:33:09 | <iqubic> | jle`: Are you going to update the AoC-API to have strict bounds, or should I just make the required modifications on my end? |
| 06:33:11 | <siraben> | Hm, using that for shrink seems to produce worse results |
| 06:33:21 | <koz_> | siraben: In what sense? |
| 06:33:36 | <siraben> | koz_: longer counterexamples after quickCheck |
| 06:33:40 | <koz_> | Hmm. |
| 06:33:44 | × | adm quits (~adm@117.223.63.167) (Remote host closed the connection) |
| 06:33:49 | <koz_> | Well, in that case, use your original. |
| 06:33:56 | <koz_> | I guess it's a more aggressive search |
| 06:34:08 | <siraben> | taking away [Leaf] ++ doesn't seem to make a difference though |
| 06:34:10 | → | adm joins (~adm@117.223.63.167) |
| 06:34:32 | <koz_> | I always thought 'shrink' was meant to be a reduction, rather than a search. |
| 06:34:34 | × | adm quits (~adm@117.223.63.167) (Remote host closed the connection) |
| 06:34:39 | <koz_> | But I guess a search _would_ produce better results. |
| 06:34:40 | → | adm joins (~adm@117.223.63.167) |
| 06:35:04 | <siraben> | I wish I could pretty print trees... |
| 06:35:44 | <koz_> | siraben: Like, define a prettyprinter, pass that into (a variant of) forAll? |
| 06:35:49 | <siraben> | Ah there's already Data.Trees, d'oh |
| 06:35:53 | <koz_> | (there's one letting you specify the string conversion) |
| 06:36:31 | → | bitmagie joins (~Thunderbi@200116b806516200c8ecaee7ade9dd01.dip.versatel-1u1.de) |
| 06:36:39 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 06:38:00 | → | phaul joins (~phaul@ruby/staff/phaul) |
| 06:39:49 | × | nkatte_ quits (~nkatte@2804:14c:7982:10c9:4e1d:96ff:fe53:98e1) (Quit: nkatte_) |
| 06:40:04 | × | hughjfchen quits (81221413@129.34.20.19) (Ping timeout: 245 seconds) |
| 06:40:53 | <jle`> | iqubic: i might be updating it to make it work with 0.18, it seems like i was just doing a small thing unsafe before |
| 06:41:15 | <iqubic> | Ah. I see. It's fine if you don't update it. |
| 06:41:46 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 06:43:23 | × | cads quits (~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 256 seconds) |
| 06:44:31 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
| 06:45:59 | × | alp quits (~alp@2a01:e0a:58b:4920:85ab:9e1c:e4ae:787d) (Ping timeout: 272 seconds) |
| 06:46:45 | × | adm quits (~adm@117.223.63.167) (Remote host closed the connection) |
| 06:46:54 | → | hackplan joins (~hackplan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc) |
| 06:48:10 | × | hackplan quits (~hackplan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc) (Client Quit) |
| 06:48:12 | → | adm joins (~adm@117.223.63.167) |
| 06:48:19 | → | gproto23 joins (~gproto23@unaffiliated/gproto23) |
| 06:49:23 | → | hackplan joins (~miuchan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc) |
| 06:49:27 | × | gproto23 quits (~gproto23@unaffiliated/gproto23) (Client Quit) |
| 06:49:49 | → | gproto23 joins (~gproto23@unaffiliated/gproto23) |
| 06:53:21 | hackage | advent-of-code-api 0.2.7.1 - Advent of Code REST API bindings and servant API https://hackage.haskell.org/package/advent-of-code-api-0.2.7.1 (jle) |
| 06:57:26 | × | urek quits (~urek@2804:7f1:e10a:5ac1:9da8:e4f6:9638:96bd) (Quit: urek) |
| 06:57:59 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 06:58:45 | × | kupi quits (uid212005@gateway/web/irccloud.com/x-hiccaslramtbqzdd) (Quit: Connection closed for inactivity) |
| 06:58:46 | × | petersen quits (~petersen@redhat/juhp) (Ping timeout: 272 seconds) |
| 06:59:38 | × | adm quits (~adm@117.223.63.167) (Remote host closed the connection) |
| 06:59:56 | → | coot joins (~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl) |
| 06:59:58 | → | adm joins (~adm@117.223.63.167) |
| 07:01:19 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Quit: leaving) |
| 07:04:36 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 07:07:05 | <iqubic> | Oh, you just updated it. |
| 07:07:11 | × | gproto23 quits (~gproto23@unaffiliated/gproto23) (Ping timeout: 256 seconds) |
| 07:07:27 | <iqubic> | jle`: Does this now work with 8.10.2? |
| 07:08:52 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:08:59 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 07:09:45 | → | andyrtr1 joins (~andyrtr@195.140.213.38) |
| 07:09:59 | × | larou quits (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed) |
| 07:10:56 | × | adm quits (~adm@117.223.63.167) (Remote host closed the connection) |
| 07:11:09 | × | Rudd0 quits (~Rudd0@185.189.115.103) (Ping timeout: 256 seconds) |
| 07:13:59 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 07:16:16 | × | darjeeling_ quits (~darjeelin@112.16.171.8) (Ping timeout: 240 seconds) |
| 07:20:24 | → | jsomedon joins (~jsomedon@111.197.236.178) |
| 07:20:52 | <iqubic> | Actually, that the wrong question. The question should be: does this now work with the latest servant API, to which the answer is "Yes" |
| 07:21:12 | × | xff0x quits (~fox@2001:1a81:524c:7b00:8105:569c:1b26:2c3d) (Ping timeout: 260 seconds) |
| 07:21:34 | → | xff0x joins (~fox@2001:1a81:524c:7b00:4922:8a11:2fad:afb4) |
| 07:23:07 | × | jsomedon quits (~jsomedon@111.197.236.178) (Client Quit) |
| 07:23:10 | × | hidedagger quits (~nate@unaffiliated/hidedagger) (Quit: WeeChat 2.9) |
| 07:23:19 | <jle`> | hooray :D |
| 07:24:16 | × | joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 240 seconds) |
| 07:24:18 | → | adm joins (~adm@117.223.63.167) |
| 07:24:33 | → | mbomba joins (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) |
| 07:24:35 | × | bitmagie quits (~Thunderbi@200116b806516200c8ecaee7ade9dd01.dip.versatel-1u1.de) (Quit: bitmagie) |
| 07:25:22 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 07:25:27 | → | alp joins (~alp@2a01:e0a:58b:4920:c928:701f:1376:41b8) |
| 07:26:37 | × | electricityZZZZ quits (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 07:27:03 | → | electricityZZZZ joins (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) |
| 07:30:58 | <iqubic> | I don't actually know if it works. I haven't tested it. I'm just going by what your commit messages say. I trust you to have tested the thing before releasing it. |
| 07:31:54 | → | petersen joins (~petersen@redhat/juhp) |
| 07:32:03 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
| 07:32:06 | → | Digit joins (~user@fsf/member/digit) |
| 07:35:19 | → | danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
| 07:36:43 | × | tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds) |
| 07:37:31 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 07:38:33 | → | tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64) |
| 07:39:39 | → | christo joins (~chris@81.96.113.213) |
| 07:40:54 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection) |
| 07:41:37 | × | triteraflops quits (~triterafl@host-208-96-90-136.public.eastlink.ca) (Ping timeout: 264 seconds) |
| 07:42:34 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 07:44:17 | → | johnw joins (~johnw@haskell/developer/johnw) |
| 07:48:25 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:48:43 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 07:49:43 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
| 07:53:18 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
| 07:59:16 | → | joaoh82 joins (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) |
| 08:00:16 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 08:01:01 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 08:01:16 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 08:01:32 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 08:01:37 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 08:02:17 | × | Saukk quits (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection) |
| 08:03:47 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 08:05:39 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
| 08:06:34 | → | vicfred joins (~vicfred@unaffiliated/vicfred) |
| 08:07:03 | × | alp quits (~alp@2a01:e0a:58b:4920:c928:701f:1376:41b8) (Ping timeout: 272 seconds) |
| 08:07:12 | → | nek0 joins (~nek0@mail.nek0.eu) |
| 08:07:39 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Max SendQ exceeded) |
| 08:08:11 | → | vicfred joins (~vicfred@unaffiliated/vicfred) |
| 08:08:57 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 272 seconds) |
| 08:09:13 | × | joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 264 seconds) |
| 08:12:03 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 08:12:22 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 08:13:03 | → | triteraflops joins (~triterafl@host-208-96-90-136.public.eastlink.ca) |
| 08:16:58 | → | christo joins (~chris@81.96.113.213) |
| 08:17:37 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds) |
| 08:22:25 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 08:28:35 | × | Amras quits (~Amras@unaffiliated/amras) (Ping timeout: 272 seconds) |
| 08:29:51 | → | Amras joins (~Amras@unaffiliated/amras) |
| 08:32:01 | × | Lord_of_Life quits (~Lord@46.217.217.219) (Changing host) |
| 08:32:01 | → | Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 08:39:26 | → | asheshambasta joins (~user@ptr-e1lysauiv50il654lwl.18120a2.ip6.access.telenet.be) |
| 08:40:48 | → | raichoo joins (~raichoo@dslb-092-073-220-084.092.073.pools.vodafone-ip.de) |
| 08:41:15 | × | oxide quits (~lambda@unaffiliated/mclaren) (Ping timeout: 260 seconds) |
| 08:41:36 | → | cads joins (~cads@ip-64-72-99-232.lasvegas.net) |
| 08:41:56 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:42:25 | → | alp joins (~alp@2a01:e0a:58b:4920:449d:95d8:faaa:919f) |
| 08:43:43 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
| 08:45:01 | × | aarvar quits (~foewfoiew@50.35.43.33) (Ping timeout: 246 seconds) |
| 08:45:26 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 08:47:20 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 08:56:02 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 08:57:41 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 08:58:03 | × | mbomba quits (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Ping timeout: 260 seconds) |
| 09:00:13 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 09:00:25 | × | cads quits (~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds) |
| 09:01:05 | × | Sheilong quits (uid293653@gateway/web/irccloud.com/x-jxbrpiggxmywaele) (Quit: Connection closed for inactivity) |
| 09:08:21 | hackage | ede 0.3.0.0 - Templating language with similar syntax and features to Liquid or Jinja2. https://hackage.haskell.org/package/ede-0.3.0.0 (BrendanHay) |
| 09:14:03 | → | shangxiao joins (~davids@101.181.159.140) |
| 09:19:23 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 09:21:42 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:9156:94db:6381:b8e1:921c) |
| 09:24:53 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 09:26:23 | × | livvy_ quits (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds) |
| 09:27:13 | → | toorevitimirp joins (~tooreviti@117.182.183.16) |
| 09:27:50 | × | raichoo quits (~raichoo@dslb-092-073-220-084.092.073.pools.vodafone-ip.de) (Quit: Lost terminal) |
| 09:28:46 | → | em1n joins (~user@2401:4900:33a0:9423:35c5:7032:f69d:635c) |
| 09:29:00 | → | mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) |
| 09:30:40 | → | wonko7 joins (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) |
| 09:31:09 | → | ddere joins (uid110888@gateway/web/irccloud.com/x-ummpgtznmkpsetvj) |
| 09:33:56 | × | triteraflops quits (~triterafl@host-208-96-90-136.public.eastlink.ca) (Ping timeout: 265 seconds) |
| 09:34:03 | → | triteraflops joins (~triterafl@host-208-96-90-136.public.eastlink.ca) |
| 09:35:11 | → | knupfer joins (~Thunderbi@200116b82c7f88004886d9fffe889d05.dip.versatel-1u1.de) |
| 09:35:13 | × | knupfer quits (~Thunderbi@200116b82c7f88004886d9fffe889d05.dip.versatel-1u1.de) (Client Quit) |
| 09:35:28 | → | knupfer joins (~Thunderbi@i5E86B463.versanet.de) |
| 09:36:38 | × | hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-jbnazvtdsyymenum) (Quit: Connection closed for inactivity) |
| 09:37:59 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
| 09:39:05 | ← | asheshambasta parts (~user@ptr-e1lysauiv50il654lwl.18120a2.ip6.access.telenet.be) ("ERC (IRC client for Emacs 28.0.50)") |
| 09:40:05 | × | drbean quits (~drbean@TC210-63-209-156.static.apol.com.tw) (Ping timeout: 240 seconds) |
| 09:41:24 | × | em1n quits (~user@2401:4900:33a0:9423:35c5:7032:f69d:635c) (Ping timeout: 240 seconds) |
| 09:45:08 | × | notzmv quits (~user@unaffiliated/zmv) (Ping timeout: 256 seconds) |
| 09:46:12 | → | joaoh82 joins (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) |
| 09:47:07 | → | mbomba joins (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) |
| 09:47:25 | × | mbomba quits (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Client Quit) |
| 09:47:34 | → | notzmv joins (~user@unaffiliated/zmv) |
| 09:49:44 | × | benjamin-l quits (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Quit: WeeChat 2.9) |
| 09:49:59 | → | benjamin-l joins (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) |
| 09:50:04 | → | LKoen joins (~LKoen@169.244.88.92.rev.sfr.net) |
| 09:50:28 | × | joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Ping timeout: 246 seconds) |
| 09:55:12 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:00:21 | × | benjamin-l quits (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Quit: WeeChat 3.0) |
| 10:00:38 | → | benjamin-l joins (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) |
| 10:01:03 | → | rprije joins (~rprije@14-202-129-120.static.tpgi.com.au) |
| 10:04:29 | → | Rudd0 joins (~Rudd0@185.189.115.108) |
| 10:05:05 | → | darjeeling_ joins (~darjeelin@122.245.217.23) |
| 10:14:21 | × | alp quits (~alp@2a01:e0a:58b:4920:449d:95d8:faaa:919f) (Ping timeout: 272 seconds) |
| 10:14:21 | hackage | implicit-hie 0.1.2.5 - Auto generate hie-bios cradles & hie.yaml https://hackage.haskell.org/package/implicit-hie-0.1.2.5 (Avi_Dessauer) |
| 10:15:44 | × | miuchan quits (2d880087@45.136.0.135) (Remote host closed the connection) |
| 10:16:12 | × | acidjnk_new quits (~acidjnk@p200300d0c719ff597d005cd8d9846e4e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 10:18:39 | × | mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz) |
| 10:20:26 | × | hackplan quits (~miuchan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc) (Ping timeout: 264 seconds) |
| 10:21:34 | → | mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) |
| 10:22:59 | × | marek quits (~mmahut@209.250.249.245) (Ping timeout: 260 seconds) |
| 10:23:26 | → | marek joins (~mmahut@209.250.249.245) |
| 10:23:43 | → | hackplan joins (~miuchan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc) |
| 10:29:08 | × | benjamin-l quits (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Quit: WeeChat 3.0) |
| 10:29:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 10:29:24 | → | benjamin-l joins (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) |
| 10:29:35 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 10:33:01 | × | tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection) |
| 10:33:31 | → | tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64) |
| 10:34:03 | → | oish joins (~charlie@228.25.169.217.in-addr.arpa) |
| 10:36:38 | × | hexfive quits (~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.) |
| 10:36:52 | → | conal joins (~conal@64.71.133.70) |
| 10:36:54 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 10:38:00 | → | Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it) |
| 10:43:39 | × | Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer) |
| 10:44:27 | → | fendor joins (~fendor@178.115.128.128.wireless.dyn.drei.com) |
| 10:45:46 | → | alp joins (~alp@2a01:e0a:58b:4920:89fd:4813:7f86:5e18) |
| 10:47:43 | × | vg quits (~vg@139.59.59.230) (Ping timeout: 260 seconds) |
| 10:55:19 | × | adm quits (~adm@117.223.63.167) (Remote host closed the connection) |
| 10:55:26 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 10:56:39 | → | adm joins (~adm@117.223.63.167) |
| 10:59:01 | → | wei2912 joins (~wei2912@unaffiliated/wei2912) |
| 10:59:29 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 10:59:35 | → | joaj joins (~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca) |
| 11:01:20 | × | adm quits (~adm@117.223.63.167) (Ping timeout: 272 seconds) |
| 11:03:04 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:9156:94db:6381:b8e1:921c) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 11:03:16 | × | phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds) |
| 11:04:21 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:07:02 | × | sh9 quits (~sh9@softbank060116136158.bbtec.net) (Ping timeout: 272 seconds) |
| 11:09:34 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 11:09:51 | → | phaul joins (~phaul@ruby/staff/phaul) |
| 11:10:05 | × | alp quits (~alp@2a01:e0a:58b:4920:89fd:4813:7f86:5e18) (Ping timeout: 272 seconds) |
| 11:10:45 | → | sh9 joins (~sh9@softbank060116136158.bbtec.net) |
| 11:14:03 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
| 11:15:14 | × | phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds) |
| 11:15:46 | → | phaul joins (~phaul@ruby/staff/phaul) |
| 11:21:25 | × | marek quits (~mmahut@209.250.249.245) (Ping timeout: 240 seconds) |
| 11:21:29 | × | benjamin-l quits (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Ping timeout: 272 seconds) |
| 11:21:37 | → | marek joins (~mmahut@209.250.249.245) |
| 11:25:20 | → | joaoh82 joins (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) |
| 11:26:04 | × | hackplan quits (~miuchan@2408:8221:4b1e:80d0:8041:ecd2:ffb8:82bc) (Ping timeout: 240 seconds) |
| 11:26:40 | × | tolt quits (~weechat-h@li219-154.members.linode.com) (Quit: WeeChat 2.9) |
| 11:26:50 | → | alp joins (~alp@2a01:e0a:58b:4920:e556:aa6f:40c2:461e) |
| 11:26:58 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 11:30:08 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:30:36 | → | tolt joins (~weechat-h@li219-154.members.linode.com) |
| 11:31:50 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
| 11:33:36 | × | Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds) |
| 11:35:48 | → | f-a joins (~f-a@151.68.155.243) |
| 11:37:16 | × | theorbtwo quits (~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net) (Ping timeout: 256 seconds) |
| 11:39:34 | × | joaoh82 quits (~joaoh82@ip-213-127-88-241.ip.prioritytelecom.net) (Remote host closed the connection) |
| 11:40:07 | → | joaoh82 joins (~joaoh82@157-131-134-210.dedicated.static.sonic.net) |
| 11:40:36 | × | phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds) |
| 11:41:10 | → | hackplan joins (~miuchan@2408:8221:4b1e:80d0:1c28:9d6f:fae6:d558) |
| 11:41:48 | × | rprije quits (~rprije@14-202-129-120.static.tpgi.com.au) (Ping timeout: 256 seconds) |
| 11:42:02 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:9156:94db:6381:b8e1:921c) |
| 11:43:26 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 11:43:43 | × | oish quits (~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 256 seconds) |
| 11:44:39 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 260 seconds) |
| 11:45:25 | × | mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
| 11:45:44 | → | phaul joins (~phaul@ruby/staff/phaul) |
| 11:45:47 | × | joaoh82 quits (~joaoh82@157-131-134-210.dedicated.static.sonic.net) () |
| 11:45:57 | → | oish joins (~charlie@228.25.169.217.in-addr.arpa) |
| 11:45:59 | × | DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection) |
| 11:46:33 | → | DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) |
| 11:46:36 | → | sh91 joins (~sh9@softbank060116136158.bbtec.net) |
| 11:46:46 | → | vg_ joins (~vg@139.59.59.230) |
| 11:46:52 | × | vg_ quits (~vg@139.59.59.230) (Remote host closed the connection) |
| 11:47:01 | × | petersen quits (~petersen@redhat/juhp) (Ping timeout: 246 seconds) |
| 11:47:16 | → | vg_ joins (~vg@139.59.59.230) |
| 11:47:25 | × | sh9 quits (~sh9@softbank060116136158.bbtec.net) (Ping timeout: 240 seconds) |
| 11:48:54 | × | vg_ quits (~vg@139.59.59.230) (Client Quit) |
| 11:52:31 | × | wonko7 quits (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 272 seconds) |
| 11:54:46 | → | __monty__ joins (~toonn@unaffiliated/toonn) |
| 11:54:51 | × | SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!) |
| 11:56:15 | → | SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net) |
| 11:56:56 | → | petersen joins (~petersen@redhat/juhp) |
| 12:00:12 | → | adm joins (~adm@117.223.63.167) |
| 12:04:11 | × | Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Quit: Leaving) |
| 12:04:36 | × | adm quits (~adm@117.223.63.167) (Ping timeout: 240 seconds) |
| 12:05:03 | → | JJ15 joins (~JJ@94.197.17.236.threembb.co.uk) |
| 12:05:11 | × | darjeeling_ quits (~darjeelin@122.245.217.23) (Ping timeout: 260 seconds) |
| 12:05:18 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 260 seconds) |
| 12:05:25 | → | Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it) |
| 12:06:10 | → | Iolen joins (~Iolen@82.131.38.59.cable.starman.ee) |
| 12:07:04 | → | darjeeling_ joins (~darjeelin@122.245.217.23) |
| 12:07:15 | <Iolen> | ░▓░▓░▓░▓░▓░▓░▓░▓░▓░ Hello ..... ░▓░▓░▓░▓░▓░▓░▓░▓░▓░ |
| 12:07:40 | × | lpy quits (~nyd@unaffiliated/elysian) (Quit: lpy) |
| 12:08:13 | → | muzzle joins (~user@2001:a62:1506:3101:844e:2920:a6de:5dd4) |
| 12:10:43 | × | muzzle quits (~user@2001:a62:1506:3101:844e:2920:a6de:5dd4) (Remote host closed the connection) |
| 12:10:47 | → | vg_ joins (~vg@139.59.59.230) |
| 12:10:49 | × | vg_ quits (~vg@139.59.59.230) (Remote host closed the connection) |
| 12:11:32 | → | pavonia joins (~user@unaffiliated/siracusa) |
| 12:12:38 | <Iolen> | ░▓░▓░▓░▓░▓░▓░▓░▓░▓░ Everyone invited to new chat place at: http://iaaaaa.mywebcommunity.org/ |
| 12:12:38 | <Iolen> | Thank You for attention ! ░▓░▓░▓░▓░▓░▓░▓░▓░▓░ |
| 12:14:07 | <__monty__> | ,where mods |
| 12:14:54 | <__monty__> | @ops |
| 12:14:54 | <lambdabot> | Maybe you meant: pl oeis docs |
| 12:15:31 | <__monty__> | Anyone remember the correct command? |
| 12:15:34 | <__monty__> | @where ops |
| 12:15:34 | <lambdabot> | byorgey Cale conal copumpkin dcoutts dibblego dolio edwardk geekosaur glguy jmcarthur johnw mniip monochrom quicksilver shachaf shapr ski |
| 12:15:42 | <__monty__> | Success \o/ |
| 12:15:49 | <siraben> | it's a bot, spammed multiple channels |
| 12:16:06 | <f-a> | yup, multiple people reporting on #freenode |
| 12:16:30 | <dcoutts> | hmm, I don't seem to have my op rights |
| 12:16:55 | → | Ariakenom joins (~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se) |
| 12:17:45 | <__monty__> | dcoutts: You can always have chanserv op you if you have the correct flags. |
| 12:19:12 | × | SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!) |
| 12:21:03 | × | petersen quits (~petersen@redhat/juhp) (Ping timeout: 260 seconds) |
| 12:23:46 | → | petersen joins (~petersen@redhat/juhp) |
| 12:24:10 | → | m0rphism joins (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) |
| 12:24:48 | → | jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) |
| 12:26:05 | × | awk quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 240 seconds) |
| 12:26:06 | → | drbean joins (~drbean@TC210-63-209-81.static.apol.com.tw) |
| 12:27:08 | × | dcoutts quits (~duncan@33.14.75.194.dyn.plus.net) (Quit: Leaving) |
| 12:27:23 | → | dcoutts joins (~dcoutts@33.14.75.194.dyn.plus.net) |
| 12:27:23 | × | dcoutts quits (~dcoutts@33.14.75.194.dyn.plus.net) (Changing host) |
| 12:27:23 | → | dcoutts joins (~dcoutts@unaffiliated/dcoutts) |
| 12:27:50 | ChanServ | sets mode +o dcoutts |
| 12:27:54 | <dcoutts> | yay |
| 12:28:04 | Iolen | is kicked by dcoutts (Iolen) |
| 12:28:08 | ChanServ | sets mode -o dcoutts |
| 12:30:20 | → | ggole joins (~ggole@2001:8003:8119:7200:69c3:3fe:81:8dbf) |
| 12:33:45 | × | jzl quits (~jzl@unaffiliated/jzl) (Remote host closed the connection) |
| 12:33:56 | × | jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 240 seconds) |
| 12:34:26 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 12:36:52 | hackage | ede 0.3.1.0 - Templating language with similar syntax and features to Liquid or Jinja2. https://hackage.haskell.org/package/ede-0.3.1.0 (BrendanHay) |
| 12:39:50 | × | DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection) |
| 12:40:05 | → | rayyyy joins (~nanoz@gateway/tor-sasl/nanoz) |
| 12:40:22 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 12:42:33 | × | alp quits (~alp@2a01:e0a:58b:4920:e556:aa6f:40c2:461e) (Ping timeout: 272 seconds) |
| 12:49:25 | → | avdb joins (~avdb@ip-81-11-215-86.dsl.scarlet.be) |
| 12:49:59 | <avdb> | Am I allowed to ask people to make my spaghetti code better? I wrote a small program but there's a lot of repetition and I don't know how to make it shorter ... |
| 12:50:27 | × | darjeeling_ quits (~darjeelin@122.245.217.23) (Ping timeout: 260 seconds) |
| 12:51:07 | <f-a> | avdb: sure, but maybe run hlint first |
| 12:51:31 | <avdb> | I use ALE but it doesn't detect anything |
| 12:51:34 | <avdb> | http://codepad.org/nIz9DRYA |
| 12:51:56 | <avdb> | ALE is a collection of linters including hlint right? |
| 12:52:39 | <f-a> | no idea what ALE is to be honest |
| 12:53:04 | <avdb> | https://github.com/dense-analysis/ale |
| 12:53:53 | → | contiver joins (~contiver@84-115-65-38.wifi.dynamic.surfer.at) |
| 12:54:12 | <f-a> | ok |
| 12:54:30 | <f-a> | instead of guards, why not pattern match? |
| 12:54:34 | → | iqubic` joins (~user@2601:602:9500:4870:ed6c:ae7b:1487:9d5a) |
| 12:54:58 | <f-a> | also is `seconds` really a parameter? |
| 12:54:58 | × | chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
| 12:55:12 | <f-a> | *really needed |
| 12:55:16 | → | chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) |
| 12:55:18 | → | SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net) |
| 12:55:35 | <avdb> | It's indeed probably possible to make it point-free |
| 12:55:51 | <avdb> | Can I add the numbers to the data types instead of the function? |
| 12:56:10 | <f-a> | of course |
| 12:56:40 | <avdb> | Wasn't sure if pattern matching would work, just `ageOn Mars = undefined`? |
| 12:56:56 | <avdb> | If I do that I'm still writing out the function multiple times |
| 12:57:04 | <f-a> | data Plantet = PlanetTag Float and data PlanetTag = Mars | … |
| 12:57:33 | <f-a> | pattern matching would work, yeah |
| 12:57:41 | <avdb> | Wait let me first fix the pattern matching |
| 12:58:01 | <f-a> | what does ageOn computes, exactly? |
| 12:58:50 | × | iqubic quits (~user@2601:602:9500:4870:71ac:d28d:5123:4cbd) (Ping timeout: 264 seconds) |
| 12:59:05 | <f-a> | (to rephrase, why `ageOn :: Planet -> Float -> Float` instead of `ageOn :: Planet -> Float`) |
| 13:01:13 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 13:05:32 | <avdb> | "Given an age in seconds, calculate how old someone would be on the following planets" |
| 13:05:58 | <f-a> | oh, now I see |
| 13:06:02 | <avdb> | No idea, I'm on Exercism and they recommended to use "ageOn :: Planet -> Float -> Float" |
| 13:06:14 | <f-a> | ok |
| 13:06:23 | <avdb> | You need to first calculate someone's age on earth and convert it to the other planets if necessary |
| 13:07:03 | → | darjeeling_ joins (~darjeelin@122.245.217.23) |
| 13:07:09 | <f-a> | I would probably write |
| 13:07:28 | <f-a> | where earthAge = seconds * 3155760 |
| 13:07:44 | <f-a> | and put `earthAge` in planet == Earth = earthAge rather |
| 13:08:20 | → | adm joins (~adm@117.223.63.167) |
| 13:08:27 | <avdb> | I can't make it point-free by the way |
| 13:08:30 | <avdb> | I don't know why |
| 13:08:34 | <avdb> | This is what I currently have |
| 13:08:37 | → | awk joins (~mnrmnaugh@unaffiliated/mnrmnaugh) |
| 13:08:39 | <f-a> | do you *need* to make it pointfree? |
| 13:08:59 | <avdb> | http://codepad.org/OTevDnrJ |
| 13:09:10 | <avdb> | I don't need to I just want it to be shorter |
| 13:09:17 | × | contiver quits (~contiver@84-115-65-38.wifi.dynamic.surfer.at) (Ping timeout: 256 seconds) |
| 13:10:02 | <avdb> | Do where bindings work with pattern matching? |
| 13:10:48 | <f-a> | why `(*) 0.2408467 $ ageOn Earth` |
| 13:11:00 | <f-a> | instead of `0.24 * ageOn Earth`? |
| 13:11:44 | <f-a> | and no, where spans over guards but not patterns. But you can be crafty like this |
| 13:12:06 | <avdb> | So I can't pattern match anymore? |
| 13:12:16 | <avdb> | If I use where |
| 13:12:16 | <f-a> | you can with a case … of |
| 13:12:18 | <f-a> | one second |
| 13:14:13 | <f-a> | http://www.ariis.it/link/t/paste21061-0 there, something like this |
| 13:14:28 | <f-a> | emh, bar the typos |
| 13:14:47 | → | alp joins (~alp@2a01:e0a:58b:4920:3b:6ea2:53ef:78a2) |
| 13:15:47 | × | andyrtr1 quits (~andyrtr@195.140.213.38) (Remote host closed the connection) |
| 13:16:21 | <avdb> | Is that the *best* possible solution? |
| 13:17:39 | <f-a> | it is clear, it is not redundant. You *have* to write those 84.016846 numbers down somewhere in your program, whether inside a function or in a helper function or in a datatype |
| 13:18:03 | <avdb> | There is improvement so I will stick with your solution, in real projects it's probably better to work with a database for such stuff |
| 13:18:07 | <avdb> | Right? |
| 13:18:40 | <f-a> | you can have an helper function like |
| 13:18:40 | → | delbmuts_ joins (52874ce6@ppp-82-135-76-230.dynamic.mnet-online.de) |
| 13:18:41 | <f-a> | factor :: Planet -> Float |
| 13:18:41 | <f-a> | factor Mercury = 13 |
| 13:18:44 | <f-a> | ⁝ |
| 13:19:21 | <f-a> | and then ageOn becomes |
| 13:19:22 | <f-a> | ageOn p a = let ageEarth = a * 2 in ageEarth * factor p |
| 13:19:24 | <avdb> | You mean to make it easier to separate data from the function? |
| 13:19:43 | <avdb> | That's even better imo |
| 13:19:57 | <f-a> | or even use an assoc list. My point is, *somewhere* the data has to be written |
| 13:20:04 | <avdb> | assoc? |
| 13:20:07 | <avdb> | Never heard of that before |
| 13:20:16 | <f-a> | sorry, it is just a |
| 13:20:30 | <f-a> | [(Pluto, 18), (Earth, 1) …] list |
| 13:20:49 | × | ddere quits (uid110888@gateway/web/irccloud.com/x-ummpgtznmkpsetvj) (Quit: Connection closed for inactivity) |
| 13:20:53 | <avdb> | Oh yea exactly what I first thought when I started the exercise, it's just that I'm bad with ADT :P |
| 13:21:09 | <f-a> | but it was just a thought, the helper function is better (GHC can warn you if you miss a constructor, etc.) |
| 13:21:53 | <f-a> | just relax and remember that one of the strong points of Haskell is easy refactoring |
| 13:22:14 | <f-a> | if you come up later with a more elegant solution, you can refactor easily thanks to types, inference |
| 13:23:43 | × | alp quits (~alp@2a01:e0a:58b:4920:3b:6ea2:53ef:78a2) (Ping timeout: 272 seconds) |
| 13:24:14 | → | f-a_ joins (~f-a@151.82.219.112) |
| 13:26:01 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:9156:94db:6381:b8e1:921c) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 13:26:16 | × | f-a quits (~f-a@151.68.155.243) (Ping timeout: 240 seconds) |
| 13:26:28 | × | f-a_ quits (~f-a@151.82.219.112) (Client Quit) |
| 13:28:07 | → | christo joins (~chris@81.96.113.213) |
| 13:30:24 | → | Saukk joins (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) |
| 13:30:25 | <avdb> | Alright, I just used a factor helper function and it looks much better now since it's a one line function |
| 13:30:56 | <avdb> | I installed GHC and Cabal with ghcup, any idea how I can install Stack? |
| 13:30:56 | × | gentauro quits (~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer) |
| 13:31:18 | → | gentauro joins (~gentauro@unaffiliated/gentauro) |
| 13:31:37 | <Sose> | avdb: I've installed ghc and cabal with ghcup and just used Stack's own install script for Stack and everything seems to work fine |
| 13:33:42 | × | zaquest quits (~notzaques@5.128.210.178) (Read error: Connection reset by peer) |
| 13:33:43 | <avdb> | Sose: Thanks, but can Stack update itself?> |
| 13:33:56 | × | awk quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 240 seconds) |
| 13:34:02 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 13:34:15 | → | zaquest joins (~notzaques@5.128.210.178) |
| 13:34:16 | <Sose> | I think it can with `stack upgrade` |
| 13:34:35 | <Sose> | pretty new to haskell myself and I just installed everything recently so I haven't had the need to upgrade much :) |
| 13:34:35 | × | chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
| 13:35:03 | → | chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) |
| 13:35:52 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 13:38:47 | → | jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) |
| 13:42:08 | × | drbean quits (~drbean@TC210-63-209-81.static.apol.com.tw) (Ping timeout: 260 seconds) |
| 13:42:37 | × | z0k quits (~user@101.50.127.33) (Quit: WeeChat 3.0) |
| 13:44:53 | × | HarveyPwca quits (~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net) (Quit: Leaving) |
| 13:46:53 | × | rcdilorenzo quits (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo) |
| 13:47:01 | → | vg joins (~vg@139.59.59.230) |
| 13:47:09 | → | rcdilorenzo joins (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) |
| 13:47:13 | × | vg quits (~vg@139.59.59.230) (Remote host closed the connection) |
| 13:47:28 | → | vg joins (~vg@139.59.59.230) |
| 13:47:30 | → | urek joins (~urek@2804:7f1:e10a:5ac1:558c:16f8:858a:ffa6) |
| 13:49:50 | × | jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection) |
| 13:51:24 | × | rcdilorenzo quits (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Client Quit) |
| 13:51:40 | → | rcdilorenzo joins (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) |
| 13:52:22 | <delbmuts_> | Hi again, is there a function "Reader Int a -> (ResourceT IO) a"? I'd like to get rid of the "undefined" in https://paste.debian.net/hidden/2b257950 but don't know how. Thanks. |
| 13:54:05 | × | darjeeling_ quits (~darjeelin@122.245.217.23) (Ping timeout: 240 seconds) |
| 13:56:48 | <frdg> | `toHtml :: blaze-markup-0.8.2.5:Text.Blaze.ToMarkup a => a -> Html` What is the best way to go about finding a type that satisfies this constraint? Is there something like `:type` in ghci where I can enter a constraint and get back Types that satisfy it? |
| 13:57:14 | <dminuoso> | delbmuts_: That looks like a strange thing to do. |
| 13:57:25 | <dminuoso> | delbmuts_: What's the intention? |
| 13:57:47 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 13:58:14 | <ski> | delbmuts_> :t transPipe |
| 13:58:34 | <dminuoso> | Also, your binding `server = ws` shouldn't check, right? |
| 13:59:10 | → | christo joins (~chris@81.96.113.213) |
| 13:59:52 | <delbmuts_> | dminuoso: I'd like to access my custom servant `State` in the WebSocket function. |
| 14:00:20 | <dminuoso> | so far so good. |
| 14:00:21 | <delbmuts_> | dminuoso: AFAICT ghc isn't complaining. |
| 14:01:10 | <dminuoso> | ah hold on, ServerT is a tyfam right |
| 14:03:12 | <dminuoso> | type ServerT (WebSocketConduit i o) m = ConduitT i o (ResourceT IO) () |
| 14:03:14 | <dminuoso> | I see |
| 14:03:16 | <delbmuts_> | ski: transPipe :: Monad m => (forall a. m a -> n a) -> ConduitT i o m r -> ConduitT i o n r -- https://hackage.haskell.org/package/conduit-1.3.4/docs/Data-Conduit.html#v:transPipe |
| 14:03:27 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 14:05:54 | → | Deide joins (~Deide@217.155.19.23) |
| 14:06:36 | <delbmuts_> | The fact that `m` does not appear on the right side bugs me a little. |
| 14:06:45 | <dminuoso> | delbmuts_: Why not just add ResourceT to your AppM? |
| 14:06:59 | <dminuoso> | Then you can just use transPipe the same way as hoistServer |
| 14:08:10 | <delbmuts_> | Around or inside the ReaderT? (Would that matter?) I think I tried it, but I'll try again. :) |
| 14:08:18 | <dminuoso> | I guess your main mistake is presuming that there's no ResourceT in your version of conduit |
| 14:08:22 | → | darjeeling_ joins (~darjeelin@122.245.217.23) |
| 14:08:57 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 14:08:57 | <dminuoso> | (I mean it seems like you're trying to throw away your MonadResource interface for no good reason) |
| 14:09:24 | <dminuoso> | Well, so servant-websockets assumes your monad to be |
| 14:09:28 | <dminuoso> | ConduitT i o (ResourceT IO) () |
| 14:10:02 | <dminuoso> | You get to provide a natural transformation `m ~> n`, with n ~ ResourceT IO, so it must be: |
| 14:10:10 | <dminuoso> | m ~> ResourceT IO |
| 14:10:12 | <dminuoso> | If you had |
| 14:10:37 | <dminuoso> | yourPipe :: ReaderT State (ResourceT IO) () |
| 14:11:12 | <dminuoso> | Then you could trivially write `ReaderT State (ResourceT IO) ~> ResourceT IO` with just `flip runReaderT ($)` |
| 14:11:41 | × | Saukk quits (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection) |
| 14:12:20 | × | SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!) |
| 14:12:29 | × | vg quits (~vg@139.59.59.230) (Quit: vg) |
| 14:12:57 | → | vg joins (~vg@139.59.59.230) |
| 14:13:00 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 14:13:01 | → | SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net) |
| 14:14:13 | → | contiver joins (~contiver@84-115-64-11.wifi.dynamic.surfer.at) |
| 14:14:36 | <delbmuts_> | dminuoso: I'll need some time to digest that. Thank you! :) |
| 14:15:20 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 14:15:39 | × | berberman_ quits (~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds) |
| 14:16:03 | × | SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Client Quit) |
| 14:16:51 | hackage | hnix-store-core 0.3.0.0 - Core effects for interacting with the Nix store. https://hackage.haskell.org/package/hnix-store-core-0.3.0.0 (imalsogreg) |
| 14:18:07 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 14:20:50 | <avdb> | Sorry if this is a stupid question, but what's the best resource to understand Monads? I read the Haskell Wiki article on how it works and checked Computerphile's video on it but I don't think I fully get it yet. |
| 14:22:05 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 14:23:31 | × | AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Ping timeout: 256 seconds) |
| 14:23:44 | → | wonko7 joins (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) |
| 14:26:31 | <ski> | delbmuts_ : `transPipe trans' can't possibly work, with that signature of `trans' |
| 14:27:08 | <[exa]> | avdb: you actually hit the most problematic problem of monads, explaining them is problematic. it's only going to be better now. :D |
| 14:27:23 | <[exa]> | avdb: anyway, what did you try so far |
| 14:27:25 | <ski> | oh, actually, it can .. sorry, i misread |
| 14:27:51 | hackage | hnix-store-core 0.3.0.1 - Core effects for interacting with the Nix store. https://hackage.haskell.org/package/hnix-store-core-0.3.0.1 (imalsogreg) |
| 14:28:10 | → | erisco joins (~erisco@d24-57-249-233.home.cgocable.net) |
| 14:30:22 | <[exa]> | avdb: one thing that helps (with practical intuition) is to checkout the "monad DSLs" like IO. Get how the `IO ()` in types work, try to explain the differences between say "map vs mapM" and "if vs when" etc, and looking how the thing is constructed from >>= and >> using the 'do' notation. |
| 14:31:20 | hackage | hnix-store-remote 0.3.0.0 - Remote hnix store https://hackage.haskell.org/package/hnix-store-remote-0.3.0.0 (srk) |
| 14:32:24 | <[exa]> | avdb: and then there's the technical path, going from Functor (and fmap) to Applicative (with pure + <*>), where the jump to Monad (with >>=) becomes quite natural |
| 14:32:25 | → | awk joins (~mnrmnaugh@unaffiliated/mnrmnaugh) |
| 14:33:56 | × | hpc quits (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 240 seconds) |
| 14:34:40 | <Sose> | avdb: I'm at the point where I'm starting to slowly "get them"... reading about monads didn't really help me at all in the beginning. it was doing exercises and writing functor/applicative/monad instances and using them that started the process of having some understanding of them. I don't know what's the general opinion on http://mightybyte.github.io/monad-challenges/ as a resource but I found it quite enlightening |
| 14:34:40 | <Sose> | personally. no reading, just code exercises and some tips to guide you.. after doing those reading about monads makes more sense also |
| 14:37:22 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 14:37:42 | × | wei2912 quits (~wei2912@unaffiliated/wei2912) (Remote host closed the connection) |
| 14:38:15 | × | contiver quits (~contiver@84-115-64-11.wifi.dynamic.surfer.at) (Ping timeout: 256 seconds) |
| 14:38:51 | → | ralu joins (~ralu@static.211.245.203.116.clients.your-server.de) |
| 14:39:18 | × | darjeeling_ quits (~darjeelin@122.245.217.23) (Ping timeout: 260 seconds) |
| 14:40:14 | → | Cotillion joins (~Cotillion@185.163.110.116) |
| 14:40:52 | <avdb> | [exa]: I found a blog that used pictures to explain Functors (Maybe, Just, Nothing, etc.) a while ago, but stopped because I thought they had nothing to do with monads |
| 14:40:58 | × | Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 246 seconds) |
| 14:41:26 | <avdb> | Sose: After that I tried a tutorial that constructed Monad but the code was outdated :( |
| 14:42:13 | → | ambidextrose joins (~fut-learn@mobile-166-171-122-170.mycingular.net) |
| 14:42:58 | → | hpc joins (~juzz@ip98-169-35-13.dc.dc.cox.net) |
| 14:43:24 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@171.5.161.165) |
| 14:43:38 | → | sondr3 joins (~sondr3@cm-84.211.56.132.getinternet.no) |
| 14:44:57 | → | mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) |
| 14:49:18 | <ambidextrose> | what's the best haskell book to read for someone who really does not understand all the type system notation? |
| 14:50:12 | <avdb> | ambidextrose: I'm currently reading "Haskell: Programming from first principles" ... |
| 14:50:40 | <avdb> | I tried "Real World Haskell" as well but it was a disaster since it throws you directly into the pool without warning |
| 14:50:41 | <erisco> | if you literally just want to know about the notation there is the haskell report 2010 and the ghc user guide |
| 14:50:44 | <ambidextrose> | avdb, i looked at that one, it seemed good |
| 14:50:54 | <ambidextrose> | erisco, i might try those two |
| 14:51:23 | → | geekosaur joins (ae68c070@cpe-174-104-192-112.neo.res.rr.com) |
| 14:52:38 | × | LKoen quits (~LKoen@169.244.88.92.rev.sfr.net) (Remote host closed the connection) |
| 14:52:41 | <sondr3> | We used Programming in Haskell for our FP course at Uni (https://www.cs.nott.ac.uk/~pszgmh/pih.html), and I really enjoyed it. One of my favorite programming books |
| 14:52:57 | → | darjeeling_ joins (~darjeelin@115.215.41.204) |
| 14:52:58 | <ski> | PIH is often recommended/lauded in here |
| 14:53:06 | × | vg quits (~vg@139.59.59.230) (Quit: vg) |
| 14:53:15 | <sondr3> | Short and to the point, builds up gradually and has tons of exercises that really help you grasp concepts |
| 14:53:21 | <sondr3> | I can imagine :) |
| 14:53:22 | → | vg joins (~vg@139.59.59.230) |
| 14:53:34 | × | vg quits (~vg@139.59.59.230) (Remote host closed the connection) |
| 14:53:47 | → | vg joins (~vg@139.59.59.230) |
| 14:54:24 | <tomjaguarpaw> | Is there a version of trace that doesn't update its thunk once it is evaluated? I would like to use such a thing to probe properties of various containers. |
| 14:55:04 | <avdb> | sondr3: Is that the university of Computerphile? |
| 14:55:19 | <ambidextrose> | sondr3, i might look at that one too |
| 14:55:36 | <Uniaika> | tomjaguarpaw: not that I know of |
| 14:55:50 | <sondr3> | avdb: Yeah, the author of the book is in quite a few of their videos |
| 14:56:00 | ambidextrose | wishes he'd done his research project in 2015 in haskell and not python |
| 14:56:10 | <tomjaguarpaw> | ambidextrose: Don't we all? |
| 14:56:41 | <ambidextrose> | i've been trying to learn haskell for 10 years just by reading other peoples' code from time to time and enough is enough. i've seen what the RTS can do, it's pretty insane |
| 14:56:52 | <ambidextrose> | i'm going to stop writing in anything else |
| 14:58:43 | <ambidextrose> | also decided to try switching to archlinux since my research system had a virus in systemd |
| 14:59:10 | <sondr3> | That's a new one, fair warning; Haskell on Arch is somewhat painful |
| 14:59:16 | <geekosaur> | arch + haskell = pain though; at least, avoid arch's haskell packages |
| 14:59:21 | × | ziman quits (~ziman@c25-5.condornet.sk) (Ping timeout: 272 seconds) |
| 14:59:23 | <ambidextrose> | i think i'm going to switch to something that uses sysvinit... i can't understand the attitude of arch users |
| 14:59:39 | <ambidextrose> | systemd is awful: every ubuntu i have has viruses in systemd |
| 14:59:52 | × | JJ15 quits (~JJ@94.197.17.236.threembb.co.uk) (Ping timeout: 246 seconds) |
| 15:00:00 | <sondr3> | Void Linux was really nice when I used it but NixOS is awesome |
| 15:00:17 | <ambidextrose> | everyone's using nix but tbh i think the idea skirts the real issue of package management and language design |
| 15:00:49 | <ambidextrose> | something like hoogle/agda could be checking/proving/downloading types instead of cabal, hackage, or nix |
| 15:01:01 | <ambidextrose> | the type system could do the work of package management |
| 15:01:39 | <sondr3> | No idea how a type system would be able to do dependency resolution :P |
| 15:02:25 | × | maerwald quits (~maerwald@mail.hasufell.de) (Quit: gone) |
| 15:04:19 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@171.5.161.165) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 15:04:34 | <sondr3> | Unrelatec, I'm parsing different kinds of numbers with megaparsec, is there a way to do this `(try (lexeme pComplex) <|> try (lexeme pRational) <|> try (lexeme pDouble) <|> try (lexeme integer)` with less repetition? |
| 15:04:53 | × | knupfer quits (~Thunderbi@i5E86B463.versanet.de) (Ping timeout: 256 seconds) |
| 15:05:03 | → | maerwald joins (~maerwald@5.45.98.221) |
| 15:05:10 | <ambidextrose> | sondr3, the types are the dependencies |
| 15:05:20 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@171.5.161.165) |
| 15:06:06 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@171.5.161.165) (Client Quit) |
| 15:06:18 | <xerox_> | :t asum |
| 15:06:20 | <lambdabot> | (Foldable t, Alternative f) => t (f a) -> f a |
| 15:07:21 | hackage | urbit-api 0.2.0.0 - Talk to Urbit from Haskell https://hackage.haskell.org/package/urbit-api-0.2.0.0 (bsima) |
| 15:08:19 | <xerox_> | asum . map (try . lexeme) |
| 15:08:34 | → | Entertainment joins (~entertain@104.246.132.210) |
| 15:08:52 | → | Chi1thangoo joins (~Chi1thang@87.112.60.168) |
| 15:11:05 | <sondr3> | xerox_: thanks, much better |
| 15:11:19 | <xerox_> | 👍 |
| 15:11:32 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 15:12:25 | × | adm quits (~adm@117.223.63.167) (Remote host closed the connection) |
| 15:14:19 | × | Entertainment quits (~entertain@104.246.132.210) () |
| 15:16:49 | → | adm joins (~adm@117.223.63.167) |
| 15:17:08 | × | ambidextrose quits (~fut-learn@mobile-166-171-122-170.mycingular.net) (Quit: leaving) |
| 15:18:13 | × | Wamanuz quits (~wamanuz@78-70-34-81-no84.tbcn.telia.com) (Remote host closed the connection) |
| 15:18:41 | <[exa]> | avdb: oh well, the functor hierarchy... technically "Functors" are kindof overloaded containers ("boxes") that have a clearly defined way of transforming the elements inside, with `fmap`. (e.g. list is a functor, using normal `map`). Then you add functionality -- Applicative allows you to reasonably merge a box of functions with a box of parameters (to get a box of results). Monads additionally allow |
| 15:18:47 | <[exa]> | fusing boxes with functions that produce more boxes from their contents. Demonstration: |
| 15:23:20 | → | SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net) |
| 15:24:21 | × | petersen quits (~petersen@redhat/juhp) (Ping timeout: 265 seconds) |
| 15:24:57 | oats | is now known as grogu |
| 15:25:48 | <[exa]> | (I'm writing a gist, decided that I'm telling this to so many people that gist shall help) |
| 15:26:27 | <avdb> | How do I match calling a function without arguments with guards? |
| 15:26:53 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 15:27:06 | <Rembane> | avdb: f | ... = ... |
| 15:27:09 | <avdb> | i.e. if I have foobar x and somebody calls foobar without arguments I want to return something |
| 15:27:16 | <Rembane> | avdb: foobar x | ... = ... |
| 15:27:24 | → | urek__ joins (~urek@2804:7f1:e10a:5ac1:8db3:3757:9c7d:4898) |
| 15:27:26 | <Rembane> | avdb: Wait a minute, without arguments? |
| 15:27:26 | <avdb> | Rembane: Three dots? |
| 15:27:29 | <avdb> | Yes |
| 15:27:36 | × | oish quits (~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 240 seconds) |
| 15:27:36 | <Rembane> | avdb: Why would they do that? And what's the type of x? |
| 15:27:43 | <avdb> | [Char] |
| 15:28:01 | <Rembane> | avdb: They can give you the empty string as argument. |
| 15:28:08 | <avdb> | null x didn't work |
| 15:28:22 | <Rembane> | avdb: foobar "" = error "You have given me the empty string." |
| 15:28:33 | <avdb> | Oh wait I see why |
| 15:28:36 | <avdb> | Nvm |
| 15:28:40 | <Rembane> | No worries, good luck! |
| 15:28:47 | <geekosaur> | avdb, you can't do that trivially. There's a typeclass hack that can sort of do it, but you're trying to defeat partial application which is deeply baked into Haskell |
| 15:29:07 | × | urek quits (~urek@2804:7f1:e10a:5ac1:558c:16f8:858a:ffa6) (Ping timeout: 272 seconds) |
| 15:29:39 | <merijn> | hmm |
| 15:29:52 | <merijn> | Publishing new docs to Hackage doesn't seem to override the current ones? |
| 15:31:52 | grogu | is now known as oats |
| 15:32:29 | → | contiver joins (~contiver@84-115-64-36.wifi.dynamic.surfer.at) |
| 15:33:58 | <erisco> | my string is empty; my stack has overflow'n; my core has been dumped |
| 15:36:19 | <avdb> | geekosaur: Nevermind, the problem is with running last x on an empty list, is there a safer alternative function? |
| 15:38:02 | <hpc> | not really - the best you can do is do something that doesn't require getting the last element of a list |
| 15:38:28 | <hpc> | or write something that's [a] -> Maybe a |
| 15:38:37 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 15:38:54 | <hpc> | (and then still have to figure out what to do with Nothing) |
| 15:42:36 | <avdb> | Sigh, fixed it by reordering the guards instead of making my fuctions safer. |
| 15:42:55 | → | LKoen joins (~LKoen@169.244.88.92.rev.sfr.net) |
| 15:43:07 | → | Tario joins (~Tario@201.192.165.173) |
| 15:43:22 | <erisco> | > let f = getLast . foldMap (Last . Just) in (f [1,2,3], f []) |
| 15:43:25 | <lambdabot> | (Just 3,Nothing) |
| 15:43:31 | <erisco> | I am sure there is some lens shenanigans |
| 15:44:06 | × | vg quits (~vg@139.59.59.230) (Quit: vg) |
| 15:44:20 | → | vg joins (~vg@139.59.59.230) |
| 15:44:28 | <erisco> | avdb, imo that is the wrong kind of safeness |
| 15:44:36 | × | vg quits (~vg@139.59.59.230) (Remote host closed the connection) |
| 15:44:50 | → | vg joins (~vg@139.59.59.230) |
| 15:44:52 | × | mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz) |
| 15:45:10 | <erisco> | there is a sort of security safeness of what happens if there is a bug in the program |
| 15:45:27 | <avdb> | erisco: Wdym? I'm currently trying to test my work with stack but every time I run "stack test" in a different folder it starts installing ghc-tinfo6 |
| 15:45:30 | <erisco> | but that is already taken care of |
| 15:46:02 | <avdb> | erisco: It's actually the base case, testing if the string was empty before proceeding, so that I can't run into problems with last |
| 15:46:43 | <erisco> | > let f = alaf Last foldMap Just in (f [1,2,3], f []) |
| 15:46:45 | <lambdabot> | (Just 3,Nothing) |
| 15:47:18 | → | mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) |
| 15:47:19 | <avdb> | What? |
| 15:47:50 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 15:48:47 | <merijn> | :t Last |
| 15:48:49 | <lambdabot> | Maybe a -> Last a |
| 15:48:49 | <erisco> | I made some inferences of what you meant by "make my functions safer"... perhaps too much of a leap |
| 15:49:05 | <merijn> | erisco: Seems less confusing to avoid alaf :p |
| 15:49:13 | <merijn> | :t foldMap (Last . Just) |
| 15:49:15 | <lambdabot> | Foldable t => t a -> Last a |
| 15:49:24 | <merijn> | > foldMap (Last . Just) [] |
| 15:49:27 | <lambdabot> | Last {getLast = Nothing} |
| 15:49:31 | <avdb> | I can't use Functors yet |
| 15:49:33 | <erisco> | I am pointing out that "safety" from a memory security standpoint is already a nonissue here |
| 15:49:34 | <merijn> | > foldMap (Last . Just) [1..5] |
| 15:49:36 | <lambdabot> | Last {getLast = Just 5} |
| 15:50:26 | × | wonko7 quits (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 264 seconds) |
| 15:50:27 | <erisco> | and if the point is to be arbitrarily defined for empty lists regardless of whether it makes sense or not, that isn't really an admirable notion either, in my opinion |
| 15:51:14 | × | mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Client Quit) |
| 15:51:20 | <erisco> | avdb, no functors required… my first example uses Foldable and the second uses Foldable dressed up with lens |
| 15:52:12 | <erisco> | > foldMap f [a,b,c] |
| 15:52:14 | <lambdabot> | error: |
| 15:52:14 | <lambdabot> | • Ambiguous type variable ‘a0’ arising from a use of ‘show_M195412351796... |
| 15:52:14 | <lambdabot> | prevents the constraint ‘(Show a0)’ from being solved. |
| 15:52:40 | <erisco> | hm, well anyways you can think of it as f a <> f b <> f c |
| 15:53:09 | <erisco> | then you just have to figure what Monoid can give you the result you're after, in this case Last |
| 15:53:57 | <erisco> | > foldMap f [a,b,c] :: Expr |
| 15:54:00 | <lambdabot> | f a <> f b <> f c <> mempty |
| 15:54:15 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 15:55:29 | → | sorki joins (~sorki@gateway/tor-sasl/sorki) |
| 15:56:21 | hackage | xcffib 0.11.1 - A cffi-based python binding for X https://hackage.haskell.org/package/xcffib-0.11.1 (TychoAndersen) |
| 15:56:24 | × | sorki quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection) |
| 15:57:39 | <erisco> | can also go through Alternative |
| 15:58:23 | → | sorki joins (~sorki@gateway/tor-sasl/sorki) |
| 15:58:51 | <erisco> | > let f = foldr (flip(<|>).pure) empty in [f [1,2,3], f []] :: [Maybe Int] |
| 15:58:53 | <lambdabot> | [Just 3,Nothing] |
| 15:58:57 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds) |
| 15:59:10 | <erisco> | > let f = foldl (flip((<|>).pure)) empty in [f [1,2,3], f []] :: [Maybe Int] |
| 15:59:12 | <lambdabot> | [Just 3,Nothing] |
| 16:00:43 | <erisco> | not sure what the cuter formulations of that are |
| 16:01:21 | → | boxscape joins (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) |
| 16:02:18 | × | hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection) |
| 16:02:31 | <fendor> | If I want to show some students how to write a rest service, which library is a good start? I would currently just go with servant and the servant cookbook, as I think the latter is a really helpful resource |
| 16:02:33 | <boxscape> | hmm `(forall a . P a -> Q a, forall a . Q a -> P a)` is equivalent to `forall a . (P a -> Q a, Q a -> P a)`, right? |
| 16:02:50 | → | hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 16:03:28 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 16:04:42 | → | ziman joins (~ziman@c25-5.condornet.sk) |
| 16:05:06 | → | jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) |
| 16:05:12 | <maerwald> | fendor: I don't think servant is a good start |
| 16:05:37 | <maerwald> | if those aren't advanced haskellers at least |
| 16:05:46 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 16:06:18 | <fendor> | two months course so far. So, no, they are not |
| 16:06:29 | <maerwald> | then I'd pick snap or scotty |
| 16:07:02 | <fendor> | snap really confuses me... I always found servant to be simpler than snap, as you can just copy examples |
| 16:07:15 | <fendor> | scotty seems like a great idea though |
| 16:08:25 | → | IamfromSpace joins (617897dd@97-120-151-221.ptld.qwest.net) |
| 16:09:46 | × | jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 272 seconds) |
| 16:11:02 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds) |
| 16:15:17 | → | kupi joins (uid212005@gateway/web/irccloud.com/x-fqbnyydqsnaerben) |
| 16:15:17 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 16:15:31 | → | colby joins (~colby@cpe-24-208-40-120.new.res.rr.com) |
| 16:15:37 | colby | is now known as cjenn |
| 16:16:06 | × | contiver quits (~contiver@84-115-64-36.wifi.dynamic.surfer.at) (Ping timeout: 272 seconds) |
| 16:16:33 | → | Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it) |
| 16:18:23 | → | Tario joins (~Tario@201.192.165.173) |
| 16:18:31 | <tomjaguarpaw> | Is there a version of $! that is infixl 9, so it more closely matches function application? |
| 16:24:33 | <boxscape> | this seems kind of weird http://ix.io/2FWN |
| 16:24:34 | <boxscape> | to be fair it's using ImpredicativeTypes, for all I know it might be different with quick look impredicativity |
| 16:25:09 | <boxscape> | or maybe it actually makes perfect sense if you think about it, I'm not really sure yet |
| 16:25:31 | × | IamfromSpace quits (617897dd@97-120-151-221.ptld.qwest.net) (Remote host closed the connection) |
| 16:26:11 | → | solonarv joins (~solonarv@anancy-651-1-197-136.w109-217.abo.wanadoo.fr) |
| 16:29:22 | × | vg quits (~vg@139.59.59.230) (Quit: vg) |
| 16:29:46 | → | vg joins (~vg@139.59.59.230) |
| 16:31:05 | → | cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) |
| 16:31:32 | × | sorki quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection) |
| 16:32:04 | → | JJ15 joins (~JJ@94.197.17.236.threembb.co.uk) |
| 16:33:15 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Client Quit) |
| 16:33:54 | → | sorki joins (~sorki@gateway/tor-sasl/sorki) |
| 16:34:33 | → | texasmynsted joins (~texasmyns@212.102.45.106) |
| 16:34:46 | × | vg quits (~vg@139.59.59.230) (Ping timeout: 256 seconds) |
| 16:36:39 | <delbmuts_> | Now it compiles, but does not work as I would expect, i.e., the servant endpoint does not output the state. Still, progress. :) https://paste.debian.net/hidden/70b56d6e |
| 16:37:07 | <delbmuts_> | s ki: thanks for having a look |
| 16:38:33 | × | LKoen quits (~LKoen@169.244.88.92.rev.sfr.net) (Remote host closed the connection) |
| 16:38:41 | × | bitmapper quits (uid464869@gateway/web/irccloud.com/x-jnheqdjklwmeetne) (Quit: Connection closed for inactivity) |
| 16:39:28 | <delbmuts_> | dminuoso: TBH, I don't get how to use `trans'` (`flip runReaderT ($)`) in above code. |
| 16:41:35 | <merijn> | boxscape: "Doesn't work with ImpredicativeTypes" in any GHC pre 9.0 |
| 16:41:51 | <merijn> | boxscape: ImpredicativeTypes is "not even broken" in any older GHCs |
| 16:42:04 | <boxscape> | hm, okay |
| 16:42:19 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 16:42:25 | <boxscape> | so you would expect it to compile with a working version of IP? |
| 16:42:28 | <boxscape> | uh |
| 16:42:29 | <boxscape> | IT |
| 16:43:22 | <merijn> | boxscape: GHC 9.0 (or is it 9.2?) will have a redone version of ImpredicativeTypes that has, you know, some actual defined semantics |
| 16:43:33 | → | Sheilong joins (uid293653@gateway/web/irccloud.com/x-ubahtloahdzifjhq) |
| 16:44:46 | <boxscape> | looks like it's been merged into master |
| 16:45:18 | → | Wamanuz joins (~wamanuz@78-70-34-81-no84.tbcn.telia.com) |
| 16:45:28 | → | conal joins (~conal@64.71.133.70) |
| 16:46:17 | → | jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) |
| 16:47:36 | → | cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) |
| 16:47:47 | <dminuoso> | delbmuts_: That should be ($a) for some choice of a. |
| 16:48:17 | <dminuoso> | err sorry |
| 16:48:23 | <dminuoso> | just `flip runReaderT a` |
| 16:48:45 | × | JJ15 quits (~JJ@94.197.17.236.threembb.co.uk) (Read error: Connection reset by peer) |
| 16:49:06 | → | JJ15 joins (~JJ@94.197.17.236.threembb.co.uk) |
| 16:49:41 | × | dxld quits (~dxld@80-109-136-248.cable.dynamic.surfer.at) (Remote host closed the connection) |
| 16:49:43 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 16:49:55 | → | LKoen joins (~LKoen@169.244.88.92.rev.sfr.net) |
| 16:50:07 | × | conal quits (~conal@64.71.133.70) (Ping timeout: 246 seconds) |
| 16:50:41 | → | cads joins (~cads@ip-64-72-99-232.lasvegas.net) |
| 16:51:07 | → | fendor_ joins (~fendor@91.141.2.60.wireless.dyn.drei.com) |
| 16:51:08 | × | jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 260 seconds) |
| 16:51:11 | × | SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!) |
| 16:52:17 | → | reaverb joins (~reaverb@071-008-105-088.res.spectrum.com) |
| 16:53:11 | → | juuandyy joins (~juuandyy@90.166.144.65) |
| 16:53:20 | → | SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net) |
| 16:54:06 | × | fendor quits (~fendor@178.115.128.128.wireless.dyn.drei.com) (Ping timeout: 272 seconds) |
| 16:56:06 | fendor_ | is now known as fendor |
| 16:56:58 | × | hololeap quits (~hololeap@unaffiliated/hololeap) (Ping timeout: 260 seconds) |
| 16:59:19 | × | SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Read error: Connection reset by peer) |
| 16:59:21 | → | SupaYoshii joins (~supayoshi@213-10-140-13.fixed.kpn.net) |
| 17:01:28 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 17:01:57 | → | Tario joins (~Tario@201.192.165.173) |
| 17:04:24 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection) |
| 17:04:44 | → | ephemient joins (uid407513@gateway/web/irccloud.com/x-pfymqtqxpsoxkvkd) |
| 17:04:45 | → | cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) |
| 17:04:57 | → | polyphem joins (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) |
| 17:08:08 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 17:10:41 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 17:11:35 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection) |
| 17:11:58 | → | cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) |
| 17:17:51 | <avdb> | Is there a way to define a list of all symbols, like you can with [0..9] for all numbers? |
| 17:18:11 | × | reaverb quits (~reaverb@071-008-105-088.res.spectrum.com) (Quit: Leaving) |
| 17:18:38 | × | tabemann quits (~tabemann@2600:1700:7990:24e0:70d3:975d:bfb3:7240) (Ping timeout: 264 seconds) |
| 17:18:50 | <Rembane> | avdb: [0..] gets you all numbers, but I don't know if that's what you want. |
| 17:19:02 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
| 17:19:23 | <monochrom> | generate all characters, then use isSymbol or something to filter it |
| 17:22:59 | → | oish joins (~charlie@228.25.169.217.in-addr.arpa) |
| 17:23:18 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection) |
| 17:25:54 | <avdb> | monochrom: I totally forgot about those functions ... |
| 17:27:49 | × | oish quits (~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 264 seconds) |
| 17:27:56 | → | oish joins (~charlie@128.127.104.126) |
| 17:29:15 | → | alp joins (~alp@88.126.45.36) |
| 17:29:21 | hackage | csound-expression-dynamic 0.3.6 - dynamic core for csound-expression library https://hackage.haskell.org/package/csound-expression-dynamic-0.3.6 (AntonKholomiov) |
| 17:30:21 | hackage | csound-expression 5.3.4, csound-expression-typed 0.2.4 (AntonKholomiov): https://qbin.io/sussex-head-e181 |
| 17:30:32 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 17:31:22 | → | george_____t joins (5c06804c@host-92-6-128-76.as43234.net) |
| 17:33:22 | hackage | csound-expression-opcodes 0.0.5.0 - opcodes for the library csound-expression https://hackage.haskell.org/package/csound-expression-opcodes-0.0.5.0 (AntonKholomiov) |
| 17:33:27 | → | jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) |
| 17:33:52 | × | george_____t quits (5c06804c@host-92-6-128-76.as43234.net) (Remote host closed the connection) |
| 17:34:52 | hackage | csound-sampler 0.0.10.0 - A musical sampler based on Csound https://hackage.haskell.org/package/csound-sampler-0.0.10.0 (AntonKholomiov) |
| 17:34:53 | × | justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) () |
| 17:35:13 | <delbmuts_> | Looks like my test client wasn't working as I'd expected. :) https://paste.debian.net/hidden/1de4954a/ Thanks all. |
| 17:35:52 | hackage | csound-catalog 0.7.4 - a gallery of Csound instruments. https://hackage.haskell.org/package/csound-catalog-0.7.4 (AntonKholomiov) |
| 17:36:51 | hackage | csound-controllers 0.1.1.0 - https://hackage.haskell.org/package/csound-controllers-0.1.1.0 (AntonKholomiov) |
| 17:40:07 | × | jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection) |
| 17:40:56 | <Squarism> | Has anyone managed to set up an editor that handles basic type inspection? If so, what editor / approach have you been using? |
| 17:40:56 | × | triteraflops quits (~triterafl@host-208-96-90-136.public.eastlink.ca) (Read error: Connection reset by peer) |
| 17:41:34 | → | triteraflops joins (~triterafl@host-208-96-90-136.public.eastlink.ca) |
| 17:42:15 | × | avdb quits (~avdb@ip-81-11-215-86.dsl.scarlet.be) (Read error: Connection reset by peer) |
| 17:42:38 | hekkaidekapus_ | is now known as hekkaidekapus |
| 17:42:59 | × | juuandyy quits (~juuandyy@90.166.144.65) (Ping timeout: 256 seconds) |
| 17:43:16 | → | avdb joins (~avdb@ip-81-11-215-86.dsl.scarlet.be) |
| 17:43:22 | <hekkaidekapus> | boxscape: Indeed, it is already merged. For your example, the error is much better: <https://paste.tomsmeding.com/2KUFPpym>. |
| 17:44:32 | <hekkaidekapus> | And from the proposal: “[impredicative instantiation] never looks at abstractions, pattern matching, lets, or any other expression.” |
| 17:45:40 | × | nf quits (~n@monade.li) (Quit: Fairfarren.) |
| 17:45:44 | → | knupfer joins (~Thunderbi@200116b82c7f8800788807fffea80bcf.dip.versatel-1u1.de) |
| 17:46:08 | × | knupfer quits (~Thunderbi@200116b82c7f8800788807fffea80bcf.dip.versatel-1u1.de) (Remote host closed the connection) |
| 17:46:17 | → | knupfer joins (~Thunderbi@200116b82c7f8800d55fa997137c91a1.dip.versatel-1u1.de) |
| 17:47:52 | × | jrqc quits (~rofl@96.78.87.197) (Ping timeout: 256 seconds) |
| 17:48:03 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
| 17:48:33 | → | jrqc joins (~rofl@96.78.87.197) |
| 17:48:38 | → | conal joins (~conal@64.71.133.70) |
| 17:49:07 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 17:49:22 | → | jespada joins (~jespada@90.254.245.49) |
| 17:49:53 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 17:50:49 | × | shangxiao quits (~davids@101.181.159.140) (Quit: WeeChat 3.0) |
| 17:50:52 | → | vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
| 17:52:28 | → | juuandyy joins (~juuandyy@90.166.144.65) |
| 17:54:39 | <shapr> | Squarism: do you mean the Haskell language server? |
| 17:54:56 | → | jil joins (~user@45.86.162.6) |
| 17:54:58 | <jil> | hello |
| 17:55:04 | <shapr> | Squarism: I have this setup for emacs and it's great! https://github.com/haskell/haskell-language-server |
| 17:55:06 | <shapr> | hi jil |
| 17:56:20 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 17:56:56 | → | Jeanne-Kamikaze joins (~Jeanne-Ka@iakosalt-94.nationalnet.com) |
| 17:57:24 | <jil> | I'm still learning the basic of haskell and I run into this error that I don't undestand. Why is the simple function not working ? https://dpaste.org/nwxq |
| 17:58:09 | <shapr> | :t foldr (+) 0 |
| 17:58:10 | <lambdabot> | (Foldable t, Num b) => t b -> b |
| 17:58:29 | → | renzhi joins (~renzhi@2607:fa49:655f:e600::28da) |
| 17:58:33 | <dolio> | You gave it 1 where it expected a list. |
| 17:58:35 | <shapr> | jil: how would you read the type of the function you pasted? |
| 17:58:47 | <dolio> | And also gave it too many arguments. |
| 17:58:55 | <shapr> | jil: How would you explain this? fsum :: Num a => [a] -> a |
| 17:59:45 | <jil> | ok, I'm still confused about passing argument as list. Thank you. |
| 18:00:14 | → | mcginleyr1 joins (uid475794@gateway/web/irccloud.com/x-osmqhtuhvgdcdnxg) |
| 18:00:26 | <monochrom> | That's no different from writing any list in any context. |
| 18:00:37 | <jil> | shapr that means that for all numerical type a fsum expect a list of a and returns an object of type a |
| 18:00:55 | <solonarv> | '1 2' isn't a list, it's just two integer literals |
| 18:01:01 | <solonarv> | do you know how to write a list? |
| 18:01:13 | <jil> | [1 2] ? |
| 18:01:15 | <shapr> | jil: yeah, what solonarv said, how would you write a list? |
| 18:01:19 | <shapr> | yes, that's a list |
| 18:01:33 | <shapr> | but you need a comma between the elements |
| 18:01:48 | <jil> | [1,2] then. |
| 18:02:03 | <jil> | or (1:(2:[])) |
| 18:02:15 | <shapr> | :t [1,2] |
| 18:02:17 | <lambdabot> | Num a => [a] |
| 18:02:23 | <shapr> | :t (1:(2:[])) |
| 18:02:25 | <lambdabot> | Num a => [a] |
| 18:02:42 | <shapr> | jil: have you used :t or :type in ghci? |
| 18:03:04 | <shapr> | I use :t to figure out the type of things all the time |
| 18:04:03 | × | oish quits (~charlie@128.127.104.126) (Ping timeout: 260 seconds) |
| 18:04:09 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 18:04:23 | → | nf joins (~n@monade.li) |
| 18:04:30 | <jil> | yes shapr, it's realy a syntaxic erro as I forgot how to write a list and did not understand the error "non type variable argument in the constraint : Num (t1 -> t2)" |
| 18:04:56 | <jil> | [1,2] == (1:(2:[])) |
| 18:05:00 | <shapr> | > foldr max 0 [1,3,9,6] |
| 18:05:06 | <lambdabot> | 9 |
| 18:05:28 | <jil> | > [1,2] == (1:(2:[])) |
| 18:05:30 | <lambdabot> | True |
| 18:05:32 | <shapr> | yay! |
| 18:05:43 | <shapr> | jil: you got it! |
| 18:05:43 | → | oish joins (~charlie@228.25.169.217.in-addr.arpa) |
| 18:06:22 | × | noteness quits (noteness@unaffiliated/nessessary129) (Ping timeout: 260 seconds) |
| 18:06:36 | <jil> | :t max |
| 18:06:38 | <lambdabot> | Ord a => a -> a -> a |
| 18:06:58 | × | boxscape quits (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) (Ping timeout: 260 seconds) |
| 18:07:12 | <shapr> | ok, now back to figuring out how to get started with haskell.nix for me |
| 18:07:25 | <jil> | thank you shapr |
| 18:07:33 | <jil> | what haskell.nix ? |
| 18:07:35 | → | nehsou^ joins (nehsou@ip98-184-89-2.mc.at.cox.net) |
| 18:07:47 | <shapr> | jil: it's a way to compile haskell with NixOS |
| 18:07:58 | <shapr> | jil: I'm glad to help, do you have more questions? |
| 18:09:00 | → | christo joins (~chris@81.96.113.213) |
| 18:09:35 | <jil> | not really . Thank you. I'll get back to my book "programming in Haskel" from Graham Hutton. Its great |
| 18:09:47 | <shapr> | oh yeah! that's a great book! |
| 18:10:01 | shapr | checks his bookshelf |
| 18:10:13 | <shapr> | oh, my copy is still in one of my book boxes. |
| 18:10:18 | <dsal> | shapr: nix-build -A $project.components.exes.$project or nix-env -f default.nix -iA $project.components.exes.$project |
| 18:10:27 | <dsal> | That's about all I do with it. heh |
| 18:10:38 | <shapr> | dsal: is that for haskell.nix? if yes, how do you start a new empty project? |
| 18:10:48 | <dsal> | stack new and then copy in the file. |
| 18:11:03 | <shapr> | I want to use cabal, and I don't have cabal in scope |
| 18:11:14 | <shapr> | cause that's the point of nix, right? |
| 18:11:32 | <dsal> | Yeah, but for that, cabal2nix might be better. You can bootstrap with a nix-shell, I suppose. |
| 18:11:34 | urek__ | is now known as urek |
| 18:12:11 | → | benjamin-l joins (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) |
| 18:12:23 | <shapr> | dsal: I don't know enough. I do know we're using haskell.nix at work so I want to start using it myself |
| 18:12:58 | <dsal> | I've only used haskell.nix with stack. I just copy the same default.nix around for projects I've already started with stack. |
| 18:13:06 | <dsal> | I thought cabal2nix was the way when you're using cabal. |
| 18:13:15 | <shapr> | maybe? I don't know! |
| 18:13:25 | × | christo quits (~chris@81.96.113.213) (Ping timeout: 264 seconds) |
| 18:13:41 | <dsal> | Yeah, says it works with cabal, so I guess it's the same process. |
| 18:13:42 | <shapr> | We did switch our CI build from stack to haskell.nix |
| 18:14:04 | <dsal> | `nix-shell -p cabal-install` and then do whatever you normally do to start your project. Add default.nix, and it should be good. |
| 18:14:06 | <shapr> | but from what I've read, haskell.nix gives you access to all the library versions on hackage, not just the blessed subset you get from a stack release |
| 18:14:21 | → | conal joins (~conal@64.71.133.70) |
| 18:14:30 | <dsal> | Yeah, there's a daily derivation build of all the things. Happens around 18:00 my time, I think. heh |
| 18:14:48 | <shapr> | bah: cabal: The program 'ghc' version >=7.0.1 is required but it could not be found |
| 18:14:59 | <shapr> | How do I get cabal-install and ghc 8.10.2 in scope at the same time? |
| 18:15:07 | <dsal> | Weird. You can add more stuff after -p |
| 18:15:16 | <shapr> | oh |
| 18:16:13 | <dsal> | You can also have a shell.nix that lists all those things, but starting a project is almost a bootstrap problem, so it might be easier just to make an alias or something. |
| 18:16:29 | → | jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) |
| 18:16:53 | <dsal> | I'm kind of hybrid. I use regular stack, but with its nix extensions. Then I use haskell.nix (and cachix) to build for various places I deploy. |
| 18:17:43 | <shapr> | I have a variety of disagreements with stack |
| 18:17:46 | → | hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-qtyikxmplneltdye) |
| 18:19:45 | <shapr> | jil: what got you started with Haskell? |
| 18:19:57 | × | knupfer quits (~Thunderbi@200116b82c7f8800d55fa997137c91a1.dip.versatel-1u1.de) (Ping timeout: 268 seconds) |
| 18:20:58 | × | jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 260 seconds) |
| 18:22:03 | ← | delbmuts_ parts (52874ce6@ppp-82-135-76-230.dynamic.mnet-online.de) () |
| 18:22:48 | <dsal> | My only problem with stack is that migrating away from it seems to get me a variety of disadvantages. I tend to work with `stack test --file-watch` running. I've not even figured out how to run tests with haskell.nix other than to explicitly name them in a build and then run the thing that got built. i.e., there's no 'run the thing in this project' that seems to work. |
| 18:23:01 | × | adm quits (~adm@117.223.63.167) (Remote host closed the connection) |
| 18:23:29 | → | adm joins (~adm@117.223.63.167) |
| 18:26:28 | <shapr> | dsal: I use entr for all those same things |
| 18:27:45 | × | adm quits (~adm@117.223.63.167) (Ping timeout: 256 seconds) |
| 18:28:35 | <hekkaidekapus> | dsal: haskell.nix’s motto is ”If it works with cabal-install/stack, it should work here, too.” Based on that, I would say, enter a shell with stack inside (instead of generating Nix stuff with stack) and `stack test`. (But I’m no expert.) |
| 18:28:58 | <dsal> | Maybe for the file-watch part, but not for the "just build this project" part. The project name is constructed in haskell.nix and you can't just ask for whatever the current ones. |
| 18:29:39 | <merijn> | hekkaidekapus: Mottos don't always reflect reality ;) |
| 18:29:39 | × | iqubic` quits (~user@2601:602:9500:4870:ed6c:ae7b:1487:9d5a) (Quit: ERC (IRC client for Emacs 28.0.50)) |
| 18:29:55 | → | iqubic joins (~user@2601:602:9500:4870:ed6c:ae7b:1487:9d5a) |
| 18:29:57 | <dsal> | `nix-shell --command 'stack test'` doesn't get me much further than `stack test` which is already using nix components. :) |
| 18:30:16 | <hekkaidekapus> | merijn: The maintainers are quite eager to fix bugs that contradict the motto. |
| 18:30:27 | <dsal> | The annoying part of haskell.nix is the -A ............ part. |
| 18:30:51 | <shapr> | dsal: what does that mean? |
| 18:30:54 | <shapr> | why is that annoying? |
| 18:30:58 | shapr | wants to learn! |
| 18:31:12 | <dsal> | i.e., I have a lot of haskell projects and when I'm working with stack, I type the same command in each directory. With haskell.nix, I have to type a unique command for each project in each directory that's specific to the project. |
| 18:33:46 | <hekkaidekapus> | (Which is the point of Nix: specify exactly every steps and don’t rely on global state—here ~/.stack…) |
| 18:33:49 | <dsal> | I would really like to know what the right way to run tests is for haskell.nix. I mostly like the model, but it only seems to build things and then just kind of drop them on the floor. Ideally, CI would mostly just be copying an activation file and not lots of custom editing. The per-project custom stuff has caused me a lot of problems in the past when a common part broke everywhere and I had to repeat the fix. |
| 18:34:22 | <dsal> | Global state is the opposite of what I said. |
| 18:34:39 | <hekkaidekapus> | Maybe I misunderstood. |
| 18:34:53 | <dsal> | I have to go into my project directory or I don't get the default.nix file. But then I also have to type a command specific to that project while in the project directory. |
| 18:35:08 | hekkaidekapus | barely knows how stack works. |
| 18:35:12 | <dsal> | With stack (and I presume cabal, though I've not used it directly very much), I can enter the project directory and just type "stack test" |
| 18:35:36 | <iqubic> | Yeah, I have no idea how to run tests in haskell when using nix. |
| 18:37:39 | <dsal> | The haskell.nix documentation sort of handwaves the names of attributes it defines, but I find only some of them work (maybe). It'd be super convenient if it just listed what was possible in a given project. |
| 18:38:37 | <dsal> | e.g., it does suggest it *can* build tests, but none of my guesses as to what they're called seem to get me anywhere. |
| 18:39:16 | <hekkaidekapus> | dsal: I see you aren’t in #haskell.nix. You could ping maintainers there and there is almost always answers, timezones permitting. |
| 18:39:31 | <dsal> | Thanks! |
| 18:39:38 | <hekkaidekapus> | np |
| 18:40:39 | <iqubic> | What is haskell.nix? Is that just nix on haskell? |
| 18:41:13 | <hekkaidekapus> | iqubic: <https://github.com/input-output-hk/haskell.nix> |
| 18:41:33 | <iqubic> | Ah. I see. |
| 18:41:36 | <hekkaidekapus> | It’s another Nix infrastructure for Haskell. |
| 18:42:34 | <dsal> | It's been useful for me to get builds out on nixos systems. |
| 18:42:41 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 18:43:28 | → | jollygood2 joins (~bc8165ab@217.29.117.252) |
| 18:43:30 | <shapr> | iqubic: I *think* the default haskell+nix infrastructure only offers you a single choice of haskell compiler and library versions, and haskell.nix does not |
| 18:43:34 | <shapr> | but I'm not certain of that |
| 18:43:51 | <iqubic> | No, I can easily change my compiler. That's not too hard. |
| 18:44:01 | × | juuandyy quits (~juuandyy@90.166.144.65) (Ping timeout: 264 seconds) |
| 18:44:21 | × | Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving) |
| 18:44:24 | <dsal> | haskell.nix just makes any cabal or stack project also a nix project. |
| 18:44:47 | <dsal> | Or as it says at the top of the doc I'm looking at: haskell.nix can automatically translate your Cabal or Stack project and its dependencies into Nix code. |
| 18:44:50 | <xerox_> | is there an id :: a# -> a# ? if that makes any sense |
| 18:44:52 | <jollygood2> | hi. I have incomplete-patterns set, but this isn't trigger compiler warning: [month, day, year] <- sepEndBy integral (char '.') |
| 18:44:54 | <jollygood2> | how come? |
| 18:45:12 | × | shf quits (~sheaf@2a01:cb19:80cc:7e00:18fb:674e:a5dc:b905) (Read error: Connection reset by peer) |
| 18:45:23 | <merijn> | jollygood2: Because Parser is an instance of MonadFail |
| 18:45:28 | → | conal joins (~conal@64.71.133.70) |
| 18:45:46 | <merijn> | jollygood2: And pattern match failures in do notation use "fail" from MonadFail (usually "parse failure" in parsers) |
| 18:45:51 | hackage | config-value 0.8.1 - Simple, layout-based value language similar to YAML or JSON https://hackage.haskell.org/package/config-value-0.8.1 (EricMertens) |
| 18:45:58 | <shapr> | iqubic: how do I get ghc 8.10.2 and a particular version of something like the github library? |
| 18:46:07 | <iqubic> | I don't know. |
| 18:46:16 | <shapr> | oh, how do you change your compiler? |
| 18:46:18 | → | JJ15_ joins (~JJ@94.197.17.236.threembb.co.uk) |
| 18:46:27 | × | Varis quits (~Tadas@unaffiliated/varis) (Ping timeout: 256 seconds) |
| 18:46:52 | <jollygood2> | merijn, is there a "stronger" incomplete-pattern warning, that will trigger that regardless if the instance is MonadFail? |
| 18:47:12 | <merijn> | incomplete-uni-patterns, maybe? |
| 18:47:19 | <iqubic> | shapr: Also not sure. |
| 18:47:26 | <iqubic> | I just know that I can. |
| 18:47:32 | <shapr> | iqubic: oh, ok |
| 18:47:37 | <shapr> | well if you figure out, I'd like to know :-) |
| 18:48:39 | → | JJ15__ joins (~JJ@2a00:23a8:4382:a900:68df:3986:d3b1:2e08) |
| 18:49:36 | <jollygood2> | "The flag -fwarn-incomplete-uni-patterns is similar, except that it applies only to lambda-expressions and pattern bindings, constructs that only allow a single pattern:" |
| 18:49:41 | <jollygood2> | doesn't look like that is it |
| 18:49:51 | × | JJ15 quits (~JJ@94.197.17.236.threembb.co.uk) (Ping timeout: 256 seconds) |
| 18:50:35 | <merijn> | jollygood2: You have a pattern bindings that allows only a single pattern... |
| 18:50:45 | <jollygood2> | I do? :D |
| 18:50:54 | <jollygood2> | let me try |
| 18:51:14 | <merijn> | "[month, day, year] <- ..." that's a pattern and it's binding stuff, and it has only one pattern... |
| 18:51:16 | × | chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
| 18:51:18 | × | JJ15_ quits (~JJ@94.197.17.236.threembb.co.uk) (Ping timeout: 260 seconds) |
| 18:51:24 | × | renzhi quits (~renzhi@2607:fa49:655f:e600::28da) (Ping timeout: 240 seconds) |
| 18:51:27 | <jollygood2> | still, the wording makes it seem like it will catch LESS than warn-incomplete-patterns will. I'll still try it |
| 18:51:37 | → | chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) |
| 18:51:47 | <merijn> | jollygood2: It catches *different* things |
| 18:52:06 | <geekosaur> | because it doesn't imply -Wincomplete-patterns? |
| 18:52:08 | <merijn> | jollygood2: i.e. it only covers lambda patterns and (presumably?) do notation patterns and nothing else |
| 18:52:35 | <merijn> | jollygood2: Whereas -Wincomplete-patterns covers only patterns that are *not* uni-patterns |
| 18:54:22 | <jollygood2> | I've set it |
| 18:54:27 | <jollygood2> | I still don't get the warning |
| 18:55:40 | <geekosaur> | that may be because of MonadFail, and the answer is probably no because MonadFail overrides |
| 18:55:58 | → | boxscape joins (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) |
| 18:56:07 | <merijn> | geekosaur: tbh, with the original desugaring of Monad it might not have worked either way |
| 18:56:15 | <boxscape> | hekkaidekapus thanks, that's interesting |
| 18:56:20 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 18:56:21 | <solonarv> | failable patterns in a 'do' binding cause a type error when the monad in use isn't MonadFail |
| 18:56:34 | <jollygood2> | no warning: do [_,_] <- (pure [1,2] :: IO [Int]); return 10 |
| 18:56:45 | <merijn> | solonarv: Right, but he has a parser, so he has a MonadFail |
| 18:56:50 | <merijn> | jollygood2: IO is MonadFail, though |
| 18:57:19 | → | alp__ joins (~alp@2a01:e0a:58b:4920:d15:e453:85b3:5c61) |
| 18:57:30 | <jollygood2> | right.. my second question was how to get this warning in MonadFail context.. and the answer seems to be, you can't |
| 18:57:41 | <merijn> | That could very well be |
| 18:58:09 | → | Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net) |
| 18:59:27 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 18:59:34 | → | bitmapper joins (uid464869@gateway/web/irccloud.com/x-tesxvyxpigmxrfxg) |
| 19:00:38 | × | alp quits (~alp@88.126.45.36) (Ping timeout: 260 seconds) |
| 19:00:51 | <hekkaidekapus> | boxscape: I suspect that was a contrived example extracted from a larger program. If you are hell-bent on using impredicativity in pattern position, you could 1) wait for type-level lambdas :d 2) hack ViewPatterns in your code. |
| 19:00:57 | <hekkaidekapus> | to, to' :: A -> B |
| 19:01:04 | <hekkaidekapus> | to fg = (fst fg, snd fg) |
| 19:01:10 | <hekkaidekapus> | to' (to -> x) = (fst x, snd x) |
| 19:01:36 | <boxscape> | hekkaidekapus it wasn't; I was just trying to figure out whether that particular equation holds in predicate logic and haskell's type checker seemed a convenient way to prove it |
| 19:01:52 | <hekkaidekapus> | Ah, ok. |
| 19:02:20 | × | sorki quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection) |
| 19:02:32 | <boxscape> | but thanks for the tip anyway :) |
| 19:02:43 | <hekkaidekapus> | \o/ |
| 19:03:23 | → | sorki joins (~sorki@gateway/tor-sasl/sorki) |
| 19:03:28 | → | berberman_ joins (~berberman@unaffiliated/berberman) |
| 19:04:14 | × | berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds) |
| 19:06:02 | × | xff0x quits (~fox@2001:1a81:524c:7b00:4922:8a11:2fad:afb4) (Ping timeout: 264 seconds) |
| 19:06:44 | → | Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
| 19:06:46 | → | xff0x joins (~fox@2001:1a81:524c:7b00:2a03:b58:ed4d:4ddd) |
| 19:07:46 | <xerox_> | @hoogle Word32# -> Word# |
| 19:07:47 | <lambdabot> | Unsafe.Coerce unsafeCoerce :: a -> b |
| 19:07:47 | <lambdabot> | GHC.Exts unsafeCoerce# :: forall (k0 :: RuntimeRep) (k1 :: RuntimeRep) (a :: TYPE k0) (b :: TYPE k1) . a -> b |
| 19:07:47 | <lambdabot> | GHC.Prim unsafeCoerce# :: a -> b |
| 19:09:56 | × | Jeanne-Kamikaze quits (~Jeanne-Ka@iakosalt-94.nationalnet.com) (Ping timeout: 240 seconds) |
| 19:09:57 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 19:10:00 | × | cjenn quits (~colby@cpe-24-208-40-120.new.res.rr.com) (Quit: cjenn) |
| 19:10:33 | → | gproto23 joins (~gproto23@unaffiliated/gproto23) |
| 19:12:00 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 265 seconds) |
| 19:12:08 | → | juuandyy joins (~juuandyy@90.166.144.65) |
| 19:12:58 | → | Guest_22 joins (a2f58eed@ott-lmlp35-237.hge.net) |
| 19:13:13 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 19:13:22 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 19:13:31 | × | Guest_22 quits (a2f58eed@ott-lmlp35-237.hge.net) (Remote host closed the connection) |
| 19:14:06 | <dminuoso> | Why does hoogle produce unsafeCoerce at all here? |
| 19:14:13 | <dminuoso> | That seems rather silly |
| 19:14:51 | <jollygood2> | it matches :) |
| 19:14:56 | <hpc> | the real question is why it doesn't produce it all the time :D |
| 19:15:07 | <merijn> | hpc: Because it's not in the top hits :p |
| 19:15:09 | → | dxld joins (~dxld@2a01:4f8:201:89ff:22cf:30ff:fe67:8db) |
| 19:15:22 | <boxscape> | is Word# even Lifted? |
| 19:15:41 | <dminuoso> | jollygood2: Arguably unsafeCoerce should be special cased, as it matches any function... |
| 19:15:55 | <dminuoso> | And it's almost assuredly not the thing you want when you look for `S -> T` |
| 19:16:09 | <dminuoso> | And for those who do want it, it's safe to assume they are fully aware of its existence.. |
| 19:16:09 | <monochrom> | Word# is not lifted. |
| 19:16:10 | <solonarv> | % :k Word# |
| 19:16:10 | <yahb> | solonarv: TYPE 'WordRep |
| 19:16:11 | <boxscape> | % (unsafeCoerce :: Word32# -> Word#) |
| 19:16:11 | <yahb> | boxscape: ; <interactive>:41:2: error:; * Couldn't match a lifted type with an unlifted type; When matching types; b0 :: *; Word# :: TYPE 'WordRep; Expected type: Word32# -> Word#; Actual type: a0 -> b0; * In the expression: (unsafeCoerce :: Word32# -> Word#); In an equation for `it': it = (unsafeCoerce :: Word32# -> Word#) |
| 19:16:12 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 19:16:13 | <boxscape> | it doesn't match |
| 19:16:14 | <solonarv> | nope, not lifted |
| 19:16:27 | <monochrom> | Err nevermind |
| 19:16:56 | <boxscape> | hm, I think you were right? |
| 19:16:58 | <boxscape> | monochrom |
| 19:17:01 | <dminuoso> | I mean it matches from the perspective Hoogle because it likely doesnt take kinds into consideration |
| 19:17:01 | <boxscape> | why never mind? |
| 19:17:16 | <boxscape> | hm I suppose so |
| 19:18:22 | → | IamfromSpace joins (617897dd@97-120-151-221.ptld.qwest.net) |
| 19:18:22 | <dminuoso> | I mean a fully correct hoogle would likely be hard to implement right, in the presence of tyfams and other things. |
| 19:18:55 | <monochrom> | Heh so unsafeCoerce is safer than I thought |
| 19:19:22 | dminuoso | holds monochrom's beer |
| 19:19:41 | <boxscape> | % f :: Word32# -> Word#; f = unsafeCoerce# -- this is what you want for true power |
| 19:19:41 | <yahb> | boxscape: |
| 19:20:28 | <merijn> | boxscape: I think you miswrote "real ultimate power" ;) |
| 19:20:43 | <boxscape> | perhaps :) |
| 19:21:14 | × | benjamin-l quits (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Quit: WeeChat 3.0) |
| 19:21:33 | → | benjamin-l joins (~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) |
| 19:21:41 | <dminuoso> | % let k = flip const unsafeCoerce# in runCont (pure 1) k |
| 19:21:41 | <yahb> | dminuoso: 1 |
| 19:21:47 | <dminuoso> | Looks safe to me! |
| 19:22:11 | × | alp__ quits (~alp@2a01:e0a:58b:4920:d15:e453:85b3:5c61) (Ping timeout: 272 seconds) |
| 19:22:38 | <dminuoso> | `fix . const` is my favourite combinator of the month however. |
| 19:22:48 | <merijn> | :t fix . const |
| 19:22:51 | <lambdabot> | c -> c |
| 19:22:55 | <iqubic> | What does that do? |
| 19:23:00 | <dminuoso> | Try it out! |
| 19:23:08 | <merijn> | iqubic: id :p |
| 19:23:16 | → | elliott__ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) |
| 19:23:18 | <iqubic> | @let id' = fix . const |
| 19:23:20 | <lambdabot> | Defined. |
| 19:23:30 | <iqubic> | > id' 34 |
| 19:23:32 | <lambdabot> | 34 |
| 19:23:34 | → | cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) |
| 19:23:38 | <iqubic> | How is that just id? |
| 19:23:47 | <boxscape> | @src fix |
| 19:23:47 | <lambdabot> | fix f = let x = f x in x |
| 19:23:53 | <dminuoso> | iqubic: Surely you've been long around to figure this one out yourself. |
| 19:23:57 | <iqubic> | I have. |
| 19:24:06 | <boxscape> | fix (const 4) = let x = (const 4) x in x |
| 19:25:02 | <hpc> | alternatively, if you formulate it as fix f = f (fix f): |
| 19:25:12 | <hpc> | fix (const 4) = const 4 (const 4 (const 4 (... |
| 19:25:30 | × | shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection) |
| 19:25:46 | <dminuoso> | what I find curious is how these simple functions const, id, fix are all somehow connected in strange and interesting ways |
| 19:25:56 | × | shailangsa quits (~shailangs@host86-186-177-155.range86-186.btcentralplus.com) (Ping timeout: 240 seconds) |
| 19:26:02 | → | Iceland_jack joins (~user@31.124.48.169) |
| 19:26:02 | → | shatriff joins (~vitaliish@176.52.219.10) |
| 19:26:11 | <dminuoso> | or equivalently their type versions Const, Identity, etc |
| 19:26:18 | <boxscape> | you're getting dangerously close to doing combinator calculus |
| 19:27:44 | <boxscape> | hmm I wonder which one(s) you need in addition to fix for functional completeness |
| 19:28:13 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 19:28:17 | → | ralu_ joins (~ralu@2a00:1a20:2200:8045:8200:bff:fe5a:48a3) |
| 19:28:21 | <boxscape> | (hm is functional completeness the right term here? I actually only know it from logic) |
| 19:28:34 | → | SeMas joins (uid32977@gateway/web/irccloud.com/x-taxggkdzpxqpcjih) |
| 19:29:00 | <dminuoso> | boxscape: Heh that reminds me of that revelation that, in principle, Applicative gives you a full SK(I) combinator calculus almost directly. It's just the type system that is in the way. |
| 19:29:09 | <boxscape> | I was just thinking about that :) |
| 19:29:20 | <solonarv> | const and ap are all you need if you throw away types |
| 19:29:29 | <solonarv> | I don't think you can write fix using them though |
| 19:29:39 | <dminuoso> | why not? |
| 19:30:05 | × | Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 256 seconds) |
| 19:30:14 | <dminuoso> | You can express Y in SKI |
| 19:30:15 | <solonarv> | well, you can write fix if you ignore types, but if you try to type-check that expression you end up with an infinite type |
| 19:30:26 | <solonarv> | SK(I) is untyped so that works |
| 19:30:40 | → | Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas) |
| 19:30:40 | <boxscape> | I wonder if you can get rid off one of them if you have Y as a given |
| 19:30:43 | <dminuoso> | Right, that's what I was saying with "the type system is in the way" |
| 19:30:52 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection) |
| 19:31:18 | <dminuoso> | solonarv: Im almost convinced you can just do it with newtypes |
| 19:31:18 | → | cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) |
| 19:31:28 | <dminuoso> | Like, you can write a lambda style Y combinator with newtypes too |
| 19:31:36 | <solonarv> | oh, I'm sure you can |
| 19:31:42 | <dminuoso> | (Ignoring simplifier panics that get triggered if you dont disable optimizations in GHC) |
| 19:32:20 | <dminuoso> | To me the newtypes are just noise demanded by the type system, they wouldnt invalidate such an implementation |
| 19:32:41 | → | acidjnk_new joins (~acidjnk@p200300d0c719ff217d005cd8d9846e4e.dip0.t-ipconnect.de) |
| 19:34:56 | × | ralu_ quits (~ralu@2a00:1a20:2200:8045:8200:bff:fe5a:48a3) (Quit: Leaving) |
| 19:35:46 | <solonarv> | yes, \a -> s i i (s (k a) (s i i)) is a fixed-point combinator |
| 19:36:03 | <solonarv> | (you can rewrite that lambda to use only combinators but I'm too lazy for that) |
| 19:36:18 | <boxscape> | we have a tool to do it |
| 19:36:20 | <boxscape> | @pl \a -> s i i (s (k a) (s i i)) |
| 19:36:20 | <lambdabot> | s i i . flip s (s i i) . k |
| 19:36:31 | <solonarv> | :t let s = ap; i = id; k = const in \a -> s i i (s (k a) (s i i)) |
| 19:36:31 | <boxscape> | now just replace . by C and flip by B, IIRC |
| 19:36:33 | <lambdabot> | error: |
| 19:36:33 | <lambdabot> | • Occurs check: cannot construct the infinite type: a0 ~ a0 -> b |
| 19:36:33 | <lambdabot> | Expected type: ((a0 -> b) -> b) -> a0 -> b |
| 19:36:44 | × | IamfromSpace quits (617897dd@97-120-151-221.ptld.qwest.net) (Remote host closed the connection) |
| 19:37:00 | <dminuoso> | s (k (s i i))(s (s (k s) k) (k (s i i))) |
| 19:37:04 | <dminuoso> | Copied straight out of google! |
| 19:37:05 | <solonarv> | but unsurprisingly you get this type error, which is basically the same one that the lambda-calculus Y combinator has |
| 19:37:24 | <dminuoso> | solonarv: mmm you know what, we can convince it! |
| 19:37:33 | <solonarv> | yes, with newtypes ! |
| 19:37:45 | <dminuoso> | % let s = ap; i = id; k = const in unsafeCoerce (\a -> s i i (s (k a) (s i i))) |
| 19:37:46 | <yahb> | dminuoso: ; <interactive>:1:58: error:; * Occurs check: cannot construct the infinite type: a0 ~ a0 -> b0; Expected type: ((a0 -> b0) -> b0) -> a0 -> b0; Actual type: (a0 -> b0) -> a0 -> b0; * In the second argument of `s', namely `i'; In the expression: s i i (s (k a) (s i i)); In the first argument of `unsafeCoerce', namely `(\ a -> s i i (s (k a) (s i i)))'; * Relevant bindi |
| 19:37:54 | <dminuoso> | Oh boy, needs more unsafeCoerce! |
| 19:38:04 | <solonarv> | you need to sprinkle them around inside the expression, yeah |
| 19:38:19 | <hpc> | build it like idris intermediate representation |
| 19:38:28 | <hpc> | every subexpression is unsafeCoerced :D |
| 19:38:29 | <solonarv> | the root of the issue is self-application |
| 19:38:29 | <dminuoso> | I got an idea, GHC has the right extension for that |
| 19:38:32 | <boxscape> | % let s = unsafeCoerce ap; i = unsafeCoerce id; k = unsafeCoerce const in unsafeCoerce (\a -> s i i (s (k a) (s i i))) |
| 19:38:32 | <yahb> | boxscape: ; <interactive>:2:22: error:; * Ambiguous type variable `m0' arising from a use of `ap'; prevents the constraint `(Monad m0)' from being solved.; Probable fix: use a type annotation to specify what `m0' should be.; These potential instances exist:; instance Monad m => Monad (WrappedMonad m) -- Defined in `Control.Applicative'; instance ArrowApply a => Monad (ArrowMon |
| 19:38:35 | <boxscape> | makes senes |
| 19:38:38 | <dminuoso> | % (x!) = unsafeCoerce x |
| 19:38:39 | <yahb> | dminuoso: ; <interactive>:3:2: error: Expression syntax in pattern: x ! |
| 19:38:43 | <dminuoso> | % (x&) = unsafeCoerce x |
| 19:38:43 | <yahb> | dminuoso: ; <interactive>:4:2: error: Expression syntax in pattern: x & |
| 19:38:45 | <dminuoso> | Mmm |
| 19:38:49 | <dminuoso> | % (&) = unsafeCoerce x |
| 19:38:49 | <yahb> | dminuoso: ; <interactive>:5:20: error: Variable not in scope: x |
| 19:38:52 | <dminuoso> | % (&) = unsafeCoerce |
| 19:38:52 | <yahb> | dminuoso: |
| 19:38:54 | <dminuoso> | There! |
| 19:41:29 | <boxscape> | maybe someone made a deepUnsafeCoerce quasiquoter that wraps every subexpr in unsafeCoerce |
| 19:41:47 | × | amiri quits (~amiri@cpe-76-91-154-9.socal.res.rr.com) (Ping timeout: 260 seconds) |
| 19:42:09 | → | mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) |
| 19:42:23 | → | knupfer joins (~Thunderbi@i5E86B463.versanet.de) |
| 19:42:41 | × | toorevitimirp quits (~tooreviti@117.182.183.16) (Remote host closed the connection) |
| 19:43:36 | → | conal joins (~conal@64.71.133.70) |
| 19:45:17 | → | amiri joins (~amiri@cpe-76-91-154-9.socal.res.rr.com) |
| 19:46:52 | × | mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
| 19:47:48 | → | christo joins (~chris@81.96.113.213) |
| 19:48:50 | <boxscape> | although I guess you'd just end up with a bunch of ambiguous type variables typically |
| 19:49:13 | → | Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it) |
| 19:49:16 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 19:49:23 | <dminuoso> | boxscape: easily addressed with some sort of type checker plugin |
| 19:49:31 | <boxscape> | fair point |
| 19:50:13 | → | shatriff_ joins (~vitaliish@176.52.219.10) |
| 19:50:36 | → | shailangsa joins (~shailangs@host86-186-177-155.range86-186.btcentralplus.com) |
| 19:52:33 | × | shatriff quits (~vitaliish@176.52.219.10) (Ping timeout: 260 seconds) |
| 19:53:28 | → | mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) |
| 19:54:43 | × | juuandyy quits (~juuandyy@90.166.144.65) (Quit: Konversation terminated!) |
| 19:59:05 | × | Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 240 seconds) |
| 20:01:02 | → | rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) |
| 20:01:52 | hackage | xmobar 0.37 - A Minimalistic Text Based Status Bar https://hackage.haskell.org/package/xmobar-0.37 (JoseAntonioOrtegaRuiz) |
| 20:04:53 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 20:05:48 | → | ddellacosta joins (dd@gateway/vpn/mullvad/ddellacosta) |
| 20:10:10 | × | sagax quits (~sagax_nb@213.138.71.146) (Read error: Connection reset by peer) |
| 20:11:11 | <sondr3> | That's a new error when launching cabal repl: `/tmp/bios-wrapper5424-294: line 4: : No such file or directory` |
| 20:12:01 | <sondr3> | Isn't bios used in HLS? Not sure why it interferes with cabal |
| 20:14:15 | × | avdb quits (~avdb@ip-81-11-215-86.dsl.scarlet.be) (Ping timeout: 260 seconds) |
| 20:16:37 | × | ggole quits (~ggole@2001:8003:8119:7200:69c3:3fe:81:8dbf) (Quit: Leaving) |
| 20:17:39 | × | rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection) |
| 20:18:28 | <merijn> | sondr3: WHich version of cabal-install? |
| 20:19:58 | Unhammerd | is now known as Unhammer |
| 20:20:09 | <sondr3> | merijn: cabal-install version 3.2.0.0, though I just waited a bit and now it works again |
| 20:23:53 | × | ephemient quits (uid407513@gateway/web/irccloud.com/x-pfymqtqxpsoxkvkd) (Quit: Connection closed for inactivity) |
| 20:23:59 | → | sagax joins (~sagax_nb@213.138.71.146) |
| 20:24:29 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 256 seconds) |
| 20:26:12 | × | vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov) |
| 20:26:23 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds) |
| 20:26:28 | → | vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
| 20:26:31 | × | vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Remote host closed the connection) |
| 20:26:44 | → | vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
| 20:27:07 | × | vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit) |
| 20:27:08 | → | conal joins (~conal@64.71.133.70) |
| 20:28:22 | Chi1thangoo | is now known as jmchael |
| 20:28:36 | → | avdb joins (~avdb@ip-81-11-215-86.dsl.scarlet.be) |
| 20:30:16 | × | amiri quits (~amiri@cpe-76-91-154-9.socal.res.rr.com) (Ping timeout: 240 seconds) |
| 20:30:20 | × | ChanServ quits (ChanServ@services.) (shutting down) |
| 20:30:26 | <iqubic> | jle`: Thank you for updating your AoCAPI. I have verified that it works with the lastest version of servant and GHC. |
| 20:30:48 | <iqubic> | I can successfully get an error of "Left (AoCReleaseError 117187.692251649s)" |
| 20:31:30 | <iqubic> | I don't understand what the number is, and the docs state it's a NominalDiffTime, but IDK what that is. |
| 20:31:35 | → | ChanServ joins (ChanServ@services.) |
| 20:31:35 | kornbluth.freenode.net | sets mode +o ChanServ |
| 20:32:05 | <koz_> | iqubic: NominalDiffTime represents a separation in time that's not pinned to anything specific ("five minutes ago", "tomorrow", "five years from now" etc). |
| 20:32:23 | <koz_> | It's encoded as (possibly fractional) seconds. |
| 20:33:07 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 20:33:10 | <iqubic> | Right. And in this case it's telling me how long I'll need to wait until AOC 2020 starts |
| 20:33:59 | <iqubic> | But the important part isn't that number, but that the jle's updates that he made yesterday actually work. |
| 20:35:49 | × | avdb quits (~avdb@ip-81-11-215-86.dsl.scarlet.be) (Ping timeout: 256 seconds) |
| 20:36:38 | <iqubic> | Looking at Haskell's Time support, and I'm wondering something; What's the difference between a NominalDiffTime and a DiffTime? |
| 20:36:49 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
| 20:37:12 | <merijn> | iqubic: DiffTime is *clock* time |
| 20:37:21 | <merijn> | iqubic: NominalDiffTime is monotonic time |
| 20:37:26 | <koz_> | NominalDiffTime ignores leap seconds. |
| 20:37:33 | <iqubic> | So then what's UTCTime? |
| 20:37:40 | <koz_> | UTCTime is a specific time. |
| 20:37:45 | <koz_> | Not a difference between two times. |
| 20:37:46 | <iqubic> | Right, I see. |
| 20:37:51 | <iqubic> | Ah, I see. |
| 20:37:56 | × | Maxdamantus quits (~Maxdamant@unaffiliated/maxdamantus) (Ping timeout: 256 seconds) |
| 20:38:07 | <merijn> | iqubic: i.e. 5 minutes of NominalDiffTime might be 1 hour and 5 minutes of DiffTime :p |
| 20:38:17 | <merijn> | Due to daylight savings time |
| 20:38:19 | <iqubic> | I see. |
| 20:38:39 | × | natechan quits (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9) |
| 20:38:44 | <merijn> | It's pedantic, but time is complex enough that pedantry is warranted :p |
| 20:38:51 | → | irc_user joins (uid423822@gateway/web/irccloud.com/x-qjzncdzdidsoxfjl) |
| 20:39:07 | <iqubic> | Does Haskell support timezone conversions, or not? |
| 20:39:25 | <merijn> | Sure, as much as anything does |
| 20:39:35 | <merijn> | Well "Haskell" not so much |
| 20:39:39 | → | Maxdamantus joins (~Maxdamant@unaffiliated/maxdamantus) |
| 20:39:40 | <merijn> | But the time library, sure |
| 20:39:59 | <iqubic> | Right. |
| 20:40:00 | → | appostasiamo joins (~appostasi@185.183.147.131) |
| 20:40:08 | → | sfvm joins (~sfvm@37.228.215.54) |
| 20:40:09 | <merijn> | iqubic: See ZonedTime |
| 20:40:17 | <iqubic> | I'll look at that later. |
| 20:40:29 | <merijn> | iqubic: Which is essentially "a time + a time zone" |
| 20:40:48 | <merijn> | ugh |
| 20:40:54 | <appostasiamo> | ciao |
| 20:41:00 | <merijn> | time doesn't have geographic timezone names? |
| 20:41:13 | <appostasiamo> | !list |
| 20:41:14 | <monochrom> | appostasiamo: https://hackage.haskell.org/ |
| 20:41:22 | xerox_ | chuckles |
| 20:41:24 | <koz_> | merijn: Nope. |
| 20:41:38 | <koz_> | (speaking as someone who actually had to look up this info recently) |
| 20:41:39 | <merijn> | Ok, I retract my statement :p |
| 20:41:53 | <merijn> | time on supports UTC offsets, not timezones :p |
| 20:42:06 | <merijn> | s/on/only |
| 20:42:06 | <xerox_> | postgres does timezone conversion well |
| 20:42:18 | → | ph88 joins (~ph88@2a02:8109:9e00:7e5c:38a3:bec1:bd68:259f) |
| 20:42:31 | <merijn> | xerox_: I don't believe that :p |
| 20:42:37 | <xerox_> | it's true! |
| 20:42:41 | <merijn> | Because there's literally no way to do timezone conversion *well* |
| 20:42:48 | <merijn> | The best you can manage is *not terrible* |
| 20:43:26 | → | natechan joins (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
| 20:44:03 | hekkaidekapus | awaits the future vs. past times distinction… |
| 20:44:12 | <merijn> | hekkaidekapus: For example :p |
| 20:44:26 | <hekkaidekapus> | heh… I saw you coming :p |
| 20:44:38 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection) |
| 20:44:40 | × | appostasiamo quits (~appostasi@185.183.147.131) (Remote host closed the connection) |
| 20:44:58 | → | cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) |
| 20:45:01 | <merijn> | I'm coming to take away the programming license of anyone who says "you should always convert datetime to UTC" >.> |
| 20:45:11 | <hekkaidekapus> | lol |
| 20:45:25 | <merijn> | A little knowledge is a dangerous thing! |
| 20:46:12 | <hekkaidekapus> | In the line of “Fear the person of one book.” s/book/universal time/ |
| 20:46:49 | <merijn> | hekkaidekapus: It's especially relevant with all of the EU reconsidering daylight savings time in the near future |
| 20:46:49 | × | dddddd quits (~dddddd@unaffiliated/dddddd) (Quit: dddddd) |
| 20:47:17 | <dminuoso> | iqubic: https://wiki.haskell.org/wikiupload/9/90/Time-diagram.png |
| 20:47:27 | <hekkaidekapus> | merijn: Wait, isn’t the decision already made? |
| 20:47:59 | <merijn> | hekkaidekapus: AFAIK the decision to stop has been made, but nothing has been finalised about which permanent time will be used by which country |
| 20:48:26 | <ddellacosta> | dminuoso: that's great, filing it away, thanks |
| 20:48:41 | <hekkaidekapus> | iirc, each country has the leeway in phasing it out. |
| 20:48:57 | <merijn> | hekkaidekapus: Eh, last news article I saw said end 2021 :p |
| 20:49:06 | → | jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) |
| 20:49:50 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 20:50:13 | <hekkaidekapus> | merijn: Ok, then. It’s not like I’m running for a seat in the EP ;) (If I did, it’d be under the Pirates banner, of course. :P ) |
| 20:50:50 | → | dddddd joins (~dddddd@unaffiliated/dddddd) |
| 20:52:16 | → | sh92 joins (~sh9@softbank060116136158.bbtec.net) |
| 20:53:44 | × | sh91 quits (~sh9@softbank060116136158.bbtec.net) (Ping timeout: 256 seconds) |
| 20:54:25 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds) |
| 20:56:09 | <hekkaidekapus> | @where cabal-stack-disambiguation |
| 20:56:09 | <lambdabot> | "The Cabal/Stack Disambiguation Guide" at <https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07> by Merijn |
| 20:56:30 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 20:56:40 | <hekkaidekapus> | merijn: Time for a ‘Future vs Past Time disambiguation’ gist? |
| 20:57:26 | × | SupaYoshii quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!) |
| 20:58:19 | <merijn> | hekkaidekapus: I'll get right on that after I finish rewriting 8 thesis chapters...before tomorrow 10 AM >.> |
| 20:58:51 | <hekkaidekapus> | UTC time, oc. |
| 20:59:32 | × | mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz) |
| 20:59:48 | → | mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) |
| 21:01:20 | → | SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net) |
| 21:02:50 | hackage | hedis 0.13.1 - Client library for the Redis datastore: supports full command set,pipelining. https://hackage.haskell.org/package/hedis-0.13.1 (k_bx) |
| 21:03:35 | <dminuoso> | 21:46:49 merijn | hekkaidekapus: It's especially relevant with all of the EU reconsidering daylight savings time in the near future |
| 21:03:43 | <dminuoso> | Its going to be a very interesting near future |
| 21:04:09 | <hekkaidekapus> | lol |
| 21:04:09 | <dminuoso> | Negative leap second, DST changes... |
| 21:04:30 | <dminuoso> | I reckon we'll reap the benefits in years to come |
| 21:04:39 | hekkaidekapus | thought dminuoso went for the pun… |
| 21:06:53 | × | natechan quits (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9) |
| 21:07:29 | <dminuoso> | Is there a typeclass for things that have an empty constructor like Nothing or []? |
| 21:07:41 | <merijn> | Alternative? :p |
| 21:08:22 | → | wonko7 joins (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) |
| 21:09:18 | → | Aquazi joins (uid312403@gateway/web/irccloud.com/x-ilswyamvtndfxsrg) |
| 21:09:42 | <hpc> | also Monoid depending on what kind you need |
| 21:09:43 | <boxscape> | dminuoso https://hackage.haskell.org/package/data-default-0.7.1.1/docs/Data-Default.html#t:Default |
| 21:10:04 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 21:10:25 | <boxscape> | I guess Pointed, as well |
| 21:10:40 | <boxscape> | I guess Pointed, as well |
| 21:10:42 | <boxscape> | whoops |
| 21:10:44 | <boxscape> | I wanted to say |
| 21:10:46 | <boxscape> | wait no |
| 21:10:52 | <boxscape> | Pointed is different |
| 21:12:33 | → | amiri joins (~amiri@cpe-76-91-154-9.socal.res.rr.com) |
| 21:13:12 | × | DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...) |
| 21:13:56 | <ddellacosta> | MonadThrow? |
| 21:13:58 | ddellacosta | ducks |
| 21:15:48 | → | DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
| 21:20:26 | → | alp__ joins (~alp@2a01:e0a:58b:4920:d15:e453:85b3:5c61) |
| 21:20:44 | × | sagax quits (~sagax_nb@213.138.71.146) (Ping timeout: 272 seconds) |
| 21:21:16 | <dminuoso> | Mmm I guess Default is that thing |
| 21:24:59 | <ryantrinkle> | for QuantifiedConstraints, it seems like sometimes it needs a little help; e.g., i have a `type family Object cat a :: Constraint` and `class Object cat a => Object' cat a with instance Object cat a => Object' cat a`, and finally an expression that uses it via a quantified constraint `forall x. obj x => Object' cat x` |
| 21:25:06 | × | jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection) |
| 21:25:17 | <ryantrinkle> | now if I just try to use `Object cat a` for some particular `a`, it doesn't work |
| 21:25:49 | <ryantrinkle> | but defining: `with :: forall c r. c => (c => r) -> r` `with x = x` |
| 21:26:01 | <ryantrinkle> | and prefixing with `with @(Object' cat a)` |
| 21:26:08 | <ryantrinkle> | now it can find the Object cat a instance |
| 21:26:12 | <ryantrinkle> | any advice on how to clean this up? |
| 21:26:45 | × | geekosaur quits (ae68c070@cpe-174-104-192-112.neo.res.rr.com) (Remote host closed the connection) |
| 21:26:57 | <ryantrinkle> | (it's necessary to go through the `class` because the type family can't be partially applied) |
| 21:27:13 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 21:27:45 | → | contiver joins (~contiver@84-115-64-168.wifi.dynamic.surfer.at) |
| 21:30:08 | → | Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it) |
| 21:30:20 | → | conal joins (~conal@64.71.133.70) |
| 21:32:16 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 21:33:17 | → | conal joins (~conal@64.71.133.70) |
| 21:33:23 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 21:34:00 | → | conal joins (~conal@64.71.133.70) |
| 21:34:10 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 21:34:52 | → | conal joins (~conal@64.71.133.70) |
| 21:36:05 | × | knupfer quits (~Thunderbi@i5E86B463.versanet.de) (Ping timeout: 240 seconds) |
| 21:36:23 | → | jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) |
| 21:37:02 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone) |
| 21:37:59 | → | contiver_ joins (~contiver@84-115-64-44.wifi.dynamic.surfer.at) |
| 21:38:34 | × | perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9) |
| 21:40:25 | × | contiver quits (~contiver@84-115-64-168.wifi.dynamic.surfer.at) (Ping timeout: 256 seconds) |
| 21:40:42 | → | travv0 joins (sid293381@gateway/web/irccloud.com/x-bzeyalubfbhlrrhq) |
| 21:41:00 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds) |
| 21:42:20 | × | jonatanb quits (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection) |
| 21:42:36 | × | Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 240 seconds) |
| 21:42:47 | × | xff0x quits (~fox@2001:1a81:524c:7b00:2a03:b58:ed4d:4ddd) (Ping timeout: 272 seconds) |
| 21:43:57 | → | xff0x joins (~fox@141.98.255.144) |
| 21:49:52 | × | xff0x quits (~fox@141.98.255.144) (Ping timeout: 272 seconds) |
| 21:50:42 | × | Cotillion quits (~Cotillion@185.163.110.116) (Remote host closed the connection) |
| 21:51:07 | → | xff0x joins (~fox@2001:1a81:524c:7b00:2a03:b58:ed4d:4ddd) |
| 21:51:31 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 21:52:09 | → | JavaSucksMan joins (403483ab@64-52-131-171.championbroadband.com) |
| 21:53:25 | → | conal joins (~conal@64.71.133.70) |
| 21:53:25 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 21:53:51 | → | conal joins (~conal@64.71.133.70) |
| 21:55:10 | → | perrier-jouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 21:55:27 | <JavaSucksMan> | How can I restrict access to the full IO monad while still provide access to things like IORef that, aren't referentially transparent but don't actually do IO (from the OS point of view)? |
| 21:55:27 | × | chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
| 21:55:49 | <dolio> | Use ST? |
| 21:55:53 | → | chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) |
| 21:56:21 | <koz_> | You can also work in PrimMonad I guess? |
| 21:56:34 | <JavaSucksMan> | I guess,,, and use #RealWorld# to get at IORefs? |
| 21:56:46 | <hpc> | you'd use STRef |
| 21:57:06 | <koz_> | I think there's a generalization of *Ref in primitive if you wanna go down the PrimMonad route IIRC. |
| 21:58:51 | <JavaSucksMan> | PrimMonad looks interesting.... thanks |
| 22:00:38 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 22:04:42 | → | ephemient joins (uid407513@gateway/web/irccloud.com/x-bhblrmwjykztmyrl) |
| 22:06:50 | × | fendor quits (~fendor@91.141.2.60.wireless.dyn.drei.com) (Remote host closed the connection) |
| 22:08:59 | → | Franciman joins (~francesco@host-82-54-193-143.retail.telecomitalia.it) |
| 22:10:48 | → | conman1 joins (~conman@185.204.1.185) |
| 22:12:05 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Read error: Connection reset by peer) |
| 22:13:07 | × | acidjnk_new quits (~acidjnk@p200300d0c719ff217d005cd8d9846e4e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 22:17:05 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 22:18:16 | → | jonatanb joins (~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) |
| 22:18:58 | → | acidjnk_new joins (~acidjnk@p200300d0c719ff21c162f6267ce4f02c.dip0.t-ipconnect.de) |
| 22:20:10 | → | rprije joins (~rprije@194-193-174-214.tpgi.com.au) |
| 22:20:37 | × | boxscape quits (54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) (Ping timeout: 264 seconds) |
| 22:22:38 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 22:26:31 | → | justsomeguy joins (~justsomeg@216.186.218.241) |
| 22:26:32 | × | justsomeguy quits (~justsomeg@216.186.218.241) (Changing host) |
| 22:26:32 | → | justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311) |
| 22:27:28 | <dsal> | JavaSucksMan: It sounds like you were describing ST. |
| 22:28:33 | <monochrom> | @quote monochrom Bond |
| 22:28:33 | <lambdabot> | No quotes match. |
| 22:28:35 | → | vicfred joins (~vicfred@unaffiliated/vicfred) |
| 22:28:58 | <dsal> | That's pretty deep. |
| 22:29:04 | <monochrom> | Oh, this: |
| 22:29:08 | <monochrom> | @quote monochrom 007 |
| 22:29:08 | <lambdabot> | monochrom says: 007 titles for haskellers. fromForeignPtr withCString. You Only lift Twice. Bottoms Are Forever. The Monad with the Pure Function. For Your Types Only. A view to A seq. Licence |
| 22:29:08 | <lambdabot> | to killThread. iterate Never Dies. unsafePerformIO Is Not Enough. |
| 22:29:41 | <monochrom> | That last one may have been better off as The RealWorld# Is Not Enough |
| 22:30:53 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 22:30:57 | <maerwald> | everything is IO. GHC just creates a perfect illusion for us |
| 22:31:51 | <monochrom> | I have a feeling that it's the opposite, IO is an illusion. |
| 22:32:08 | <maerwald> | that's what academics like to believe :p |
| 22:33:18 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:34:31 | <monochrom> | Rumour goes that if you assume an anti de Sitter space and do a holographic projection of the world to a surface, then the IO monad and the IO comonad are unified. |
| 22:34:49 | <dminuoso> | The IO comonad? ... |
| 22:35:00 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 265 seconds) |
| 22:35:01 | <monochrom> | I'm making it up. >:) |
| 22:35:03 | <erisco> | oh yeah I have one of those on my coffee table |
| 22:35:42 | <monochrom> | But a comonad allows you to do the much-wanted M a -> a |
| 22:35:44 | × | mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz) |
| 22:35:50 | <dminuoso> | % :t unsafePerformIO |
| 22:35:50 | <yahb> | dminuoso: IO a -> a |
| 22:35:53 | dminuoso | chuckles |
| 22:35:58 | <erisco> | it is true that you can use comonads to add purity to impure languages |
| 22:36:16 | <erisco> | so then it is moreso a question of what you like by default, like strictness |
| 22:37:57 | → | contiver__ joins (~contiver@84-115-64-108.wifi.dynamic.surfer.at) |
| 22:38:08 | × | carlomagno quits (~cararell@148.87.23.5) (Remote host closed the connection) |
| 22:38:32 | × | gproto23 quits (~gproto23@unaffiliated/gproto23) (Remote host closed the connection) |
| 22:38:52 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 22:38:59 | → | gproto23 joins (~gproto23@unaffiliated/gproto23) |
| 22:39:59 | <erisco> | I feel like "everything is" statements are as broad as they are meaningless |
| 22:40:36 | <maerwald> | they aren't really statements |
| 22:40:49 | <monochrom> | Yes if you restrict to those that are really, seriously, provably true. |
| 22:41:10 | × | contiver_ quits (~contiver@84-115-64-44.wifi.dynamic.surfer.at) (Ping timeout: 272 seconds) |
| 22:41:22 | hackage | intricacy 0.7.2.1 - A game of competitive puzzle-design https://hackage.haskell.org/package/intricacy-0.7.2.1 (mbays) |
| 22:41:22 | <monochrom> | If you allow them to be statistically true of a majority, then you have useful statements. |
| 22:43:36 | <monochrom> | But why do you like to suddenly discuss "everything is" sentences? |
| 22:43:50 | × | xff0x quits (~fox@2001:1a81:524c:7b00:2a03:b58:ed4d:4ddd) (Ping timeout: 264 seconds) |
| 22:44:03 | <maerwald> | Because programmers generally have a hard time with non-formal truths? :p |
| 22:44:19 | → | xff0x joins (~fox@2001:1a81:524c:7b00:6035:c577:b880:b950) |
| 22:44:35 | <erisco> | it started with "everything is IO" and then continued with the negation |
| 22:44:38 | <arw_> | yes. but even formally, most "everything is" sentences will be tautologies ala "everything is isomorphic to itself" |
| 22:44:44 | <maerwald> | erisco: and both is true |
| 22:44:57 | <erisco> | when A and not A are both true, what do you have |
| 22:45:15 | <maerwald> | erisco: there's more than just classical logic |
| 22:45:37 | <erisco> | well I'm asking you, I didn't make any logical judgement about it :P |
| 22:46:36 | <monochrom> | I think programmers have no trouble believing and insisting non-formal truths like "pure FP is impractical" and "non-tail recursion uses call stack space". |
| 22:47:06 | <maerwald> | erisco: https://aeon.co/essays/the-logic-of-buddhist-philosophy-goes-beyond-simple-truth |
| 22:47:14 | <monochrom> | Or maybe that's exactly what you mean. |
| 22:47:23 | × | LKoen quits (~LKoen@169.244.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”) |
| 22:47:44 | <maerwald> | it's also formally explained there, kinda |
| 22:48:11 | → | carlomagno joins (~cararell@148.87.23.4) |
| 22:48:25 | → | Rudd0^ joins (~Rudd0@185.189.115.108) |
| 22:48:32 | × | Rudd0 quits (~Rudd0@185.189.115.108) (Read error: Connection reset by peer) |
| 22:48:45 | <JavaSucksMan> | When A and not A are both true, you have.....trivial completeness ;-) |
| 22:49:32 | <maerwald> | https://en.wikipedia.org/wiki/Many-valued_logic |
| 22:49:55 | <JavaSucksMan> | or paraconsistant logics |
| 22:50:16 | <erisco> | if you can assume A and successfully describe the world, and, as a separate endeavour, assume not A and also successfully describe the world, what importance does A or not A have |
| 22:50:39 | <maerwald> | erisco: the part that the reader missed :D |
| 22:51:02 | × | perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 2.9) |
| 22:51:09 | <maerwald> | if you think about it, it's gone |
| 22:51:38 | <maerwald> | the paradox of the ineffible |
| 22:52:09 | <maerwald> | or just "aesthetic truth" to be more classic |
| 22:52:37 | <maerwald> | because again: none of those were actually statements |
| 22:52:47 | × | nango` quits (~user@2001:4bb8:2c0:f87:3991:44c0:3223:4b98) (Ping timeout: 260 seconds) |
| 22:55:38 | <erisco> | "aesthetic truth" sounds like a euphemism for politics |
| 22:55:49 | <maerwald> | no |
| 22:56:24 | <maerwald> | there's a few centuries of philosophy research about it :p |
| 22:56:27 | <monochrom> | "reality" is. |
| 22:56:55 | × | oish quits (~charlie@228.25.169.217.in-addr.arpa) (Ping timeout: 256 seconds) |
| 22:57:21 | monochrom | contemplates "what would go into a book titled Political Haskell?" |
| 22:57:31 | <maerwald> | I think it's important to talk about non-formal properties of e.g. languages as well. Such a property is how it "feels". And if you ask most programmers, it's actually something you can talk about |
| 22:58:12 | <monochrom> | Yes. For example "productivity". |
| 22:58:27 | <monochrom> | "power" |
| 22:58:44 | <monochrom> | "readability" |
| 22:59:52 | <erisco> | why did my blood pressure go up |
| 23:00:23 | <maerwald> | Such discussions have a tendency to derail into gibberish... (are we there yet?), but formal discussions have their own as well: bikeshedding. |
| 23:00:24 | × | chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
| 23:00:52 | <erisco> | oh there is nothing like a perfectly rational, coherent, formal discussion about absolutely nothing significant |
| 23:01:00 | <monochrom> | Yes, we have long understood PEBKAC |
| 23:01:05 | <MarcelineVQ> | re: feeling. haskell's use of whitespace has ruined me for other languages |
| 23:01:07 | → | chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) |
| 23:01:40 | <erisco> | but on the other hand, I feel like these feelings (hah) need to be put in their place |
| 23:01:42 | <MarcelineVQ> | all I can use now is haskell-like things |
| 23:02:10 | <erisco> | because it seems to be, and I've encountered this, that some project their preferences as matters of fact |
| 23:02:38 | <erisco> | like where you ought to put your commas and braces and whether it is okay to have single-letter variable names and how many lines per file and on and one |
| 23:02:57 | × | Sheilong quits (uid293653@gateway/web/irccloud.com/x-ubahtloahdzifjhq) (Quit: Connection closed for inactivity) |
| 23:02:57 | × | chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
| 23:03:27 | <erisco> | if I like putting my commas first rather than last on a line and someone says it is unreadable, that is their experience of it |
| 23:03:39 | × | hpc quits (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 260 seconds) |
| 23:04:05 | <maerwald> | yes, commas have caused engineering teams to split up :D |
| 23:04:23 | <erisco> | are you leading or trailing? |
| 23:04:38 | <monochrom> | This is why SPJ is leading. >:) |
| 23:05:24 | <ski> | i think i always did leading, because of the aesthetics |
| 23:05:32 | <ski> | (i like to line things up) |
| 23:05:40 | → | mputz joins (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) |
| 23:05:41 | <maerwald> | My policy wrt formatting is similar to the WTFPL license text |
| 23:06:07 | → | chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) |
| 23:06:42 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 23:07:18 | <maerwald> | I barely even care what formatting ppl use in PRs... I mean. If you're an open source project and someone contributes... it's time for celebration, screw formatting :p |
| 23:07:26 | <monochrom> | Is that basically centre-align every line, except left-align for the last line? |
| 23:07:54 | <erisco> | my first foray into programming didn't involve whitespace |
| 23:07:56 | <ski> | erisco : "when A and not A are both true, what do you have" -- linear logic ? |
| 23:07:59 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 23:08:27 | → | conal joins (~conal@64.71.133.70) |
| 23:08:29 | <MarcelineVQ> | human involvement |
| 23:09:35 | <erisco> | then a mentor showed me how to format my html elements and boy was web development so much easier |
| 23:09:38 | <maerwald> | if you calculated the times engineering teams have discussed non-sente topics like formatting, maybe you could calculate the wasted time or the economical damage :p |
| 23:09:43 | <erisco> | practically took all the challenge out! |
| 23:12:21 | hackage | pg-extras 0.0.1 - PostgreSQL database performance insights. https://hackage.haskell.org/package/pg-extras-0.0.1 (pawurb) |
| 23:13:29 | <monochrom> | https://twitter.com/HisCursedness/status/788690145822306304 |
| 23:14:00 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 23:14:44 | <xerox_> | that's beautiful modulo a couple columns |
| 23:15:56 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 23:16:27 | <maerwald> | monochrom: lol, ok... I guess I do care about it *somewhat* |
| 23:16:28 | <erisco> | when you take leading delimiters to their ultimate conclusion you also lead with semicolons |
| 23:16:36 | → | conal joins (~conal@64.71.133.70) |
| 23:16:41 | <erisco> | I had a hard time seriously staying on board with that, though I tried :P |
| 23:16:44 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 23:17:29 | <monochrom> | That's what SPJ does. Lead with semicolons. And the leading semicolons are vertically aligned with { and } |
| 23:17:30 | × | SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!) |
| 23:17:49 | <monochrom> | <pun>Follow the lead of SPJ!</pun> |
| 23:18:12 | <erisco> | really? well great minds and all that |
| 23:18:27 | <maerwald> | there should be a haskell formatter that turns your code into SPJ style |
| 23:18:42 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 23:19:09 | <monochrom> | The trouble is that only SPJ does it, in all of the Haskell community. So yeah we simply call it the SPJ style. |
| 23:19:47 | <xerox_> | always liked that style |
| 23:19:54 | <monochrom> | I used to do that a bit, but only because an old generation of auto-indentation editor plugin was dumb. |
| 23:19:59 | <erisco> | I have a style I don't see others using |
| 23:19:59 | × | contiver__ quits (~contiver@84-115-64-108.wifi.dynamic.surfer.at) (Ping timeout: 260 seconds) |
| 23:20:24 | <erisco> | it is kind of regressive, but it started with whatever editor I was using at the time as a workaround |
| 23:20:25 | <maerwald> | we need AI in formatters |
| 23:20:34 | <erisco> | now I just like it |
| 23:21:07 | <erisco> | here you can see by example https://hackage.haskell.org/package/control-dotdotdot-0.1.0.1/docs/src/Control-DotDotDot.html#DotDotDot |
| 23:21:37 | <dolio> | Dissapointing that almost no one replying to that tweet recognized that the problem is that the compiler requires all that extra garbage to be added to the code that is already easy to understand. |
| 23:21:42 | <monochrom> | Yes please Markov chain that tells me how many leading spaces I need for the next line. :) |
| 23:22:03 | <xerox_> | yuck |
| 23:22:44 | <monochrom> | dolio, that's a doctrine of the layout-insensitive religion. |
| 23:23:29 | → | SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net) |
| 23:23:29 | × | SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Client Quit) |
| 23:23:35 | <monochrom> | Either that, or layout parsing is really tricky. |
| 23:23:36 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 23:24:06 | <dolio> | It probably is when you write your parsers in C like most people do. |
| 23:24:16 | <dolio> | That's why they have compiler books that are like 70% parsing. |
| 23:24:18 | <hekkaidekapus> | The code in that tweet is fine. The right margin should be the place to stuff boilerplate; if you don’t like boilerplate, increase the column count where the margin starts. By the way, 80 or 120? :p |
| 23:24:22 | <maerwald> | ok, I'm a believer in inconsistent formatting... I don't mind if ppl exercise different styles in one codebase. Because it's all *information*. Why would you hide it? Scared your pattern recognition apparatus overloads? That's more likely to happen due to the actual code |
| 23:25:02 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 23:25:23 | × | wonko7 quits (~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 272 seconds) |
| 23:25:28 | <erisco> | my elitism is saying it is people who have only experienced one style, either because they are new or stubborn |
| 23:25:47 | <monochrom> | newborn or stubborn \∩/ |
| 23:25:59 | <hekkaidekapus> | :d |
| 23:26:16 | → | SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net) |
| 23:26:39 | × | danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds) |
| 23:26:42 | <erisco> | I don't know how you can care that much once you have some practice in a variety of different syntax styles |
| 23:26:56 | <erisco> | and, lord help you, mathematics |
| 23:27:15 | <alx741> | hello all, I think some months ago I read about a framework (new one?) that advocates for server-side rendering but also provides a list of principles of what it believes makes for good modern web frameworks (server side rendering being one of them), does anyone knows which framework that would be? I'm really after that list of principles but can't recall its name :/ |
| 23:27:40 | <maerwald> | I think it's the hope that consistent formatting will somehow make the team more productive... |
| 23:27:42 | <monochrom> | I say that layout parsing is tricky because the rules in the Haskell Report are almost as long as C++ rules for disambiguating multiple inheritance of a comon field, which is infamous for being tricky and complex and "no one actually understands in full". |
| 23:27:53 | <sondr3> | alx741: IHP maybe? |
| 23:27:56 | <Axman6> | alx741: maybe miso? |
| 23:28:04 | <Axman6> | maybe Maybe? |
| 23:28:05 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 23:28:17 | <sondr3> | Either maybe |
| 23:28:44 | → | conal joins (~conal@64.71.133.70) |
| 23:29:27 | <alx741> | sondr3: I remember the web page of it had such a list's name, but IHP doesn't so perhaps they've changed it? |
| 23:29:59 | <alx741> | Axman6: I've checked but there is no mention of such a list |
| 23:30:18 | <maerwald> | so the language is sound, but the parser not? :D |
| 23:30:51 | <maerwald> | purely functional programming language, that should parse... mostly |
| 23:30:53 | <alx741> | I remember it had a name, similar to how OOP has the 'SOLID' principles (it was a nice sounding name), I can't remember and it's driving me crazy :p |
| 23:31:07 | <erisco> | is the list longer or shorter than the list of physicists who truly understand quantum mechanics? |
| 23:31:29 | <dolio> | Haskell's layout sensitivity is a lot more complicated than the sensitivity in that tweet. |
| 23:31:51 | <erisco> | oh wait, I merged conversations |
| 23:31:54 | × | Franciman quits (~francesco@host-82-54-193-143.retail.telecomitalia.it) (Ping timeout: 256 seconds) |
| 23:32:17 | <Axman6> | alx741: was it PHP, Purescript, Haskell, Postgresql? |
| 23:32:21 | <erisco> | thought that was a list of people who fully understood C++ parsing |
| 23:32:55 | <monochrom> | Ah OK fair, dolio. |
| 23:33:03 | <sondr3> | Axman6: lol, nice acronym |
| 23:33:17 | <dolio> | I guess a problem is people only knowing Python as an example. If they did know Haskell, they could realize that languages could adopt optional layout sensitivity to avoid breaking existing code, so there's no excuse for perpetuating the braces and semicolons. |
| 23:33:26 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 23:33:29 | <Axman6> | MPHPGA - Make PHP GReat Again |
| 23:33:38 | <dolio> | The requirement, that is. |
| 23:34:40 | <alx741> | Axman6: I believe it was a Haskell web framework, hence I'm asking here... but I do realize that could also be a memory fluke |
| 23:35:03 | <Axman6> | it wasn't yesod? |
| 23:35:43 | <alx741> | Axman6: pretty sure it wasn't because that's what I currently use |
| 23:36:16 | <alx741> | Oh well maybe I remember on my sleep :) |
| 23:36:27 | <alx741> | *I'll |
| 23:38:24 | × | irc_user quits (uid423822@gateway/web/irccloud.com/x-qjzncdzdidsoxfjl) (Quit: Connection closed for inactivity) |
| 23:38:45 | <monochrom> | Yes, I wish Python supported {;] so I could write one-liners on the REPL when it's a really short one-liner. The advantage of one-liners on the REPL, when it's short, is that I can actually edit any of it before I press enter. |
| 23:38:59 | → | Franciman joins (~francesco@host-95-251-103-60.retail.telecomitalia.it) |
| 23:39:43 | <monochrom> | If the REPL forces you to press enter 5 times, it means you're screwed whenever you realize you made a typo before the 1st enter. |
| 23:39:56 | <Axman6> | need more heredocs |
| 23:41:56 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 23:41:59 | <erisco> | just deconflict the keys |
| 23:42:17 | <erisco> | shift+enter has been a way to put newlines in text fields |
| 23:42:17 | <sondr3> | Anyone know of a good way to go from a char to its UTF8 symbol? E.g. '\955' to λ |
| 23:42:27 | <shachaf> | monochrom: The other option would be an environment that supports multiple-line inputs and still has the advantages of a REPL. |
| 23:42:39 | <shachaf> | sondr3: UTF-8 as in the encoding in bytes? |
| 23:42:45 | <Axman6> | sondr3: I don't understand the question |
| 23:43:10 | × | Franciman quits (~francesco@host-95-251-103-60.retail.telecomitalia.it) (Client Quit) |
| 23:43:29 | <erisco> | "UTF8 symbol" isn't a thing I have heard of |
| 23:43:43 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 23:43:46 | <sondr3> | Uh, so I have a bunch of characters that I'm reading, and I want to go from their decimal value to its glyph |
| 23:44:06 | <Axman6> | how are you reading them? |
| 23:44:10 | <erisco> | so you have a ttf or something? |
| 23:44:12 | <sondr3> | Megaparsec :D |
| 23:44:21 | <monochrom> | You know what, show actual code. |
| 23:44:35 | <monochrom> | @where paste |
| 23:44:35 | <lambdabot> | Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com |
| 23:45:01 | × | Amras quits (~Amras@unaffiliated/amras) (Ping timeout: 272 seconds) |
| 23:45:13 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
| 23:45:19 | → | pieguy128 joins (~pieguy128@bras-base-mtrlpq5031w-grc-39-70-27-244-102.dsl.bell.ca) |
| 23:45:50 | <monochrom> | But I guess a possible short answer is that if you use putChar or putStr or putStrLn you will see your λ alright, if you use print you don't, and that's by design. |
| 23:46:19 | <sondr3> | I'm writing a Scheme implementation and it writes characters as `\#VAL` (or `\#xHEX`) and uses this as an example: `#\x03BB ;λ(if character is supported)` |
| 23:46:27 | <monochrom> | If you use show you don't either, and print uses show, that's why. |
| 23:47:07 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 23:47:07 | <monochrom> | Actually I think I can use yahb to show you. But you should also do your experiment in ghci to confirm. |
| 23:47:18 | <monochrom> | % print '\955' |
| 23:47:18 | <yahb> | monochrom: '\955' |
| 23:47:23 | <monochrom> | % putChar '\955' |
| 23:47:23 | <yahb> | monochrom: λ |
| 23:47:24 | <erisco> | it just sounds like there is confusion on encodings versus code points versus glyphs |
| 23:47:40 | <monochrom> | Yeah there's also that. But that would be a 1-hour lecture. |
| 23:47:42 | <erisco> | and maybe the answer can be found in understanding what each of those are |
| 23:47:57 | <erisco> | there is that Joel Spolsky article |
| 23:48:12 | <monochrom> | a 1-hour lecture that could be saved by reading joeysoftware's article on this topic, but who still remembers there is such a thing |
| 23:48:15 | <sondr3> | ¯\_(ツ)_/¯ |
| 23:48:29 | <nitrix> | Not very Haskell-y but I can't think of a better place to ask: Is there terminology to distinguish whether two things compare equal after evaluation vs. them being actually the same expression? |
| 23:48:41 | <monochrom> | People now only know that emojies "just work" |
| 23:49:25 | <erisco> | they got added to computers about a decade ago, weren't you aware? |
| 23:49:47 | <nitrix> | As in, `1 + 1 = 2`. Clearly there's "equality" but these two things isn't the same. I don't know if mathematics/logic cares to name those? |
| 23:49:50 | → | hpc joins (~juzz@ip98-169-35-13.dc.dc.cox.net) |
| 23:49:53 | <erisco> | that was roughly my experience when I first saw one on a mobile phone :P |
| 23:50:02 | → | hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 23:50:15 | → | alice_ joins (~alice@209.131.251.182) |
| 23:50:31 | <nitrix> | I guess I'm asking for something beta-reduction related. |
| 23:50:39 | <alice_> | how does ghc garbage collection work |
| 23:50:53 | × | hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection) |
| 23:51:21 | → | hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 23:51:49 | <hekkaidekapus_> | > chr 955 -- sondr3 |
| 23:51:51 | <lambdabot> | '\955' |
| 23:51:59 | <hekkaidekapus_> | > ord 'λ' |
| 23:52:02 | <lambdabot> | 955 |
| 23:52:03 | × | hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
| 23:52:06 | <erisco> | nitrix, there definitional equality which would say 2 = 1 + 1 only when 2 is defined by 1 + 1 |
| 23:53:17 | <erisco> | and a common name for the other sort is slipping my mind |
| 23:53:28 | <nitrix> | erisco, So the terminology I'm after is "definitional equality"? What are the other options, judgmental equality? |
| 23:53:30 | <MarcelineVQ> | nitrix: extentional equality |
| 23:53:57 | <nitrix> | erisco, And, Google just happily told me what I'm after. Apparently I want to look into "homotopy theory" :D |
| 23:54:08 | <MarcelineVQ> | Though that's not specifically about if they're evaluated first |
| 23:54:11 | <erisco> | well there are all sorts of equalities |
| 23:54:37 | <MarcelineVQ> | nitrix: https://en.wikipedia.org/wiki/Extensionality would be my first stop |
| 23:54:37 | <sondr3> | hekkaidekapus_: Is there a way to do that in reverse? I haven't been able to find anything/figure it out |
| 23:54:42 | <nitrix> | MarcelineVQ, I think you're closer. I'm doing predicate logic. |
| 23:55:16 | <hekkaidekapus_> | sondr3: What reversal? |
| 23:55:41 | <Axman6> | alice_: that's a fairly broad question, do you have a more specific question? |
| 23:57:03 | <erisco> | I find univalence particularly mind-bending and pray one day I have the motivation to learn more |
| 23:57:29 | <MarcelineVQ> | erisco: try cubical agda :> |
| 23:57:52 | <MarcelineVQ> | https://gallais.github.io/blog/first-cubical-experiment.html |
| 23:57:55 | <sondr3> | hekkaidekapus_: How do I do what putChar does only `Char -> String` instead of `IO ()`. I want to use this in my Show instance for characters |
| 23:58:02 | <erisco> | well I'd want to understand more basically what role cubical type theory is playing |
| 23:58:07 | × | mputz quits (~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
| 23:58:14 | <MarcelineVQ> | it's like regular type theory but it's a cube |
| 23:58:15 | <Axman6> | :t (:"") |
| 23:58:17 | <lambdabot> | Char -> [Char] |
| 23:58:31 | <erisco> | ah, can't believe I didn't think of it! |
| 23:58:45 | <MarcelineVQ> | yes the tough things are sometimes obvious in retrospect |
| 23:59:07 | <nitrix> | MarcelineVQ, Yeah, I think you nailed it. Extensional vs Intentional equality. Thank you sir :) |
| 23:59:33 | <erisco> | it seems like, just from looking at univalence, that that really is the fundamental equality worth concern over, as programmers |
All times are in UTC on 2020-11-29.