Logs on 2022-01-30 (liberachat/#haskell)
| 00:03:24 | → | lavaman joins (~lavaman@98.38.249.169) |
| 00:03:54 | → | alMalsamo joins (~alMalsamo@gateway/tor-sasl/almalsamo) |
| 00:05:02 | × | jgeerds_ quits (~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 240 seconds) |
| 00:06:07 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 00:07:37 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 00:10:23 | → | hololeap_ joins (~hololeap@user/hololeap) |
| 00:10:57 | × | hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
| 00:14:39 | hololeap_ | is now known as hololeap |
| 00:14:59 | → | Inst joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
| 00:18:37 | → | chenqisu1 joins (~chenqisu1@183.217.200.249) |
| 00:20:46 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 00:20:47 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 00:20:47 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:25:02 | × | madjestic quits (~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 256 seconds) |
| 00:26:54 | × | soxen quits (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 250 seconds) |
| 00:27:58 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 00:30:16 | → | kimjetwav joins (~user@2607:fea8:2363:8f00:6d2:eb11:feaf:8a98) |
| 00:34:01 | × | beaky quits (~beaky@2a03:b0c0:0:1010::1e:a001) (Ping timeout: 250 seconds) |
| 00:34:13 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 00:34:56 | → | beaky joins (~beaky@2a03:b0c0:0:1010::1e:a001) |
| 00:36:17 | ChanServ | sets mode +o litharge |
| 00:36:18 | litharge | sets mode -bo *!*@209.6.150.53 litharge |
| 00:36:22 | × | Gurkenglas quits (~Gurkengla@dslb-090-186-104-244.090.186.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
| 00:38:21 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:2541:beac:9acd:61a8) |
| 00:39:03 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 00:48:56 | → | merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
| 00:49:57 | × | nunggu quits (~q@user/nunggu) (Ping timeout: 276 seconds) |
| 00:50:51 | × | x_kuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 00:56:46 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
| 00:58:38 | ← | Inst parts (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Leaving) |
| 00:58:42 | → | Inst joins (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) |
| 00:58:43 | <Inst> | leaving |
| 00:58:52 | <Inst> | I love you guys, but tbh i have to stop annoying you guys and actually learn Haskell instead |
| 00:58:56 | ← | Inst parts (~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Leaving) |
| 01:06:03 | × | Tuplanolla quits (~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:07:24 | <yushyin> | a bit weird |
| 01:09:03 | → | bontaq joins (~user@ool-45779fe5.dyn.optonline.net) |
| 01:11:49 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:14:48 | → | yauhsien_ joins (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) |
| 01:17:51 | × | ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
| 01:17:57 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:19:31 | × | MatthiasG2 quits (~matthias@i6DFA01BB.versanet.de) (Quit: Lost terminal) |
| 01:19:46 | × | yauhsien_ quits (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
| 01:22:37 | × | merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 01:25:24 | × | Topsi quits (~Tobias@dyndsl-095-033-090-071.ewe-ip-backbone.de) (Ping timeout: 250 seconds) |
| 01:27:31 | → | lbseale joins (~ep1ctetus@user/ep1ctetus) |
| 01:35:49 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 01:37:16 | → | argento joins (~argent0@168-227-97-23.ptr.westnet.com.ar) |
| 01:39:07 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 01:43:20 | × | lbseale quits (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer) |
| 01:43:48 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 01:47:07 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 01:53:42 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 02:01:34 | → | soxen joins (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) |
| 02:04:41 | → | tommd joins (~tommd@67-42-147-226.ptld.qwest.net) |
| 02:12:52 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 02:14:14 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Remote host closed the connection) |
| 02:14:41 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 02:18:26 | × | marquis_1ndras quits (~marquis_a@124.170.163.166) (Quit: Lost terminal) |
| 02:19:30 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 02:20:25 | × | jespada quits (~jespada@87.74.36.188) (Ping timeout: 250 seconds) |
| 02:24:08 | → | jespada joins (~jespada@87.74.36.188) |
| 02:24:46 | → | zebrag joins (~chris@user/zebrag) |
| 02:27:12 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 02:27:41 | → | lionhairdino joins (~jacoo@121.131.39.82) |
| 02:28:58 | → | califax joins (~califax@user/califx) |
| 02:29:03 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 02:31:17 | × | xff0x quits (~xff0x@2001:1a81:52b5:2e00:a456:ec27:982:79c1) (Ping timeout: 240 seconds) |
| 02:32:42 | → | hololeap joins (~hololeap@user/hololeap) |
| 02:33:19 | → | xff0x joins (~xff0x@2001:1a81:52f3:1d00:feda:8b5a:f28:424c) |
| 02:36:55 | × | hgolden quits (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Quit: Konversation terminated!) |
| 02:39:26 | × | doyougnu quits (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 260 seconds) |
| 02:53:25 | → | tromp joins (~textual@dhcp-077-249-230-040.chello.nl) |
| 02:58:49 | × | chenqisu1 quits (~chenqisu1@183.217.200.249) (Remote host closed the connection) |
| 02:59:07 | → | chenqisu1 joins (~chenqisu1@183.217.200.249) |
| 03:05:37 | × | pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-37-70-24-250-178.dsl.bell.ca) (Ping timeout: 240 seconds) |
| 03:06:31 | → | Null_A joins (~null_a@2601:645:8700:2290:8935:4edf:b32:6553) |
| 03:06:55 | × | georgy quits (~bc8147f2@83.167.180.121) (Quit: CGI:IRC) |
| 03:09:07 | → | chenqisu12 joins (~chenqisu1@183.217.200.249) |
| 03:11:38 | × | chenqisu1 quits (~chenqisu1@183.217.200.249) (Ping timeout: 256 seconds) |
| 03:13:20 | → | pieguy128 joins (~pieguy128@bras-base-mtrlpq5031w-grc-46-67-70-100-72.dsl.bell.ca) |
| 03:17:34 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 03:19:30 | → | merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
| 03:25:12 | × | CHUD quits (~CHUD@host-80-41-89-108.as13285.net) (Remote host closed the connection) |
| 03:32:28 | <EvanR> | standalone deriving Read for a proper GADTs seems to be problematic |
| 03:34:52 | <EvanR> | I guess something is lost when using a standalone deriving Show on the same GADT |
| 03:38:48 | × | Null_A quits (~null_a@2601:645:8700:2290:8935:4edf:b32:6553) (Remote host closed the connection) |
| 03:40:39 | <ski> | existentials ? |
| 03:42:17 | × | terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
| 03:43:31 | → | terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1) |
| 03:43:35 | <EvanR> | it complained about this construction I think |
| 03:43:40 | <ski> | readsPrec1 :: Int -> String -> [(exists a. C a *> f a,String)] -- something like this might be useful |
| 03:43:42 | → | hgolden joins (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) |
| 03:43:44 | <EvanR> | Colorize :: Color -> Sh Bool -> Sh (Maybe Color) |
| 03:44:13 | <ski> | what was the complaint ? |
| 03:44:20 | <EvanR> | Color doesn't match Maybe Color |
| 03:45:01 | <ski> | not the irregularity or the indexing, then ? |
| 03:45:44 | <ski> | (not sure i see why one'd expect `Color' to match `Maybe Color' there. perhaps there's some other data constructor with result type `Sh Color' ?) |
| 03:46:05 | <EvanR> | https://paste.tomsmeding.com/YyJ9zqFV |
| 03:46:24 | <EvanR> | yeah there is |
| 03:46:53 | <EvanR> | so it's really complaining that not all the results have the same index |
| 03:47:37 | × | td_ quits (~td@muedsl-82-207-238-224.citykom.de) (Ping timeout: 240 seconds) |
| 03:47:48 | <ski> | try `-ddump-deriv' to see the code ? |
| 03:48:27 | <ski> | i'm guessing it's generating the code as plain recursion, rather than polymorphic recursion or GADT recursion |
| 03:48:40 | Andrew | looks for a haskell macro system that;s as good as that of the Lisps |
| 03:48:51 | <Andrew> | Doesn't seem possible because no S-expressions |
| 03:48:55 | <ski> | (but there also might be an issue related to the polarity of the index, as i hinted at first) |
| 03:49:17 | <ski> | well .. i guess there's TH |
| 03:49:35 | → | td_ joins (~td@muedsl-82-207-238-178.citykom.de) |
| 03:50:41 | <EvanR> | TH generates haskell code, macros generate lisp code, the concrete syntax doesn't really matter |
| 03:50:48 | <EvanR> | (Template Haskell) |
| 03:51:12 | <ski> | (also, one can use quasi-quotation with TH) |
| 03:53:05 | <EvanR> | well I managed to dump its Read instance and surprisingly, it looks like a Read instance |
| 03:53:11 | <EvanR> | it just doesn't type check |
| 03:53:34 | × | merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 03:53:39 | <EvanR> | I thought it was a long shot to begin with, I'll just write a parser |
| 03:53:44 | <Andrew> | I hate it when I see code like in the first expression of https://termbin.com/ebe7 though, haskell forces better readability |
| 03:54:38 | <EvanR> | code that ends in N ) is a classic though |
| 03:54:42 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
| 03:55:00 | <EvanR> | you're not supposed to be able to read it anyway, your editor knows if it's right |
| 03:55:02 | <ski> | ick ! .. the lonely parens, won't someone think of them !! |
| 03:56:09 | ski | . o O ( "Riastradh's Lisp Style Rules" <https://mumble.net/~campbell/scheme/style.txt> ) |
| 03:56:46 | <ski> | "Absolutely do *not* place closing brackets on their own lines.","Rationale: The parentheses grow lonely if their closing brackets are all kept separated and segregated." |
| 03:57:18 | <EvanR> | Do not heed this section unless you know what you are doing. |
| 03:57:40 | <ski> | (followed by "Exceptions to the Above Rule Concerning Line Separation","Do not heed this section unless you know what you are doing. Its title does *not* make the unacceptable example above acceptable.",..) |
| 04:00:57 | × | foul_owl quits (~kerry@94.140.8.105) (Read error: Connection reset by peer) |
| 04:01:43 | × | Yehoshua quits (~yehoshua@2001:470:69fc:105::1:593f) (K-Lined) |
| 04:01:43 | × | Morrow[m] quits (~morrowmma@2001:470:69fc:105::1d0) (K-Lined) |
| 04:01:43 | × | prrxddq[m] quits (~prrxddqma@2001:470:69fc:105::1:4f72) (K-Lined) |
| 04:01:44 | × | throwaaaa[m] quits (~throwaaaa@2001:470:69fc:105::1:6fe6) (K-Lined) |
| 04:01:44 | × | zwro[m] quits (~zwromatri@2001:470:69fc:105::1d4) (K-Lined) |
| 04:01:44 | × | hsiktas[m] quits (~hsiktasm]@2001:470:69fc:105::30d4) (K-Lined) |
| 04:01:44 | × | maralorn quits (~maralorn@2001:470:69fc:105::251) (K-Lined) |
| 04:01:44 | × | siraben quits (~siraben@user/siraben) (K-Lined) |
| 04:01:44 | × | vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (K-Lined) |
| 04:01:44 | × | james[m]123 quits (~jamesnina@2001:470:69fc:105::1:4203) (K-Lined) |
| 04:01:44 | × | craige[m] quits (~craigemcw@2001:470:69fc:105::35f1) (K-Lined) |
| 04:01:44 | <ski> | it's sometimes said that Lisp programmers, with some experience, don't really see the brackets that much (certainly don't keep manually counting them that often). since there's a standard indentation, people to a large extent read the structure off that |
| 04:01:44 | × | alex[m] quits (~alexchete@2001:470:69fc:105::1:1001) (K-Lined) |
| 04:01:44 | × | aidy quits (~aidy@2001:470:69fc:105::c7b4) (K-Lined) |
| 04:01:44 | × | Topik[m] quits (~topikmatr@2001:470:69fc:105::a082) (K-Lined) |
| 04:01:44 | × | eoiles[m] quits (~eoilesmat@2001:470:69fc:105::1:6164) (K-Lined) |
| 04:01:44 | × | carmysilna quits (~brightly-@2001:470:69fc:105::2190) (K-Lined) |
| 04:01:44 | × | ac quits (~aloiscoch@2001:470:69fc:105::65) (K-Lined) |
| 04:01:44 | × | simmsb quits (~simmsb@2001:470:69fc:105::1:55c3) (K-Lined) |
| 04:01:44 | × | Sixto[m] quits (~provornyc@2001:470:69fc:105::1:74df) (K-Lined) |
| 04:01:44 | × | sekun[m] quits (~hsekmatri@2001:470:69fc:105::d18f) (K-Lined) |
| 04:01:44 | × | wildsebastian quits (~wildsebas@2001:470:69fc:105::1:14b1) (K-Lined) |
| 04:01:44 | × | jmcantrell quits (~jmcantrel@user/jmcantrell) (K-Lined) |
| 04:01:44 | × | cstml[m] quits (~cstmlmatr@2001:470:69fc:105::1:5c07) (K-Lined) |
| 04:01:44 | × | mahene[m] quits (~mahenemat@2001:470:69fc:105::1:6a93) (K-Lined) |
| 04:01:44 | × | Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (K-Lined) |
| 04:01:44 | × | afotgkmnzj7asv3r quits (~afotgkmnz@2001:470:69fc:105::c24b) (K-Lined) |
| 04:01:44 | × | bb010g quits (~bb010g@2001:470:69fc:105::9a5) (K-Lined) |
| 04:01:44 | × | ekai[m] quits (~ekai-zend@2001:470:69fc:105::1:7756) (K-Lined) |
| 04:01:45 | × | benjamin[m]1234 quits (~benjaminm@2001:470:69fc:105::1:3f2f) (K-Lined) |
| 04:01:45 | × | sjanssen quits (~sjanssenm@2001:470:69fc:105::1:61d8) (K-Lined) |
| 04:01:45 | × | Tisoxin quits (~ikosit@user/ikosit) (K-Lined) |
| 04:01:45 | × | thomasjm[m] quits (~thomasjmm@2001:470:69fc:105::c6d9) (K-Lined) |
| 04:01:45 | × | peddie quits (~peddie@2001:470:69fc:105::25d) (K-Lined) |
| 04:01:45 | × | oak- quits (~oakuniver@2001:470:69fc:105::fcd) (K-Lined) |
| 04:01:45 | × | fendor[m] quits (~fendormat@2001:470:69fc:105::fcbd) (K-Lined) |
| 04:01:45 | × | schuelermine[m] quits (~schuelerm@user/schuelermine) (K-Lined) |
| 04:01:45 | × | zfnmxt quits (~zfnmxtzfn@user/zfnmxt) (K-Lined) |
| 04:01:45 | × | denbrahe quits (~denbrahe@2001:470:69fc:105::19c0) (K-Lined) |
| 04:01:45 | × | mmos[m] quits (~mmosmatri@2001:470:69fc:105::1:8340) (K-Lined) |
| 04:01:45 | × | nomeata quits (~nomeata@2001:470:69fc:105::1:5ed4) (K-Lined) |
| 04:01:45 | × | JoseC[m] quits (~jmcardonm@2001:470:69fc:105::1:7539) (K-Lined) |
| 04:01:45 | × | marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (K-Lined) |
| 04:01:45 | × | kadoban quits (~kadoban@user/kadoban) (K-Lined) |
| 04:01:45 | × | ParsaAlizadeh[m] quits (~lizadehma@2001:470:69fc:105::1:65a4) (K-Lined) |
| 04:01:45 | × | Arathorn quits (~arathorn@2001:470:69fc:105::1f) (K-Lined) |
| 04:01:45 | × | Deide quits (~deide@user/deide) (K-Lined) |
| 04:01:45 | × | phuegrvs[m] quits (~phuegrvsm@2001:470:69fc:105::1:65e4) (K-Lined) |
| 04:01:45 | × | cdsmith quits (~cdsmithma@2001:470:69fc:105::284) (K-Lined) |
| 04:01:45 | × | SridharRatnakuma quits (~sridmatri@2001:470:69fc:105::1c2) (K-Lined) |
| 04:01:45 | × | soft quits (~soft@2001:470:69fc:105::c75) (K-Lined) |
| 04:01:45 | × | reza[m] quits (~rezaphone@2001:470:69fc:105::3eda) (K-Lined) |
| 04:01:45 | × | finalti[m] quits (~finaltima@2001:470:69fc:105::d909) (K-Lined) |
| 04:01:45 | × | jneira[m] quits (~jneiramat@2001:470:69fc:105::d729) (K-Lined) |
| 04:01:46 | × | fcortesi quits (~fcortesi@2001:470:69fc:105::f3a9) (K-Lined) |
| 04:01:46 | × | smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (K-Lined) |
| 04:01:46 | × | sm quits (~sm@plaintextaccounting/sm) (K-Lined) |
| 04:01:46 | × | ongy[m] quits (~ongymatri@2001:470:69fc:105::5018) (K-Lined) |
| 04:01:46 | × | jchia[m] quits (~jchiamatr@2001:470:69fc:105::c50b) (K-Lined) |
| 04:01:46 | × | Michal[m] quits (~oomiguelm@2001:470:69fc:105::1:5ab0) (K-Lined) |
| 04:01:46 | × | sofviic[m] quits (~sofviicma@2001:470:69fc:105::1:51fd) (K-Lined) |
| 04:01:46 | × | ormaaj quits (~ormaaj@user/ormaaj) (K-Lined) |
| 04:01:46 | × | yehoshuapw quits (~yehoshuap@2001:470:69fc:105::a5f) (K-Lined) |
| 04:01:46 | × | DemiMarieObenour quits (~alwayscur@2001:470:69fc:105::4886) (K-Lined) |
| 04:01:46 | × | litharn[m] quits (~litharnma@2001:470:69fc:105::1:8336) (K-Lined) |
| 04:01:46 | × | cherryblossom[m] quits (~cherryblo@2001:470:69fc:105::b789) (K-Lined) |
| 04:01:46 | × | Nate[m]1 quits (~m52957mat@2001:470:69fc:105::1:591a) (K-Lined) |
| 04:01:46 | × | jesser[m] quits (~jessermat@2001:470:69fc:105::d5ae) (K-Lined) |
| 04:01:46 | × | thejuan24f[m] quits (~thejuan2m@2001:470:69fc:105::1:6569) (K-Lined) |
| 04:01:46 | × | octeep[m] quits (~octeepoct@2001:470:69fc:105::1:3dbf) (K-Lined) |
| 04:01:46 | × | xbreu quits (~xbreu@2001:470:69fc:105::1:5061) (K-Lined) |
| 04:01:46 | × | kalxd[m] quits (~kalxdmatr@2001:470:69fc:105::1:576e) (K-Lined) |
| 04:01:46 | × | quantum quits (~quantum@user/quantum/x-8556232) (K-Lined) |
| 04:01:46 | × | SawyerBergeron[m quits (~sawyerber@2001:470:69fc:105::3036) (K-Lined) |
| 04:01:46 | × | alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (K-Lined) |
| 04:01:46 | × | ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (K-Lined) |
| 04:01:46 | × | joaquinmg[m] quits (~joaquinmg@2001:470:69fc:105::1:67d2) (K-Lined) |
| 04:01:47 | × | jinsun_ quits (~jinsun@user/jinsun) (K-Lined) |
| 04:01:47 | × | ManofLetters[m] quits (~manoflett@2001:470:69fc:105::3be) (K-Lined) |
| 04:01:47 | × | bitonic quits (~bitonic@2001:470:69fc:105::1812) (K-Lined) |
| 04:01:47 | × | juhp[m] quits (~juhpmatri@2001:470:69fc:105::6e9) (K-Lined) |
| 04:01:47 | × | moats quits (~oats@user/oats) (K-Lined) |
| 04:01:47 | × | amesgen[m] quits (~amesgenm]@2001:470:69fc:105::82b) (K-Lined) |
| 04:01:47 | × | maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (K-Lined) |
| 04:01:47 | × | fgaz quits (~fgaz@2001:470:69fc:105::842) (K-Lined) |
| 04:01:47 | × | justosophy[m] quits (~justosoph@2001:470:69fc:105::572f) (K-Lined) |
| 04:01:47 | × | tripa[m] quits (~tripamatr@2001:470:69fc:105::1:4f7e) (K-Lined) |
| 04:01:47 | × | RosarioPulella[m quits (~rosariopu@2001:470:69fc:105::a57) (K-Lined) |
| 04:01:47 | × | wysteriary[m] quits (~wysteriar@2001:470:69fc:105::a42e) (K-Lined) |
| 04:01:47 | × | pfurla-matrix quits (~pedrofurl@2001:470:69fc:105::1:51d7) (K-Lined) |
| 04:01:47 | × | codygman[m] quits (~codygman@2001:470:69fc:105::b4ba) (K-Lined) |
| 04:01:47 | × | psydroid quits (~psydroid@user/psydroid) (K-Lined) |
| 04:01:47 | × | Christoph[m] quits (~hpotsirhc@2001:470:69fc:105::2ff8) (K-Lined) |
| 04:01:47 | × | Orbstheorem quits (~orbstheor@2001:470:69fc:105::a56) (K-Lined) |
| 04:01:47 | × | unclechu quits (~unclechu@2001:470:69fc:105::354) (K-Lined) |
| 04:01:47 | × | Las[m] quits (~lasmatrix@2001:470:69fc:105::74e) (K-Lined) |
| 04:01:47 | × | unrooted quits (~unrooted@2001:470:69fc:105::a4a) (K-Lined) |
| 04:01:47 | × | Heffalump[m] quits (~hsenagmat@2001:470:69fc:105::e11) (K-Lined) |
| 04:01:51 | <EvanR> | Andrew has inspired me to print out and read back this structure as an S expr |
| 04:02:09 | ski | stares blankly at the above |
| 04:02:34 | <EvanR> | a mix of matrix users and others got K-lined |
| 04:02:55 | ski | nods |
| 04:03:36 | <EvanR> | it's like a hundred silent voices suddenly... remained silent |
| 04:04:09 | <ski> | (tbh, there has been a few attempts to actually get rid of the brackets (mostly, at least), and simply use indentation for the tree structure .. however, there are some quirks, like `((...) ...)' and `(... . ...)' that are harder to fit into such a style) |
| 04:04:49 | <ski> | (but, if anyone's curious, i could point to two or three SRFIs (Scheme Requests For Implementation) that's about such surface syntices) |
| 04:04:49 | <EvanR> | reintroduce brackets when you want to "put indentation on one line" ? |
| 04:04:58 | <ski> | yea, they tend to allow that |
| 04:05:04 | → | lavaman joins (~lavaman@98.38.249.169) |
| 04:07:28 | <ephemient> | https://shaunlebron.github.io/parinfer/ looks pretty cool but like all alternate lisp syntaxes it seems dead |
| 04:09:38 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
| 04:09:53 | <EvanR> | would lisp really be lisp anymore |
| 04:10:17 | <EvanR> | like taking jos wheadon out of The Avengers |
| 04:10:57 | × | soxen quits (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 240 seconds) |
| 04:11:37 | × | waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds) |
| 04:12:54 | <EvanR> | wait now I need to scroll back to the existentials comment |
| 04:14:10 | <EvanR> | a parser for a proper GADT would necessarily return an existential right |
| 04:14:38 | <EvanR> | oh, it can do like juicy pixels and return a sum type |
| 04:17:16 | → | soxen joins (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) |
| 04:18:56 | → | foul_owl joins (~kerry@174-21-143-101.tukw.qwest.net) |
| 04:22:36 | → | Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 04:25:40 | → | lavaman joins (~lavaman@98.38.249.169) |
| 04:26:13 | <ski> | well, here's three (more) : "Indentation-sensitive syntax" <https://srfi.schemers.org/srfi-49/>,"wisp: simpler indentation-sensitive scheme" <https://srfi.schemers.org/srfi-119/>,"Sweet-expressions (t-expressions)" <https://srfi.schemers.org/srfi-110/> |
| 04:26:26 | × | Morrow_ quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 256 seconds) |
| 04:26:38 | → | Morrow_ joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 04:27:19 | × | Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer) |
| 04:27:32 | <ski> | @where liskell |
| 04:27:32 | <lambdabot> | a SExp syntax for Haskell, by therp : <http://clemens.endorphin.org/liskell> (broken),<https://web.archive.org/web/20081105133119/http://clemens.endorphin.org/liskell>,<http://clemens.endorphin.org/ |
| 04:27:32 | <lambdabot> | ILC07-Liskell-draft.pdf>,<https://web.archive.org/web/20120609122549/http://www.liskell.org/> |
| 04:27:55 | → | Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 04:27:57 | <ski> | EvanR : "a parser for a proper GADT would necessarily return an existential right" -- no .. it depends on what you want out of the parser |
| 04:28:32 | <EvanR> | the "original" GADT that was stringified |
| 04:28:33 | → | s4msung joins (bZt8T9wHxn@user/s4msung) |
| 04:28:40 | <ski> | if you're satisfied with treating the index as input (iow you know beforehand whether you're looking for `Sh Color' or `Sh (Maybe Color)'), then you don't need to muck about existentials |
| 04:28:52 | <EvanR> | right |
| 04:28:57 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 04:29:02 | <ski> | but if you want it as output (you discover the type as you parse), then you do need existentials |
| 04:29:16 | × | chenqisu12 quits (~chenqisu1@183.217.200.249) (Ping timeout: 256 seconds) |
| 04:29:21 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 04:29:31 | <ski> | (granted, usually people will probably want the latter, not just the former) |
| 04:29:53 | <EvanR> | the former could work but I'm not sure how much simpler it would be |
| 04:30:09 | <ski> | but then a question is which constraints do you expect to get, on the existential ? |
| 04:30:09 | → | Null_A joins (~null_a@2601:645:8700:2290:6509:ee11:ea28:47c) |
| 04:30:21 | <EvanR> | I don't use any constraints |
| 04:30:43 | × | Morrow_ quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer) |
| 04:30:46 | → | ksqsf joins (~user@2001:da8:d800:611:d162:136f:2ecb:b741) |
| 04:30:58 | → | Morrow_ joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 04:31:03 | <ski> | it'll probably depend on the GADT .. and possibly, in some cases, also on the particular usage of parsing it (so that we don't necessarily have an FD from the GADT to the constraint) |
| 04:31:18 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
| 04:31:48 | <ski> | yea, often it'll not be necessary (since you could often simply recover it, by traversing the GADT, to a greater or lesser degree) |
| 04:32:05 | → | peddie joins (~peddie@2001:470:69fc:105::25d) |
| 04:32:05 | → | amesgen[m] joins (~amesgenm]@2001:470:69fc:105::82b) |
| 04:32:05 | → | thomasjm[m] joins (~thomasjmm@2001:470:69fc:105::c6d9) |
| 04:32:05 | → | JoseC[m] joins (~jmcardonm@2001:470:69fc:105::1:7539) |
| 04:32:05 | → | zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32) |
| 04:32:05 | → | kadoban joins (~kadoban@user/kadoban) |
| 04:32:05 | → | unclechu joins (~unclechu@2001:470:69fc:105::354) |
| 04:32:06 | → | maralorn joins (~maralorn@2001:470:69fc:105::251) |
| 04:32:06 | → | quantum joins (~quantum@user/quantum/x-8556232) |
| 04:32:06 | → | Topik[m] joins (~topikmatr@2001:470:69fc:105::a082) |
| 04:32:06 | → | marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8) |
| 04:32:06 | → | finalti[m] joins (~finaltima@2001:470:69fc:105::d909) |
| 04:32:06 | → | schuelermine[m] joins (~schuelerm@user/schuelermine) |
| 04:32:06 | → | sm joins (~sm@plaintextaccounting/sm) |
| 04:32:06 | → | Deide joins (~deide@user/deide) |
| 04:32:06 | → | hsiktas[m] joins (~hsiktasm]@2001:470:69fc:105::30d4) |
| 04:32:06 | → | psydroid joins (~psydroid@user/psydroid) |
| 04:32:06 | → | Artem[m] joins (~artemtype@2001:470:69fc:105::75b) |
| 04:32:06 | → | Christoph[m] joins (~hpotsirhc@2001:470:69fc:105::2ff8) |
| 04:32:06 | → | alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba) |
| 04:32:06 | → | jneira[m] joins (~jneiramat@2001:470:69fc:105::d729) |
| 04:32:06 | → | smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32) |
| 04:32:06 | → | SawyerBergeron[m joins (~sawyerber@2001:470:69fc:105::3036) |
| 04:32:06 | → | ManofLetters[m] joins (~manoflett@2001:470:69fc:105::3be) |
| 04:32:06 | → | Tisoxin joins (~ikosit@user/ikosit) |
| 04:32:06 | → | fendor[m] joins (~fendormat@2001:470:69fc:105::fcbd) |
| 04:32:06 | → | aidy joins (~aidy@2001:470:69fc:105::c7b4) |
| 04:32:06 | → | DemiMarieObenour joins (~alwayscur@2001:470:69fc:105::4886) |
| 04:32:06 | → | maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee) |
| 04:32:06 | → | jmcantrell joins (~jmcantrel@user/jmcantrell) |
| 04:32:06 | → | vaibhavsagar[m] joins (~vaibhavsa@2001:470:69fc:105::ffe) |
| 04:32:06 | → | carmysilna joins (~brightly-@2001:470:69fc:105::2190) |
| 04:32:06 | → | jinsun_ joins (~jinsun@user/jinsun) |
| 04:32:07 | → | joaquinmg[m] joins (~joaquinmg@2001:470:69fc:105::1:67d2) |
| 04:32:07 | × | d34df00d quits (~d34df00d@2600:1700:8c60:3a10::48) (Excess Flood) |
| 04:32:07 | → | Heffalump[m] joins (~hsenagmat@2001:470:69fc:105::e11) |
| 04:32:08 | → | prrxddq[m] joins (~prrxddqma@2001:470:69fc:105::1:4f72) |
| 04:32:08 | → | fcortesi joins (~fcortesi@2001:470:69fc:105::f3a9) |
| 04:32:08 | → | ac joins (~aloiscoch@2001:470:69fc:105::65) |
| 04:32:08 | → | bitonic joins (~bitonic@2001:470:69fc:105::1812) |
| 04:32:08 | → | xbreu joins (~xbreu@2001:470:69fc:105::1:5061) |
| 04:32:08 | → | SridharRatnakuma joins (~sridmatri@2001:470:69fc:105::1c2) |
| 04:32:08 | → | ormaaj joins (~ormaaj@user/ormaaj) |
| 04:32:08 | → | Orbstheorem joins (~orbstheor@2001:470:69fc:105::a56) |
| 04:32:08 | → | pfurla-matrix joins (~pedrofurl@2001:470:69fc:105::1:51d7) |
| 04:32:08 | → | thejuan24f[m] joins (~thejuan2m@2001:470:69fc:105::1:6569) |
| 04:32:08 | → | ParsaAlizadeh[m] joins (~lizadehma@2001:470:69fc:105::1:65a4) |
| 04:32:08 | → | cstml[m] joins (~cstmlmatr@2001:470:69fc:105::1:5c07) |
| 04:32:09 | → | zwro[m] joins (~zwromatri@2001:470:69fc:105::1d4) |
| 04:32:13 | <ski> | whee |
| 04:32:14 | → | juhp[m] joins (~juhpmatri@2001:470:69fc:105::6e9) |
| 04:32:16 | → | mmos[m] joins (~mmosmatri@2001:470:69fc:105::1:8340) |
| 04:32:17 | → | reza[m] joins (~rezaphone@2001:470:69fc:105::3eda) |
| 04:32:17 | → | soft joins (~soft@2001:470:69fc:105::c75) |
| 04:32:17 | → | sekun[m] joins (~hsekmatri@2001:470:69fc:105::d18f) |
| 04:32:17 | → | jchia[m] joins (~jchiamatr@2001:470:69fc:105::c50b) |
| 04:32:18 | → | wysteriary[m] joins (~wysteriar@2001:470:69fc:105::a42e) |
| 04:32:18 | → | Michal[m] joins (~oomiguelm@2001:470:69fc:105::1:5ab0) |
| 04:32:18 | → | justosophy[m] joins (~justosoph@2001:470:69fc:105::572f) |
| 04:32:18 | → | RosarioPulella[m joins (~rosariopu@2001:470:69fc:105::a57) |
| 04:32:18 | → | craige[m] joins (~craigemcw@2001:470:69fc:105::35f1) |
| 04:32:18 | → | Morrow[m] joins (~morrowmma@2001:470:69fc:105::1d0) |
| 04:32:19 | → | Arathorn joins (~arathorn@2001:470:69fc:105::1f) |
| 04:32:19 | → | ongy[m] joins (~ongymatri@2001:470:69fc:105::5018) |
| 04:32:19 | → | sjanssen joins (~sjanssenm@2001:470:69fc:105::1:61d8) |
| 04:32:19 | → | EkaiZend[m] joins (~ekai-zend@2001:470:69fc:105::1:7756) |
| 04:32:19 | → | oak- joins (~oakuniver@2001:470:69fc:105::fcd) |
| 04:32:19 | → | ericson2314 joins (~ericson23@2001:470:69fc:105::70c) |
| 04:32:19 | → | Yehoshua joins (~yehoshua@2001:470:69fc:105::1:593f) |
| 04:32:19 | → | fgaz joins (~fgaz@2001:470:69fc:105::842) |
| 04:32:19 | → | tripa[m] joins (~tripamatr@2001:470:69fc:105::1:4f7e) |
| 04:32:19 | → | cdsmith joins (~cdsmithma@2001:470:69fc:105::284) |
| 04:32:19 | → | bb010g joins (~bb010g@2001:470:69fc:105::9a5) |
| 04:32:19 | → | Las[m] joins (~lasmatrix@2001:470:69fc:105::74e) |
| 04:32:20 | → | nomeata joins (~nomeata@2001:470:69fc:105::1:5ed4) |
| 04:32:20 | → | denbrahe joins (~denbrahe@2001:470:69fc:105::19c0) |
| 04:32:20 | → | mahene[m] joins (~mahenemat@2001:470:69fc:105::1:6a93) |
| 04:32:20 | → | yehoshuapw joins (~yehoshuap@2001:470:69fc:105::a5f) |
| 04:32:20 | → | cherryblossom[m] joins (~cherryblo@2001:470:69fc:105::b789) |
| 04:32:20 | → | octeep[m] joins (~octeepoct@2001:470:69fc:105::1:3dbf) |
| 04:32:20 | → | jesser[m] joins (~jessermat@2001:470:69fc:105::d5ae) |
| 04:32:20 | → | throwaaaa[m] joins (~throwaaaa@2001:470:69fc:105::1:6fe6) |
| 04:32:20 | → | Sixto[m] joins (~provornyc@2001:470:69fc:105::1:74df) |
| 04:32:20 | → | kalxd[m] joins (~kalxdmatr@2001:470:69fc:105::1:576e) |
| 04:32:20 | → | unrooted joins (~unrooted@2001:470:69fc:105::a4a) |
| 04:32:20 | → | Nate[m] joins (~m52957mat@2001:470:69fc:105::1:591a) |
| 04:32:20 | → | sofviic[m] joins (~sofviicma@2001:470:69fc:105::1:51fd) |
| 04:32:20 | → | siraben joins (~siraben@user/siraben) |
| 04:32:20 | → | moats joins (~oats@user/oats) |
| 04:32:20 | → | eoiles[m] joins (~eoilesmat@2001:470:69fc:105::1:6164) |
| 04:32:20 | → | litharn[m] joins (~litharnma@2001:470:69fc:105::1:8336) |
| 04:32:20 | → | wildsebastian joins (~wildsebas@2001:470:69fc:105::1:14b1) |
| 04:32:21 | → | benjamin[m]123 joins (~benjaminm@2001:470:69fc:105::1:3f2f) |
| 04:32:21 | → | phuegrvs[m] joins (~phuegrvsm@2001:470:69fc:105::1:65e4) |
| 04:32:21 | → | afotgkmnzj7asv3r joins (~afotgkmnz@2001:470:69fc:105::c24b) |
| 04:32:22 | → | codygman[m] joins (~codygman@2001:470:69fc:105::b4ba) |
| 04:32:22 | → | james[m]123 joins (~jamesnina@2001:470:69fc:105::1:4203) |
| 04:32:22 | → | simmsb joins (~simmsb@2001:470:69fc:105::1:55c3) |
| 04:32:23 | → | alex[m]123456 joins (~alexchete@2001:470:69fc:105::1:1001) |
| 04:32:28 | <EvanR> | a functional dependency from the GADT to the constraint? |
| 04:32:39 | <ski> | rather, a lack thereof |
| 04:32:39 | <ephemient> | doesn't Generic give you a way to traverse a GADT? |
| 04:33:39 | × | Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 250 seconds) |
| 04:34:12 | <EvanR> | here is my GADT if you're curious, pretty simple right now https://paste.tomsmeding.com/emd6bFhl |
| 04:36:13 | <EvanR> | not tonight, but I want to see if I can add let bindings, free variables, higher order abstract syntax. All of which I'll need to heavily review |
| 04:39:35 | <EvanR> | in this case the parser can get away with returning data DynamicSh = ShBW (Sh Bool) | ShColor (Sh Color) | ShCutout (Sh (Maybe Color)), I think |
| 04:39:47 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 04:39:47 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 04:39:47 | → | wroathe joins (~wroathe@user/wroathe) |
| 04:40:35 | × | ksqsf quits (~user@2001:da8:d800:611:d162:136f:2ecb:b741) (Ping timeout: 250 seconds) |
| 04:43:12 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Remote host closed the connection) |
| 04:43:25 | × | segfaultfizzbuzz quits (~rustisafu@2602:306:cd3c:9350:59e3:db49:aa0a:46e5) (Ping timeout: 250 seconds) |
| 04:43:44 | → | burnsidesLlama joins (~burnsides@client-8-89.eduroam.oxuni.org.uk) |
| 04:44:30 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 04:47:12 | × | maralorn quits (~maralorn@2001:470:69fc:105::251) (Quit: Client limit exceeded: 20000) |
| 04:47:13 | × | vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Client limit exceeded: 20000) |
| 04:47:20 | × | carmysilna quits (~brightly-@2001:470:69fc:105::2190) (Quit: Client limit exceeded: 20000) |
| 04:47:29 | × | zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Quit: Client limit exceeded: 20000) |
| 04:47:32 | × | quantum quits (~quantum@user/quantum/x-8556232) (Quit: Client limit exceeded: 20000) |
| 04:47:47 | × | Deide quits (~deide@user/deide) (Quit: Client limit exceeded: 20000) |
| 04:47:51 | × | bitonic quits (~bitonic@2001:470:69fc:105::1812) (Quit: Client limit exceeded: 20000) |
| 04:47:51 | × | burnsidesLlama quits (~burnsides@client-8-89.eduroam.oxuni.org.uk) (Ping timeout: 245 seconds) |
| 04:48:03 | × | maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Quit: Client limit exceeded: 20000) |
| 04:48:23 | × | Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Quit: Client limit exceeded: 20000) |
| 04:48:24 | × | jmcantrell quits (~jmcantrel@user/jmcantrell) (Quit: Client limit exceeded: 20000) |
| 04:48:28 | × | jinsun_ quits (~jinsun@user/jinsun) (Quit: Client limit exceeded: 20000) |
| 04:48:34 | × | jneira[m] quits (~jneiramat@2001:470:69fc:105::d729) (Quit: Client limit exceeded: 20000) |
| 04:48:44 | × | xbreu quits (~xbreu@2001:470:69fc:105::1:5061) (Quit: Client limit exceeded: 20000) |
| 04:48:47 | × | smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Quit: Client limit exceeded: 20000) |
| 04:48:51 | × | JoseC[m] quits (~jmcardonm@2001:470:69fc:105::1:7539) (Quit: Client limit exceeded: 20000) |
| 04:49:12 | × | Christoph[m] quits (~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: Client limit exceeded: 20000) |
| 04:49:32 | × | DemiMarieObenour quits (~alwayscur@2001:470:69fc:105::4886) (Quit: Client limit exceeded: 20000) |
| 04:49:43 | × | ac quits (~aloiscoch@2001:470:69fc:105::65) (Quit: Client limit exceeded: 20000) |
| 04:49:47 | × | ManofLetters[m] quits (~manoflett@2001:470:69fc:105::3be) (Quit: Client limit exceeded: 20000) |
| 04:49:47 | × | thejuan24f[m] quits (~thejuan2m@2001:470:69fc:105::1:6569) (Quit: Client limit exceeded: 20000) |
| 04:49:47 | × | ParsaAlizadeh[m] quits (~lizadehma@2001:470:69fc:105::1:65a4) (Quit: Client limit exceeded: 20000) |
| 04:49:48 | × | amesgen[m] quits (~amesgenm]@2001:470:69fc:105::82b) (Quit: Client limit exceeded: 20000) |
| 04:49:48 | × | schuelermine[m] quits (~schuelerm@user/schuelermine) (Quit: Client limit exceeded: 20000) |
| 04:49:54 | → | ksqsf joins (~user@2001:da8:d800:611:51cf:77ee:66a1:4f90) |
| 04:50:00 | × | SawyerBergeron[m quits (~sawyerber@2001:470:69fc:105::3036) (Quit: Client limit exceeded: 20000) |
| 04:50:09 | × | pfurla-matrix quits (~pedrofurl@2001:470:69fc:105::1:51d7) (Quit: Client limit exceeded: 20000) |
| 04:50:13 | <ski> | ok, no existentials there |
| 04:50:14 | → | doyougnu joins (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) |
| 04:50:16 | × | fendor[m] quits (~fendormat@2001:470:69fc:105::fcbd) (Quit: Client limit exceeded: 20000) |
| 04:50:19 | × | fcortesi quits (~fcortesi@2001:470:69fc:105::f3a9) (Quit: Client limit exceeded: 20000) |
| 04:50:21 | × | marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Quit: Client limit exceeded: 20000) |
| 04:50:28 | → | amesgen[m] joins (~amesgenm]@2001:470:69fc:105::82b) |
| 04:50:40 | → | JoseC[m] joins (~jmcardonm@2001:470:69fc:105::1:7539) |
| 04:50:54 | → | zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32) |
| 04:51:03 | × | Orbstheorem quits (~orbstheor@2001:470:69fc:105::a56) (Quit: Client limit exceeded: 20000) |
| 04:51:07 | <ski> | (`let' would presumably bring them, though .. and then you'd possibly need to consider if you'd want to annotate the existentials with constraints) |
| 04:51:14 | → | maralorn joins (~maralorn@2001:470:69fc:105::251) |
| 04:51:14 | → | quantum joins (~quantum@user/quantum/x-8556232) |
| 04:51:28 | → | marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8) |
| 04:51:30 | → | schuelermine[m] joins (~schuelerm@user/schuelermine) |
| 04:51:45 | → | Deide joins (~deide@user/deide) |
| 04:51:46 | → | Artem[m] joins (~artemtype@2001:470:69fc:105::75b) |
| 04:51:46 | → | Christoph[m] joins (~hpotsirhc@2001:470:69fc:105::2ff8) |
| 04:51:59 | → | jneira[m] joins (~jneiramat@2001:470:69fc:105::d729) |
| 04:52:01 | → | smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32) |
| 04:52:05 | × | zwro[m] quits (~zwromatri@2001:470:69fc:105::1d4) (Quit: Client limit exceeded: 20000) |
| 04:52:13 | <ski> | EvanR : yea .. but how do you get to `DynamicSh' ? do you simply try enumerating the alternatives ? |
| 04:52:18 | → | SawyerBergeron[m joins (~sawyerber@2001:470:69fc:105::3036) |
| 04:52:30 | → | ManofLetters[m] joins (~manoflett@2001:470:69fc:105::3be) |
| 04:52:34 | → | carmysilna joins (~brightly-@2001:470:69fc:105::2190) |
| 04:52:41 | × | SridharRatnakuma quits (~sridmatri@2001:470:69fc:105::1c2) (Quit: Client limit exceeded: 20000) |
| 04:52:41 | × | alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (Quit: Client limit exceeded: 20000) |
| 04:52:47 | × | aidy quits (~aidy@2001:470:69fc:105::c7b4) (Quit: Client limit exceeded: 20000) |
| 04:52:48 | → | fendor[m] joins (~fendormat@2001:470:69fc:105::fcbd) |
| 04:52:49 | × | Heffalump[m] quits (~hsenagmat@2001:470:69fc:105::e11) (Quit: Client limit exceeded: 20000) |
| 04:52:53 | × | cstml[m] quits (~cstmlmatr@2001:470:69fc:105::1:5c07) (Quit: Client limit exceeded: 20000) |
| 04:52:53 | × | thomasjm[m] quits (~thomasjmm@2001:470:69fc:105::c6d9) (Quit: Client limit exceeded: 20000) |
| 04:52:56 | × | prrxddq[m] quits (~prrxddqma@2001:470:69fc:105::1:4f72) (Quit: Client limit exceeded: 20000) |
| 04:52:57 | × | joaquinmg[m] quits (~joaquinmg@2001:470:69fc:105::1:67d2) (Quit: Client limit exceeded: 20000) |
| 04:53:00 | → | DemiMarieObenour joins (~alwayscur@2001:470:69fc:105::4886) |
| 04:53:02 | → | aidy joins (~aidy@2001:470:69fc:105::c7b4) |
| 04:53:20 | → | vaibhavsagar[m] joins (~vaibhavsa@2001:470:69fc:105::ffe) |
| 04:53:20 | → | jmcantrell joins (~jmcantrel@user/jmcantrell) |
| 04:53:20 | → | maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee) |
| 04:53:20 | → | jinsun_ joins (~jinsun@user/jinsun) |
| 04:53:23 | × | finalti[m] quits (~finaltima@2001:470:69fc:105::d909) (Quit: Client limit exceeded: 20000) |
| 04:53:32 | → | joaquinmg[m] joins (~joaquinmg@2001:470:69fc:105::1:67d2) |
| 04:53:50 | → | Heffalump[m] joins (~hsenagmat@2001:470:69fc:105::e11) |
| 04:54:04 | → | prrxddq[m] joins (~prrxddqma@2001:470:69fc:105::1:4f72) |
| 04:54:18 | → | fcortesi joins (~fcortesi@2001:470:69fc:105::f3a9) |
| 04:54:30 | → | xbreu joins (~xbreu@2001:470:69fc:105::1:5061) |
| 04:54:30 | → | ac joins (~aloiscoch@2001:470:69fc:105::65) |
| 04:54:31 | → | bitonic joins (~bitonic@2001:470:69fc:105::1812) |
| 04:54:43 | → | SridharRatnakuma joins (~sridmatri@2001:470:69fc:105::1c2) |
| 04:54:57 | → | Orbstheorem joins (~orbstheor@2001:470:69fc:105::a56) |
| 04:55:53 | → | pfurla-matrix joins (~pedrofurl@2001:470:69fc:105::1:51d7) |
| 04:55:57 | × | argento quits (~argent0@168-227-97-23.ptr.westnet.com.ar) (Quit: leaving) |
| 04:56:11 | × | soxen quits (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 250 seconds) |
| 04:56:21 | → | thejuan24f[m] joins (~thejuan2m@2001:470:69fc:105::1:6569) |
| 04:56:35 | → | ParsaAlizadeh[m] joins (~lizadehma@2001:470:69fc:105::1:65a4) |
| 04:56:38 | × | ksqsf quits (~user@2001:da8:d800:611:51cf:77ee:66a1:4f90) (Ping timeout: 260 seconds) |
| 04:56:50 | → | cstml[m] joins (~cstmlmatr@2001:470:69fc:105::1:5c07) |
| 04:57:02 | → | zwro[m] joins (~zwromatri@2001:470:69fc:105::1d4) |
| 04:58:22 | × | ormaaj quits (~ormaaj@user/ormaaj) (Quit: Client limit exceeded: 20000) |
| 04:58:24 | <EvanR> | ski, eyeballing each constructor... it seems like sometimes it's straight forward how to parse the payload or die trying, it's expecting something with a particular type, in two cases it's totally polymorphic so whatever comes back from the recursive parser could be used... |
| 04:58:32 | × | psydroid quits (~psydroid@user/psydroid) (Quit: Client limit exceeded: 20000) |
| 04:58:33 | × | hsiktas[m] quits (~hsiktasm]@2001:470:69fc:105::30d4) (Quit: Client limit exceeded: 20000) |
| 04:58:37 | → | thomasjm[m] joins (~thomasjmm@2001:470:69fc:105::c6d9) |
| 04:58:37 | → | finalti[m] joins (~finaltima@2001:470:69fc:105::d909) |
| 04:58:52 | → | hsiktas[m] joins (~hsiktasm]@2001:470:69fc:105::30d4) |
| 04:58:53 | → | psydroid joins (~psydroid@user/psydroid) |
| 04:58:53 | → | alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba) |
| 04:58:53 | → | ormaaj joins (~ormaaj@user/ormaaj) |
| 04:59:41 | <ski> | EvanR : yea, i guess it's more `Layer',`Shift' and `Xform' which are problematic, in that sense |
| 04:59:50 | × | kadoban quits (~kadoban@user/kadoban) (Quit: Client limit exceeded: 20000) |
| 05:01:48 | → | deadmarshal joins (~deadmarsh@95.38.113.75) |
| 05:02:22 | → | ksqsf joins (~user@114.214.178.136) |
| 05:02:40 | <EvanR> | the three possible results each have a monotype, so that would let Layer construct if the two Dyn results matched |
| 05:02:41 | → | kadoban joins (~kadoban@user/kadoban) |
| 05:03:03 | <ksqsf> | Is it possible to set multiple implicit parameters by simply calling a function, instead of 'let' them one by one? |
| 05:03:22 | <ksqsf> | like the implicitparams version of defaultXXX |
| 05:04:42 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 05:07:51 | × | shriekingnoise quits (~shrieking@201.231.16.156) (Quit: Quit) |
| 05:10:01 | × | kimjetwav quits (~user@2607:fea8:2363:8f00:6d2:eb11:feaf:8a98) (Remote host closed the connection) |
| 05:10:26 | × | Null_A quits (~null_a@2601:645:8700:2290:6509:ee11:ea28:47c) (Remote host closed the connection) |
| 05:10:37 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 05:12:22 | ksqsf | feels bad for using CPP to do this |
| 05:13:21 | <EvanR> | my running fold over "reasons not to use implicit params" continues xD |
| 05:14:23 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 05:14:31 | <ski> | EvanR : oh, you're thinking about involving `Dyn' ? |
| 05:14:49 | <EvanR> | DynamicSh |
| 05:14:53 | <ski> | oh |
| 05:15:03 | <ski> | hm |
| 05:15:06 | <EvanR> | it seems to give enough info for subparsers to work |
| 05:15:12 | → | Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 05:15:13 | <ski> | that being `exists a. Sh a', or ? |
| 05:15:28 | <EvanR> | no you missed it |
| 05:15:31 | <EvanR> | data DynamicSh = ShBW (Sh Bool) | ShColor (Sh Color) | ShCutout (Sh (Maybe Color)) |
| 05:15:57 | <ski> | ksqsf : i suppose you could `withContext :: ((?x :: T,...) => a) -> a' |
| 05:16:29 | × | Morrow_ quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer) |
| 05:16:33 | <ski> | oh, right, that one |
| 05:16:45 | <ski> | (sorry, i forgot that was named `DynamicSh') |
| 05:17:10 | → | Morrow_ joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 05:17:16 | <ski> | EvanR : hm, so you're saying you're repackaging `DynamicSh' ? |
| 05:17:28 | × | Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer) |
| 05:18:09 | <EvanR> | i introduced this type when wondering what a parser would return, coincidentally (?) it seem like it would let the parser work recursively and satisfy the polymorphism |
| 05:18:19 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 05:19:15 | <EvanR> | data SomeSh = forall a . SomeSh (Sh a) seems kind of useless |
| 05:19:18 | <EvanR> | in this case |
| 05:19:38 | → | zaquest joins (~notzaques@5.130.79.72) |
| 05:20:07 | <ksqsf> | ski: ah thanks this indeed works |
| 05:20:11 | <EvanR> | or not? you can still unwrap and pattern match... |
| 05:20:13 | <ksqsf> | (though the callback style is less ideal) |
| 05:21:11 | × | Morrow_ quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 245 seconds) |
| 05:23:45 | × | tommd quits (~tommd@67-42-147-226.ptld.qwest.net) (Ping timeout: 268 seconds) |
| 05:25:04 | → | Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 05:37:57 | <ski> | EvanR : "seems kind of useless" -- yea, especially considering `Union',`Inter',`Minus',`Colorize',`Layer',`BGcolor' |
| 05:38:56 | <EvanR> | how do you mean |
| 05:39:49 | <ski> | those have recursive calls ("argument types") where the argument isn't just a tyvar |
| 05:40:42 | × | jao quits (~jao@68.235.43.172) (Remote host closed the connection) |
| 05:40:47 | → | mbuf joins (~Shakthi@223.190.212.194) |
| 05:41:50 | <ski> | so, if you're given an `exists a. Sh a' for a parsed sub-part, now you must somehow determine if this `a' matches `Bool' / `Maybe Color' / `Maybe b' .. and that (in general) may require unbounded search (because of `Shift' and `Xform' just forwarding the parameter to the recursive calls) |
| 05:42:43 | <ski> | (when i say "recursive calls", i'm wearing my logic programmer hat, viewing the `data' type, with constructors, as clauses for a predicate) |
| 05:43:07 | <ski> | ksqsf : np :) |
| 05:44:14 | <EvanR> | it's almost midnight but I'd like to know more how a GADT with constructors are clauses for a predicate if you're wearing a logic programmer hat |
| 05:46:04 | <EvanR> | also, I'm sure I see the real possibility of unbounded search, if it came down to that |
| 05:46:30 | <EvanR> | er, not sure |
| 05:48:14 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 05:48:27 | → | Everything joins (~Everythin@37.115.210.35) |
| 05:49:13 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 05:49:34 | <EvanR> | an infinite tree? |
| 05:50:10 | → | merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
| 05:53:03 | → | marquis_andras joins (~marquis_a@124.170.163.166) |
| 05:57:47 | <ski> | well, in Twelf syntax (which is a logical framework, and sortof a dependently-typed logic programming language), it'd be |
| 05:58:03 | <ski> | sh : type <- type. |
| 05:58:11 | → | Jing joins (~hedgehog@240e:390:7c53:a7e1:b966:c67:7e32:3db8) |
| 05:58:14 | <ski> | ball : sh bool. |
| 05:58:25 | <ski> | axigon : sh bool <- float4. |
| 05:58:38 | <ski> | trigon : sh bool <- float2 <- float2 <- float2. |
| 05:58:47 | <ski> | curve2i : sh bool <- float2 <- float2 <- float2. |
| 05:58:55 | <ski> | union : sh bool <- sh bool <- sh bool. |
| 05:59:03 | <ski> | inter : sh bool <- sh bool <- sh bool. |
| 05:59:11 | <ski> | minus : sh bool <- sh bool <- sh bool. |
| 05:59:18 | <ski> | colorize : sh (maybe color) <- sh bool <- color. |
| 05:59:26 | <ski> | layer : sh (maybe A ) <- sh (maybe A) <- sh (maybe A). |
| 05:59:34 | <ski> | shift : shift : sh A <- sh A <- float2. |
| 05:59:40 | <ski> | xform : sh A <- sh A <- float4. |
| 05:59:44 | <ski> | bgcolor : sh color <- sh (maybe color) <- color. |
| 06:00:06 | <EvanR> | ok I think that all made it through |
| 06:00:35 | → | jao joins (~jao@68.235.43.172) |
| 06:00:55 | <ski> | in Prolog syntax (if we ignore the names of the clauses (which are the data constructor names). that's not really a thing in Prolog), it'd be tupled rather than curried, so e.g. `colorize' would be |
| 06:01:18 | <ski> | sh(maybe(A )) :- color,sh(bool). |
| 06:01:48 | <ski> | (oh, and there's no static types, so the signature `sh : type <- type.' corresponds to nothing) |
| 06:02:15 | <ski> | anyway, this is a recursive predicate, sh/1, of one parameter |
| 06:02:39 | <EvanR> | sh(maybe(A space space space space )) ? really? |
| 06:02:57 | <ski> | (to align with `sh(maybe(color))' ..) |
| 06:03:18 | <EvanR> | oh, don't worry, nothing's aligning |
| 06:03:24 | ski | smiles |
| 06:03:25 | → | prasad joins (~user@c-73-170-49-136.hsd1.ca.comcast.net) |
| 06:03:41 | × | deadmarshal quits (~deadmarsh@95.38.113.75) (Ping timeout: 245 seconds) |
| 06:03:43 | <ski> | (it's only morning here, now) |
| 06:03:52 | <EvanR> | what is :- |
| 06:04:02 | <ski> | converse implication. same as `<-' |
| 06:04:57 | <ski> | anyway, in this case i guess there isn't *too* much utility in pondering how sh/1 might execute as a predicate (proof-search) .. |
| 06:05:20 | <ski> | but sometimes, considerations from such a view can be helpful, when considering such a data type |
| 06:05:44 | <ski> | e.g. sometimes it can be useful to introduce an accumulator parameter |
| 06:06:06 | <ski> | or to remove unwanted non-determinism, due to associativity e.g. |
| 06:07:30 | <EvanR> | proof-search of sh/1 means find any possible value? |
| 06:07:44 | → | rusrushal13 joins (~rusrushal@2401:4900:43a9:6cb9:3b78:294d:342e:939a) |
| 06:07:54 | <ski> | e.g. you might want something like `data Path :: Node -> Node -> * where Empty :: Path n n; Append :: Path m n -> Path n o -> Path m o; Single :: Edge m n -> Path m n', for reflexive-transitive closure of `Edge' |
| 06:07:56 | <EvanR> | or all possible values |
| 06:09:07 | → | fef joins (~thedawn@user/thedawn) |
| 06:09:22 | <ski> | but you can associate `Append' in multiple ways. so it may be better to use `Cons :: Edge m n -> Path n o -> m o' (or maybe `Snoc :: Path m n -> Edge n o -> Path m o') (right- (/ left-) associating all the `Append's (and removing `Empty' to the left), and then fusing with `Single') |
| 06:09:51 | <ski> | and this corresponds to a common similar refactoring for a predicate in logic programming |
| 06:11:31 | <ski> | "proof-search of sh/1 means find any possible value?","or all possible values" -- well, first off, what do you mean by "value" ? the proofs in LP corresponds to the values of the `data' type in Haskell, while the values (the parameters of the predicates) in LP corresponds to the `data' type parameters (whether they be of kind `*' or something else, like `Node') |
| 06:12:56 | <ski> | proof-search means that we search for proofs (values of the `data' type). but, it also means that we may know some of the parameters beforehand, while we're searching for possible values of the others (we could also partially know a parameter, know some constructors in it, while searching for what to fill the holes in them with. so a parameter can be both input and output) |
| 06:14:19 | <ski> | in your parsing example, if you parse for `Sh (Maybe Color)', then that's calling sh/1 in the sh(+) mode (parameter is input). but if you parse for `Sh a', for an `a' that you hope to discover (if parsing succeeds), then that's output, or mode sh(-) |
| 06:14:21 | <EvanR> | so parameters are the payload |
| 06:14:40 | <ski> | and one could imagine intermediates, like parsing for `Sh (Maybe a)', searching for `a' .. |
| 06:14:49 | <ski> | yea, in LP, they are |
| 06:15:13 | <ski> | but for `data' types, we also care more about the proofs (the values of the `data' type) |
| 06:15:21 | <ski> | but it can still be a useful view |
| 06:15:35 | <ski> | (this is an analogy with LP, in addition to the type class analogy with LP) |
| 06:16:25 | <EvanR> | so a search could produce the parameters, but not the proof |
| 06:16:55 | <ski> | well, if you return a value of type `Sh a', for some (discovered) `a', then that value is "the proof" |
| 06:17:08 | × | Jing quits (~hedgehog@240e:390:7c53:a7e1:b966:c67:7e32:3db8) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 06:17:21 | <ski> | but in (plain) LP, the proof would never get materialized. it'd just appear as an execution trace |
| 06:17:36 | <ski> | (in Twelf, you can reify it, though, so that you can access it like a value) |
| 06:18:05 | <EvanR> | what do you even get if you don't get a value of the type |
| 06:18:07 | <EvanR> | if anything |
| 06:18:27 | <EvanR> | just a listing of parameters |
| 06:18:40 | <EvanR> | the one unknown parameter |
| 06:18:55 | <ski> | (and if it's just an execution trace, then presumably we don't care about different execution traces leading to the same solutions (instantiations for output parameters) .. and so we can use refactorings which don't preserve proofs, but which preserve solutions. while, if we also care about proofs, we need to be more careful with such) |
| 06:19:05 | <ski> | yes |
| 06:19:20 | <EvanR> | interesting |
| 06:19:43 | <ski> | e.g. in Prolog, if you perform the query `?- append([0,1],[2,3,4],L).', you'll get as answer `L = [0,1,2,3,4]' |
| 06:20:43 | <EvanR> | so append if a function |
| 06:20:49 | <EvanR> | so append is a function |
| 06:20:50 | <ski> | while, if you ask `?- append(F,B,[0,1,2]).', you'll get three alternative solutions, `F = [],B = [0,1,2] ; F = [0],B = [1,2] ; F = [0,1],B = [2] ; F = [0,1,2],B = []' (comma is conjunction, semicolon is disjunction) |
| 06:21:10 | <ski> | it's like solving an equation, you get a disjunction of solutions |
| 06:21:50 | <ski> | append/3 is a predicate, a relation. `append(F,B,L)' expresses that the concatentation of the lists `F' and `B' is the list `L'. in Haskell terms, `f ++ b = l' |
| 06:22:06 | <EvanR> | i see |
| 06:22:21 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 06:22:25 | <EvanR> | so that is what the data constructors are |
| 06:22:32 | <ski> | Prolog will enumerate all solutions, via backtracking (depth-first search), eventually (unless you commit to a given overall solution) |
| 06:22:36 | → | cynomys joins (~cynomys@user/cynomys) |
| 06:22:41 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 06:22:53 | × | tabemann quits (~travisb@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Remote host closed the connection) |
| 06:23:13 | <ski> | Prolog doesn't have functions, except in the trivial sense of data constructors |
| 06:23:32 | <ski> | (they package data, but they don't compute) |
| 06:23:44 | <ski> | only predicates express general computation |
| 06:23:53 | → | tabemann joins (~travisb@172-13-49-137.lightspeed.milwwi.sbcglobal.net) |
| 06:24:18 | × | merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 06:25:11 | <ski> | (in Mercury, which is logic/functional (with a static type system borrowing quite a bit from Haskell, including type classes, existentials, ..), there are real computational functions .. but, just like predicates, we can also run them "backwards" and "sideways". this is like we'd automatically get views (when possible) for undoing functions) |
| 06:25:22 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 06:25:22 | × | HotblackDesiato quits (~HotblackD@gateway/tor-sasl/hotblackdesiato) (Remote host closed the connection) |
| 06:25:37 | → | HotblackDesiato joins (~HotblackD@gateway/tor-sasl/hotblackdesiato) |
| 06:25:45 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 06:25:49 | <ski> | (s/three/four/) |
| 06:26:06 | <EvanR> | run a function sideways, what |
| 06:26:15 | <ski> | well, imagine you could write |
| 06:26:17 | <EvanR> | this I gotta see |
| 06:26:31 | <ski> | foo ([0,1,0] ++ xs) = ..xs.. |
| 06:26:55 | <ski> | here, we're calling `(++)' with left operand as input, right operand as output, and result as input |
| 06:27:02 | <ski> | or say |
| 06:27:13 | <ski> | bar xs (xs ++ ys) = ..xs..ys.. |
| 06:27:35 | <ski> | (same thing, except that this time, the left operand isn't a literal constant, but involves a (previously bound) variable) |
| 06:28:21 | <ski> | (Erlang has a special-case for `++', for this. but in Mercury, this is a general mechanism that you can have for any functions where it makes sense) |
| 06:28:56 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 06:29:32 | × | Everything quits (~Everythin@37.115.210.35) (Quit: leaving) |
| 06:30:42 | <EvanR> | foo is pattern matching using a function? |
| 06:30:43 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 06:30:51 | <ski> | in Haskell, you could make `pattern Prepend010 :: (Num a,Eq a) => () => [a] -> [a]; pattern Prepend010 xs = 0 : 1 : 0 : xs', and then you could say `foo (Prepend010 xs) = ..x..' |
| 06:30:54 | <ski> | yes |
| 06:31:16 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 06:31:21 | <ski> | but, afaik, `ViewPattern's doesn't allow you to parameterize with expressions, so you couldn't do `bar' like this |
| 06:31:45 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 06:33:00 | <EvanR> | and bar xs (xs ++ ys) = is using the same variable twice |
| 06:33:31 | <ski> | yes. the first `xs' is a pattern (so, output. we're getting the value of `xs' from matching this pattern) |
| 06:33:56 | × | jespada quits (~jespada@87.74.36.188) (Ping timeout: 250 seconds) |
| 06:34:01 | <ski> | the second `xs' is an expression (input. we're using the previously bound value of `xs', passing it as input to `(++)', in its left operand) |
| 06:34:29 | <EvanR> | then first occurrence of a pattern variable is "an output" |
| 06:34:40 | <EvanR> | after that it is referring to that output |
| 06:35:16 | <ski> | and the `ys' (pattern) is output from the pattern-match on the pattern `xs ++ ys' (whose result will be an *input*, matched against this pattern, and which comes from the caller of `bar' (passing second parameter as input)) |
| 06:35:22 | <ski> | yes |
| 06:36:04 | <EvanR> | what does xs ++ ys even match |
| 06:36:05 | <ski> | Mercury is quite interesting :) |
| 06:36:16 | <ski> | (and logic programming in general is fun :) |
| 06:36:26 | → | jespada joins (~jespada@87.74.36.188) |
| 06:36:35 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 06:36:38 | <ski> | it matches the input list against the concatenation of the two lists `xs' and `ys' |
| 06:36:48 | <EvanR> | ah |
| 06:37:00 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 06:37:10 | <EvanR> | is there a "SICP" of logic programming somewhere |
| 06:37:16 | <ski> | if both `xs' and `ys' were to be output (like in my `?- append(F,B,[0,1,2]).' example above), then the match would be non-deterministic, there'd (in general) be multiple ways of matching |
| 06:37:24 | <EvanR> | I feel like jumping into mercury would be skipping a few things |
| 06:37:50 | <ski> | but, since, in this case, `xs' is already bound/instantiated, it is input, not output, and therefore the match is semi-deterministic (at most one solution, either match success, or failure to match) |
| 06:39:05 | <ski> | yea .. it would probably be easier (and in some ways more instructive, especially all the pain you can encounter, and which Mercury protects you from, but if you jump into Mercury, skipping Prolog, it's harder to understand what it's fussing about) to start with basic Prolog |
| 06:39:17 | → | Null_A joins (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) |
| 06:39:55 | <ski> | "Re: Mercury in academic teaching?" <https://www.mercurylang.org/list-archives/users/2006-October/004000.html> |
| 06:40:17 | <ski> | <https://www.mercurylang.org/list-archives/users/2006-October/004011.html>, both by Richard A. O'Keefe |
| 06:40:31 | <ski> | are two intersting posts that mention this |
| 06:44:20 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 06:45:26 | <ski> | (some of the points he's making are really important) |
| 06:46:04 | <EvanR> | the discussion about compiler error messages is interesting |
| 06:46:24 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 06:46:33 | <EvanR> | it's really an alien language |
| 06:47:22 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 06:48:55 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 06:49:08 | <ski> | yea, but so's Haskell :) |
| 06:49:18 | <ski> | (oh, and i'm still sad about Aditi) |
| 06:50:24 | <EvanR> | yeah I mean in any compiler I've ever used |
| 06:50:55 | <EvanR> | Aditi? |
| 06:51:59 | <ski> | Deductive database (using predicate logic (Datalog- / Prolog- like) syntax, rather than something baroque like SQL ..) that integrated nicely with Mercury) |
| 06:52:40 | <ski> | (and Mercury mostly uses the (Edinburgh standard) Prolog syntax) |
| 06:53:54 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 06:54:02 | <ski> | (oh, and there's ##prolog and #mercury channels, here, in case you wonder) |
| 06:54:24 | <EvanR> | right |
| 06:54:49 | → | deadmarshal joins (~deadmarsh@95.38.112.42) |
| 06:56:54 | <ski> | "is there a \"SICP\" of logic programming somewhere" -- well, hmm .. the closest, imho, would probably be |
| 06:56:57 | <ski> | @where CTM |
| 06:56:57 | <lambdabot> | "Concepts, Techniques, and Models of Computer Programming", by Peter Van Roy,Seif Haridi, at <http://www.info.ucl.ac.be/~pvr/book.html> |
| 06:57:56 | <ski> | it is multiparadigm, but it showcases stuff using Oz, which at its base is a logic programming language, with functional, stateful, object-oriented, and concurrent layers |
| 06:59:37 | <ski> | one of the particularly interesting things about it is its declarative (deterministic) concurrency, where you can use "logic variables" (a la Prolog, which effect bi-directional communication) (called "dataflow variables" in the context of concurrency. one can also artificially make them onesided, to prevent information from flowing in one direction) to communicate inbetween threads |
| 07:01:08 | <ski> | there are also other nice books, like "The Art of Prolog" by Leon Sterling,Ehud Shapiro,"Prolog: Programming for Artificial Intelligence" by Ivan Bratko,"The Craft of Prolog" (this one is more practical, with lots of useful advice) by Richard A. O'Keefe |
| 07:01:24 | <sm2n> | I liked art of prolog |
| 07:02:13 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 07:02:24 | × | slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving) |
| 07:02:32 | → | deadmarshal_ joins (~deadmarsh@95.38.113.93) |
| 07:03:37 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 07:03:39 | <ski> | fwiw, "Programming in Prolog" by Clocksin,Mellish is the classic starter book on Prolog |
| 07:04:02 | × | deadmarshal quits (~deadmarsh@95.38.112.42) (Ping timeout: 260 seconds) |
| 07:04:31 | <ski> | there's also a nice tutorial, "Learn Prolog Now!", online, by Patrick Blackburn,et al. |
| 07:04:37 | → | Gurkenglas joins (~Gurkengla@dslb-090-186-104-244.090.186.pools.vodafone-ip.de) |
| 07:04:53 | <ski> | and, iirc, Amzi! Prolog has a tutorial about how to make a text adventure in Prolog |
| 07:04:55 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 07:06:35 | <ski> | (oh, Oz also has support for Constraint Programming (CP), specifically Constraint Logic Programming (CLP). many Prolog systems also do, to varying degrees (simplex solvers, boolean solvers, finite domains, ..). ECLiPSe is one such system that seems particularly specialized/focused on this) |
| 07:07:16 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 07:07:16 | × | Null_A quits (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Read error: Connection reset by peer) |
| 07:10:32 | × | zmt01 quits (~zmt00@user/zmt00) (Ping timeout: 240 seconds) |
| 07:12:22 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 07:15:30 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 07:16:27 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 07:17:05 | → | img joins (~img@user/img) |
| 07:18:24 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 07:19:01 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 07:19:38 | → | yauhsien joins (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) |
| 07:21:17 | × | Midjak quits (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep) |
| 07:25:30 | × | vglfr quits (~vglfr@88.155.52.56) (Read error: Connection reset by peer) |
| 07:26:33 | → | vglfr joins (~vglfr@88.155.52.56) |
| 07:26:35 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 07:26:57 | × | yauhsien quits (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 07:27:27 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 07:28:48 | → | whatif joins (~user@123.180.74.74) |
| 07:29:59 | <whatif> | inside a cabal project, runghc a.hs, it shows could not load module `Web.Scotty' it is a member of the hidden package `scotty-0.12'...' how I can solve this? |
| 07:30:12 | <whatif> | without :set -package scotty? |
| 07:30:39 | <whatif> | and no ghc to compile, I'd like to run it with runghc |
| 07:31:55 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 07:32:02 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 07:32:50 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 07:38:04 | × | jao quits (~jao@68.235.43.172) (Remote host closed the connection) |
| 07:42:05 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 07:47:53 | → | jao joins (~jao@68.235.43.172) |
| 07:48:44 | × | ksqsf quits (~user@114.214.178.136) (Ping timeout: 256 seconds) |
| 07:53:03 | × | rusrushal13 quits (~rusrushal@2401:4900:43a9:6cb9:3b78:294d:342e:939a) (Ping timeout: 256 seconds) |
| 07:54:20 | → | chenqisu12 joins (~chenqisu1@183.217.200.249) |
| 07:54:26 | <Andrew> | Prolog, nice |
| 07:56:31 | × | phma quits (phma@2001:5b0:2172:8d38:d8c9:6275:aa70:e454) (Read error: Connection reset by peer) |
| 07:56:49 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 07:57:32 | × | superbil quits (~superbil@1-34-176-171.hinet-ip.hinet.net) (Ping timeout: 240 seconds) |
| 07:57:39 | → | phma joins (~phma@host-67-44-208-219.hnremote.net) |
| 07:57:49 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 07:58:53 | × | jao quits (~jao@68.235.43.172) (Remote host closed the connection) |
| 08:00:09 | → | jao joins (~jao@68.235.43.172) |
| 08:04:05 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 268 seconds) |
| 08:05:39 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 08:06:09 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 08:07:32 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 08:09:06 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 08:10:40 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 08:12:09 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 08:13:03 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 08:14:06 | × | jao quits (~jao@68.235.43.172) (Ping timeout: 245 seconds) |
| 08:14:38 | → | ksqsf joins (~user@2001:da8:d800:611:d4c4:3076:5e68:23e0) |
| 08:15:09 | → | Morrow_ joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 08:16:37 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 08:17:04 | × | Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 256 seconds) |
| 08:17:58 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 08:18:52 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 08:19:14 | × | ksqsf quits (~user@2001:da8:d800:611:d4c4:3076:5e68:23e0) (Ping timeout: 250 seconds) |
| 08:19:24 | → | Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 08:20:49 | → | merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
| 08:21:50 | × | Morrow_ quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 250 seconds) |
| 08:21:58 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: Client limit exceeded: 20000) |
| 08:23:32 | × | whatif quits (~user@123.180.74.74) (Quit: ERC (IRC client for Emacs 26.3)) |
| 08:27:05 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 08:27:22 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 08:28:46 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 08:29:06 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 245 seconds) |
| 08:29:24 | → | cheater joins (~Username@user/cheater) |
| 08:30:05 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 08:31:10 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 08:33:58 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 250 seconds) |
| 08:36:40 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 08:37:45 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 08:37:57 | × | wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
| 08:38:31 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 08:42:08 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 08:43:05 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 08:43:26 | → | Morrow_ joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 08:44:30 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 08:45:08 | → | Tuplanolla joins (~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) |
| 08:45:24 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 08:45:46 | × | Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer) |
| 08:47:08 | <polyphem> | there is https://hackage.haskell.org/package/csp-1.4.0/docs/Control-Monad-CSP.html for ConstrainedSatisfactionProblems which is "constrained logic programming" in haskell |
| 08:47:08 | → | sm joins (~sm@plaintextaccounting/sm) |
| 08:47:15 | → | Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 08:47:40 | × | Morrow_ quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 256 seconds) |
| 08:48:48 | × | vglfr quits (~vglfr@88.155.52.56) (Ping timeout: 256 seconds) |
| 08:49:49 | × | Tisoxin quits (~ikosit@user/ikosit) (Quit: Client limit exceeded: 20000) |
| 08:50:41 | → | vglfr joins (~vglfr@46.96.161.0) |
| 08:52:05 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 08:52:22 | → | juhp joins (~juhp@bb121-6-118-149.singnet.com.sg) |
| 08:53:43 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 08:54:11 | → | Morrow_ joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 08:54:46 | × | merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
| 08:55:22 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 08:56:00 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 08:56:10 | × | Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 256 seconds) |
| 08:56:43 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 09:00:50 | → | merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
| 09:00:58 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 09:03:25 | → | Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 09:05:02 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds) |
| 09:06:09 | <Andrew> | If somebody takes your code and makes it imperative, do you think that's trolling? |
| 09:06:17 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:2541:beac:9acd:61a8) (Remote host closed the connection) |
| 09:06:20 | <Andrew> | i.e. no functions, everything are IO etches |
| 09:06:23 | → | Tisoxin joins (~ikosit@user/ikosit) |
| 09:06:36 | × | Morrow_ quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 245 seconds) |
| 09:07:46 | × | Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 250 seconds) |
| 09:08:00 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 09:08:39 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 09:10:07 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 09:12:03 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 09:16:55 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 09:17:24 | → | superbil joins (~superbil@1-34-176-171.hinet-ip.hinet.net) |
| 09:17:38 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 09:17:38 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 09:17:41 | allbery_b | is now known as geekosaur |
| 09:20:49 | × | gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 09:21:31 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 09:22:04 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Remote host closed the connection) |
| 09:22:36 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 09:23:22 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 09:23:45 | → | max22- joins (~maxime@2a01cb08833598002bb1283111308265.ipv6.abo.wanadoo.fr) |
| 09:24:32 | → | yauhsien_ joins (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) |
| 09:26:49 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Ping timeout: 250 seconds) |
| 09:29:36 | × | yauhsien_ quits (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 09:30:42 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 09:31:24 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 09:32:31 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 09:34:25 | → | Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 09:36:08 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Read error: Connection reset by peer) |
| 09:36:59 | × | Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Read error: Connection reset by peer) |
| 09:37:05 | → | Morrow_ joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net) |
| 09:46:02 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 09:46:53 | <Andrew> | I originally think that partially applied functions are silly when I did Python |
| 09:48:06 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 09:49:31 | × | Morrow_ quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 245 seconds) |
| 09:55:35 | <[exa]> | you were not wrong, they are literally silly in python. |
| 09:58:18 | → | _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl) |
| 09:59:51 | → | whatif joins (~user@123.180.74.74) |
| 10:01:07 | <whatif> | in scotty, when user visit '/test', then `get '/test'` will run, but I'd like to save the msg within `get '/test'' to out of it, how to do that? |
| 10:01:50 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds) |
| 10:01:53 | <whatif> | it's like every function f run, save f's inner variable to outside, so that f can read previous result |
| 10:02:00 | <whatif> | how to archive that? |
| 10:02:41 | <whatif> | with global variable it's easy, just variable reassignment |
| 10:02:59 | <polyphem> | pass f an STM TQueue , then in f write to the queue |
| 10:03:47 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 10:03:50 | <polyphem> | another thread can read the q and process further |
| 10:04:02 | → | random-8 joins (~kvirc@82.76.54.109) |
| 10:05:40 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds) |
| 10:05:57 | ← | random-8 parts (~kvirc@82.76.54.109) () |
| 10:06:35 | → | random-jellyfish joins (~kvirc@user/random-jellyfish) |
| 10:06:40 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:2541:beac:9acd:61a8) |
| 10:09:14 | <polyphem> | if you only need previos call result you can also use a TMVar with swapTMVar |
| 10:10:34 | <polyphem> | outside of f you have to first create your TMVar (Maybe StoredResult) |
| 10:10:47 | → | zer0bitz joins (~zer0bitz@2001:2003:f74d:b800:8c0e:5374:183d:34e2) |
| 10:11:01 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:2541:beac:9acd:61a8) (Ping timeout: 250 seconds) |
| 10:12:48 | → | MatthiasG2 joins (~matthias@i6DFA01BB.versanet.de) |
| 10:13:13 | → | xkuru joins (~xkuru@user/xkuru) |
| 10:18:26 | × | little_mac quits (~little_ma@2601:410:4300:3ce0:b1c1:7d23:9565:94df) (Remote host closed the connection) |
| 10:29:17 | × | merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 10:31:37 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 10:31:50 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 10:35:21 | × | cynomys quits (~cynomys@user/cynomys) (Ping timeout: 245 seconds) |
| 10:47:13 | → | cynomys joins (~cynomys@user/cynomys) |
| 10:47:48 | × | bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds) |
| 10:49:19 | <MatthiasG2> | hi, my book/tutorial says that I have to use the let keyword to define a name in ghci. however, i can define names without the let keyword. is my literature outdated? do i miss something? |
| 10:49:54 | <geekosaur> | it's a little outdated, yes |
| 10:50:19 | <geekosaur> | ghci has been getting easier to use over the past few years |
| 10:50:42 | <geekosaur> | it used to act like the inside of a "do" but it's acting more like a file toplevel these days |
| 10:50:57 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 10:51:12 | <geekosaur> | so you can define without "let", you can use "import" instead of ":m", etc. |
| 10:51:46 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds) |
| 10:52:16 | Lord_of_Life_ | is now known as Lord_of_Life |
| 10:53:20 | <MatthiasG2> | ok, thank you :) |
| 11:12:10 | × | ph88 quits (~ph88@2a02:8109:9e00:71d0:48e1:be0c:b23c:dea9) (Quit: Leaving) |
| 11:31:18 | → | CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 11:38:31 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 11:39:22 | × | chenqisu12 quits (~chenqisu1@183.217.200.249) (Ping timeout: 256 seconds) |
| 11:40:46 | → | hololeap joins (~hololeap@user/hololeap) |
| 11:47:17 | → | Codaraxis joins (~Codaraxis@user/codaraxis) |
| 11:48:06 | × | deadmarshal_ quits (~deadmarsh@95.38.113.93) (Quit: ZNC 1.8.2 - https://znc.in) |
| 11:49:17 | → | deadmarshal joins (~deadmarsh@95.38.113.93) |
| 11:52:52 | × | cynomys quits (~cynomys@user/cynomys) (Ping timeout: 250 seconds) |
| 11:53:34 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Remote host closed the connection) |
| 11:53:37 | × | deadmarshal quits (~deadmarsh@95.38.113.93) (Ping timeout: 240 seconds) |
| 11:54:19 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 11:56:05 | → | alp joins (~alp@user/alp) |
| 12:01:02 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 12:04:35 | → | ph88 joins (~ph88@2a02:8109:9e00:71d0:bc3f:ae22:7b02:63e) |
| 12:07:04 | → | zincy joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com) |
| 12:08:05 | → | deadmarshal joins (~deadmarsh@95.38.113.93) |
| 12:08:28 | × | alp quits (~alp@user/alp) (Ping timeout: 250 seconds) |
| 12:21:09 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 12:25:07 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4) |
| 12:25:48 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Quit: WeeChat 3.4) |
| 12:26:26 | → | merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
| 12:27:28 | → | chenqisu12 joins (~chenqisu1@183.217.200.249) |
| 12:27:46 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 12:28:50 | × | deadmarshal quits (~deadmarsh@95.38.113.93) (Ping timeout: 260 seconds) |
| 12:29:15 | × | random-jellyfish quits (~kvirc@user/random-jellyfish) (Ping timeout: 250 seconds) |
| 12:30:39 | → | Jing joins (~hedgehog@240e:390:7c53:a7e1:ed4d:fe0e:25ef:ac1f) |
| 12:31:51 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 250 seconds) |
| 12:33:41 | → | __monty__ joins (~toonn@user/toonn) |
| 12:34:04 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 12:38:54 | → | alp joins (~alp@user/alp) |
| 12:40:22 | × | zincy quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection) |
| 12:42:48 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 12:46:36 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 250 seconds) |
| 12:49:42 | × | shailangsa quits (~shailangs@host86-185-98-37.range86-185.btcentralplus.com) (Remote host closed the connection) |
| 12:50:59 | → | coot joins (~coot@213.134.190.95) |
| 12:57:34 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
| 12:57:48 | → | deadmarshal joins (~deadmarsh@95.38.113.93) |
| 12:59:17 | → | RFV joins (~Thunderbi@170.red-88-13-189.dynamicip.rima-tde.net) |
| 12:59:43 | × | RFV quits (~Thunderbi@170.red-88-13-189.dynamicip.rima-tde.net) (Client Quit) |
| 13:00:04 | × | lionhairdino quits (~jacoo@121.131.39.82) (Quit: WeeChat 3.4) |
| 13:00:24 | × | merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 13:00:57 | × | alp quits (~alp@user/alp) (Ping timeout: 240 seconds) |
| 13:02:34 | → | rusrushal13 joins (~rusrushal@2409:4056:e12:6583:dc44:f6d4:b489:36b1) |
| 13:03:55 | → | DavidMilestone joins (~DavidMile@122.179.213.129) |
| 13:06:57 | × | max22- quits (~maxime@2a01cb08833598002bb1283111308265.ipv6.abo.wanadoo.fr) (Ping timeout: 250 seconds) |
| 13:08:36 | → | Midjak joins (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
| 13:13:27 | × | CiaoSen quits (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 13:19:41 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 13:20:00 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 13:23:43 | × | chenqisu12 quits (~chenqisu1@183.217.200.249) (Quit: Leaving) |
| 13:25:01 | × | deadmarshal quits (~deadmarsh@95.38.113.93) (Read error: Connection reset by peer) |
| 13:27:06 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 13:27:13 | → | deadmarshal joins (~deadmarsh@95.38.113.93) |
| 13:27:45 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 13:28:54 | Andrew | needs to write something practical |
| 13:30:43 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 13:31:49 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 13:33:30 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 13:33:47 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 13:33:59 | → | ProfSimm joins (~ProfSimm@87.227.196.109) |
| 13:36:37 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 13:36:56 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 13:39:25 | × | phma quits (~phma@host-67-44-208-219.hnremote.net) (Read error: Connection reset by peer) |
| 13:39:49 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
| 13:40:17 | → | phma joins (phma@2001:5b0:211f:83e8:ceab:d757:d3e2:cd8f) |
| 13:42:12 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 13:42:29 | × | deadmarshal quits (~deadmarsh@95.38.113.93) (Ping timeout: 250 seconds) |
| 13:42:35 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 13:44:53 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 13:45:18 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 13:46:42 | → | random-jellyfish joins (~kvirc@82.76.54.109) |
| 13:46:57 | × | yaroot quits (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) (Ping timeout: 240 seconds) |
| 13:47:06 | × | random-jellyfish quits (~kvirc@82.76.54.109) (Changing host) |
| 13:47:06 | → | random-jellyfish joins (~kvirc@user/random-jellyfish) |
| 13:47:18 | → | yaroot joins (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) |
| 13:48:04 | → | CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 13:49:20 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 13:49:37 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 13:49:51 | → | deadmarshal joins (~deadmarsh@95.38.113.93) |
| 13:50:47 | × | random-jellyfish quits (~kvirc@user/random-jellyfish) (Client Quit) |
| 13:51:36 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 13:51:38 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 13:51:50 | × | fluxit quits (~fluxit@techsmix.net) (Quit: Bye!) |
| 13:51:54 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 13:54:14 | × | deadmarshal quits (~deadmarsh@95.38.113.93) (Ping timeout: 260 seconds) |
| 13:55:57 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 240 seconds) |
| 13:59:26 | → | deadmarshal joins (~deadmarsh@95.38.113.93) |
| 14:01:37 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 14:02:37 | → | briandaed joins (~root@185.234.208.208.r.toneticgroup.pl) |
| 14:03:46 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 14:04:06 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 14:06:45 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 14:06:56 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 14:07:25 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 14:12:05 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Remote host closed the connection) |
| 14:12:32 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 14:13:35 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 14:13:52 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 14:14:26 | → | segfaultfizzbuzz joins (~rustisafu@2602:306:cd3c:9350:59e3:db49:aa0a:46e5) |
| 14:16:18 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 14:16:35 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 14:16:37 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Ping timeout: 240 seconds) |
| 14:17:49 | → | mmhat joins (~mmh@55d4f42c.access.ecotel.net) |
| 14:23:25 | → | oldsk00l joins (~znc@ec2-18-134-147-152.eu-west-2.compute.amazonaws.com) |
| 14:24:03 | × | zer0bitz quits (~zer0bitz@2001:2003:f74d:b800:8c0e:5374:183d:34e2) (Read error: Connection reset by peer) |
| 14:24:48 | → | coot joins (~coot@213.134.190.95) |
| 14:24:59 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4) |
| 14:26:28 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 14:26:32 | × | deadmarshal quits (~deadmarsh@95.38.113.93) (Ping timeout: 256 seconds) |
| 14:28:01 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 14:31:57 | × | whatif quits (~user@123.180.74.74) (Ping timeout: 240 seconds) |
| 14:33:20 | → | DNH joins (~DNH@2a02:8108:1100:16d8:685d:59ed:4faf:3de1) |
| 14:34:00 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 14:35:03 | → | deadmarshal joins (~deadmarsh@95.38.113.93) |
| 14:35:27 | → | hololeap joins (~hololeap@user/hololeap) |
| 14:39:13 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4) |
| 14:50:00 | <Andrew> | why is readFile strict? |
| 14:51:01 | <hpc> | in what way? |
| 14:51:07 | <Andrew> | Not lazy |
| 14:51:32 | <hpc> | it opens the file, but then the contents of the file are lazy IO |
| 14:51:47 | <hpc> | and then when you evaluate [] the file is closed |
| 14:51:52 | Andrew | studies IO more |
| 14:52:17 | <hpc> | you probably don't want to deal with lazy IO if you're just starting out |
| 14:52:21 | <geekosaur> | which readFile are you talking about? |
| 14:53:17 | <Andrew> | Prelude System.IO |
| 14:53:21 | <geekosaur> | System.IO.readFile is lazy. the readFile operations on strict ByteString and strict Text are strict because they don't have a choice. the ones on lazy ByteString and lazy Text should again be lazy, but in chunks rather than characters |
| 14:53:34 | <geekosaur> | "The file is read lazily, on demand, as with getContents." |
| 14:53:42 | → | whatif joins (~user@123.180.40.237) |
| 14:53:57 | <whatif> | https://hackage.haskell.org/package/scotty-login-session-0.1.0.0/candidate/docs/src/Web-Scotty-Login-Session.html#SessionConfig |
| 14:54:03 | <hpc> | i recommend you use openFile, and the various operations on Handle values |
| 14:54:06 | <whatif> | defaultSessionConfig :: SessionConfig |
| 14:54:08 | <Andrew> | Yay, thanks |
| 14:54:12 | <hpc> | in System.IO |
| 14:54:14 | <whatif> | defaultSessionConfig = SessionConfig "sessions.sqlite3" 1200 120 |
| 14:54:29 | <Andrew> | I actually just wanted one that returns a string... I'm not sure what IO () strings are |
| 14:54:45 | <whatif> | Couldn't match expected type `SessionConfig' with actual type `Bool -> SessionConfig' * Probable cause: `SessionConfig' is applied to too few arguments In the expression: SessionConfig "sessions.sqlite3" 1200 86400 |
| 14:55:07 | <whatif> | why this say applied too few arguments? |
| 14:55:19 | <whatif> | mySessionConfig = SessionConfig "sessions.sqlite3" 1200 86400 |
| 14:55:44 | <geekosaur> | whatif, are you actually using the same version as that documentation? |
| 14:55:58 | <geekosaur> | "scotty-login-session-0.1.0.0" |
| 14:55:59 | <hpc> | (IO String) is the type of values that do stuff to produce a String |
| 14:56:26 | <hpc> | ("abc" ++ "def") IS a string, in a way that "open a file and give me its contents" isn't |
| 14:56:41 | <whatif> | geekosaur: 0.1.2.0 I'm using |
| 14:56:53 | <hpc> | like how the ls command is a formula for the files in a directory, but not a list of files in and of itself |
| 14:57:07 | → | merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
| 14:57:17 | × | oldsk00l quits (~znc@ec2-18-134-147-152.eu-west-2.compute.amazonaws.com) (Ping timeout: 240 seconds) |
| 14:57:51 | <geekosaur> | then you will need to consult the documentation for that version |
| 14:57:52 | <whatif> | found it https://github.com/asg0451/scotty-login-session/blob/master/src/Web/Scotty/Login/Session.hs |
| 14:58:12 | <Andrew> | hpc: So... what's the type of e.g. `readFile "/etc/passwd"`? |
| 14:58:33 | <Andrew> | I got confused with: `The readFile function reads a file and returns the contents of the file as a string. The file is read lazily, on demand, as with getContents.` |
| 14:58:43 | <Andrew> | Can I just treat it as a string? |
| 14:59:12 | <geekosaur> | whatif, it now takes an extra Bool indicating if the session is in debug mode or not https://github.com/asg0451/scotty-login-session/blob/master/src/Web/Scotty/Login/Session.hs#L104 |
| 15:00:43 | <whatif> | yes |
| 15:01:08 | <geekosaur> | Andrew, an IO String is not a String. however if you use do notation you can get a String out of it, as long as you put it back in IO when you're done |
| 15:01:19 | <geekosaur> | (you use ``pure` for that) |
| 15:01:24 | → | coot_ joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 15:01:25 | Andrew | kinda gets the point |
| 15:01:45 | <hpc> | Andrew: you bring the function to the IO action, in order to use the contents of the file |
| 15:01:50 | <Andrew> | Ill just scower the internet for an example and I'd match it with the nameless theories in my head |
| 15:01:52 | → | alp joins (~alp@user/alp) |
| 15:02:06 | <hpc> | say you have some isValidPassword :: (String -> Bool) |
| 15:02:11 | <hpc> | then you can use this: |
| 15:02:13 | <hpc> | :t fmap |
| 15:02:14 | <lambdabot> | Functor f => (a -> b) -> f a -> f b |
| 15:02:26 | <hpc> | a = String, b = Bool, f = IO |
| 15:02:41 | <hpc> | and fmap isValidPassword (readFile "/etc/passwd") :: IO Bool |
| 15:02:43 | <Andrew> | Oh, I get you |
| 15:02:52 | <Andrew> | Thanks! |
| 15:02:54 | <hpc> | there's lots of functions similar to fmap |
| 15:02:56 | <hpc> | :t (>>=) |
| 15:02:57 | <lambdabot> | Monad m => m a -> (a -> m b) -> m b |
| 15:03:01 | <hpc> | ^ is the big one |
| 15:03:23 | <hpc> | so for instance, there's no actual passwords in /etc/passwd anymore |
| 15:03:55 | <Andrew> | I'm just using /etc/password as a random filename example, but I get you, thanks :D |
| 15:03:58 | × | coot quits (~coot@213.134.190.95) (Ping timeout: 250 seconds) |
| 15:03:59 | <hpc> | but you can do readFile "/etc/passwd" >>= \passwd -> readFile "/etc/shadow" >>= \shadow -> checkPassword passwd shadow |
| 15:04:13 | <hpc> | and sequence things that way |
| 15:04:33 | Andrew | tries to recall what the backslash means |
| 15:04:37 | <hpc> | lambda |
| 15:05:16 | <Andrew> | () |
| 15:05:21 | → | soxen joins (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) |
| 15:05:56 | <Andrew> | Thanks :) |
| 15:07:11 | × | mmhat quits (~mmh@55d4f42c.access.ecotel.net) (Ping timeout: 250 seconds) |
| 15:07:17 | × | xff0x quits (~xff0x@2001:1a81:52f3:1d00:feda:8b5a:f28:424c) (Ping timeout: 240 seconds) |
| 15:08:31 | → | xff0x joins (~xff0x@2001:1a81:52f3:1d00:e2c8:a45c:f0af:d33) |
| 15:11:21 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:2541:beac:9acd:61a8) |
| 15:13:17 | → | zer0bitz joins (~zer0bitz@2001:2003:f74d:b800:7d8e:cf48:737f:ec3) |
| 15:15:17 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:2541:beac:9acd:61a8) (Ping timeout: 240 seconds) |
| 15:15:18 | → | schuelermine joins (~anselmsch@user/schuelermine) |
| 15:20:36 | → | geranim0 joins (~geranim0@d-132-204-221-88.res.umontreal.ca) |
| 15:22:39 | × | geranim0 quits (~geranim0@d-132-204-221-88.res.umontreal.ca) (Client Quit) |
| 15:24:59 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 15:25:14 | → | lavaman joins (~lavaman@98.38.249.169) |
| 15:25:20 | × | lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection) |
| 15:27:07 | × | whatif quits (~user@123.180.40.237) (Quit: ERC (IRC client for Emacs 26.3)) |
| 15:27:28 | → | jkaye joins (~jkaye@2601:281:8300:7530:780b:5ea4:97fa:3c7e) |
| 15:28:03 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 15:30:37 | × | mvk quits (~mvk@2607:fea8:5cdc:bf00::a2bf) (Ping timeout: 240 seconds) |
| 15:30:50 | × | kaph quits (~kaph@net-2-47-208-144.cust.vodafonedsl.it) (Ping timeout: 250 seconds) |
| 15:31:08 | × | merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 15:32:50 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 15:33:09 | × | DavidMilestone quits (~DavidMile@122.179.213.129) (Quit: Client closed) |
| 15:36:17 | × | emf_ quits (~emf@2620:10d:c090:400::5:29d7) (Ping timeout: 240 seconds) |
| 15:36:33 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 276 seconds) |
| 15:38:53 | → | mvk joins (~mvk@2607:fea8:5cdc:bf00::a2bf) |
| 15:39:08 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 15:42:13 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 15:42:14 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 15:42:14 | → | wroathe joins (~wroathe@user/wroathe) |
| 15:42:17 | × | CiaoSen quits (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 15:42:26 | × | schuelermine quits (~anselmsch@user/schuelermine) (Quit: WeeChat 3.3) |
| 15:42:52 | → | schuelermine joins (~anselmsch@user/schuelermine) |
| 15:43:24 | × | rusrushal13 quits (~rusrushal@2409:4056:e12:6583:dc44:f6d4:b489:36b1) (Ping timeout: 256 seconds) |
| 15:43:42 | × | alMalsamo quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 276 seconds) |
| 15:43:54 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Ping timeout: 260 seconds) |
| 15:50:09 | → | alMalsamo joins (~alMalsamo@gateway/tor-sasl/almalsamo) |
| 15:51:43 | × | ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
| 15:51:57 | → | notzmv joins (~zmv@user/notzmv) |
| 15:51:59 | → | ralu5 joins (~ralu@static.211.245.203.116.clients.your-server.de) |
| 15:53:02 | → | max22- joins (~maxime@2a01cb0883359800a797759c8651134a.ipv6.abo.wanadoo.fr) |
| 15:53:26 | × | ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer) |
| 15:53:26 | ralu5 | is now known as ralu |
| 15:53:37 | × | red-snail quits (~snail@static.151.210.203.116.clients.your-server.de) (Ping timeout: 240 seconds) |
| 15:53:47 | × | bcoppens quits (~bartcopp@vpn2.bartcoppens.be) (Ping timeout: 250 seconds) |
| 15:53:54 | → | bcoppens joins (~bartcopp@vpn2.bartcoppens.be) |
| 15:53:59 | × | wz1000 quits (~zubin@static.11.113.47.78.clients.your-server.de) (Ping timeout: 268 seconds) |
| 15:54:07 | → | red-snail joins (~snail@static.151.210.203.116.clients.your-server.de) |
| 15:54:34 | → | wz1000 joins (~zubin@static.11.113.47.78.clients.your-server.de) |
| 15:54:36 | × | hexagoxel quits (~hexagoxel@hexagoxel.de) (Ping timeout: 268 seconds) |
| 15:54:53 | → | hexagoxel joins (~hexagoxel@hexagoxel.de) |
| 15:55:59 | → | lavaman joins (~lavaman@98.38.249.169) |
| 15:56:56 | → | zincy joins (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) |
| 15:59:16 | → | a6a45081-2b83 joins (~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507) |
| 16:00:17 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
| 16:01:17 | × | zincy quits (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) (Ping timeout: 240 seconds) |
| 16:02:28 | → | CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 16:15:01 | × | polyphem quits (~rod@2a02:810d:840:8754:cd07:81a6:97c4:d71f) (Ping timeout: 240 seconds) |
| 16:15:45 | → | polyphem joins (~rod@2a02:810d:840:8754:a057:eb16:35f3:4c79) |
| 16:18:08 | → | slowButPresent joins (~slowButPr@user/slowbutpresent) |
| 16:19:47 | × | soxen quits (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 250 seconds) |
| 16:21:25 | × | EvanR quits (~EvanR@user/evanr) (Remote host closed the connection) |
| 16:21:44 | → | EvanR joins (~EvanR@user/evanr) |
| 16:23:50 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 16:29:39 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 16:29:58 | → | n3rdy1 joins (~n3rdy1@2600:1700:4570:3480::41) |
| 16:30:06 | → | yauhsien joins (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) |
| 16:31:13 | → | zincy joins (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) |
| 16:32:53 | → | ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
| 16:34:05 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Ping timeout: 250 seconds) |
| 16:34:56 | × | yauhsien quits (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 16:35:30 | × | mbuf quits (~Shakthi@223.190.212.194) (Quit: Leaving) |
| 16:35:49 | × | zincy quits (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) (Ping timeout: 250 seconds) |
| 16:36:04 | → | mmhat joins (~mmh@55d4f2c4.access.ecotel.net) |
| 16:37:29 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 16:40:21 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Remote host closed the connection) |
| 16:40:53 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 16:41:49 | → | soxen joins (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) |
| 16:42:59 | × | SwarmCollective quits (~joseph@2603-6011-bc02-b600-b30f-c0b6-681c-4c69.res6.spectrum.com) (Remote host closed the connection) |
| 16:43:22 | → | SwarmCollective joins (~joseph@2603-6011-bc02-b600-9258-c9a6-2983-1208.res6.spectrum.com) |
| 16:45:02 | → | zmt01 joins (~zmt00@user/zmt00) |
| 16:45:22 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 16:47:49 | → | Hanicef joins (~gustaf@81-229-9-108-no92.tbcn.telia.com) |
| 16:53:23 | → | thyriaen joins (~thyriaen@dynamic-077-013-197-086.77.13.pool.telefonica.de) |
| 16:55:54 | → | bontaq joins (~user@ool-45779fe5.dyn.optonline.net) |
| 16:56:19 | <thyriaen> | i have written a little tool : https://paste.tomsmeding.com/4oDIQ4ud i would like to filter out some a specific subset of my powerset given a given sum, but the way i wrote it it just gives me the sum, but i want to display the subset and not the sum |
| 16:57:37 | × | schuelermine quits (~anselmsch@user/schuelermine) (Quit: WeeChat 3.3) |
| 16:58:24 | × | DNH quits (~DNH@2a02:8108:1100:16d8:685d:59ed:4faf:3de1) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 17:02:54 | → | jao joins (~jao@68.235.43.84) |
| 17:04:25 | → | DNH joins (~DNH@2a02:8108:1100:16d8:685d:59ed:4faf:3de1) |
| 17:05:09 | × | a6a45081-2b83 quits (~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507) (Remote host closed the connection) |
| 17:05:29 | → | zincy joins (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) |
| 17:09:49 | × | zincy quits (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) (Ping timeout: 250 seconds) |
| 17:10:10 | <RMSBach> | thyriaen: you mean you want result of `run` to be the set of subsets of the powerset of `dat` that satisfy your predicate from `filli` on their sum? |
| 17:10:52 | <RMSBach> | thyriaen: Just get rid of mapper, and stuff that work into the predicate in `filli` |
| 17:11:57 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 17:13:00 | <dminuoso> | thyriaen: Hi, you probably want to use `sum` rather than your own `summer |
| 17:13:08 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 17:13:08 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 17:13:08 | → | wroathe joins (~wroathe@user/wroathe) |
| 17:13:12 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 17:13:28 | <dminuoso> | Or alternatively, use `foldl'` rather than `fold` |
| 17:14:21 | <dminuoso> | foldl on lists of non-trivial size will rapidly consume stack space |
| 17:14:46 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 17:16:39 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 276 seconds) |
| 17:18:03 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
| 17:18:37 | → | lavaman joins (~lavaman@98.38.249.169) |
| 17:18:43 | × | n3rdy1 quits (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 250 seconds) |
| 17:19:04 | <RMSBach> | thyriaen: https://bpa.st/IQOQ |
| 17:19:22 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 17:20:03 | <RMSBach> | Sorry I replaced `run` with an effectful `main`, so I could run it with runhaskell |
| 17:23:04 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
| 17:23:08 | → | cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
| 17:23:39 | × | coot_ quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot_) |
| 17:24:35 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 17:27:44 | × | CiaoSen quits (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 17:27:47 | → | merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
| 17:28:30 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 17:30:30 | → | n3rdy1 joins (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) |
| 17:32:54 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 17:32:54 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 17:32:54 | → | wroathe joins (~wroathe@user/wroathe) |
| 17:33:24 | → | fef joins (~thedawn@user/thedawn) |
| 17:34:42 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 17:34:48 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Remote host closed the connection) |
| 17:34:54 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 17:40:33 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 17:40:54 | → | MajorBiscuit joins (~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e) |
| 17:42:37 | <thyriaen> | RMSBach, i will look at it and have a little think |
| 17:44:09 | <thyriaen> | RMSBach, yes it does what i want, thank you |
| 17:44:31 | <RMSBach> | thyriaen: no problem |
| 17:44:39 | <thyriaen> | let me try if i understand |
| 17:45:01 | <thyriaen> | ((== 271.36) . sumer) is a new function which first sums and then compares the values |
| 17:45:20 | <RMSBach> | Yep |
| 17:45:29 | <thyriaen> | so it is [double] -> Boolean |
| 17:45:49 | <RMSBach> | Yes |
| 17:45:49 | <thyriaen> | ah and then it filters |
| 17:45:53 | <thyriaen> | yeath that makes sense |
| 17:46:21 | <thyriaen> | if i would first define that function as a standalone one |
| 17:46:28 | × | alp quits (~alp@user/alp) (Ping timeout: 250 seconds) |
| 17:46:30 | <thyriaen> | it would be |
| 17:47:42 | → | lavaman joins (~lavaman@98.38.249.169) |
| 17:47:48 | <segfaultfizzbuzz> | so i found this paragraph recently, which i know more than something about: |
| 17:48:18 | <segfaultfizzbuzz> | https://github.com/conal/talk-2014-bayhac-denotational-design#why-continuous-time-matters in this link, the paragraph beginning, "Continuous time allows integration and differentiation to be expressed directly and meaningfully. ..." |
| 17:48:32 | <segfaultfizzbuzz> | this is part of a defense of laziness, which is something i don't really know about |
| 17:48:42 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
| 17:48:56 | <segfaultfizzbuzz> | i feel fairly confident, unless i am missing something, that this paragraph makes a number of false claims about integration |
| 17:49:23 | → | cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
| 17:50:51 | <segfaultfizzbuzz> | only perhaps in an introductory undergraduate class or in a situation where accuracy was very unimportant would someone use an euler integration |
| 17:52:39 | → | Null_A joins (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) |
| 17:53:01 | <thyriaen> | dminuoso, but i use foldl not fold |
| 17:53:30 | <RMSBach> | segfaultfizzbuzz: I think they just included that as the simplest example. "The easiest path for an implementor is to use Euler integration..." |
| 17:54:53 | <segfaultfizzbuzz> | i don't think the author means like arbitrary precision arithmetic here, he's talking about doubles |
| 17:55:41 | → | kspalaiologos joins (~kspalaiol@user/kspalaiologos) |
| 17:55:54 | <segfaultfizzbuzz> | and using laziness doesn't mean that you are using runge-kutta, so i really don't understand the point here |
| 17:56:07 | <dminuoso> | thyriaen: Sorry. I meant foldl' vs foldl |
| 17:56:15 | <dminuoso> | thyriaen: `foldl` is almost always wrong. |
| 17:56:28 | <dminuoso> | It's a strange accident that the one you likely want has a backtick attached to it. |
| 17:56:48 | <dminuoso> | And the one without is almost certainly always wrong. :p |
| 17:56:54 | → | zincy joins (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) |
| 17:57:08 | <dminuoso> | Its particularly confusing because in foldr its slightly different |
| 17:57:38 | <dminuoso> | (i.e. foldlr' is almost certainly wrong, foldr is what you likely want) |
| 17:58:13 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 17:59:10 | → | thyriaen_ joins (~thyriaen@dynamic-077-191-211-108.77.191.pool.telefonica.de) |
| 17:59:11 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 17:59:36 | <thyriaen_> | dminuoso, i don't understand :p |
| 17:59:55 | <dminuoso> | thyriaen_: Simply said: dont use foldl, use foldl' |
| 18:00:03 | <thyriaen_> | what is the difference ? |
| 18:00:09 | × | ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection) |
| 18:00:30 | → | ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
| 18:00:39 | <dminuoso> | % foldl (+) 0 [0..1000000000] |
| 18:00:40 | <yahb> | dminuoso: *** Exception: heap overflow |
| 18:00:41 | <dminuoso> | % foldl' (+) 0 [0..1000000000] |
| 18:00:46 | <yahb> | dminuoso: [Timed out] |
| 18:00:50 | <dminuoso> | % foldl' (+) 0 [0..1000000000] |
| 18:00:56 | <yahb> | dminuoso: [Timed out] |
| 18:01:01 | <thyriaen_> | my ghci does not know foldl' |
| 18:01:03 | <dminuoso> | Okay, this is probably a slightly race considition |
| 18:01:09 | <dminuoso> | thyriaen_: Import it from Data.Foldable |
| 18:01:12 | → | econo joins (uid147250@user/econo) |
| 18:01:18 | <dminuoso> | % foldl' (+) 0 [0..100000000] |
| 18:01:21 | <yahb> | dminuoso: 5000000050000000 |
| 18:01:22 | <dminuoso> | % foldl (+) 0 [0..100000000] |
| 18:01:23 | <yahb> | dminuoso: *** Exception: heap overflow |
| 18:01:25 | <dminuoso> | thyriaen_: ^- there. |
| 18:01:34 | × | zincy quits (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) (Ping timeout: 260 seconds) |
| 18:01:36 | × | thyriaen quits (~thyriaen@dynamic-077-013-197-086.77.13.pool.telefonica.de) (Ping timeout: 245 seconds) |
| 18:01:37 | × | merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
| 18:01:51 | <thyriaen_> | can i just use foldr because i use + in my example ? |
| 18:02:20 | <dminuoso> | thyriaen_: foldr in this usage can overflow your stack. |
| 18:02:23 | <xerox> | thyriaen_: import Data.List |
| 18:02:35 | <dminuoso> | thyriaen_: (or your heap) |
| 18:02:46 | <dminuoso> | Depends a bit on settings I guess? |
| 18:03:16 | <dminuoso> | thyriaen_: Broadly the problem is, with foldr you turn this list into something like this: (1 + (2 + (3 + (4 + ...))) |
| 18:03:38 | <dsal> | But why not `sum`? |
| 18:03:53 | <dminuoso> | But that's particularly bad, because under the bood the STG machine will have to maintain a stack of these arguments 1, 2, 3, 4, ... until it sees the final sum |
| 18:04:00 | <dminuoso> | And similarly, with foldl: |
| 18:04:37 | <thyriaen_> | dsal, good idea :p |
| 18:04:43 | <dminuoso> | You get ....(((n + n-1) + n-2) + n-3) + n-4 ... |
| 18:04:50 | <dminuoso> | Which means you need all these things represented on the heap |
| 18:04:53 | <dminuoso> | At the same time. |
| 18:05:04 | × | ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds) |
| 18:05:28 | <dsal> | It's good to know `foldr` vs. `foldl` (and maybe `fold`) and when strictness is important, but also nice to know when you don't need to write something because it's common. |
| 18:05:29 | × | Null_A quits (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) (Remote host closed the connection) |
| 18:05:29 | <dminuoso> | thyriaen_: foldl' behaves like a proper loop that is *strict*, so it instantly calcualtes the result and doesnt keep the thunk around for later. |
| 18:06:01 | <thyriaen_> | does that mean foldl is less lazy ? |
| 18:06:05 | <dminuoso> | No, foldl is more lazy. |
| 18:06:11 | <thyriaen_> | yea |
| 18:06:11 | <dminuoso> | foldl' is strict in the accumulator |
| 18:06:13 | <thyriaen_> | thats what i ment |
| 18:06:18 | <thyriaen_> | foldl' being less lazy |
| 18:06:26 | → | ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
| 18:06:28 | <dminuoso> | well, lets not say "less lazy" and say what it is exactly |
| 18:06:31 | <dminuoso> | its strict in the accumulator. |
| 18:06:38 | <thyriaen_> | what does that mean ? |
| 18:06:48 | <dminuoso> | % :t foldl |
| 18:06:49 | <yahb> | dminuoso: Foldable t => (b -> a -> b) -> b -> t a -> b |
| 18:06:58 | <thyriaen_> | what does it mean to be strict ? |
| 18:07:18 | <dminuoso> | it means not-lazy |
| 18:07:25 | <thyriaen_> | ok |
| 18:07:33 | <dsal> | Do you understand what a thunk is? |
| 18:07:35 | <dminuoso> | operationally it means, it doesnt create a thunk to represent it. |
| 18:07:37 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
| 18:07:43 | <dminuoso> | it rather immediately calculates the result instead |
| 18:07:46 | <thyriaen_> | dsal, no |
| 18:07:51 | <thyriaen_> | dminuoso, i see, thanks |
| 18:07:55 | → | zincy joins (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) |
| 18:07:57 | <dminuoso> | thyriaen_: Are you familiar with traditional programming langauges? |
| 18:07:59 | <dminuoso> | say javascript? |
| 18:08:03 | <thyriaen_> | dminuoso, yes |
| 18:08:25 | <dminuoso> | Okay, so you can imagine a thunk to be something like `() => some_computation`, a kind of computation you can compute at will later. |
| 18:08:42 | <thyriaen_> | yes, i understand |
| 18:08:44 | <dminuoso> | But its deferred in the sense that you have to explicitly demand the result of its computation |
| 18:08:52 | <dminuoso> | We call this a thunk |
| 18:08:57 | <thyriaen_> | okay |
| 18:09:10 | <dsal> | Think `f (1 + 2)` in a strict language, that calls `f` with `3`. In a lazy language, that calls `f` with a thunk of `1 + 2` which may eventually resolve to `3`. But it also may not. |
| 18:09:26 | × | jkaye quits (~jkaye@2601:281:8300:7530:780b:5ea4:97fa:3c7e) (Ping timeout: 250 seconds) |
| 18:09:40 | <thyriaen_> | so when i lay in the bed all day and don't work at all but i know what i could do to work i am basically a thunk |
| 18:09:57 | <dminuoso> | One could say that, yes. |
| 18:09:58 | <dsal> | Well, no. The thunk is your plan of what to do. |
| 18:10:10 | <thyriaen_> | okay :p thanks |
| 18:10:14 | <dsal> | Laziness means you don't do the thing until someone calls you and asks you for it. |
| 18:10:26 | <thyriaen_> | dsal, sounds like me |
| 18:10:26 | × | zincy quits (~zincy@2a00:23c8:970c:4801:f0bc:c4cb:1665:1c67) (Remote host closed the connection) |
| 18:10:38 | <dminuoso> | thyriaen_: We have no direct way of specifying thunks, but operationall you can imagine that most expressions you write become a thunk |
| 18:10:49 | <thyriaen_> | yes i understand now |
| 18:10:50 | <thyriaen_> | thank you |
| 18:10:52 | <dminuoso> | and we say a thunk is *forced* is you demand its result |
| 18:10:59 | <dminuoso> | if you demand its result |
| 18:11:11 | <thyriaen_> | i love haskell so much |
| 18:11:15 | <dminuoso> | So these thunks represent "lazy computations", by demand their result, it starts computing them |
| 18:11:22 | <dminuoso> | And even more: |
| 18:12:00 | <dminuoso> | once a thunk is computed, the thunk is sort of replaced with the resulting value (this is strictly speaking a lie, but if you want to learn the exact details there's a great paper to read) |
| 18:12:05 | <dsal> | A typical value might be in a box that either a value of type `T` or a plan to resolve to a value of type `T` and you don't necessarily know the difference because it doesn't matter. You can demand that it's not a thunk in particular locations. That's what `foldl'` does. |
| 18:12:09 | <dsal> | @src foldl' |
| 18:12:09 | <lambdabot> | foldl' f a [] = a |
| 18:12:09 | <lambdabot> | foldl' f a (x:xs) = let a' = f a x in a' `seq` foldl' f a' xs |
| 18:13:00 | <dminuoso> | This lets you *share* the result across two references. Say you write `let a = <expensive expression> in (a, a)`, and you *force* the entire tuple, then `a` first becomes a thunk, and its referenced twice. If you access the first element of the tuple, the thunk of a is forced, and if you then access the second element, it will reference the already computed result |
| 18:13:05 | <dminuoso> | thyriaen_: ^- does this make any sense to you? |
| 18:13:19 | → | Null_A joins (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) |
| 18:13:44 | <thyriaen_> | yes |
| 18:13:45 | <dminuoso> | Ah wait. a slight miswording: `a` is already created as a thunk by means of the compiler, it doesnt happen on the spot. |
| 18:14:06 | <thyriaen_> | h0ly shit |
| 18:14:08 | <thyriaen_> | it is genious |
| 18:14:24 | <dminuoso> | Now this would all be in the way, because sometimes representing something as a thunk is not helpful |
| 18:14:42 | <dminuoso> | because that thunk needs a representation, it means we need to allocate that representation of the thunk (and its entire computation) on memory |
| 18:14:55 | <dminuoso> | So if we have: |
| 18:15:08 | → | little_mac joins (~little_ma@2601:410:4300:3ce0:9145:1668:6954:3d71) |
| 18:15:12 | <dminuoso> | (((10 + 9) + 8) + 7) + ... |
| 18:15:13 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 18:15:13 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 18:15:13 | → | wroathe joins (~wroathe@user/wroathe) |
| 18:15:30 | <dminuoso> | Then we this creates a lot of thunks, beacuse each sub-expression is kept lazy |
| 18:16:06 | → | cosimone` joins (~user@93-34-132-136.ip49.fastwebnet.it) |
| 18:16:40 | <thyriaen_> | yes |
| 18:16:45 | <thyriaen_> | i understand |
| 18:16:51 | <dminuoso> | So here comes the trick |
| 18:16:53 | <dminuoso> | say we write a function |
| 18:17:03 | <dminuoso> | f x = (x, x) |
| 18:17:26 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 260 seconds) |
| 18:17:28 | <dminuoso> | We can give an additional annotation to that function that says, when you enter this function, automatically *force* (evaluate its thunk) an argument |
| 18:17:31 | <dminuoso> | This looks like this: |
| 18:17:36 | <dminuoso> | f (!x) = (x, x) |
| 18:17:43 | × | ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection) |
| 18:17:46 | <dminuoso> | We say `f is strict in its argument` |
| 18:18:04 | → | ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
| 18:18:11 | <dminuoso> | Which means, upon entering this function, at the same time, the argument will *first* be forced. |
| 18:18:25 | × | Hanicef quits (~gustaf@81-229-9-108-no92.tbcn.telia.com) (Quit: leaving) |
| 18:19:14 | <dminuoso> | This is particularly helpful for some recursive functions, as it prevents an accumulation of thunks, as every time you'd enter the recursive step (and pass along some expression into itself), it could immediately force that argument |
| 18:20:15 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
| 18:22:13 | <dminuoso> | % myFoldl' f a [] = a; myFoldl' f !a (x:xs) = myFoldl' f (f a x) x |
| 18:22:14 | <yahb> | dminuoso: ; <interactive>:5:1: error:; * Couldn't match type `t1' with `[t1]'; Expected: (t -> t1 -> t) -> t -> t1 -> t; Actual: (t -> t1 -> t) -> t -> [t1] -> t; * Relevant bindings include myFoldl' :: (t -> t1 -> t) -> t -> t1 -> t (bound at <interactive>:5:1) |
| 18:22:17 | <dminuoso> | % myFoldl' f a [] = a; myFoldl' f !a (x:xs) = myFoldl' f (f a x) xs |
| 18:22:17 | <yahb> | dminuoso: |
| 18:22:37 | <dminuoso> | % myFoldl' (+) 0 [0..100000000] |
| 18:22:38 | × | ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds) |
| 18:22:43 | <yahb> | dminuoso: [Timed out] |
| 18:22:57 | <dminuoso> | Ah well, this is a bit racy. You can try this out in your GHCi if you like |
| 18:23:14 | <dminuoso> | thyriaen_: ^- does this make sense now? |
| 18:23:31 | × | segfaultfizzbuzz quits (~rustisafu@2602:306:cd3c:9350:59e3:db49:aa0a:46e5) (Quit: Leaving) |
| 18:24:06 | × | cosimone` quits (~user@93-34-132-136.ip49.fastwebnet.it) (Quit: ERC (IRC client for Emacs 27.1)) |
| 18:24:27 | → | ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
| 18:24:52 | → | cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
| 18:25:14 | × | ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection) |
| 18:25:17 | × | Null_A quits (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) (Remote host closed the connection) |
| 18:25:26 | <dminuoso> | Interesting to note, that if you have a function that pattern matches on its argument, its automatically strict in that argument as well (since to do the pattern matching, you have to evaluate the argument enough to see the constructor) |
| 18:25:34 | → | ProfSimm joins (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
| 18:25:52 | <dminuoso> | i.e. `f True = ...; f False = ...` is also strict in its argument. Therefore a ! (pronounced bang) would do nothing here. |
| 18:26:04 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 18:26:09 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 18:28:30 | × | doyougnu quits (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 256 seconds) |
| 18:29:31 | <energizer> | i see there are some packages for functions with keyword arguments. how popular are those? |
| 18:29:52 | <dsal> | energizer: What do you mean? |
| 18:30:00 | × | ProfSimm quits (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds) |
| 18:30:07 | <monochrom> | I've never used one. I didn't even know someone made one. |
| 18:30:43 | <energizer> | https://hackage.haskell.org/package/named |
| 18:31:14 | <monochrom> | I didn't even know I would need a whole bloody library if I wanted keyword arguments. I thought I could just define a record-syntax type and THE END. |
| 18:31:37 | <dsal> | Oh neat. This is someone who really liked smalltalk, but wanted to write haskell. |
| 18:33:13 | <energizer> | clojure and elisp support named parameters |
| 18:35:41 | <dminuoso> | I like that it doesnt introduce the kmettiverse to dependencies. |
| 18:35:47 | <dminuoso> | It's just base and nothing else. |
| 18:38:20 | × | _xor quits (~xor@dsl-50-5-233-169.fuse.net) (Read error: Connection reset by peer) |
| 18:38:36 | <monochrom> | I think now I can speak freely about my objections to the recent lazy evaluation conversation. |
| 18:39:01 | → | zebrag joins (~chris@user/zebrag) |
| 18:39:19 | → | Null_A joins (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) |
| 18:39:39 | <monochrom> | "less lazy" is actually truer than "not lazy" by the time you consider foldl' (\(x,y) -> (undefined, undefined)) which is less lazy than foldl but still retains some laziness because foldl' is only to the point of WHNF. |
| 18:40:35 | × | MajorBiscuit quits (~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e) (Quit: WeeChat 3.3) |
| 18:40:35 | → | _xor joins (~xor@dsl-50-5-233-169.fuse.net) |
| 18:40:40 | → | alp joins (~alp@user/alp) |
| 18:41:09 | <monochrom> | I don't think we always need to introduce the word "thunk". If people already knows "expression", we can re-use it safely. Add "unevaluated" if the emphasis makes you feel better. |
| 18:41:42 | <monochrom> | A thunk is a specific data structure that represents an expression. We don't always have to bring up the actual data structure. |
| 18:41:48 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4) |
| 18:42:33 | → | argento joins (~argent0@168-227-97-34.ptr.westnet.com.ar) |
| 18:42:39 | <monochrom> | Behind this is the widespread false dichotomy between talking at the STG level just so as to talk about lazy evaluation and not talking about lazy evaluation at all. NO. |
| 18:43:20 | <monochrom> | See for example John Launchbury's A Natural Semantics for Lazy Evaluation for how to talk about lazy evaluation at a less lower level. |
| 18:44:34 | <monochrom> | And I will leave how "not lazy" and "strict" are still different for another day. (Yes Hughes, Wadler, SPJ speak like that. Yes that's right I'm saying they were wrong.) |
| 18:48:06 | × | peddie quits (~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | unclechu quits (~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | oak- quits (~oakuniver@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | Arathorn quits (~arathorn@2001:470:69fc:105::1f) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | soft quits (~soft@2001:470:69fc:105::c75) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | moats quits (~oats@user/oats) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | juhp[m] quits (~juhpmatri@2001:470:69fc:105::6e9) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | mmos[m] quits (~mmosmatri@2001:470:69fc:105::1:8340) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | cdsmith quits (~cdsmithma@2001:470:69fc:105::284) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | bb010g quits (~bb010g@2001:470:69fc:105::9a5) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | phuegrvs[m] quits (~phuegrvsm@2001:470:69fc:105::1:65e4) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | tripa[m] quits (~tripamatr@2001:470:69fc:105::1:4f7e) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | eoiles[m] quits (~eoilesmat@2001:470:69fc:105::1:6164) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | craige[m] quits (~craigemcw@2001:470:69fc:105::35f1) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | yehoshuapw quits (~yehoshuap@2001:470:69fc:105::a5f) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | Topik[m] quits (~topikmatr@2001:470:69fc:105::a082) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | nomeata quits (~nomeata@2001:470:69fc:105::1:5ed4) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | jesser[m] quits (~jessermat@2001:470:69fc:105::d5ae) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | justosophy[m] quits (~justosoph@2001:470:69fc:105::572f) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | Sixto[m] quits (~provornyc@2001:470:69fc:105::1:74df) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | throwaaaa[m] quits (~throwaaaa@2001:470:69fc:105::1:6fe6) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | sekun[m] quits (~hsekmatri@2001:470:69fc:105::d18f) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | jchia[m] quits (~jchiamatr@2001:470:69fc:105::c50b) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | Las[m] quits (~lasmatrix@2001:470:69fc:105::74e) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | wildsebastian quits (~wildsebas@2001:470:69fc:105::1:14b1) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | simmsb quits (~simmsb@2001:470:69fc:105::1:55c3) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | kalxd[m] quits (~kalxdmatr@2001:470:69fc:105::1:576e) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | sjanssen quits (~sjanssenm@2001:470:69fc:105::1:61d8) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | benjamin[m]123 quits (~benjaminm@2001:470:69fc:105::1:3f2f) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | mahene[m] quits (~mahenemat@2001:470:69fc:105::1:6a93) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | james[m]123 quits (~jamesnina@2001:470:69fc:105::1:4203) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | sofviic[m] quits (~sofviicma@2001:470:69fc:105::1:51fd) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | siraben quits (~siraben@user/siraben) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | litharn[m] quits (~litharnma@2001:470:69fc:105::1:8336) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | unrooted quits (~unrooted@2001:470:69fc:105::a4a) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | EkaiZend[m] quits (~ekai-zend@2001:470:69fc:105::1:7756) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | Michal[m] quits (~oomiguelm@2001:470:69fc:105::1:5ab0) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | fgaz quits (~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM) |
| 18:48:07 | × | afotgkmnzj7asv3r quits (~afotgkmnz@2001:470:69fc:105::c24b) (Quit: Bridge terminating on SIGTERM) |
| 18:48:08 | × | codygman[m] quits (~codygman@2001:470:69fc:105::b4ba) (Quit: Bridge terminating on SIGTERM) |
| 18:48:08 | × | ongy[m] quits (~ongymatri@2001:470:69fc:105::5018) (Quit: Bridge terminating on SIGTERM) |
| 18:48:08 | × | denbrahe quits (~denbrahe@2001:470:69fc:105::19c0) (Quit: Bridge terminating on SIGTERM) |
| 18:48:08 | × | RosarioPulella[m quits (~rosariopu@2001:470:69fc:105::a57) (Quit: Bridge terminating on SIGTERM) |
| 18:48:08 | × | Morrow[m] quits (~morrowmma@2001:470:69fc:105::1d0) (Quit: Bridge terminating on SIGTERM) |
| 18:48:08 | × | alex[m]123456 quits (~alexchete@2001:470:69fc:105::1:1001) (Quit: Bridge terminating on SIGTERM) |
| 18:48:08 | × | octeep[m] quits (~octeepoct@2001:470:69fc:105::1:3dbf) (Quit: Bridge terminating on SIGTERM) |
| 18:48:08 | × | cherryblossom[m] quits (~cherryblo@2001:470:69fc:105::b789) (Quit: Bridge terminating on SIGTERM) |
| 18:48:08 | × | wysteriary[m] quits (~wysteriar@2001:470:69fc:105::a42e) (Quit: Bridge terminating on SIGTERM) |
| 18:48:08 | × | reza[m] quits (~rezaphone@2001:470:69fc:105::3eda) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | carmysilna quits (~brightly-@2001:470:69fc:105::2190) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | jmcantrell quits (~jmcantrel@user/jmcantrell) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | Nate[m] quits (~m52957mat@2001:470:69fc:105::1:591a) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | Christoph[m] quits (~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | bitonic quits (~bitonic@2001:470:69fc:105::1812) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | quantum quits (~quantum@user/quantum/x-8556232) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | jinsun_ quits (~jinsun@user/jinsun) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | ac quits (~aloiscoch@2001:470:69fc:105::65) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | JoseC[m] quits (~jmcardonm@2001:470:69fc:105::1:7539) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | maralorn quits (~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | amesgen[m] quits (~amesgenm]@2001:470:69fc:105::82b) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM) |
| 18:48:11 | × | ManofLetters[m] quits (~manoflett@2001:470:69fc:105::3be) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | SawyerBergeron[m quits (~sawyerber@2001:470:69fc:105::3036) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | joaquinmg[m] quits (~joaquinmg@2001:470:69fc:105::1:67d2) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | Heffalump[m] quits (~hsenagmat@2001:470:69fc:105::e11) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | aidy quits (~aidy@2001:470:69fc:105::c7b4) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | xbreu quits (~xbreu@2001:470:69fc:105::1:5061) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | Orbstheorem quits (~orbstheor@2001:470:69fc:105::a56) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | thejuan24f[m] quits (~thejuan2m@2001:470:69fc:105::1:6569) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | pfurla-matrix quits (~pedrofurl@2001:470:69fc:105::1:51d7) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | cstml[m] quits (~cstmlmatr@2001:470:69fc:105::1:5c07) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | zwro[m] quits (~zwromatri@2001:470:69fc:105::1d4) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | SridharRatnakuma quits (~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | finalti[m] quits (~finaltima@2001:470:69fc:105::d909) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | prrxddq[m] quits (~prrxddqma@2001:470:69fc:105::1:4f72) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | fcortesi quits (~fcortesi@2001:470:69fc:105::f3a9) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | ormaaj quits (~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | hsiktas[m] quits (~hsiktasm]@2001:470:69fc:105::30d4) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | psydroid quits (~psydroid@user/psydroid) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | kadoban quits (~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | Deide quits (~deide@user/deide) (Quit: Bridge terminating on SIGTERM) |
| 18:48:12 | × | ParsaAlizadeh[m] quits (~lizadehma@2001:470:69fc:105::1:65a4) (Quit: Bridge terminating on SIGTERM) |
| 18:48:13 | × | thomasjm[m] quits (~thomasjmm@2001:470:69fc:105::c6d9) (Quit: Bridge terminating on SIGTERM) |
| 18:48:14 | × | Yehoshua quits (~yehoshua@2001:470:69fc:105::1:593f) (Quit: Bridge terminating on SIGTERM) |
| 18:48:16 | × | schuelermine[m] quits (~schuelerm@user/schuelermine) (Quit: Bridge terminating on SIGTERM) |
| 18:48:16 | × | zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Quit: Bridge terminating on SIGTERM) |
| 18:48:16 | × | jneira[m] quits (~jneiramat@2001:470:69fc:105::d729) (Quit: Bridge terminating on SIGTERM) |
| 18:48:16 | × | fendor[m] quits (~fendormat@2001:470:69fc:105::fcbd) (Quit: Bridge terminating on SIGTERM) |
| 18:48:16 | × | DemiMarieObenour quits (~alwayscur@2001:470:69fc:105::4886) (Quit: Bridge terminating on SIGTERM) |
| 18:48:17 | × | Tisoxin quits (~ikosit@user/ikosit) (Quit: Bridge terminating on SIGTERM) |
| 18:48:43 | → | Morrow joins (~user@bzq-110-168-31-106.red.bezeqint.net) |
| 18:48:54 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
| 18:49:19 | × | Null_A quits (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) (Remote host closed the connection) |
| 18:50:51 | → | Null_A joins (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) |
| 18:50:55 | → | juhp[m] joins (~juhpmatri@2001:470:69fc:105::6e9) |
| 18:51:25 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4) |
| 18:51:55 | × | Null_A quits (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) (Remote host closed the connection) |
| 18:52:31 | × | Jing quits (~hedgehog@240e:390:7c53:a7e1:ed4d:fe0e:25ef:ac1f) (Ping timeout: 250 seconds) |
| 18:55:08 | × | briandaed quits (~root@185.234.208.208.r.toneticgroup.pl) (Ping timeout: 256 seconds) |
| 18:57:40 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 18:59:26 | → | fgaz joins (~fgaz@2001:470:69fc:105::842) |
| 18:59:26 | → | peddie joins (~peddie@2001:470:69fc:105::25d) |
| 18:59:26 | → | cdsmith joins (~cdsmithma@2001:470:69fc:105::284) |
| 18:59:26 | → | thomasjm[m] joins (~thomasjmm@2001:470:69fc:105::c6d9) |
| 18:59:26 | → | JoseC[m] joins (~jmcardonm@2001:470:69fc:105::1:7539) |
| 18:59:26 | → | zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32) |
| 18:59:26 | → | kadoban joins (~kadoban@user/kadoban) |
| 18:59:26 | → | ericson2314 joins (~ericson23@2001:470:69fc:105::70c) |
| 18:59:26 | → | moats joins (~oats@user/oats) |
| 18:59:26 | → | Arathorn joins (~arathorn@2001:470:69fc:105::1f) |
| 18:59:26 | → | amesgen[m] joins (~amesgenm]@2001:470:69fc:105::82b) |
| 18:59:26 | → | Topik[m] joins (~topikmatr@2001:470:69fc:105::a082) |
| 18:59:26 | → | unclechu joins (~unclechu@2001:470:69fc:105::354) |
| 18:59:26 | → | maralorn joins (~maralorn@2001:470:69fc:105::251) |
| 18:59:26 | → | reza[m] joins (~rezaphone@2001:470:69fc:105::3eda) |
| 18:59:26 | → | quantum joins (~quantum@user/quantum/x-8556232) |
| 18:59:26 | → | marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8) |
| 18:59:27 | → | finalti[m] joins (~finaltima@2001:470:69fc:105::d909) |
| 18:59:27 | → | denbrahe joins (~denbrahe@2001:470:69fc:105::19c0) |
| 18:59:27 | → | Las[m] joins (~lasmatrix@2001:470:69fc:105::74e) |
| 18:59:27 | → | sm joins (~sm@plaintextaccounting/sm) |
| 18:59:27 | → | mahene[m] joins (~mahenemat@2001:470:69fc:105::1:6a93) |
| 18:59:27 | → | hsiktas[m] joins (~hsiktasm]@2001:470:69fc:105::30d4) |
| 18:59:27 | → | schuelermine[m] joins (~schuelerm@user/schuelermine) |
| 18:59:27 | → | Deide joins (~deide@user/deide) |
| 18:59:27 | → | Artem[m] joins (~artemtype@2001:470:69fc:105::75b) |
| 18:59:27 | → | psydroid joins (~psydroid@user/psydroid) |
| 18:59:27 | → | Christoph[m] joins (~hpotsirhc@2001:470:69fc:105::2ff8) |
| 18:59:27 | → | alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba) |
| 18:59:27 | → | jneira[m] joins (~jneiramat@2001:470:69fc:105::d729) |
| 18:59:27 | → | ongy[m] joins (~ongymatri@2001:470:69fc:105::5018) |
| 18:59:27 | → | siraben joins (~siraben@user/siraben) |
| 18:59:27 | → | SawyerBergeron[m joins (~sawyerber@2001:470:69fc:105::3036) |
| 18:59:27 | → | smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32) |
| 18:59:27 | → | ManofLetters[m] joins (~manoflett@2001:470:69fc:105::3be) |
| 18:59:27 | → | Tisoxin joins (~ikosit@user/ikosit) |
| 18:59:27 | → | fendor[m] joins (~fendormat@2001:470:69fc:105::fcbd) |
| 18:59:27 | → | carmysilna joins (~brightly-@2001:470:69fc:105::2190) |
| 18:59:27 | → | aidy joins (~aidy@2001:470:69fc:105::c7b4) |
| 18:59:27 | → | DemiMarieObenour joins (~alwayscur@2001:470:69fc:105::4886) |
| 18:59:27 | → | maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee) |
| 18:59:27 | → | jmcantrell joins (~jmcantrel@user/jmcantrell) |
| 18:59:27 | → | vaibhavsagar[m] joins (~vaibhavsa@2001:470:69fc:105::ffe) |
| 18:59:27 | → | wildsebastian joins (~wildsebas@2001:470:69fc:105::1:14b1) |
| 18:59:28 | → | jinsun_ joins (~jinsun@user/jinsun) |
| 18:59:28 | → | prrxddq[m] joins (~prrxddqma@2001:470:69fc:105::1:4f72) |
| 18:59:28 | → | Heffalump[m] joins (~hsenagmat@2001:470:69fc:105::e11) |
| 18:59:28 | → | joaquinmg[m] joins (~joaquinmg@2001:470:69fc:105::1:67d2) |
| 18:59:28 | → | fcortesi joins (~fcortesi@2001:470:69fc:105::f3a9) |
| 18:59:28 | → | ormaaj joins (~ormaaj@user/ormaaj) |
| 18:59:28 | → | ac joins (~aloiscoch@2001:470:69fc:105::65) |
| 18:59:28 | → | SridharRatnakuma joins (~sridmatri@2001:470:69fc:105::1c2) |
| 18:59:28 | → | unrooted joins (~unrooted@2001:470:69fc:105::a4a) |
| 18:59:28 | → | bitonic joins (~bitonic@2001:470:69fc:105::1812) |
| 18:59:28 | → | xbreu joins (~xbreu@2001:470:69fc:105::1:5061) |
| 18:59:28 | → | Orbstheorem joins (~orbstheor@2001:470:69fc:105::a56) |
| 18:59:28 | → | pfurla-matrix joins (~pedrofurl@2001:470:69fc:105::1:51d7) |
| 18:59:28 | → | thejuan24f[m] joins (~thejuan2m@2001:470:69fc:105::1:6569) |
| 18:59:28 | → | cstml[m] joins (~cstmlmatr@2001:470:69fc:105::1:5c07) |
| 18:59:28 | → | ParsaAlizadeh[m] joins (~lizadehma@2001:470:69fc:105::1:65a4) |
| 18:59:28 | → | zwro[m] joins (~zwromatri@2001:470:69fc:105::1d4) |
| 18:59:29 | → | mmos[m] joins (~mmosmatri@2001:470:69fc:105::1:8340) |
| 18:59:35 | → | alex[m]1234567 joins (~alexchete@2001:470:69fc:105::1:1001) |
| 18:59:38 | → | jchia[m] joins (~jchiamatr@2001:470:69fc:105::c50b) |
| 18:59:38 | → | sekun[m] joins (~hsekmatri@2001:470:69fc:105::d18f) |
| 18:59:38 | → | Michal[m] joins (~oomiguelm@2001:470:69fc:105::1:5ab0) |
| 18:59:38 | → | sjanssen joins (~sjanssenm@2001:470:69fc:105::1:61d8) |
| 18:59:38 | → | craige[m] joins (~craigemcw@2001:470:69fc:105::35f1) |
| 18:59:38 | → | soft joins (~soft@2001:470:69fc:105::c75) |
| 18:59:39 | → | justosophy[m] joins (~justosoph@2001:470:69fc:105::572f) |
| 18:59:39 | → | RosarioPulella[m joins (~rosariopu@2001:470:69fc:105::a57) |
| 18:59:39 | → | EkaiZend[m] joins (~ekai-zend@2001:470:69fc:105::1:7756) |
| 18:59:39 | → | wysteriary[m] joins (~wysteriar@2001:470:69fc:105::a42e) |
| 18:59:39 | → | tripa[m] joins (~tripamatr@2001:470:69fc:105::1:4f7e) |
| 18:59:39 | → | Morrow[m] joins (~morrowmma@2001:470:69fc:105::1d0) |
| 18:59:40 | → | Yehoshua joins (~yehoshua@2001:470:69fc:105::1:593f) |
| 18:59:40 | → | litharn[m] joins (~litharnma@2001:470:69fc:105::1:8336) |
| 18:59:40 | → | eoiles[m] joins (~eoilesmat@2001:470:69fc:105::1:6164) |
| 18:59:40 | → | cherryblossom[m] joins (~cherryblo@2001:470:69fc:105::b789) |
| 18:59:40 | → | bb010g joins (~bb010g@2001:470:69fc:105::9a5) |
| 18:59:40 | → | afotgkmnzj7asv3r joins (~afotgkmnz@2001:470:69fc:105::c24b) |
| 18:59:40 | → | yehoshuapw joins (~yehoshuap@2001:470:69fc:105::a5f) |
| 18:59:40 | → | Nate[m] joins (~m52957mat@2001:470:69fc:105::1:591a) |
| 18:59:40 | → | benjamin[m]123 joins (~benjaminm@2001:470:69fc:105::1:3f2f) |
| 18:59:40 | → | phuegrvs[m] joins (~phuegrvsm@2001:470:69fc:105::1:65e4) |
| 18:59:40 | → | octeep[m] joins (~octeepoct@2001:470:69fc:105::1:3dbf) |
| 18:59:41 | → | oak- joins (~oakuniver@2001:470:69fc:105::fcd) |
| 18:59:41 | → | nomeata joins (~nomeata@2001:470:69fc:105::1:5ed4) |
| 18:59:42 | → | throwaaaa[m] joins (~throwaaaa@2001:470:69fc:105::1:6fe6) |
| 18:59:42 | → | Sixto[m] joins (~provornyc@2001:470:69fc:105::1:74df) |
| 18:59:42 | → | sofviic[m] joins (~sofviicma@2001:470:69fc:105::1:51fd) |
| 18:59:42 | → | kalxd[m] joins (~kalxdmatr@2001:470:69fc:105::1:576e) |
| 18:59:42 | → | jesser[m] joins (~jessermat@2001:470:69fc:105::d5ae) |
| 18:59:42 | → | codygman[m] joins (~codygman@2001:470:69fc:105::b4ba) |
| 18:59:42 | → | simmsb joins (~simmsb@2001:470:69fc:105::1:55c3) |
| 18:59:43 | → | james[m]123 joins (~jamesnina@2001:470:69fc:105::1:4203) |
| 19:00:39 | × | zer0bitz quits (~zer0bitz@2001:2003:f74d:b800:7d8e:cf48:737f:ec3) (Read error: Connection reset by peer) |
| 19:01:12 | → | ProfSimm joins (~ProfSimm@87.227.196.109) |
| 19:01:23 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 19:02:44 | → | zer0bitz joins (~zer0bitz@2001:2003:f74d:b800:50b5:b57f:7251:ce23) |
| 19:04:18 | × | argento quits (~argent0@168-227-97-34.ptr.westnet.com.ar) (Quit: leaving) |
| 19:05:16 | → | [_] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 19:05:51 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 276 seconds) |
| 19:06:12 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 250 seconds) |
| 19:09:22 | × | kspalaiologos quits (~kspalaiol@user/kspalaiologos) (Quit: Leaving) |
| 19:10:26 | × | deadmarshal quits (~deadmarsh@95.38.113.93) (Ping timeout: 256 seconds) |
| 19:10:55 | → | Null_A joins (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) |
| 19:11:28 | × | Null_A quits (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) (Read error: Connection reset by peer) |
| 19:12:49 | → | Null_A joins (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) |
| 19:14:08 | × | Null_A quits (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) (Remote host closed the connection) |
| 19:14:41 | → | Null_A joins (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) |
| 19:15:57 | × | Topik[m] quits (~topikmatr@2001:470:69fc:105::a082) (Quit: Client limit exceeded: 20000) |
| 19:16:38 | × | siraben quits (~siraben@user/siraben) (Quit: Client limit exceeded: 20000) |
| 19:16:38 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 19:16:41 | × | ormaaj quits (~ormaaj@user/ormaaj) (Quit: Client limit exceeded: 20000) |
| 19:17:03 | × | kadoban quits (~kadoban@user/kadoban) (Quit: Client limit exceeded: 20000) |
| 19:17:04 | × | peddie quits (~peddie@2001:470:69fc:105::25d) (Quit: Client limit exceeded: 20000) |
| 19:17:04 | × | fgaz quits (~fgaz@2001:470:69fc:105::842) (Quit: Client limit exceeded: 20000) |
| 19:17:05 | × | denbrahe quits (~denbrahe@2001:470:69fc:105::19c0) (Quit: Client limit exceeded: 20000) |
| 19:17:06 | × | mahene[m] quits (~mahenemat@2001:470:69fc:105::1:6a93) (Quit: Client limit exceeded: 20000) |
| 19:17:12 | × | Arathorn quits (~arathorn@2001:470:69fc:105::1f) (Quit: Client limit exceeded: 20000) |
| 19:17:15 | × | juhp[m] quits (~juhpmatri@2001:470:69fc:105::6e9) (Quit: Client limit exceeded: 20000) |
| 19:17:15 | × | psydroid quits (~psydroid@user/psydroid) (Quit: Client limit exceeded: 20000) |
| 19:17:17 | × | wildsebastian quits (~wildsebas@2001:470:69fc:105::1:14b1) (Quit: Client limit exceeded: 20000) |
| 19:17:18 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: Client limit exceeded: 20000) |
| 19:17:18 | × | Las[m] quits (~lasmatrix@2001:470:69fc:105::74e) (Quit: Client limit exceeded: 20000) |
| 19:17:21 | × | cdsmith quits (~cdsmithma@2001:470:69fc:105::284) (Quit: Client limit exceeded: 20000) |
| 19:17:35 | × | hsiktas[m] quits (~hsiktasm]@2001:470:69fc:105::30d4) (Quit: Client limit exceeded: 20000) |
| 19:17:48 | × | Tisoxin quits (~ikosit@user/ikosit) (Quit: Client limit exceeded: 20000) |
| 19:18:06 | × | Null_A quits (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Remote host closed the connection) |
| 19:18:10 | × | ongy[m] quits (~ongymatri@2001:470:69fc:105::5018) (Quit: Client limit exceeded: 20000) |
| 19:18:11 | → | klf joins (~klf@66.220.205.98) |
| 19:18:12 | × | vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Client limit exceeded: 20000) |
| 19:18:16 | × | amesgen[m] quits (~amesgenm]@2001:470:69fc:105::82b) (Quit: Client limit exceeded: 20000) |
| 19:18:16 | × | unclechu quits (~unclechu@2001:470:69fc:105::354) (Quit: Client limit exceeded: 20000) |
| 19:18:23 | × | ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Quit: Client limit exceeded: 20000) |
| 19:18:58 | × | unrooted quits (~unrooted@2001:470:69fc:105::a4a) (Quit: Client limit exceeded: 20000) |
| 19:19:11 | × | maralorn quits (~maralorn@2001:470:69fc:105::251) (Quit: Client limit exceeded: 20000) |
| 19:19:38 | × | carmysilna quits (~brightly-@2001:470:69fc:105::2190) (Quit: Client limit exceeded: 20000) |
| 19:19:44 | × | Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Quit: free()) |
| 19:19:45 | × | zfnmxt quits (~zfnmxtzfn@2001:470:69fc:105::2b32) (Quit: Client limit exceeded: 20000) |
| 19:19:52 | → | Null_A joins (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) |
| 19:19:57 | × | quantum quits (~quantum@user/quantum/x-8556232) (Quit: Client limit exceeded: 20000) |
| 19:20:02 | × | Deide quits (~deide@user/deide) (Quit: Client limit exceeded: 20000) |
| 19:20:17 | × | bitonic quits (~bitonic@2001:470:69fc:105::1812) (Quit: Client limit exceeded: 20000) |
| 19:20:31 | × | maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Quit: Client limit exceeded: 20000) |
| 19:21:06 | × | Null_A quits (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) (Remote host closed the connection) |
| 19:23:09 | × | Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Quit: Client limit exceeded: 20000) |
| 19:23:11 | × | jmcantrell quits (~jmcantrel@user/jmcantrell) (Quit: Client limit exceeded: 20000) |
| 19:23:15 | × | jinsun_ quits (~jinsun@user/jinsun) (Quit: Client limit exceeded: 20000) |
| 19:23:16 | × | jneira[m] quits (~jneiramat@2001:470:69fc:105::d729) (Quit: Client limit exceeded: 20000) |
| 19:23:20 | × | xbreu quits (~xbreu@2001:470:69fc:105::1:5061) (Quit: Client limit exceeded: 20000) |
| 19:23:32 | × | smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Quit: Client limit exceeded: 20000) |
| 19:23:33 | × | JoseC[m] quits (~jmcardonm@2001:470:69fc:105::1:7539) (Quit: Client limit exceeded: 20000) |
| 19:24:27 | → | Null_A joins (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) |
| 19:25:11 | × | Christoph[m] quits (~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: Client limit exceeded: 20000) |
| 19:25:16 | × | AkechiShiro quits (~licht@user/akechishiro) (Ping timeout: 250 seconds) |
| 19:25:17 | × | DemiMarieObenour quits (~alwayscur@2001:470:69fc:105::4886) (Quit: Client limit exceeded: 20000) |
| 19:25:34 | × | ac quits (~aloiscoch@2001:470:69fc:105::65) (Quit: Client limit exceeded: 20000) |
| 19:25:39 | × | ManofLetters[m] quits (~manoflett@2001:470:69fc:105::3be) (Quit: Client limit exceeded: 20000) |
| 19:25:40 | × | thejuan24f[m] quits (~thejuan2m@2001:470:69fc:105::1:6569) (Quit: Client limit exceeded: 20000) |
| 19:25:44 | × | SawyerBergeron[m quits (~sawyerber@2001:470:69fc:105::3036) (Quit: Client limit exceeded: 20000) |
| 19:25:50 | × | Null_A quits (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) (Read error: Connection reset by peer) |
| 19:26:01 | × | ParsaAlizadeh[m] quits (~lizadehma@2001:470:69fc:105::1:65a4) (Quit: Client limit exceeded: 20000) |
| 19:26:02 | × | pfurla-matrix quits (~pedrofurl@2001:470:69fc:105::1:51d7) (Quit: Client limit exceeded: 20000) |
| 19:26:04 | × | fendor[m] quits (~fendormat@2001:470:69fc:105::fcbd) (Quit: Client limit exceeded: 20000) |
| 19:26:05 | × | fcortesi quits (~fcortesi@2001:470:69fc:105::f3a9) (Quit: Client limit exceeded: 20000) |
| 19:26:06 | × | marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Quit: Client limit exceeded: 20000) |
| 19:27:41 | → | Null_A joins (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) |
| 19:28:42 | × | Null_A quits (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) (Remote host closed the connection) |
| 19:28:56 | × | finalti[m] quits (~finaltima@2001:470:69fc:105::d909) (Quit: Client limit exceeded: 20000) |
| 19:29:03 | × | zwro[m] quits (~zwromatri@2001:470:69fc:105::1d4) (Quit: Client limit exceeded: 20000) |
| 19:29:46 | → | Null_A joins (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) |
| 19:30:33 | → | sm joins (~sm@plaintextaccounting/sm) |
| 19:30:33 | <sm> | whatif: try cabal repl |
| 19:31:06 | × | Null_A quits (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) (Read error: Connection reset by peer) |
| 19:31:17 | <sm> | or cabal exec -- runghc a.hs |
| 19:31:54 | × | reza[m] quits (~rezaphone@2001:470:69fc:105::3eda) (Quit: Client limit exceeded: 20000) |
| 19:32:56 | → | Null_A joins (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) |
| 19:33:06 | × | flipchan quits (~filip@188-169-255-31.dsl.utg.ge) (Ping timeout: 256 seconds) |
| 19:34:05 | × | Null_A quits (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) (Remote host closed the connection) |
| 19:37:08 | → | Guillaum[m] joins (~guiboumat@2001:470:69fc:105::1:72ac) |
| 19:37:14 | <Guillaum[m]> | Is there a way to tell cabal to build a plan will minimizing download/build. e.g. if all the needed packages are already available in my package database, use them. |
| 19:42:07 | <maerwald> | hmm, I don't think so |
| 19:42:12 | → | juhp[m] joins (~juhpmatri@2001:470:69fc:105::6e9) |
| 19:42:12 | → | fgaz joins (~fgaz@2001:470:69fc:105::842) |
| 19:42:13 | → | peddie joins (~peddie@2001:470:69fc:105::25d) |
| 19:42:13 | → | cdsmith joins (~cdsmithma@2001:470:69fc:105::284) |
| 19:42:27 | → | amesgen[m] joins (~amesgenm]@2001:470:69fc:105::82b) |
| 19:42:41 | → | JoseC[m] joins (~jmcardonm@2001:470:69fc:105::1:7539) |
| 19:42:41 | → | zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32) |
| 19:42:41 | → | kadoban joins (~kadoban@user/kadoban) |
| 19:42:41 | → | ericson2314 joins (~ericson23@2001:470:69fc:105::70c) |
| 19:42:41 | → | Arathorn joins (~arathorn@2001:470:69fc:105::1f) |
| 19:42:41 | → | Topik[m] joins (~topikmatr@2001:470:69fc:105::a082) |
| 19:42:42 | → | unclechu joins (~unclechu@2001:470:69fc:105::354) |
| 19:42:42 | → | maralorn joins (~maralorn@2001:470:69fc:105::251) |
| 19:42:42 | → | reza[m] joins (~rezaphone@2001:470:69fc:105::3eda) |
| 19:42:42 | → | quantum joins (~quantum@user/quantum/x-8556232) |
| 19:42:42 | → | marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8) |
| 19:42:42 | → | finalti[m] joins (~finaltima@2001:470:69fc:105::d909) |
| 19:42:56 | → | denbrahe joins (~denbrahe@2001:470:69fc:105::19c0) |
| 19:42:56 | → | Las[m] joins (~lasmatrix@2001:470:69fc:105::74e) |
| 19:43:08 | → | mahene[m] joins (~mahenemat@2001:470:69fc:105::1:6a93) |
| 19:43:08 | → | hsiktas[m] joins (~hsiktasm]@2001:470:69fc:105::30d4) |
| 19:43:08 | → | Deide joins (~deide@user/deide) |
| 19:43:08 | → | Artem[m] joins (~artemtype@2001:470:69fc:105::75b) |
| 19:43:08 | → | psydroid joins (~psydroid@user/psydroid) |
| 19:43:08 | → | Christoph[m] joins (~hpotsirhc@2001:470:69fc:105::2ff8) |
| 19:43:22 | → | ongy[m] joins (~ongymatri@2001:470:69fc:105::5018) |
| 19:43:22 | → | jneira[m] joins (~jneiramat@2001:470:69fc:105::d729) |
| 19:43:22 | → | siraben joins (~siraben@user/siraben) |
| 19:43:23 | → | smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32) |
| 19:43:23 | → | SawyerBergeron[m joins (~sawyerber@2001:470:69fc:105::3036) |
| 19:43:23 | → | Tisoxin joins (~ikosit@user/ikosit) |
| 19:43:23 | → | ManofLetters[m] joins (~manoflett@2001:470:69fc:105::3be) |
| 19:43:23 | → | carmysilna joins (~brightly-@2001:470:69fc:105::2190) |
| 19:43:23 | → | fendor[m] joins (~fendormat@2001:470:69fc:105::fcbd) |
| 19:43:23 | → | DemiMarieObenour joins (~alwayscur@2001:470:69fc:105::4886) |
| 19:43:23 | → | vaibhavsagar[m] joins (~vaibhavsa@2001:470:69fc:105::ffe) |
| 19:43:23 | → | jmcantrell joins (~jmcantrel@user/jmcantrell) |
| 19:43:24 | → | maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee) |
| 19:43:24 | → | wildsebastian joins (~wildsebas@2001:470:69fc:105::1:14b1) |
| 19:43:24 | → | jinsun_ joins (~jinsun@user/jinsun) |
| 19:43:24 | → | fcortesi joins (~fcortesi@2001:470:69fc:105::f3a9) |
| 19:43:25 | → | Null_A joins (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) |
| 19:43:37 | → | xbreu joins (~xbreu@2001:470:69fc:105::1:5061) |
| 19:43:38 | → | ormaaj joins (~ormaaj@user/ormaaj) |
| 19:43:56 | → | ac joins (~aloiscoch@2001:470:69fc:105::65) |
| 19:43:56 | → | bitonic joins (~bitonic@2001:470:69fc:105::1812) |
| 19:43:56 | → | unrooted joins (~unrooted@2001:470:69fc:105::a4a) |
| 19:44:08 | → | pfurla-matrix joins (~pedrofurl@2001:470:69fc:105::1:51d7) |
| 19:44:08 | → | thejuan24f[m] joins (~thejuan2m@2001:470:69fc:105::1:6569) |
| 19:44:22 | → | ParsaAlizadeh[m] joins (~lizadehma@2001:470:69fc:105::1:65a4) |
| 19:44:35 | → | zwro[m] joins (~zwromatri@2001:470:69fc:105::1d4) |
| 19:45:05 | × | Null_A quits (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) (Read error: Connection reset by peer) |
| 19:45:13 | → | CiaoSen joins (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 19:46:02 | → | Null_A joins (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) |
| 19:46:18 | <maerwald> | that would require the solver to know about what you have downloaded etc... I don't think it has that information sclv? |
| 19:47:09 | × | Null_A quits (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) (Read error: Connection reset by peer) |
| 19:48:07 | → | Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius) |
| 19:51:19 | → | Null_A joins (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) |
| 19:51:28 | <sm> | For reporting program-terminating error messages in IO, I'd like to switch from fail to error, because fail prints "user error" and extra parentheses. Do you see any downside ? Are they equivalent ? |
| 19:51:29 | <sm> | g'day all |
| 19:51:34 | <sm> | (I dug through the source but couldn't quite tell) |
| 19:51:38 | <sm> | maybe they're different kinds of exceptions, and fail's is easier to catch. But that sounds ok. |
| 19:52:14 | → | shriekingnoise joins (~shrieking@201.231.16.156) |
| 19:52:33 | × | Null_A quits (~null_a@2601:645:8700:2290:3470:fb13:1e9a:e210) (Read error: Connection reset by peer) |
| 19:53:31 | → | FreedomConvoy joins (~FreedomCo@bras-base-lchtpq0202w-grc-14-174-91-187-149.dsl.bell.ca) |
| 19:53:47 | <c_wraith> | error is a bottom, but fail is different. That can affect the way GHC treats the error condition. |
| 19:54:22 | <c_wraith> | If you wanted control over the error type as well as its timing, you should use throwIO along with creating an exception of your desired type |
| 19:54:33 | <hololeap> | Warning: -rtsopts and -with-rtsopts have no effect with -shared. -- why is this? |
| 19:55:08 | <hololeap> | is it because the RTS is no longer bundled with the executable when you use -shared ? |
| 19:57:44 | → | Null_A joins (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) |
| 19:57:45 | × | Gurkenglas quits (~Gurkengla@dslb-090-186-104-244.090.186.pools.vodafone-ip.de) (Ping timeout: 250 seconds) |
| 19:58:30 | × | Null_A quits (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Remote host closed the connection) |
| 20:02:26 | <hololeap> | I think I found the right section of the GHC docs |
| 20:02:49 | → | Null_A joins (~null_a@2601:645:8700:2290:c416:44d3:5d02:2aca) |
| 20:03:02 | × | Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Quit: free()) |
| 20:03:11 | <sm> | c_wraith: thanks. I'm not crystal clear but I think in my situation they are effectively equivalent |
| 20:03:12 | → | merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
| 20:03:59 | <sm> | throwIO for better control, that makes sense. |
| 20:04:21 | × | Null_A quits (~null_a@2601:645:8700:2290:c416:44d3:5d02:2aca) (Remote host closed the connection) |
| 20:04:42 | × | retroid_ quits (~retro@2e40edd9.skybroadband.com) (Ping timeout: 250 seconds) |
| 20:06:37 | → | Null_A joins (~null_a@2601:645:8700:2290:c416:44d3:5d02:2aca) |
| 20:07:59 | <hololeap> | I'm not finding this in the cabal docs so far. when I run `cabal configure --ghc-options="..."`, it adds `ghc-options:` inside two stanzas: `package *` and `program-options` |
| 20:08:14 | <c_wraith> | sm: throwIO creates an IO action that throws the exception when it's executed. error creates an expression that throws the exception when it's evaluated. The former is less up to the whims of the optimizer, for instance. IO actions are executed serially |
| 20:08:22 | <hololeap> | what is this program-options stanza and how does it differ from the other one? |
| 20:08:57 | → | coot joins (~coot@213.134.190.95) |
| 20:09:29 | → | cynomys joins (~cynomys@user/cynomys) |
| 20:10:45 | × | Null_A quits (~null_a@2601:645:8700:2290:c416:44d3:5d02:2aca) (Ping timeout: 250 seconds) |
| 20:13:37 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 20:14:24 | <sm> | nod |
| 20:15:37 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 20:17:16 | × | FreedomConvoy quits (~FreedomCo@bras-base-lchtpq0202w-grc-14-174-91-187-149.dsl.bell.ca) (K-Lined) |
| 20:19:37 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
| 20:23:05 | × | [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 250 seconds) |
| 20:29:16 | → | vysn joins (~vysn@user/vysn) |
| 20:32:18 | × | merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
| 20:32:34 | → | briandeaed joins (~root@185.234.208.208.r.toneticgroup.pl) |
| 20:35:48 | × | son0p quits (~ff@2800:484:1d81:b700:d40b:900:b387:320) (Ping timeout: 268 seconds) |
| 20:36:39 | → | neurocyte0917090 joins (~neurocyte@user/neurocyte) |
| 20:37:04 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 20:39:47 | → | Erutuon joins (~Erutuon@user/erutuon) |
| 20:42:53 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 20:44:23 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 20:47:36 | × | xff0x quits (~xff0x@2001:1a81:52f3:1d00:e2c8:a45c:f0af:d33) (Ping timeout: 250 seconds) |
| 20:47:54 | × | soxen quits (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds) |
| 20:50:20 | → | madjestic joins (~madjestic@88-159-247-120.fixed.kpn.net) |
| 20:51:34 | <dminuoso> | monochrom: Thank you for your objections. As for the "thunk vs expression" terminology, it's an interesting choice - can people accept with just arbitrary semantics without envisioning some arbitrary specific model of implementation? |
| 20:52:16 | <dminuoso> | I actively delibered whether to just denominate these as lazy (let's for the sake of discussion also equate lazy and non-strict here) expressions |
| 20:53:28 | <dminuoso> | Perhaps I should engage more in just talking about semantics, but at the same time giving simplified models of explanation (i.e. equating a specific implementation with the semantics) can be a simpler way to learn something. |
| 20:53:38 | → | pavonia joins (~user@user/siracusa) |
| 20:54:04 | <dminuoso> | It's how we teach electrons as balls flying around an atom, something that is provably false. |
| 20:54:29 | → | soxen joins (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) |
| 20:55:18 | <dminuoso> | (Which too is precluded by a false dichotomy) |
| 20:55:35 | × | Hash quits (~Hash@hashsecurity.org) (K-Lined) |
| 20:56:04 | → | Null_A joins (~null_a@2601:645:8700:2290:c416:44d3:5d02:2aca) |
| 20:56:24 | × | Morrow quits (~user@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 256 seconds) |
| 20:57:27 | <dminuoso> | As for the "less lazy", that intentionally was a pedagogic simplification. Also, in case you didnt catch it, my version of foldl' is strictly (the pun!) speaking is slightly different in strictness from the original, something I did intentional as explaining a function with a bang pattern is far simpler than `seq` - and the implementation was easy enough to get the gist of it across. |
| 20:57:29 | × | Null_A quits (~null_a@2601:645:8700:2290:c416:44d3:5d02:2aca) (Remote host closed the connection) |
| 20:58:12 | → | Morrow joins (~user@bzq-110-168-31-106.red.bezeqint.net) |
| 20:59:20 | <dminuoso> | I recently started having a lot of discussions with other people as well as my girlfriend, who works as a teacher, about how to properly simplify models in explanations. When do I annotate "this is just a simplification, but", when do I intentionally hide details "planet orbits are circles", or when do I tell blatant lies for simpler world models "electrons fly like balls around atoms" |
| 20:59:52 | <dminuoso> | Perhaps I should look up on some literature on this, there ought to be a lot of opinions and experiences |
| 21:00:14 | → | Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius) |
| 21:00:31 | → | Null_A joins (~null_a@2601:645:8700:2290:5c09:f5f1:57b7:d1d5) |
| 21:00:34 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Remote host closed the connection) |
| 21:01:03 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 21:01:07 | × | Tuplanolla quits (~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) (Quit: Leaving.) |
| 21:01:09 | × | Null_A quits (~null_a@2601:645:8700:2290:5c09:f5f1:57b7:d1d5) (Read error: Connection reset by peer) |
| 21:02:19 | × | Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Max SendQ exceeded) |
| 21:02:26 | × | alp quits (~alp@user/alp) (Ping timeout: 245 seconds) |
| 21:02:48 | × | hololeap quits (~hololeap@user/hololeap) (Excess Flood) |
| 21:03:25 | → | Null_A joins (~null_a@2601:645:8700:2290:5c09:f5f1:57b7:d1d5) |
| 21:03:41 | → | Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius) |
| 21:03:41 | × | zer0bitz quits (~zer0bitz@2001:2003:f74d:b800:50b5:b57f:7251:ce23) (Ping timeout: 245 seconds) |
| 21:03:56 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
| 21:04:10 | → | hololeap joins (~hololeap@user/hololeap) |
| 21:04:34 | → | cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
| 21:05:28 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
| 21:10:02 | → | xff0x joins (~xff0x@2001:1a81:52f3:1d00:e2c8:a45c:f0af:d33) |
| 21:13:36 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 250 seconds) |
| 21:15:13 | → | nineonine joins (~nineonine@S0106a0ff7073d5d5.vf.shawcable.net) |
| 21:17:25 | → | hololeap_ joins (~hololeap@user/hololeap) |
| 21:17:27 | × | hololeap quits (~hololeap@user/hololeap) (Read error: Connection reset by peer) |
| 21:17:54 | × | max22- quits (~maxime@2a01cb0883359800a797759c8651134a.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
| 21:18:21 | → | jgeerds_ joins (~jgeerds@55d4a547.access.ecotel.net) |
| 21:18:44 | <jackdk> | my school chemistry class basically told us we were going to be told a series of less lying lies, but also gave us a guided tour of the major experiments which invalidated each model. I though that was cool |
| 21:18:52 | → | max22- joins (~maxime@2a01cb0883359800da3732762d8e896f.ipv6.abo.wanadoo.fr) |
| 21:21:10 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 21:21:40 | × | briandeaed quits (~root@185.234.208.208.r.toneticgroup.pl) (Quit: leaving) |
| 21:23:00 | <ephemient> | there's no right answer for everyone. some are going to get stuck on the wrong model, but you're not going to get through to many students without simplifications |
| 21:23:52 | × | cynomys quits (~cynomys@user/cynomys) (Quit: Lost terminal) |
| 21:24:11 | <dminuoso> | Sure, I dont think simple models are the point of discussion here. |
| 21:24:26 | × | davros quits (~davros@host86-185-61-1.range86-185.btcentralplus.com) (Ping timeout: 250 seconds) |
| 21:24:36 | → | lep joins (~lep@94.31.89.203) |
| 21:24:52 | <dminuoso> | Like a QM professor once put it "a model serves just to make predictions. If these predictions turn out to be true, the model is good - if not the model is not good. |
| 21:25:07 | <dminuoso> | So you can measure the quality in the number of false predictions. |
| 21:25:28 | <lep> | is there a way to have cabal tell me the path to an exe it just build? |
| 21:25:41 | <monochrom> | My first simplification is to commit to lazy evaluation even though the Haskell Report doesn't. My second simplification is I don't need the vocab "thunk". Hell I don't need "closure" either. |
| 21:25:42 | <dminuoso> | lep: Yes, `cabal list-bin <component-descr>` |
| 21:25:52 | <lep> | thanks! |
| 21:26:22 | <monochrom> | http://www.cs.utoronto.ca/~trebla/CSCC24-2021-Summer/03-haskell-evaluation.html is how I teach this stuff. |
| 21:26:42 | <dminuoso> | monochrom: I think its much simpler in the context of a course, where you can establish terminology and frame the students as you see fit. |
| 21:26:51 | <dminuoso> | The benefit of being a professor I suppose |
| 21:27:33 | × | hololeap_ quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds) |
| 21:28:50 | × | xsperry quits (~xs@user/xsperry) (Ping timeout: 268 seconds) |
| 21:29:02 | <lep> | also can i tell cabal to not create a backup file of cabal.project.local when i change a configuration? |
| 21:29:22 | <dminuoso> | Else a discussion would have to begin by establishing a particular choice of terminology and some context. Then, under the assumption the discussion partner is able to blindly relinquish themselves of their knowledge and beliefs, adopt yours, you can explain it in that sense. |
| 21:29:31 | <lep> | i guess i can remove it before calling configure |
| 21:29:47 | × | Null_A quits (~null_a@2601:645:8700:2290:5c09:f5f1:57b7:d1d5) (Remote host closed the connection) |
| 21:29:51 | → | cjb joins (~cjb@user/cjb) |
| 21:29:54 | <dminuoso> | lep: Mmm, calling configure is an odd thing to do in 2022 |
| 21:30:17 | <lep> | ok |
| 21:30:22 | <lep> | i have no idea of cabal |
| 21:30:35 | <lep> | i just have a flag which changes the build |
| 21:30:41 | <lep> | and i want to build both versions |
| 21:31:02 | <dminuoso> | lep: So I would keep two cabal.project.local files, containing the separate flags |
| 21:31:35 | <dminuoso> | And then invoke cabal twice with `cabal build --project-file cabal.project.local.flavorA && cabal build --project file cabal.project.local.flavorB` |
| 21:31:54 | <dminuoso> | If memory serves right, all `cabal configure` does in v2- mode is put out those flags into a cabal.project.local anyway |
| 21:32:07 | <lep> | nice, thanks agains |
| 21:32:09 | <lep> | -s |
| 21:34:22 | → | son0p joins (~ff@2800:484:1d81:b700:d40b:900:b387:320) |
| 21:36:12 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 21:36:22 | <lep> | so it replaces my project.cabal file? if i just do cabal build --project-file cabal.project.local.flavourA <target> i get an error |
| 21:36:24 | → | waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
| 21:36:32 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 21:38:42 | → | megaTherion joins (~therion@unix.io) |
| 21:42:18 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Ping timeout: 260 seconds) |
| 21:45:46 | × | _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
| 21:49:12 | → | ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
| 21:49:56 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 21:50:00 | → | doxen joins (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) |
| 21:50:44 | → | alp joins (~alp@user/alp) |
| 21:51:12 | × | thyriaen_ quits (~thyriaen@dynamic-077-191-211-108.77.191.pool.telefonica.de) (Quit: Leaving) |
| 21:52:08 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
| 21:52:35 | × | soxen quits (~bbrahms@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 250 seconds) |
| 21:52:57 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 21:53:02 | → | cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
| 21:54:31 | × | bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 245 seconds) |
| 21:55:13 | → | a6a45081-2b83 joins (~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507) |
| 22:03:49 | <dminuoso> | It rather emits to your cabal.project.local |
| 22:03:58 | <dminuoso> | Presumably it will backup whatever there is before |
| 22:04:20 | <dminuoso> | Your cabal.project and cabal.project.local represent the (stateful) build configuration for your project |
| 22:08:17 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:09:19 | → | Null_A joins (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) |
| 22:10:12 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 22:11:54 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 22:11:55 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 22:11:55 | → | wroathe joins (~wroathe@user/wroathe) |
| 22:15:44 | → | alx741 joins (~alx741@157.100.197.240) |
| 22:19:27 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 250 seconds) |
| 22:23:00 | × | a6a45081-2b83 quits (~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507) (Remote host closed the connection) |
| 22:23:10 | → | Codaraxis_ joins (~Codaraxis@user/codaraxis) |
| 22:24:35 | → | CHUD joins (~CHUD@host-80-41-89-108.as13285.net) |
| 22:25:58 | × | klf quits (~klf@66.220.205.98) (Quit: Leaving) |
| 22:26:12 | × | MatthiasG2 quits (~matthias@i6DFA01BB.versanet.de) (Quit: leaving) |
| 22:26:25 | ← | CHUD parts (~CHUD@host-80-41-89-108.as13285.net) () |
| 22:26:57 | × | Codaraxis quits (~Codaraxis@user/codaraxis) (Ping timeout: 240 seconds) |
| 22:28:53 | → | merijn joins (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
| 22:30:05 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Quit: ERC (IRC client for Emacs 27.1)) |
| 22:33:02 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 22:33:22 | → | jkaye joins (~jkaye@2601:281:8300:7530:d551:c5d6:10bb:b867) |
| 22:39:18 | × | max22- quits (~maxime@2a01cb0883359800da3732762d8e896f.ipv6.abo.wanadoo.fr) (Quit: Leaving) |
| 22:45:24 | × | Codaraxis_ quits (~Codaraxis@user/codaraxis) (Read error: Connection reset by peer) |
| 22:45:27 | → | Codaraxis__ joins (~Codaraxis@user/codaraxis) |
| 22:46:05 | × | tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:46:33 | → | lavaman joins (~lavaman@98.38.249.169) |
| 22:50:51 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
| 22:50:52 | × | lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
| 22:52:19 | → | charukiewicz joins (~charukiew@2600:1702:a90:2750:724d:7bff:fe2b:f560) |
| 22:53:41 | × | madjestic quits (~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 250 seconds) |
| 22:54:18 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 22:55:04 | <charukiewicz> | I'm trying to use pandocCompiler in my Hakyll site and have been fighting it for like an hour just to get it to preserve a target="_blank" tag when compiling <a> tags in an .html file. I've tried using pandocCompilerWith to enable custom readerExtensions/writerExtensions such as Ext_link_attributes which the docs seem to suggest should support passing through all the attributes, but I can't get it to change its behavior of |
| 22:55:04 | <charukiewicz> | omitting everything other than href, id, and class. Has anyone dealt with this? |
| 22:56:48 | <charukiewicz> | I'm at a point where I want to use TagSoup to traverse the parsed document and convert a class named "target--_blank" into the target="_blank" attribute, which I know will work, but is a terrible approach. |
| 22:56:56 | → | azimut_ joins (~azimut@gateway/tor-sasl/azimut) |
| 22:59:44 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Remote host closed the connection) |
| 22:59:51 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds) |
| 23:00:11 | → | burnsidesLlama joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 23:01:01 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 23:02:47 | × | merijn quits (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
| 23:03:18 | → | burnside_ joins (~burnsides@dhcp168-016.wadham.ox.ac.uk) |
| 23:04:10 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 23:04:36 | × | burnsidesLlama quits (~burnsides@dhcp168-016.wadham.ox.ac.uk) (Remote host closed the connection) |
| 23:09:02 | → | wyrd joins (~wyrd@gateway/tor-sasl/wyrd) |
| 23:10:16 | → | yauhsien joins (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) |
| 23:11:14 | <dminuoso> | Mmm, decisions decisions.. should I provide a Data instance but hide the data-constructor and only expose a smart constructor? |
| 23:11:24 | <dminuoso> | Or should I not provide a Data instance? |
| 23:11:28 | dminuoso | cant decide |
| 23:14:28 | × | Null_A quits (~null_a@c-98-210-133-39.hsd1.ca.comcast.net) (Read error: Connection reset by peer) |
| 23:14:41 | × | yauhsien quits (~yauhsien@61-231-37-18.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
| 23:15:30 | × | jkaye quits (~jkaye@2601:281:8300:7530:d551:c5d6:10bb:b867) (Quit: Leaving) |
| 23:16:02 | <EvanR> | it's great when math and logic do not apply https://i.imgur.com/02hZzOS.png |
| 23:16:50 | <dminuoso> | EvanR: hah, what is that? |
| 23:16:57 | <EvanR> | glsl |
| 23:17:26 | <dminuoso> | Is this implying that creating a can mutate m or n? |
| 23:17:49 | <dminuoso> | (Or their memory stores, rather?) |
| 23:17:53 | <EvanR> | no but who the F knows what else can happen xD |
| 23:19:22 | <davean> | dminuoso: I mean if you add numbers twice, no reason to think they add to the same thing |
| 23:19:31 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.) |
| 23:19:33 | <EvanR> | ??? |
| 23:19:34 | <dminuoso> | Oh mmm. |
| 23:19:41 | <dminuoso> | Yeah I see what you're getting at |
| 23:19:54 | <EvanR> | yeah if you're measuring a piece of lumber for cutting |
| 23:19:58 | <EvanR> | or using glsl |
| 23:20:05 | <hpc> | this is well known in ML circles |
| 23:20:11 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 23:20:47 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 23:20:51 | <davean> | dminuoso: I'm kinda confused why you think they might, thats not how math works. |
| 23:21:11 | <davean> | I've checked by running the calculations on a GPU |
| 23:21:13 | EvanR | kicks the sarcasm detector |
| 23:21:58 | <hpc> | i am 100.00000002% certain that davean is correct here |
| 23:23:45 | <EvanR> | this is more egregious than I'm used to with floats |
| 23:25:48 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:2541:beac:9acd:61a8) |
| 23:27:34 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 23:28:06 | × | mmhat quits (~mmh@55d4f2c4.access.ecotel.net) (Quit: WeeChat 3.4) |
| 23:28:36 | <ephemient> | even without talking about the GPU, on x86 CPUs you'll get different results from x87 vs SSE arithmetic, and a compiler could decide to use both… |
| 23:28:59 | <davean> | ephemient: Well, no, not EXACTLY. You CAN due to precision |
| 23:29:08 | <davean> | it depends when and how you do register moves |
| 23:29:33 | <EvanR> | does none of this happen in haskell because every float computation begins and ends in a heap object |
| 23:29:46 | <davean> | haha, no it CAN happen in Haskell |
| 23:29:54 | <davean> | Though we dropped x87 I think |
| 23:29:56 | <davean> | a few versions back |
| 23:30:07 | <EvanR> | ?_? |
| 23:30:08 | <ephemient> | well in practice any compilers targeting x86-64 are gonna be using SSE only anyhow |
| 23:30:42 | <davean> | ephemient: not entirely true |
| 23:30:47 | <EvanR> | so how much precision does SSE use |
| 23:30:53 | <ephemient> | I think SSE2 is implemented in all 64-bit processors except for some old atoms? |
| 23:30:56 | <davean> | 16, 32, or 64 bits |
| 23:31:09 | × | jgeerds_ quits (~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 250 seconds) |
| 23:31:16 | <davean> | But x87 does calculations in 80 bits, and stores and loads in 64 bits |
| 23:31:17 | × | mud quits (~mud@user/kadoban) (Ping timeout: 240 seconds) |
| 23:31:56 | <davean> | ephemient: In practice 80 bit floats are still evailable, you just need to use them right |
| 23:32:28 | <EvanR> | what do you call a compiler or property of compilation where the nonsense in Example 2 above is not possible |
| 23:32:29 | <ephemient> | there's also the fact that x86-32 abi used the x87 registers to pass floating point around, but x86-64 abi uses xmm registers |
| 23:32:38 | → | hololeap joins (~hololeap@user/hololeap) |
| 23:32:48 | <davean> | ephemient: broken! |
| 23:32:54 | <davean> | er, that was for EvanR |
| 23:33:00 | <EvanR> | broken? |
| 23:33:04 | <davean> | EvanR: Broken! |
| 23:33:05 | <ephemient> | if everything's already in xmm you have to do extra work to get it over to the x87 fpu |
| 23:33:05 | <EvanR> | or not-broken |
| 23:33:20 | <davean> | EvanR: Thats what we call a compiler that gets the same results when it adds the same floats twice |
| 23:33:27 | <EvanR> | >_> |
| 23:33:57 | <davean> | Theres some 128bit float support in SSE I think, I've never used it though |
| 23:34:11 | <davean> | EvanR: The reason x87 does 80 bits is very legitimate |
| 23:34:16 | <davean> | it just causes problems for high level languages |
| 23:34:21 | <EvanR> | I don't care about 80 bits |
| 23:34:33 | <monochrom> | Oh I know! Functional is when a and b are the same. Imperative is when a and b are different. :) |
| 23:34:35 | <EvanR> | I care about getting the same answer if you do the same thing |
| 23:34:54 | <EvanR> | use 80 bits or not |
| 23:35:07 | <davean> | EvanR: you DO get the same answer if you do the same thing, the problem is things like scheduling affect if they're the same thingh |
| 23:35:18 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 23:35:20 | <EvanR> | on paper, they look exactly the same |
| 23:35:27 | <EvanR> | i don't buy "x does not equal x, sorry" |
| 23:35:43 | <ephemient> | in two different contexts, they may be optimized differently |
| 23:35:47 | <EvanR> | depending on compiler, something could have happened between x and x |
| 23:35:51 | <davean> | EvanR: No, see, they *DON'T* look the same on paper, thats why x87 is 80 bits |
| 23:36:03 | <EvanR> | this paper |
| 23:36:05 | <davean> | EvanR: it comes from an engenering precion requirement |
| 23:36:08 | <EvanR> | a = m + n |
| 23:36:10 | <EvanR> | b = m + n |
| 23:36:15 | <ephemient> | or, the compiler might decide to compile them differently even if they're right next to each other, because it decides that's a better use of processor resources |
| 23:36:30 | <davean> | Your system just makes it basicly impossible to use x87 rigth |
| 23:36:40 | <davean> | ephemient: yep |
| 23:36:50 | <EvanR> | alright well, I prefer broken then |
| 23:36:51 | <davean> | I was just focusing on one side of the weirdness |
| 23:37:07 | <davean> | EvanR: we all prefer broken |
| 23:37:26 | <ephemient> | I think we're mostly coming to that conclusion anyhow |
| 23:37:51 | <davean> | x87 was great in the days of cooperative multiprocessing with your kernels writen in ASM |
| 23:38:10 | <davean> | now we can afford 128bit floats |
| 23:38:16 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 23:38:21 | <ephemient> | Java 17 killed strictfp (making it the default) so they're definitely not using x87 anymore |
| 23:38:41 | <EvanR> | I'm not even sure how 80 bits helps two 64bit additions |
| 23:38:57 | <EvanR> | wouldn't 80 bits only matter in a series of computations that stay 80 bits |
| 23:39:09 | <davean> | oh and I want to be clear we're talking bfloat here |
| 23:39:34 | <ephemient> | maybe your inputs come from other computations and have intermediate 80-bit forms |
| 23:39:50 | <davean> | EvanR: See thats the problem - your entire kernel isn't supposed to leave x87 |
| 23:40:09 | <davean> | its a *coprocessor* |
| 23:40:11 | <davean> | not an instruction set |
| 23:40:29 | <davean> | its a *second computer you get answers out of* |
| 23:40:39 | <EvanR> | the original GPU |
| 23:40:46 | <EvanR> | DOS can't be pure |
| 23:41:01 | <EvanR> | there's only 1 math coprocessor |
| 23:41:28 | <dminuoso> | davean: In shaders, you dont have general assurance of invariance |
| 23:41:44 | <dminuoso> | Which can lead to one operation being computed differently in different computation units |
| 23:42:17 | <EvanR> | and different computation units conveniently are all configured with various precisions? |
| 23:42:34 | <EvanR> | not your dad's parallelism |
| 23:42:40 | <davean> | dminuoso: No, shaders are all sorts of fucked up - esp because they deal with the SIMT model so your other branches can mess with you |
| 23:43:09 | × | DNH quits (~DNH@2a02:8108:1100:16d8:685d:59ed:4faf:3de1) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 23:43:45 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 23:43:45 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 23:43:45 | → | wroathe joins (~wroathe@user/wroathe) |
| 23:44:10 | <dminuoso> | EvanR: Sorry a weird typo. Compilation units. |
| 23:44:19 | <dminuoso> | EvanR: Reason being different optimizations |
| 23:44:40 | <EvanR> | so why do the different compilation units have different optimizations |
| 23:45:15 | <dminuoso> | Who knows. Optimizers do all kinds of funky things, maybe there's different levels of information available, different optimization passes that kick in because they spot funky things.. |
| 23:45:19 | <davean> | You can't just use floats without doing your numerical methods |
| 23:45:24 | <dminuoso> | Noboy can tell you why exactly the GHC simplifier does a particular thing either |
| 23:45:34 | <dminuoso> | It's a strange interaction from all passes |
| 23:46:48 | <SrPx> | github.com/kindelia/hvm feedbacks before I announce? :) |
| 23:46:52 | <dminuoso> | EvanR: And perhaps the GLSL compiler takes advantage of non-invariance, when its free to do "kind of correct" optimizations based on local context |
| 23:47:34 | monochrom | takes "premature optimization is the root of all evil" and deletes "premature". :) |
| 23:47:38 | <EvanR> | that's what the section is about, moving computations around as if they are pure, redoing them sometimes, but at different precision |
| 23:47:56 | × | Codaraxis__ quits (~Codaraxis@user/codaraxis) (Read error: Connection reset by peer) |
| 23:47:57 | → | Codaraxis_ joins (~Codaraxis@user/codaraxis) |
| 23:48:16 | <EvanR> | THAT seems broken |
| 23:49:38 | <EvanR> | it seems within this context "optimization" doesn't entail "leaving the original behavior intact" |
| 23:50:07 | <EvanR> | baby with the bathwater would take that and say why not return a black screen every time in the name of performance |
| 23:51:21 | <ephemient> | in the context of shaders, floating point is only approximately defined. as long as the graphics that come out look close enough |
| 23:52:42 | → | Ved2311 joins (~Ved2311@2600:1700:d840:2370:2c7f:af63:1c:7efc) |
| 23:53:09 | <monochrom> | Yeah "behaviour" allows a margin in this case. |
| 23:53:37 | <monochrom> | But the margin is not large enough to include black screen. |
| 23:55:07 | → | TonyStone31 joins (~TonyStone@2603-7080-8607-c36a-cdff-5348-04ff-b4e2.res6.spectrum.com) |
| 23:55:08 | × | TonyStone quits (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Quit: Leaving) |
| 23:55:10 | <monochrom> | People do not want to say "if sometimes you can afford more guard bits so you can be more accurate, don't, we want the original inaccuracy, because reproducible builds". |
| 23:55:11 | <EvanR> | so in general are you supposed to interpret every float computation as having some noisy envelope around it, as if you're doing physics xD |
| 23:55:11 | × | TonyStone31 quits (~TonyStone@2603-7080-8607-c36a-cdff-5348-04ff-b4e2.res6.spectrum.com) (Remote host closed the connection) |
| 23:55:28 | <monochrom> | I would. |
| 23:55:37 | → | TonyStone joins (~TonyStone@2603-7080-8607-c36a-cdff-5348-04ff-b4e2.res6.spectrum.com) |
| 23:55:38 | <EvanR> | which seems to defeat the purpose of digital computers |
| 23:56:09 | <monochrom> | Oh, "noise" "error" are just a simplified model. |
| 23:56:23 | <Axman6> | I found out the other day that on PPC, long double is implemented as a pair of doubles, giving 106 bits of precision but the same exponent, and this can lead to both subnormal and "supernormal" numbers |
| 23:56:38 | <Axman6> | The things you learn reading Apple's header files... |
| 23:57:22 | <monochrom> | The same way tossing a coin is modelled by probability "uncertainty" because I can't be bothered to take measurements and use Newtonian mechanics to determinize it. |
| 23:59:07 | <EvanR> | also, what about standards |
| 23:59:08 | × | alx741 quits (~alx741@157.100.197.240) (Quit: alx741) |
| 23:59:15 | <monochrom> | The same way I don't commit to more than "sorting takes O(n lg n)" because I can't be bothered to look at the exact hardware and calculate that it's exactly 45 n lg n + 3 n - 2 lg n microseconds. |
| 23:59:40 | × | charukiewicz quits (~charukiew@2600:1702:a90:2750:724d:7bff:fe2b:f560) (Remote host closed the connection) |
| 23:59:53 | <monochrom> | Right there the unknown constant multiplier and the unknown lower order terms are exactly noise and error. |
| 23:59:54 | <EvanR> | the standard doesn't really speak in terms of noise or random results |
All times are in UTC on 2022-01-30.