Logs on 2020-09-30 (freenode/#haskell)
| 00:00:02 | × | priyesh quits (~priyesh@84.39.117.57) () |
| 00:00:45 | × | ryansmccoy quits (~ryansmcco@156.96.151.132) (Ping timeout: 258 seconds) |
| 00:01:12 | → | mu_ joins (~mu@unaffiliated/mu) |
| 00:01:18 | → | ryansmccoy joins (~ryansmcco@156.96.151.132) |
| 00:02:58 | hackage | aeson-schemas 1.3.2 - Easily consume JSON data on-demand with type-safety https://hackage.haskell.org/package/aeson-schemas-1.3.2 (leapyear) |
| 00:04:56 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 00:05:11 | → | wroathe_ joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 00:05:11 | → | mu_ joins (~mu@unaffiliated/mu) |
| 00:05:37 | × | wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
| 00:06:50 | → | xcmw joins (~textual@dyn-72-33-0-89.uwnet.wisc.edu) |
| 00:07:33 | wroathe_ | is now known as wroathe |
| 00:09:09 | × | isovector1_ quits (~isovector@172.103.216.166.cable.tpia.cipherkey.com) (Quit: Leaving) |
| 00:11:17 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:12:53 | → | mirrorbird joins (~psutcliff@2a00:801:3fb:53b9:b09b:cd4e:4e4a:44a9) |
| 00:12:54 | × | alexm_ quits (~alexm_@161.8.233.138) () |
| 00:13:01 | × | mnrmnaughmnrgle quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 246 seconds) |
| 00:13:59 | × | pjb quits (~t@2a01cb04063ec50051c09997d608b3a3.ipv6.abo.wanadoo.fr) (Ping timeout: 272 seconds) |
| 00:14:50 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 00:15:12 | → | mu_ joins (~mu@unaffiliated/mu) |
| 00:15:52 | × | borne quits (~fritjof@200116b864231000537d5cc8226f9d9f.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
| 00:16:43 | × | wwwww quits (~wwwww@unaffiliated/wwwww) (Ping timeout: 260 seconds) |
| 00:18:14 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 00:18:49 | → | jedws joins (~jedws@121.209.139.222) |
| 00:18:49 | → | wwwww joins (~wwwww@unaffiliated/wwwww) |
| 00:20:23 | × | catkiki quits (~catkiki@m90-134-157-227.cust.tele2.hr) (Ping timeout: 260 seconds) |
| 00:22:33 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 00:23:01 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 264 seconds) |
| 00:24:18 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 00:26:03 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 00:26:13 | → | mu__ joins (~mu@unaffiliated/mu) |
| 00:26:38 | × | LKoen quits (~LKoen@lstlambert-657-1-123-43.w92-154.abo.wanadoo.fr) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”) |
| 00:27:05 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye) |
| 00:27:57 | → | nbloomf joins (~nbloomf@2600:1700:83e0:1f40:1975:ad5b:4777:bf80) |
| 00:33:15 | → | sagax joins (~sagax_nb@213.138.71.146) |
| 00:37:06 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 00:37:23 | × | mu__ quits (~mu@unaffiliated/mu) (Ping timeout: 240 seconds) |
| 00:40:28 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 260 seconds) |
| 00:41:19 | → | fog joins (a18146ab@gateway/web/cgi-irc/kiwiirc.com/ip.161.129.70.171) |
| 00:41:48 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds) |
| 00:43:06 | <fog> | hc: i was thinking about what you said about the presentation of structured concurrency starting from the dijkstra "goto considered harmful" and the corresponding "go statement considered harmful" and the parallels between the development of imperative programing and the corresponding containerised threading |
| 00:43:54 | <fog> | it seems like the progression was away from the turing tape style of jumping around within programs, to top down imperative style - and then to OOP and finally to functional programming |
| 00:44:42 | <fog> | basically the key part is not from "goto style" programing with explicit line numberings like "basic" to imperative, but from imperative to OOP and functional |
| 00:45:38 | <fog> | basically, this gives the "syntax tree" order of evaluation, where referencing functions or methods replaces imperative or goto style for calling different sub-parts of a piece of code / program |
| 00:46:09 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 00:46:58 | <fog> | then, "structured concurrency" is similar to this - that instead of parallel threads, in the shape of a list of lists, with order of evaluation in imperative style - from top to bottom in code - that instead, the "subprocess tree" is built into syntax referencing trees |
| 00:48:05 | <fog> | it seems then that lambda calculus, as an alternative way of ordering subcomponents of a program - has a duality with "structure concurrency" when supported by a similar syntax tree organising and referencing |
| 00:48:06 | × | ces quits (~ces@52d3ce3c.dynamic-ip.k-net.dk) (Quit: WeeChat 2.9) |
| 00:48:13 | × | elliott_ quits (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
| 00:48:43 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 00:49:08 | → | thir joins (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) |
| 00:49:09 | <fog> | the presentation of structured concurrency then seems natural to occur within kotlin, where they have power over the syntax of the language as part of the language (arguably the key component of kotlin) |
| 00:50:06 | <fog> | and the natural question to ask then, is what support do we have for structured concurrency - or the syntax tree of concurrent subthreading - do we have in haskell |
| 00:51:05 | <fog> | and similarly, what relation does structured concurrency have to lambda calculus - wrt to syntax trees, and how can this fit into the study of formal languages, particularly regarding type systems |
| 00:52:10 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 00:53:41 | × | zacts quits (~zacts@dragora/developer/zacts) (Ping timeout: 265 seconds) |
| 00:53:47 | × | thir quits (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 00:54:11 | × | obfusk quits (~quassel@a82-161-150-56.adsl.xs4all.nl) (Ping timeout: 240 seconds) |
| 00:54:41 | → | SRV_DW20 joins (~SRV_DW20@188.126.89.194) |
| 00:57:23 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 00:58:59 | → | elliott_ joins (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) |
| 01:01:36 | × | fog quits (a18146ab@gateway/web/cgi-irc/kiwiirc.com/ip.161.129.70.171) (Quit: Connection closed) |
| 01:01:56 | × | voyons_calisse quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer) |
| 01:02:20 | → | reallymemorable joins (~quassel@ip68-9-215-56.ri.ri.cox.net) |
| 01:02:39 | → | voyons_calisse joins (~dan@107-190-41-58.cpe.teksavvy.com) |
| 01:04:27 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds) |
| 01:05:17 | × | jwynn6 quits (~jwynn6@050-088-122-078.res.spectrum.com) (Ping timeout: 265 seconds) |
| 01:06:09 | → | woxip0 joins (~dixon@190.75.138.21) |
| 01:11:21 | → | obfusk joins (~quassel@a82-161-150-56.adsl.xs4all.nl) |
| 01:16:55 | × | nineonine quits (~nineonine@216.81.48.202) (Remote host closed the connection) |
| 01:19:36 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 01:20:08 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 260 seconds) |
| 01:22:00 | × | Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds) |
| 01:22:47 | → | fiQ- joins (~fiQ@mirkk.ninja) |
| 01:22:52 | × | Fernando-Basso[m quits (fernando-b@gateway/shell/matrix.org/x-bzveclrqdjopevvi) (Ping timeout: 244 seconds) |
| 01:22:53 | × | PotatoHatsue quits (berbermanp@gateway/shell/matrix.org/x-rhnnqgshpzwteayn) (Ping timeout: 244 seconds) |
| 01:22:53 | × | lnxw37d4 quits (lnxw37d4ma@gateway/shell/matrix.org/x-gkitpxsfpbgapswi) (Ping timeout: 244 seconds) |
| 01:22:55 | × | rednaZ[m] quits (r3dnazmatr@gateway/shell/matrix.org/x-pxthlvwirdzkfldr) (Ping timeout: 240 seconds) |
| 01:22:56 | × | DavSanchez[m]1 quits (davsanchez@gateway/shell/matrix.org/x-intvmspuzeodooky) (Ping timeout: 240 seconds) |
| 01:22:58 | × | mikr[m] quits (mikrdavral@gateway/shell/matrix.org/x-hwalopiqxtzxmuln) (Ping timeout: 240 seconds) |
| 01:22:58 | × | gcoakes[m] quits (gcoakesmat@gateway/shell/matrix.org/x-oqmnilbkbiprwtsk) (Ping timeout: 240 seconds) |
| 01:22:59 | × | jtojnar quits (jtojnarmat@gateway/shell/matrix.org/x-mzqqgajmshcqybbf) (Ping timeout: 240 seconds) |
| 01:22:59 | × | kbse[m] quits (kbsematrix@gateway/shell/matrix.org/x-sculxxdsyrrjjfti) (Ping timeout: 240 seconds) |
| 01:23:00 | → | Tristan- joins (~tristan@luna.whatbox.ca) |
| 01:23:16 | × | SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!) |
| 01:23:22 | × | johnnyboy[m] quits (gifumatrix@gateway/shell/matrix.org/x-srnthwvxcuzhennq) (Ping timeout: 244 seconds) |
| 01:23:23 | × | ciderpunx[m] quits (ciderpunxm@gateway/shell/matrix.org/x-ohxhmeveghuoordm) (Ping timeout: 244 seconds) |
| 01:23:24 | × | nihilazo quits (nihilazoma@gateway/shell/matrix.org/x-wvynfrgeooaehrwj) (Ping timeout: 244 seconds) |
| 01:23:24 | × | vaibhavsagar quits (vaibhavsag@gateway/shell/matrix.org/x-ykpkqyigflaojgkk) (Ping timeout: 244 seconds) |
| 01:23:24 | × | Ericson2314 quits (ericson231@gateway/shell/matrix.org/x-zonkcqyqfobqnkxa) (Ping timeout: 244 seconds) |
| 01:23:25 | × | psydruid quits (psydruidma@gateway/shell/matrix.org/x-txusvakrguymexoi) (Ping timeout: 240 seconds) |
| 01:23:25 | × | michaelpj1 quits (michaelpjm@gateway/shell/matrix.org/x-zdqnoycusovyxytr) (Ping timeout: 240 seconds) |
| 01:23:25 | × | iinuwa1 quits (iinuwamatr@gateway/shell/matrix.org/x-thwbsslmbetrqwug) (Ping timeout: 240 seconds) |
| 01:23:26 | × | Noughtmare[m] quits (naughtmare@gateway/shell/matrix.org/x-utoajxemuakmnoxf) (Ping timeout: 240 seconds) |
| 01:23:26 | × | srid quits (sridmatrix@gateway/shell/matrix.org/x-czutkscoikgmnogk) (Ping timeout: 240 seconds) |
| 01:23:26 | × | domenkozar[m] quits (domenkozar@NixOS/user/domenkozar) (Ping timeout: 240 seconds) |
| 01:23:27 | × | itai33[m] quits (itai33matr@gateway/shell/matrix.org/x-wnrutdelscmogfwp) (Ping timeout: 244 seconds) |
| 01:23:27 | × | GuillaumeChrel[m quits (guillaumec@gateway/shell/matrix.org/x-kshkczvcmipqxvet) (Ping timeout: 244 seconds) |
| 01:23:27 | × | unclechu quits (unclechuma@gateway/shell/matrix.org/x-lntdfkrgyhbmpftv) (Ping timeout: 244 seconds) |
| 01:23:32 | × | sureyeaah quits (shauryab98@gateway/shell/matrix.org/x-ixgowzetgwdpalkm) (Ping timeout: 260 seconds) |
| 01:23:32 | × | io_r_us[m] quits (commandlin@gateway/shell/matrix.org/x-qhnwvfdzptqgsudu) (Ping timeout: 260 seconds) |
| 01:23:33 | × | wangoe[m] quits (wangoematr@gateway/shell/matrix.org/x-doccrosmfaineuhr) (Ping timeout: 260 seconds) |
| 01:23:39 | × | fiQ2 quits (~fiQ@mirkk.ninja) (Ping timeout: 272 seconds) |
| 01:23:48 | × | Rembane quits (~Rembane@li346-36.members.linode.com) (Ping timeout: 260 seconds) |
| 01:23:56 | × | lambdaclan quits (lambdaclan@gateway/shell/matrix.org/x-ndsjwyfusbpfxije) (Ping timeout: 240 seconds) |
| 01:23:56 | × | siraben quits (sirabenmat@gateway/shell/matrix.org/x-dmnemwizldkhcqnq) (Ping timeout: 240 seconds) |
| 01:24:07 | × | acidjnk_new quits (~acidjnk@p200300d0c72378745c7b1a0a573f1493.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 01:24:07 | × | alexfmpe quits (alexfmpema@gateway/shell/matrix.org/x-qdsezkyvjisttceh) (Ping timeout: 260 seconds) |
| 01:24:07 | × | chreekat[m] quits (chreekatma@gateway/shell/matrix.org/x-linhirjvdrhofayv) (Ping timeout: 260 seconds) |
| 01:24:07 | × | jabruen[m] quits (jabruenmat@gateway/shell/matrix.org/x-jrbozatdhjtmoeer) (Ping timeout: 260 seconds) |
| 01:24:07 | × | sajith[m] quits (sajithmatr@gateway/shell/matrix.org/x-jadbtjneiqrtbrpb) (Ping timeout: 260 seconds) |
| 01:24:07 | × | theduke quits (thedukem1@gateway/shell/matrix.org/x-lcbmhqyekohotgxa) (Ping timeout: 260 seconds) |
| 01:24:08 | × | drozdziak1 quits (drozdziak1@gateway/shell/matrix.org/x-iagswoydzgfqnthb) (Ping timeout: 260 seconds) |
| 01:24:17 | × | maralorn quits (maralornma@gateway/shell/matrix.org/x-jcjdlorwwncednaz) (Ping timeout: 272 seconds) |
| 01:25:06 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 01:25:15 | → | Rembane joins (~Rembane@li346-36.members.linode.com) |
| 01:25:37 | → | SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net) |
| 01:25:44 | × | _Tristan_ quits (~tristan@luna.whatbox.ca) (Ping timeout: 246 seconds) |
| 01:26:07 | → | DavSanchez[m]1 joins (davsanchez@gateway/shell/matrix.org/x-oppjybenvaexbwaj) |
| 01:27:18 | → | io_r_us[m] joins (commandlin@gateway/shell/matrix.org/x-kjrwesnzoyenqgzx) |
| 01:27:48 | → | lambdaclan joins (lambdaclan@gateway/shell/matrix.org/x-rosqvrjyauthsfym) |
| 01:28:08 | → | siraben joins (sirabenmat@gateway/shell/matrix.org/x-zchkdzekdlwvohec) |
| 01:29:06 | → | nineonine joins (~nineonine@216-19-190-182.dyn.novuscom.net) |
| 01:29:06 | → | drozdziak1 joins (drozdziak1@gateway/shell/matrix.org/x-sjsrnouamiaxipfm) |
| 01:30:43 | → | chreekat[m] joins (chreekatma@gateway/shell/matrix.org/x-umxlgtkybcwevjvb) |
| 01:31:25 | → | jabruen[m] joins (jabruenmat@gateway/shell/matrix.org/x-mkrzwfdeygwnehax) |
| 01:31:27 | → | alexfmpe joins (alexfmpema@gateway/shell/matrix.org/x-svcqerpqtkauzjui) |
| 01:31:29 | → | sajith[m] joins (sajithmatr@gateway/shell/matrix.org/x-mvrgbpjqisezmtze) |
| 01:31:42 | × | alp quits (~alp@2a01:e0a:58b:4920:c58c:601c:cb46:bf0c) (Remote host closed the connection) |
| 01:31:43 | → | theduke joins (thedukem1@gateway/shell/matrix.org/x-tcbncmkaetcradmc) |
| 01:32:02 | → | alp joins (~alp@2a01:e0a:58b:4920:88a:e825:8145:b9ee) |
| 01:33:14 | → | rednaZ[m] joins (r3dnazmatr@gateway/shell/matrix.org/x-iwlzundtzequgzee) |
| 01:33:14 | → | maralorn joins (maralornma@gateway/shell/matrix.org/x-aoxblgoncgxjmpkk) |
| 01:33:27 | → | Fernando-Basso[m joins (fernando-b@gateway/shell/matrix.org/x-qopgtqduxfsjtqbe) |
| 01:33:31 | × | nineonine quits (~nineonine@216-19-190-182.dyn.novuscom.net) (Remote host closed the connection) |
| 01:33:45 | → | nineonine joins (~nineonine@216-19-190-182.dyn.novuscom.net) |
| 01:33:50 | → | jtojnar joins (jtojnarmat@gateway/shell/matrix.org/x-oypragrwlxqgnchv) |
| 01:34:01 | → | lnxw37d4 joins (lnxw37d4ma@gateway/shell/matrix.org/x-mgiougcltykvpgks) |
| 01:34:07 | → | kbse[m] joins (kbsematrix@gateway/shell/matrix.org/x-aveamwrjewluqtec) |
| 01:34:16 | → | gcoakes[m] joins (gcoakesmat@gateway/shell/matrix.org/x-flwpwnktpkouxpwp) |
| 01:34:47 | → | nihilazo joins (nihilazoma@gateway/shell/matrix.org/x-nhbxnzosodzhmhyx) |
| 01:35:01 | → | Ericson2314 joins (ericson231@gateway/shell/matrix.org/x-vfqdqvnkedexzixl) |
| 01:36:26 | × | Benett quits (~Benett@unaffiliated/benett) (Remote host closed the connection) |
| 01:36:44 | → | johnnyboy[m] joins (gifumatrix@gateway/shell/matrix.org/x-xczqbcixpmjhwvre) |
| 01:36:45 | → | mikr[m] joins (mikrdavral@gateway/shell/matrix.org/x-iihzpvcobeurnjqm) |
| 01:36:46 | <woxip0> | leave |
| 01:37:18 | <woxip0> | quit |
| 01:37:20 | × | woxip0 quits (~dixon@190.75.138.21) (Quit: WeeChat 2.3) |
| 01:37:29 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 01:37:49 | <Axman6> | Thanks for coming to woxip0's demotivational talk for today |
| 01:38:10 | → | Benett joins (~Benett@unaffiliated/benett) |
| 01:38:26 | → | psydruid joins (psydruidma@gateway/shell/matrix.org/x-agoyrynofjmbqrna) |
| 01:39:24 | → | drbean joins (~drbean@TC210-63-209-160.static.apol.com.tw) |
| 01:40:05 | → | michaelpj1 joins (michaelpjm@gateway/shell/matrix.org/x-bmrqrkqdmdnabvkc) |
| 01:40:11 | → | ciderpunx[m] joins (ciderpunxm@gateway/shell/matrix.org/x-tppxydebwmzeidan) |
| 01:40:41 | → | srid joins (sridmatrix@gateway/shell/matrix.org/x-zqttickmrfyduksr) |
| 01:41:04 | → | vaibhavsagar joins (vaibhavsag@gateway/shell/matrix.org/x-uujnimdcokvefwmq) |
| 01:41:07 | → | unclechu joins (unclechuma@gateway/shell/matrix.org/x-lokwlamfbcqzukdh) |
| 01:41:30 | × | elliott_ quits (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) (Ping timeout: 272 seconds) |
| 01:41:41 | → | domenkozar[m] joins (domenkozar@NixOS/user/domenkozar) |
| 01:41:56 | → | iinuwa1 joins (iinuwamatr@gateway/shell/matrix.org/x-vnidwkjqityvsyww) |
| 01:41:57 | → | wangoe[m] joins (wangoematr@gateway/shell/matrix.org/x-ejdppythnrvrfopr) |
| 01:41:58 | → | sureyeaah joins (shauryab98@gateway/shell/matrix.org/x-kczqpmbbcugstynw) |
| 01:42:17 | → | Clough joins (~Cain@190.121.220.203.dial.dynamic.acc01-fenw-glg.comindico.com.au) |
| 01:42:19 | → | itai33[m] joins (itai33matr@gateway/shell/matrix.org/x-kefkftogqwbmbqbo) |
| 01:42:19 | → | GuillaumeChrel[m joins (guillaumec@gateway/shell/matrix.org/x-jdchaaocbuitwfmn) |
| 01:45:27 | hackage | servant-client-js 0.1.0.0 - A servant client for frontend JavaScript https://hackage.haskell.org/package/servant-client-js-0.1.0.0 (morganthomas) |
| 01:46:06 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 244 seconds) |
| 01:47:08 | × | alp quits (~alp@2a01:e0a:58b:4920:88a:e825:8145:b9ee) (Ping timeout: 244 seconds) |
| 01:47:32 | → | dyeplexer joins (~lol@unaffiliated/terpin) |
| 01:48:27 | hackage | serverless-haskell 0.12.3 - Deploying Haskell code onto AWS Lambda using Serverless https://hackage.haskell.org/package/serverless-haskell-0.12.3 (AlexeyKotlyarov) |
| 01:49:53 | <monochrom> | Merch at https://despair.com/ :) |
| 01:51:59 | × | xff0x quits (~fox@2001:1a81:53b0:3c00:e98b:1e53:4e8a:cb9b) (Ping timeout: 246 seconds) |
| 01:52:22 | → | elliott_ joins (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) |
| 01:53:04 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 01:53:54 | → | xff0x joins (~fox@2001:1a81:53e7:fb00:e98b:1e53:4e8a:cb9b) |
| 01:55:08 | × | Benzi-Junior quits (~BenziJuni@dsl-149-67-198.hive.is) (Ping timeout: 256 seconds) |
| 01:55:28 | → | Benzi-Junior joins (~BenziJuni@88-149-67-198.du.xdsl.is) |
| 01:57:19 | × | mac10688 quits (~mac10688@c-76-115-116-76.hsd1.or.comcast.net) (Ping timeout: 246 seconds) |
| 01:57:45 | → | vivekramaswamy joins (~vivekrama@49.207.196.1) |
| 01:57:57 | → | mac10688 joins (~mac10688@c-76-115-116-76.hsd1.or.comcast.net) |
| 02:09:00 | → | polyrain joins (~polyrain@2001:8003:e501:6901:3476:44e3:8b50:e5ca) |
| 02:09:12 | → | halogenandtoast joins (~halogenan@072-176-116-031.res.spectrum.com) |
| 02:09:26 | <halogenandtoast> | I feel like I am just tired, but does there already exist a function that does this? https://gist.github.com/halogenandtoast/bf48c58903b22b1720c297f0ca246484 |
| 02:09:45 | <halogenandtoast> | I feel like using a fold has to be overkill here. |
| 02:10:18 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 02:12:25 | <dolio> | halogenandtoast: You could use First. |
| 02:12:43 | <dolio> | It's not going to be a lot different, though. |
| 02:13:48 | <halogenandtoast> | Yeah I considered using First here, but didn't, for that reason. |
| 02:13:58 | × | darjeeling_ quits (~darjeelin@122.245.121.113) (Ping timeout: 260 seconds) |
| 02:14:57 | × | unclechu quits (unclechuma@gateway/shell/matrix.org/x-lokwlamfbcqzukdh) (*.net *.split) |
| 02:14:57 | × | jabruen[m] quits (jabruenmat@gateway/shell/matrix.org/x-mkrzwfdeygwnehax) (*.net *.split) |
| 02:14:57 | × | Tristan- quits (~tristan@luna.whatbox.ca) (*.net *.split) |
| 02:14:57 | × | fiQ- quits (~fiQ@mirkk.ninja) (*.net *.split) |
| 02:14:57 | × | gluegadget quits (sid22336@gateway/web/irccloud.com/x-xozlpymtatjtbivu) (*.net *.split) |
| 02:14:57 | × | simony quits (sid226116@gateway/web/irccloud.com/x-dmnnvhhbweuqxcvx) (*.net *.split) |
| 02:14:57 | × | cemerick quits (sid54985@gateway/web/irccloud.com/x-latpmrffuxrdviie) (*.net *.split) |
| 02:14:57 | × | kyagrd__ quits (sid102627@gateway/web/irccloud.com/x-ueauikqbfiitnall) (*.net *.split) |
| 02:14:57 | × | Boarders quits (sid425905@gateway/web/irccloud.com/x-hphcbtvbxebihmwg) (*.net *.split) |
| 02:14:57 | × | hamishmack quits (sid389057@gateway/web/irccloud.com/x-joqbkxseaudzewuy) (*.net *.split) |
| 02:14:57 | × | heyj quits (sid171370@gateway/web/irccloud.com/x-lkawpqiwbkazqhbr) (*.net *.split) |
| 02:14:57 | × | Shun131 quits (sid377723@gateway/web/irccloud.com/x-dfpyabbpewgqppso) (*.net *.split) |
| 02:14:57 | × | nlofaro quits (sid258233@gateway/web/irccloud.com/x-yqtwjxxgifuvztsm) (*.net *.split) |
| 02:14:57 | × | joshmeredith quits (sid387798@gateway/web/irccloud.com/x-lhhtwrcyukiolswv) (*.net *.split) |
| 02:14:57 | × | xyggos quits (uid216035@gateway/web/irccloud.com/x-lhaarqbamcocycpv) (*.net *.split) |
| 02:14:57 | × | alunduil quits (alunduil@gateway/web/irccloud.com/x-upaxhaxxkezwifdm) (*.net *.split) |
| 02:14:57 | × | PoliticsII____ quits (sid193551@gateway/web/irccloud.com/x-hownnnwfspnbpudf) (*.net *.split) |
| 02:14:57 | × | cstrahan quits (sid36118@gateway/web/irccloud.com/x-ceukpoxrsnzpwlkj) (*.net *.split) |
| 02:14:57 | × | albethere quits (sid457088@gateway/web/irccloud.com/x-kdubkdobgmtjdtxg) (*.net *.split) |
| 02:14:57 | × | kozowu quits (uid44796@gateway/web/irccloud.com/x-mavyewbrkcrhqppw) (*.net *.split) |
| 02:14:57 | × | glowcoil quits (sid3405@gateway/web/irccloud.com/x-lstfnintbamvabrb) (*.net *.split) |
| 02:14:57 | × | jetpack_joe quits (sid146137@gateway/web/irccloud.com/x-fcijrdwmdwvwvjor) (*.net *.split) |
| 02:14:57 | × | pent quits (sid313808@gateway/web/irccloud.com/x-yjtwetnkogukpzmx) (*.net *.split) |
| 02:14:57 | × | caasih quits (sid13241@gateway/web/irccloud.com/x-luakympvtdjyqgpe) (*.net *.split) |
| 02:14:57 | × | mpickering quits (sid78412@gateway/web/irccloud.com/x-gsxeeazgdrkchphy) (*.net *.split) |
| 02:14:57 | × | rann quits (sid175221@gateway/web/irccloud.com/x-hsipljbilyngvaij) (*.net *.split) |
| 02:14:57 | × | koankeeper quits (sid216950@gateway/web/irccloud.com/x-khuknondgmnqwpfb) (*.net *.split) |
| 02:14:57 | × | Kamuela quits (sid111576@gateway/web/irccloud.com/x-kfraqxxakmiuotqp) (*.net *.split) |
| 02:14:57 | × | Aquazi quits (uid312403@gateway/web/irccloud.com/x-cicafdvoiqgnsxlq) (*.net *.split) |
| 02:14:57 | × | unlink_ quits (~unlink2@p200300ebcf25bd0068eb9d9c94da2a17.dip0.t-ipconnect.de) (*.net *.split) |
| 02:14:57 | × | angerman quits (sid209936@gateway/web/irccloud.com/x-sxwsoxjbjhhdcytm) (*.net *.split) |
| 02:14:57 | × | PotatoGim quits (sid99505@gateway/web/irccloud.com/x-hpkxvtmaddacpkcm) (*.net *.split) |
| 02:14:57 | × | benwr__ quits (sid372383@gateway/web/irccloud.com/x-gisfqzblfklvpltj) (*.net *.split) |
| 02:14:57 | × | teehemkay quits (sid14792@gateway/web/irccloud.com/x-enbnrxzqqcvacsyt) (*.net *.split) |
| 02:14:57 | × | jbetz quits (sid283648@gateway/web/irccloud.com/x-jpndowfutuxwtlac) (*.net *.split) |
| 02:14:57 | × | metadave quits (sid28102@gateway/web/irccloud.com/x-kvbjexppaeoxogva) (*.net *.split) |
| 02:14:57 | × | fiadliel quits (sid399568@gateway/web/irccloud.com/x-ktjqphtdpabuzhix) (*.net *.split) |
| 02:14:57 | × | jared-w quits (uid405292@gateway/web/irccloud.com/x-rpqfkttwgpododuy) (*.net *.split) |
| 02:14:57 | × | hololeap quits (~hololeap@unaffiliated/hololeap) (*.net *.split) |
| 02:14:57 | × | rizary quits (sid220347@gateway/web/irccloud.com/x-yircivgrzzuogmcd) (*.net *.split) |
| 02:14:57 | × | d0liver quits (sid363046@gateway/web/irccloud.com/x-qfnvcyeeietbneso) (*.net *.split) |
| 02:14:57 | × | lagothrix quits (~lagothrix@unaffiliated/lagothrix) (*.net *.split) |
| 02:14:57 | × | Amras quits (~Amras@unaffiliated/amras0000) (*.net *.split) |
| 02:14:57 | × | karolus quits (~karolus@static.32.230.217.95.clients.your-server.de) (*.net *.split) |
| 02:14:57 | × | jhuizy quits (~jhuizy@static.241.188.216.95.clients.your-server.de) (*.net *.split) |
| 02:14:57 | × | miklcct quits (quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7) (*.net *.split) |
| 02:14:57 | × | sarahzrf quits (~sarahzrf_@benzrf.com) (*.net *.split) |
| 02:14:57 | × | hyiltiz-M quits (hyiltizkde@gateway/shell/kde/matrix/x-iqydoavyrkykkzgo) (*.net *.split) |
| 02:14:57 | × | jchia_ quits (~jchia@58.32.37.220) (*.net *.split) |
| 02:14:57 | × | ezzieyguywuf quits (~Unknown@unaffiliated/ezzieyguywuf) (*.net *.split) |
| 02:14:57 | × | aurieeeh quits (~aurieh@static.91.102.243.136.clients.your-server.de) (*.net *.split) |
| 02:14:57 | × | auri_ quits (~auri_@fsf/memeber/auri-) (*.net *.split) |
| 02:14:57 | × | SolarAquarion quits (SolarAquar@gateway/shell/panicbnc/x-qhbkvprsewvzxtnd) (*.net *.split) |
| 02:14:57 | × | Klumben quits (Nsaiswatch@gateway/shell/panicbnc/x-lfgojlskrxejewoq) (*.net *.split) |
| 02:14:57 | × | dbmikus quits (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (*.net *.split) |
| 02:14:57 | × | petersen quits (~petersen@redhat/juhp) (*.net *.split) |
| 02:14:57 | × | pong quits (chiya@2406:3003:2077:2341::babe) (*.net *.split) |
| 02:14:57 | × | dequbed_ quits (~dequbed@yanduxian.paranoidlabs.org) (*.net *.split) |
| 02:14:57 | × | noexcept_ quits (~noexcept@noexcept.org) (*.net *.split) |
| 02:14:57 | × | Xnuk quits (~xnuk@45.76.202.58) (*.net *.split) |
| 02:14:57 | × | rotty quits (rotty@ghost.xx.vu) (*.net *.split) |
| 02:14:57 | × | Majiir quits (~Majiir@2601:18c:ca00:a400:211:32ff:fe42:6eda) (*.net *.split) |
| 02:14:57 | × | tomku quits (~tomku@unaffiliated/tomku) (*.net *.split) |
| 02:14:57 | × | themsay[m] quits (themsaymat@gateway/shell/matrix.org/x-mjbquguhfulgkgro) (*.net *.split) |
| 02:14:57 | × | jkaye[m] quits (jkayematri@gateway/shell/matrix.org/x-rpmuernsphlxsxxq) (*.net *.split) |
| 02:14:57 | × | coeus quits (~coeus@p200300d02724ef00d20f0ecf5ac74df4.dip0.t-ipconnect.de) (*.net *.split) |
| 02:14:57 | × | magog quits (~wee@unaffiliated/magog) (*.net *.split) |
| 02:14:57 | × | Taneb quits (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) (*.net *.split) |
| 02:14:57 | × | nopf quits (~frosch@static.179.17.76.144.clients.your-server.de) (*.net *.split) |
| 02:14:57 | × | M2tias quits (m2@seri.fi) (*.net *.split) |
| 02:15:03 | → | unlink__ joins (~unlink2@p200300ebcf25bd0068eb9d9c94da2a17.dip0.t-ipconnect.de) |
| 02:15:06 | → | _Tristan_ joins (~tristan@luna.whatbox.ca) |
| 02:15:07 | → | noexcept joins (~noexcept@2a03:b0c0:3:d0::33:9001) |
| 02:15:08 | → | sarahzrf joins (~sarahzrf_@benzrf.com) |
| 02:15:09 | → | nlofaro joins (sid258233@gateway/web/irccloud.com/x-etxlydyigzmwkiap) |
| 02:15:10 | → | benwr__ joins (sid372383@gateway/web/irccloud.com/x-ehohzcwkyjbzpbwl) |
| 02:15:11 | → | mpickering joins (sid78412@gateway/web/irccloud.com/x-ugziboqyrxfitrmv) |
| 02:15:11 | → | miklcct joins (quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7) |
| 02:15:12 | → | simony joins (sid226116@gateway/web/irccloud.com/x-ebcflagagczxghjj) |
| 02:15:13 | → | teehemkay joins (sid14792@gateway/web/irccloud.com/x-xjwybgbmcxfolzwh) |
| 02:15:14 | × | vivekramaswamy quits (~vivekrama@49.207.196.1) (Quit: Sayonara. Long live Haskell) |
| 02:15:14 | → | tomku joins (~tomku@unaffiliated/tomku) |
| 02:15:14 | → | koankeeper joins (sid216950@gateway/web/irccloud.com/x-zrkqcymdfzqfjfqv) |
| 02:15:14 | → | fiQ2 joins (~fiQ@mirkk.ninja) |
| 02:15:14 | → | kyagrd__ joins (sid102627@gateway/web/irccloud.com/x-cswsttltgsuxjilm) |
| 02:15:14 | → | karolus joins (~karolus@static.32.230.217.95.clients.your-server.de) |
| 02:15:14 | → | Xnuk joins (~xnuk@45.76.202.58) |
| 02:15:15 | → | Majiir joins (~Majiir@2601:18c:ca00:a400:211:32ff:fe42:6eda) |
| 02:15:15 | → | aurieeeh joins (~aurieh@static.91.102.243.136.clients.your-server.de) |
| 02:15:18 | → | jhuizy joins (~jhuizy@static.241.188.216.95.clients.your-server.de) |
| 02:15:18 | → | dequbed joins (~dequbed@yanduxian.paranoidlabs.org) |
| 02:15:18 | → | xyggos joins (uid216035@gateway/web/irccloud.com/x-gnlompqpniagbeqc) |
| 02:15:18 | → | cemerick joins (sid54985@gateway/web/irccloud.com/x-pdxhruraknqcvldm) |
| 02:15:18 | → | d0liver joins (sid363046@gateway/web/irccloud.com/x-jybzxemfqeasbqbs) |
| 02:15:18 | × | zopsi quits (~zopsi@irc.dir.ac) (Max SendQ exceeded) |
| 02:15:19 | → | jetpack_joe joins (sid146137@gateway/web/irccloud.com/x-zhxrcrokabwqiajh) |
| 02:15:19 | → | alunduil joins (alunduil@gateway/web/irccloud.com/x-armiphmmyuoonyeh) |
| 02:15:20 | → | angerman joins (sid209936@gateway/web/irccloud.com/x-kbnupcpypxlxxlnc) |
| 02:15:22 | → | heyj joins (sid171370@gateway/web/irccloud.com/x-ffzoewiykurlnmpn) |
| 02:15:22 | → | jared-w joins (uid405292@gateway/web/irccloud.com/x-lvabjzxurljtbtsc) |
| 02:15:23 | → | hamishmack joins (sid389057@gateway/web/irccloud.com/x-kmbanmfbezzgjcwy) |
| 02:15:23 | → | fiadliel joins (sid399568@gateway/web/irccloud.com/x-llzgoofxbcculsva) |
| 02:15:23 | → | metadave joins (sid28102@gateway/web/irccloud.com/x-pebkddzdcftwierd) |
| 02:15:23 | → | caasih joins (sid13241@gateway/web/irccloud.com/x-teuwvboxinwdshpz) |
| 02:15:23 | → | albethere joins (sid457088@gateway/web/irccloud.com/x-euzbwktnggxsctak) |
| 02:15:24 | → | Amras joins (~Amras@unaffiliated/amras0000) |
| 02:15:24 | → | lagothrix joins (~lagothrix@unaffiliated/lagothrix) |
| 02:15:25 | → | hololeap joins (~hololeap@unaffiliated/hololeap) |
| 02:15:26 | → | PoliticsII____ joins (sid193551@gateway/web/irccloud.com/x-nvfqluymqsvazvtl) |
| 02:15:26 | → | Boarders joins (sid425905@gateway/web/irccloud.com/x-xkpxetjoxpjitwjh) |
| 02:15:26 | → | rann joins (sid175221@gateway/web/irccloud.com/x-aedrxgorilstsgns) |
| 02:15:27 | → | glowcoil joins (sid3405@gateway/web/irccloud.com/x-thsriowqmdkgjing) |
| 02:15:28 | → | rizary joins (sid220347@gateway/web/irccloud.com/x-asbilbwnyrijqcny) |
| 02:15:30 | → | gluegadget joins (sid22336@gateway/web/irccloud.com/x-ujwmxysajygjgukb) |
| 02:15:31 | → | rotty joins (rotty@ghost.xx.vu) |
| 02:15:31 | → | pent joins (sid313808@gateway/web/irccloud.com/x-dxofbfnqjnwrcfkh) |
| 02:15:32 | → | cstrahan joins (sid36118@gateway/web/irccloud.com/x-ayxmqtejzrwtwzqi) |
| 02:15:33 | → | Kamuela joins (sid111576@gateway/web/irccloud.com/x-hizwwfvajxwuptvq) |
| 02:15:34 | → | jbetz joins (sid283648@gateway/web/irccloud.com/x-jvvvgpgxfdgnkdbf) |
| 02:15:34 | → | vivekramaswamy joins (~vivekrama@49.207.196.1) |
| 02:15:35 | → | dbmikus joins (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
| 02:15:37 | → | kozowu joins (uid44796@gateway/web/irccloud.com/x-wpjivtkfdyaoqwbw) |
| 02:15:41 | → | Shun131 joins (sid377723@gateway/web/irccloud.com/x-qfflzmcznnjkrwrn) |
| 02:15:42 | → | zopsi joins (zopsi@2600:3c00::f03c:91ff:fe14:551f) |
| 02:15:47 | → | auri_ joins (~auri_@fsf/memeber/auri-) |
| 02:15:47 | → | Aquazi joins (uid312403@gateway/web/irccloud.com/x-qegeokaunvltnjjt) |
| 02:15:49 | → | PotatoGim joins (sid99505@gateway/web/irccloud.com/x-nntthzpvnqfcnxqs) |
| 02:16:02 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 260 seconds) |
| 02:16:06 | <Axman6> | halogenandtoast: xs ?^ each . _BaseSkillOf |
| 02:16:08 | → | unclechu joins (unclechuma@gateway/shell/matrix.org/x-bgindqyxdmllwdai) |
| 02:16:29 | → | PotatoHatsue joins (berbermanp@gateway/shell/matrix.org/x-lcuapfbpkatzswxh) |
| 02:16:34 | <dolio> | Yeah, if you have some better building blocks it will help. |
| 02:16:54 | → | polyrain_ joins (~polyrain@2001:8003:e501:6901:4af:ac65:fda8:8e33) |
| 02:16:57 | → | jabruen[m] joins (jabruenmat@gateway/shell/matrix.org/x-akmaydnltwuauerf) |
| 02:17:20 | × | mirrorbird quits (~psutcliff@2a00:801:3fb:53b9:b09b:cd4e:4e4a:44a9) (Quit: Leaving) |
| 02:17:30 | <halogenandtoast> | Axman6: where is that lens coming from :p |
| 02:17:36 | <halogenandtoast> | I surely did not write it |
| 02:17:37 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Ping timeout: 264 seconds) |
| 02:18:21 | → | jkaye[m] joins (jkayematri@gateway/shell/matrix.org/x-xibdbttwtjjbthkv) |
| 02:18:24 | <vivekramaswamy> | Hello All, I came here as there is no one in the haskell beginners channel, i really have a simple question. the type constructor for a list is defined as data [] a = [] | a |
| 02:18:40 | × | rzmt quits (~rzmt@87-92-180-112.rev.dnainternet.fi) (Ping timeout: 246 seconds) |
| 02:18:44 | → | themsay[m] joins (themsaymat@gateway/shell/matrix.org/x-yeakmiacdwmqfqaq) |
| 02:19:18 | <vivekramaswamy> | Hello All, I came here as there is no one in the haskell beginners channel, i really have a simple question. the type constructor for a list is defined as data [] a = [] | a:[a] how can I construct a list with a single element using these data constructor for the list |
| 02:19:22 | <ski> | there are people in there. however, there was just a netsplit, so perhaps that's why it didn't seem like way |
| 02:19:32 | <glguy> | vivekramaswamy: this channel is fine for beginner questions |
| 02:19:46 | × | polyrain quits (~polyrain@2001:8003:e501:6901:3476:44e3:8b50:e5ca) (Ping timeout: 244 seconds) |
| 02:19:48 | <ski> | add an element to the empty list |
| 02:19:51 | <halogenandtoast> | vivekramaswamy: a:[] ? |
| 02:19:52 | → | rzmt joins (~rzmt@87-92-180-112.rev.dnainternet.fi) |
| 02:20:11 | → | hyiltiz-M joins (hyiltizkde@gateway/shell/kde/matrix/session) |
| 02:20:11 | → | joshmeredith joins (sid387798@gateway/web/irccloud.com/x-lhhtwrcyukiolswv) |
| 02:20:11 | → | jchia_ joins (~jchia@58.32.37.220) |
| 02:20:11 | → | ezzieyguywuf joins (~Unknown@unaffiliated/ezzieyguywuf) |
| 02:20:11 | → | pong joins (chiya@2406:3003:2077:2341::babe) |
| 02:20:11 | → | coeus joins (~coeus@p200300d02724ef00d20f0ecf5ac74df4.dip0.t-ipconnect.de) |
| 02:20:11 | → | magog joins (~wee@unaffiliated/magog) |
| 02:20:11 | → | Taneb joins (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) |
| 02:20:11 | → | nopf joins (~frosch@static.179.17.76.144.clients.your-server.de) |
| 02:20:11 | → | M2tias joins (m2@seri.fi) |
| 02:20:12 | × | hyiltiz-M quits (hyiltizkde@gateway/shell/kde/matrix/session) (Changing host) |
| 02:20:12 | → | hyiltiz-M joins (hyiltizkde@gateway/shell/kde/matrix/x-gsazjbgdfcbtdfre) |
| 02:20:18 | <vivekramaswamy> | yeah but we dont have a data constructor like a:[] |
| 02:20:25 | → | BalterNotz joins (ca420871@202.66.8.113) |
| 02:20:36 | <ski> | so use multiple data constructors, when making a singleton list |
| 02:20:56 | <halogenandtoast> | vivekramaswamy: you are misreading how that constructor is working there. It's recursive (if implemented correctly) |
| 02:21:03 | <glguy> | vivekramaswamy: (:) and [] are the two data constructors for list |
| 02:21:08 | <vivekramaswamy> | But this is a sum type, I can only use one of the constructors right |
| 02:21:22 | <ski> | `[]' is the empty list. if `x' is an element, and `xs' is a list, then `x:xs' is the list that starts with the element `x', and continues with all the elements (possibly zero of them) in the list `xs' |
| 02:21:41 | <ski> | why would you think that, vivekramaswamy ? |
| 02:21:43 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 02:22:10 | <halogenandtoast> | vivekramaswamy: you are using one of the constructors, the constructor on the right just happens to be recursive. |
| 02:22:43 | <vivekramaswamy> | where I am getting confused is this is a:[] == a:[a] |
| 02:22:52 | <halogenandtoast> | One is a value, one is a type |
| 02:23:03 | <halogenandtoast> | *data constructor |
| 02:23:27 | <ski> | vivekramaswamy : `a:[a]' in `data [a] = [] | a:[a]' is a "template". it means that if you have `x' of type `a', and `xs' of type `[a]', then `x:xs' has type `[a]' |
| 02:23:49 | → | toorevitimirp joins (~tooreviti@117.182.182.201) |
| 02:24:06 | <ski> | in place of actual values (left and right operand to the infix operator `:'), you have the expected types of those operands, in the `data' type declaration |
| 02:24:16 | <vivekramaswamy> | to construct a list with a single element I will have to use one of the data constructors right. I can't use [], also the second constructors presumes a value already in the list a:[] |
| 02:24:24 | <ski> | when actually using the data constructors, you'd use actual values of those two types |
| 02:24:40 | lagothrix | is now known as Guest22008 |
| 02:24:40 | × | Guest22008 quits (~lagothrix@unaffiliated/lagothrix) (Killed (moon.freenode.net (Nickname regained by services))) |
| 02:24:48 | <ski> | vivekramaswamy : the second one adds an element in front of an existing list |
| 02:24:49 | → | lagothrix joins (~lagothrix@unaffiliated/lagothrix) |
| 02:25:20 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 02:26:16 | <vivekramaswamy> | correct , an already existing list a:[a], but for a list with only one element it will cons to a:[] adding element to the empty list, where is that covered in the data constructors |
| 02:26:18 | <halogenandtoast> | vivekramaswamy: you have to start with the premise that you are reading those constructors incorrectly which is why you don't see the solution yet. |
| 02:26:19 | <glguy> | vivekramaswamy: Would it be less confusing if we used this definition: |
| 02:26:20 | <glguy> | % data List a = Empty | Prepend a (List a) |
| 02:26:25 | <yahb> | glguy: |
| 02:27:01 | <glguy> | That's the same thing with different names avoiding symbols and ambiguity between the type and value levels |
| 02:27:01 | <ski> | % deriving instance Show a => Show (List a) |
| 02:27:04 | <yahb> | ski: |
| 02:27:26 | × | drbean quits (~drbean@TC210-63-209-160.static.apol.com.tw) (Ping timeout: 244 seconds) |
| 02:28:07 | → | SolarAquarion joins (SolarAquar@gateway/shell/panicbnc/x-nikabmyijjgiqeue) |
| 02:28:08 | × | polyrain_ quits (~polyrain@2001:8003:e501:6901:4af:ac65:fda8:8e33) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 02:28:15 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 02:28:45 | <Axman6> | vivekramaswamy: the way that list is defined is quitre confusing to beginners, a better definition using GADT syntax is: data [] a where [] :: [a]; (:) :: a -> [a] -> [a] -- a list is EITHER: an empty list [] which has type [a] OR a (:) (pronounced "cons") with has a value of type a and a value of type [a] |
| 02:28:49 | <glguy> | % Prepend "singleton" Empty |
| 02:28:50 | <yahb> | glguy: Prepend "singleton" Empty |
| 02:29:25 | <Axman6> | :t (:) |
| 02:29:26 | <lambdabot> | a -> [a] -> [a] |
| 02:29:29 | <halogenandtoast> | Axman6: beginners and GADT in the same sentence, what world is this? |
| 02:29:42 | <ski> | that declaration means that `Empty' has type `List a' (for any type `a'); and also that `Prepend x xs' has type `List a' (for any type `a'), provided that `x' has (that) type `a', and `xs' has type `List a' |
| 02:29:55 | <ski> | halogenandtoast : `GADTSyntax', not `GADT' |
| 02:30:12 | <Axman6> | halogenandtoast: GDTS syntax is oftewn much easier for beginners to understand, as it;s much more consistent than the normal sum type syntax, which mixes constructors and the types they hold |
| 02:30:18 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds) |
| 02:30:26 | → | o1lo01ol_ joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 02:30:31 | <ski> | vivekramaswamy : is glguy's alternative list type definition making any more sense to you, atm ? |
| 02:31:12 | <Axman6> | > 1 : [] |
| 02:31:15 | <lambdabot> | [1] |
| 02:31:18 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Read error: Connection reset by peer) |
| 02:31:19 | <Axman6> | > (:) 1 [] |
| 02:31:20 | → | polyrain joins (~polyrain@2001:8003:e501:6901:4af:ac65:fda8:8e33) |
| 02:31:21 | <lambdabot> | [1] |
| 02:31:36 | <vivekramaswamy> | Thank you very much for the help, but I am still very confused about this. Let me re -read all the messages again and try and make sense of them |
| 02:31:50 | <Axman6> | :t [] |
| 02:31:51 | <lambdabot> | [a] |
| 02:31:53 | <Axman6> | : (:) |
| 02:31:57 | <Axman6> | :t (:) |
| 02:31:58 | <lambdabot> | a -> [a] -> [a] |
| 02:32:56 | <vivekramaswamy> | I get this 1:[], but where is this one covered in the 2 data constructors defines [] | a:[a] |
| 02:33:10 | <ski> | vivekramaswamy : it uses both of the data constructors |
| 02:33:14 | <Axman6> | those are the two main facts you need to understand vivekramaswamy. the syntax in data [] a = [] | a : [a] is confusing because it mixed types and constructors and doesn't make it clear that the [a] in that definition is _a type_ not a value |
| 02:33:24 | <vivekramaswamy> | 2:[3] makes sense to me as it is covered by the data constructor |
| 02:33:39 | <Axman6> | 2:[3] is _really_: 2:3:[] |
| 02:34:08 | <Axman6> | [3] is special syntax, is it not how lists are actually defined |
| 02:34:15 | <ski> | vivekramaswamy : first, `[]' is the empty list. then, you can use `:' to prepend an element `1' in from of that list (the empty list `[]', getting `1 : []'. that singleton list has syntactic sugar `[1]' which is what is shown, when evaluated, for convenience sake |
| 02:34:18 | <Axman6> | > 1:2:3:[] |
| 02:34:20 | <lambdabot> | [1,2,3] |
| 02:34:26 | <Axman6> | > 1:2:[3] |
| 02:34:29 | <lambdabot> | [1,2,3] |
| 02:34:30 | → | Lycurgus joins (~niemand@98.4.96.130) |
| 02:34:31 | <Axman6> | > 1:[2,3] |
| 02:34:34 | <lambdabot> | [1,2,3] |
| 02:35:13 | <ski> | `[1,2,3]' means `1:[2,3]' means `1:(2:[3])' means `1:(2:(3:[]))'. we can omit the brackets (since `:' is specified to "associate to the right"), giving just `1:2:3:[]' |
| 02:35:16 | <vivekramaswamy> | yeap I get that just as for many characters we define [Char] so [a] means [a,a, as many elements of type a] |
| 02:35:17 | × | Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 260 seconds) |
| 02:35:58 | <Axman6> | strings are yet another special syntax |
| 02:36:00 | <vivekramaswamy> | a:[a] means consing a to a list of type a which is fine. |
| 02:36:23 | <ski> | `1:(2:(3:[]))' or `1:2:3:[]' is the "real list of three elements". `[1,2,3]' is just a convenient way ("syntactic sugar") to write it, in a form that's more appealing to humans |
| 02:36:25 | <Axman6> | > 'a':['b','c'] |
| 02:36:25 | <glguy> | vivekramaswamy: [a] as a value is a special shortcut you should forget about until you udnerstand what's happening without it |
| 02:36:28 | <lambdabot> | "abc" |
| 02:36:42 | <ski> | vivekramaswamy : `x:xs' means consing/prepending `x' in front of the list `xs' |
| 02:37:30 | <ski> | > let xs = []; ys = 0 : xs; zs = 1 : ys in (xs,ys,zs) |
| 02:37:32 | <vivekramaswamy> | "abc" is actually 'a':'b':'c':[] I get that |
| 02:37:33 | <lambdabot> | ([],[0],[1,0]) |
| 02:38:04 | → | falafel_ joins (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) |
| 02:38:05 | <ski> | vivekramaswamy : is there anything remaining, that's unclear ? |
| 02:38:06 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 02:38:37 | <Axman6> | halogenandtoast: coming back to your question, some template haskell defined that prism for you ;) |
| 02:38:43 | × | Unhammer quits (~Unhammer@gateway/tor-sasl/unhammer) (Ping timeout: 240 seconds) |
| 02:38:44 | → | Stanley00 joins (~stanley00@unaffiliated/stanley00) |
| 02:38:50 | <vivekramaswamy> | Nope, I think I get it now, thanks a ton to all of you |
| 02:38:57 | <ski> | np |
| 02:39:54 | → | plutoniix joins (~q@175.176.222.7) |
| 02:39:57 | <Axman6> | vivekramaswamy: I can't actually see you asking that question in #haskell-beginners btw, when did you ask it?> |
| 02:40:20 | <ski> | Axman6 : perhaps during the netsplit |
| 02:40:47 | → | Unhammer joins (~Unhammer@gateway/tor-sasl/unhammer) |
| 02:41:09 | <ski> | (there was one, just before they asked in here) |
| 02:42:46 | <ski> | (or, possibly they thought noone was paying any attention to that channel, since there was no current discussion in there. .. who knows ?) |
| 02:44:20 | × | andi- quits (~andi-@NixOS/user/andi-) (Remote host closed the connection) |
| 02:46:06 | × | jcarpenter2 quits (~rofl@96.78.87.197) (Ping timeout: 272 seconds) |
| 02:47:07 | → | inerkick joins (~rohit@117.230.9.17) |
| 02:48:09 | → | andi- joins (~andi-@NixOS/user/andi-) |
| 02:49:04 | × | dopplerg- quits (~dop@titan.pathogen.is) (Remote host closed the connection) |
| 02:49:20 | → | justanotheruser joins (~justanoth@unaffiliated/justanotheruser) |
| 02:49:43 | × | ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 240 seconds) |
| 02:50:02 | × | anoe quits (~anoe@delanoe.org) (Ping timeout: 256 seconds) |
| 02:50:11 | × | theDon quits (~td@94.134.91.135) (Ping timeout: 258 seconds) |
| 02:50:19 | → | anoe joins (~anoe@delanoe.org) |
| 02:50:25 | → | dopplergange joins (~dop@titan.pathogen.is) |
| 02:50:57 | → | ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex) |
| 02:51:50 | → | theDon joins (~td@muedsl-82-207-238-146.citykom.de) |
| 02:51:57 | × | urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna) |
| 02:53:55 | <vivekramaswamy> | I did not, as fount the channel empty |
| 02:54:02 | <vivekramaswamy> | found |
| 02:54:13 | × | raehik quits (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 02:54:45 | <Axman6> | the channel definitely isn't empty |
| 02:55:35 | <ski> | if you'd tried asking saying in there, then not that unlikely some people would have noticed, and possibly some have responded |
| 02:57:11 | <MarcelineVQ> | no matter, asking here is fine too :> |
| 02:57:17 | <ski> | (although, if you'd tried during the netsplit (which just happened to take place just before you started talking in here), when perhaps not as many would have been in there, on your server side of the netsplit, the chance would presumably have been lowered) |
| 02:57:22 | <ski> | yes |
| 02:57:28 | → | sword865 joins (uid208942@gateway/web/irccloud.com/x-ifbndlqlczbvfcan) |
| 02:58:39 | → | darjeeling_ joins (~darjeelin@112.16.171.8) |
| 02:59:28 | × | vivekramaswamy quits (~vivekrama@49.207.196.1) (Quit: Sayonara. Long live Haskell) |
| 02:59:47 | → | vivekramaswamy joins (~vivekrama@49.207.196.1) |
| 03:00:02 | × | SRV_DW20 quits (~SRV_DW20@188.126.89.194) () |
| 03:01:24 | × | russruss8 quits (~russruss@my.russellmcc.com) (Quit: The Lounge - https://thelounge.chat) |
| 03:01:56 | → | russruss8 joins (~russruss@my.russellmcc.com) |
| 03:02:14 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal) |
| 03:03:07 | × | ent quits (entgod@kapsi.fi) (Ping timeout: 246 seconds) |
| 03:03:31 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:03:47 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 240 seconds) |
| 03:04:22 | → | Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 03:04:59 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 256 seconds) |
| 03:05:36 | Lord_of_Life_ | is now known as Lord_of_Life |
| 03:06:05 | × | liff quits (liff@kapsi.fi) (Ping timeout: 244 seconds) |
| 03:06:57 | → | dftxbs3e joins (~dftxbs3e@unaffiliated/dftxbs3e) |
| 03:07:09 | × | inerkick quits (~rohit@117.230.9.17) (Quit: Leaving) |
| 03:08:04 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 03:08:44 | × | bloodstalker quits (~bloodstal@46.166.187.188) (Remote host closed the connection) |
| 03:09:01 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 03:09:10 | → | inerkick joins (~rohit@117.230.9.17) |
| 03:09:31 | × | Tspoon quits (tlarjoma@hilla.kapsi.fi) (Ping timeout: 256 seconds) |
| 03:09:52 | × | Logio quits (em@kapsi.fi) (Ping timeout: 256 seconds) |
| 03:10:47 | × | spew quits (uid195861@gateway/web/irccloud.com/x-fpkdkamqeywbdxvp) (Quit: Connection closed for inactivity) |
| 03:11:40 | → | jrqc joins (~rofl@96.78.87.197) |
| 03:14:57 | × | shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection) |
| 03:15:22 | → | shatriff joins (~vitaliish@176.52.219.10) |
| 03:15:45 | × | shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection) |
| 03:16:04 | → | shatriff joins (~vitaliish@176.52.219.10) |
| 03:16:33 | × | shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection) |
| 03:19:12 | → | amosbird joins (~amosbird@23.98.37.89) |
| 03:21:57 | × | elliott_ quits (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) (Ping timeout: 260 seconds) |
| 03:26:27 | → | liff joins (liff@kapsi.fi) |
| 03:27:38 | → | elliott_ joins (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) |
| 03:28:11 | × | elliott_ quits (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
| 03:28:28 | → | ent joins (entgod@kapsi.fi) |
| 03:29:24 | × | vivekramaswamy quits (~vivekrama@49.207.196.1) (Quit: Sayonara. Long live Haskell) |
| 03:29:28 | hackage | text-conversions 0.3.1 - Safe conversions between textual types https://hackage.haskell.org/package/text-conversions-0.3.1 (lexi_lambda) |
| 03:29:50 | × | Lycurgus quits (~niemand@98.4.96.130) (Quit: Exeunt) |
| 03:30:44 | → | Tspoon joins (tlarjoma@hilla.kapsi.fi) |
| 03:32:45 | → | Logio joins (em@kapsi.fi) |
| 03:32:45 | → | adam_wespiser joins (~adam_wesp@209.6.42.110) |
| 03:33:35 | → | elliott_ joins (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) |
| 03:34:28 | × | ddellacosta quits (~dd@86.106.121.168) (Ping timeout: 260 seconds) |
| 03:35:20 | → | Klumben joins (Nsaiswatch@gateway/shell/panicbnc/x-qfyvvmfvccqnqxdf) |
| 03:35:45 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 03:35:51 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:38:52 | × | machinedgod quits (~machinedg@d67-193-126-196.home3.cgocable.net) (Ping timeout: 258 seconds) |
| 03:39:18 | × | reallymemorable quits (~quassel@ip68-9-215-56.ri.ri.cox.net) (Remote host closed the connection) |
| 03:41:28 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 260 seconds) |
| 03:41:29 | → | finkata joins (~dpetrov@83.222.188.39) |
| 03:45:19 | <sim590> | How can I download a package with cabal globally, build it globally and then build my project that uses the same library without building it again? |
| 03:45:45 | <sim590> | and I mean all of that before switching to the directory containing my project. |
| 03:47:15 | <sim590> | I don't want to download and build the library more than once. |
| 03:47:44 | → | Guest_91 joins (48855e8f@cpe-72-133-94-143.sw.res.rr.com) |
| 03:48:38 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:4d11:5c80:3101:9ff9) (Ping timeout: 244 seconds) |
| 03:48:42 | <Axman6> | I think that happens with the new style builds, identical builds should be shared between projects AFAIUI |
| 03:48:59 | × | darjeeling_ quits (~darjeelin@112.16.171.8) (Ping timeout: 260 seconds) |
| 03:50:14 | <Guest_91> | Hello after you install Haskell on OS X how do you start running it |
| 03:50:29 | <Axman6> | what do you want to start? ghci? |
| 03:50:35 | <sim590> | OK. I'm building a docker image. I'm trying this: https://paste.debian.net/1165214/. It's essentially copying my cabal file and building the project libraries there. |
| 03:50:37 | × | toorevitimirp quits (~tooreviti@117.182.182.201) (Ping timeout: 244 seconds) |
| 03:50:43 | <Axman6> | most of what is installed is a compiler |
| 03:51:28 | <sim590> | Shouldn't this make it so that if I run a build of the same project inside the resuting image, I should be able to build my project without downloading/building all of the dependencies? |
| 03:51:42 | → | iqubic joins (~user@2601:602:9500:4870:d13c:5aea:b558:d2ed) |
| 03:52:19 | <Guest_91> | yes ghci |
| 03:52:28 | <Axman6> | run ghci in the termina; |
| 03:52:31 | <Axman6> | l* |
| 03:53:05 | <Guest_91> | I tried that and it gives command not found |
| 03:53:29 | <Axman6> | open a new terminal and try again, your PATH won't be updated in an already open terminal |
| 03:53:40 | <Axman6> | how did you install things? |
| 03:55:14 | <sim590> | Shouldn't this: https://i.imgur.com/GtUn39G.png work? One of my dependencies is Colog. |
| 03:55:52 | <Guest_91> | thanks! it was the opening of new term window |
| 03:56:06 | <Axman6> | have you loaded the Colog module? :m +Colog.Monad |
| 03:56:43 | <Axman6> | :l(oad) is for local modules, :m(odule) loads modules visible to GHC |
| 03:57:05 | <Axman6> | (that's a really poor explanantion, but basically any library would be loaded with :m) |
| 03:57:26 | → | kreative joins (~kreative@185.163.110.116) |
| 03:58:35 | × | inerkick quits (~rohit@117.230.9.17) (Quit: Leaving) |
| 04:00:01 | × | Guest_91 quits (48855e8f@cpe-72-133-94-143.sw.res.rr.com) (Quit: Ping timeout (120 seconds)) |
| 04:00:28 | <sim590> | it doesn't work: https://i.imgur.com/BkeFbYY.png |
| 04:00:38 | <sim590> | Normally, it would say to load the package first or something, no? |
| 04:00:42 | <sim590> | Anyway, it doesn't load. |
| 04:01:24 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:c862:81df:d6b3:8407) |
| 04:02:07 | × | ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection) |
| 04:02:13 | → | day_ joins (~Unknown@unaffiliated/day) |
| 04:02:43 | → | ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex) |
| 04:05:05 | × | day quits (~Unknown@unaffiliated/day) (Ping timeout: 240 seconds) |
| 04:05:05 | day_ | is now known as day |
| 04:05:10 | <sim590> | That's the output when I'm building the docker image: https://i.imgur.com/74FKwjQ.png |
| 04:05:50 | <Axman6> | without knowing more about what you've done there's no way to know how to help. |
| 04:06:08 | <sim590> | What I did is in the docker image. |
| 04:07:42 | × | polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 260 seconds) |
| 04:09:05 | <sim590> | I've published my latest attempt at docker.io/sim590/hart |
| 04:09:51 | <Axman6> | "Ahoy, it looks like you are in uncharted waters" |
| 04:10:33 | <sim590> | Yeah the URL is https://hub.docker.com/repository/docker/sim590/hart, but the image is named sim590/hart. Tag can be :latest, so sim590/hart:latest. |
| 04:11:13 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 04:11:15 | <sim590> | You could inspect it with `docker run -it sim590/hart:latest bash` if you could then tell me what's wrong. |
| 04:11:25 | × | beka quits (~beka@gothdyke.mom) (Ping timeout: 240 seconds) |
| 04:12:25 | × | mmaruseacph2 quits (~mihai@198.199.100.72) (Ping timeout: 240 seconds) |
| 04:12:37 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 04:12:40 | → | mmaruseacph2 joins (~mihai@198.199.100.72) |
| 04:12:42 | <sim590> | I do have 891M of stuff inside /root/.cabal. |
| 04:13:18 | <Axman6> | I'm not going to run untrusted docer images on my machine, sorry. what does running a shell in it and running ghc-pkg list show? |
| 04:14:34 | → | beka joins (~beka@gothdyke.mom) |
| 04:15:09 | <sim590> | When looking inside ~/.cabal for co-log with docker run -it sim590/hart:latest find /root/.cabal -name \*co-log\*, I get this: https://paste.debian.net/1165215/ |
| 04:15:52 | <sim590> | ghc-pkg list shows: https://paste.debian.net/1165216/. |
| 04:15:55 | <Axman6> | and if you run ghci -package co-log? |
| 04:17:18 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 272 seconds) |
| 04:17:25 | <Axman6> | and what happens if instead of using ghci directly, you use cabal new-repl? |
| 04:17:44 | <Axman6> | (I think that's a thing, I haven't used cabal directly for a long time) |
| 04:18:02 | <sim590> | ghci -package co-log: https://paste.debian.net/1165217/ |
| 04:18:06 | × | dolio quits (~dolio@haskell/developer/dolio) (Quit: ZNC 1.8.1 - https://znc.in) |
| 04:19:16 | <sim590> | So the last command I did, I did move from /opt/hart to do this because I wanted to move from it to see if package was globally there. |
| 04:20:12 | <sim590> | now after doing `cabal new-repl̀ from inside the /opt/hart directory, it's building stuff like https://paste.debian.net/1165218/ |
| 04:20:28 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds) |
| 04:20:44 | <sim590> | But I thought it would have built already. |
| 04:21:31 | <sim590> | But it won't be able to build `hart` since the code is not inside the image. |
| 04:21:43 | <Axman6> | how are docker so bad a things. can;t even get the docker hub page to load again |
| 04:21:44 | <sim590> | I just pushed my cabal file. |
| 04:22:03 | <sim590> | The URL I gave you? |
| 04:22:16 | <Axman6> | can you paste your docker file in dpaste? I can't load docker hub any more |
| 04:22:35 | × | Jonno_FTW quits (~come@api.carswap.me) (Ping timeout: 260 seconds) |
| 04:23:18 | → | Jonno_FTW joins (~come@api.carswap.me) |
| 04:23:30 | <sim590> | ␒The docker file is:https://paste.debian.net/1165214/ |
| 04:23:47 | × | mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 260 seconds) |
| 04:24:15 | → | dolio joins (~dolio@haskell/developer/dolio) |
| 04:25:10 | → | thir joins (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) |
| 04:28:24 | × | polyrain quits (~polyrain@2001:8003:e501:6901:4af:ac65:fda8:8e33) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 04:28:47 | × | Orbstheorem quits (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 246 seconds) |
| 04:29:27 | × | thir quits (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 04:30:08 | <sim590> | OK. I just tried to do a new-install --only-dependencies after doing a new-build --only-dependencies and I think that it is wokring. Not sure, but I can now load the package inside ghci with -package co-log |
| 04:30:10 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 04:30:50 | <sim590> | I did new-install --lib --only-dependencies -j4 actually |
| 04:32:35 | → | bobajett joins (~user@2001:470:0:301::1e) |
| 04:32:36 | → | Orbstheorem joins (~roosember@hellendaal.orbstheorem.ch) |
| 04:32:44 | <sim590> | I'm trying to rebuild the image now https://paste.debian.net/1165220/ and see if it fixes it. |
| 04:34:16 | <bobajett> | how can I write the function p where p [0,0,1,2,0,0,3,0] == [[1,2], [3]] ? (Noobie question) |
| 04:34:45 | <glguy> | > let f [0,0,1,2,0,0,3,0] = [[1,2], [3]] in f [0,0,1,2,0,0,3,0] |
| 04:34:48 | <lambdabot> | [[1,2],[3]] |
| 04:34:57 | hackage | homura-stopwatch 0.2.0 - https://hackage.haskell.org/package/homura-stopwatch-0.2.0 (ncaq) |
| 04:34:59 | <bobajett> | :-) |
| 04:35:03 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 265 seconds) |
| 04:35:10 | <Axman6> | nailed it |
| 04:35:14 | <Axman6> | NEXT! |
| 04:35:59 | <sim590> | bobajett: It seems like you want subwords that don't contain a 0. |
| 04:36:07 | × | adam_wespiser quits (~adam_wesp@209.6.42.110) (Ping timeout: 240 seconds) |
| 04:36:57 | <bobajett> | yes please, I've been trying to use span and dropWhile and I just can't come up with some recursive function to solve it. |
| 04:37:05 | × | Turmfalke quits (~user@unaffiliated/siracusa) (Quit: Bye!) |
| 04:37:33 | <Axman6> | :t groupBy |
| 04:37:35 | <lambdabot> | (a -> a -> Bool) -> [a] -> [[a]] |
| 04:37:44 | <MarcelineVQ> | span is a pretty good choice tho |
| 04:37:57 | × | falafel_ quits (~falafel@2605:e000:1527:d491:f090:20fe:cddf:2a1a) (Remote host closed the connection) |
| 04:38:02 | <Axman6> | might be useful - but there are also likely to be simpler solutions |
| 04:38:47 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 04:43:07 | → | mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh) |
| 04:43:53 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 04:44:37 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 04:44:50 | <MarcelineVQ> | looking at the definition of span could be instructive, there's a really neat trick that recursion allows you to do that it uses |
| 04:47:06 | <MarcelineVQ> | Which is that we can use the result of our own function in its definition, see how span is used in span? |
| 04:47:09 | <MarcelineVQ> | @src span |
| 04:47:09 | <lambdabot> | span _ xs@[] = (xs, xs) |
| 04:47:09 | <lambdabot> | span p xs@(x:xs') | p x = let (ys,zs) = span p xs' in (x:ys,zs) |
| 04:47:09 | <lambdabot> | | otherwise = ([],xs) |
| 04:48:53 | → | alp joins (~alp@2a01:e0a:58b:4920:b51a:42ee:4512:fdae) |
| 04:49:08 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
| 04:49:47 | × | jrqc quits (~rofl@96.78.87.197) (Ping timeout: 240 seconds) |
| 04:54:21 | → | mmohammadi9812 joins (~mmohammad@5.238.179.190) |
| 04:55:25 | → | jrqc joins (~rofl@96.78.87.197) |
| 04:57:03 | <sim590> | > filter (all (/=0)) $ groupBy (\ a b -> a*b /= 0) [0,0,1,2,0,0,3,0] |
| 04:57:06 | <lambdabot> | [[1,2],[3]] |
| 04:57:58 | → | p0a joins (~user@unaffiliated/p0a) |
| 04:58:10 | <p0a> | Hello I was just reading the release notes for GHC 9.0.1 |
| 04:58:28 | × | aarvar quits (~foewfoiew@50.35.43.33) (Ping timeout: 272 seconds) |
| 04:58:41 | <p0a> | I noticed that the LinearTypes extension is now included. I read a bit about it and I think I sort of get the basic idea behind it |
| 04:59:22 | <p0a> | there's something in the motivation (on github/ghc-proposals) I don't understand: they mention that the type system itself can not discriminate between open-close and close-open file operations |
| 04:59:22 | → | machinedgod joins (~machinedg@d67-193-126-196.home3.cgocable.net) |
| 04:59:31 | → | day_ joins (~Unknown@unaffiliated/day) |
| 04:59:37 | → | zacts joins (~zacts@dragora/developer/zacts) |
| 04:59:39 | <p0a> | i.e. you can open a file and then close it, but you shouldn't be able to close a file and then operate on it |
| 04:59:59 | <p0a> | I don't understand how LinearTypes solves this problem. Can someone explain? Thanky ou |
| 05:00:13 | <c_wraith> | It doesn't. |
| 05:00:25 | <p0a> | okay. :) |
| 05:00:34 | <c_wraith> | uniqueness types would, but linearity is insufficient. |
| 05:01:10 | <p0a> | https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0111-linear-types.rst#motivation reads weird then |
| 05:01:17 | <dolio> | I don't think uniqueness types would solve that case. |
| 05:01:41 | <c_wraith> | *maybe* you could do an entire CPS-transformed IO system such that linearity would matter, but... ugh. |
| 05:02:20 | <c_wraith> | I really don't want to do IO with explicit continuations. |
| 05:02:46 | <dolio> | Anyhow, the way you'd solve it with linearity is something like: change all file operations to operate on linear handles, and return a new handle as a result if appropriate. Closing consumes a handle but doesn't give you a new one. |
| 05:02:49 | × | day quits (~Unknown@unaffiliated/day) (Ping timeout: 258 seconds) |
| 05:02:49 | day_ | is now known as day |
| 05:02:55 | × | Orbstheorem quits (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 240 seconds) |
| 05:03:02 | <c_wraith> | and I'm not feeling charitable towards using OverloadedSyntax to make do notation work around CPS |
| 05:03:23 | <p0a> | dolio: I don't see how linearity is involved in this scheme |
| 05:03:38 | <c_wraith> | dolio: linear haskell only adds linear functions, not values. |
| 05:03:57 | <davean> | The whole LinearTypes GHC proposal baffles me |
| 05:04:15 | <p0a> | we've been had |
| 05:04:26 | <dolio> | The handle arguments are linear. |
| 05:04:47 | × | jedws quits (~jedws@121.209.139.222) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 05:05:25 | <dolio> | p0a: You are only allowed to use any handle once (and must use it once). Each operation consumes a handle and produces a new handle as a result, except close which just consumes the handle. |
| 05:06:01 | <c_wraith> | dolio: but how is that enforced? Are you assuming a world where (>>=) has linear annotations? |
| 05:06:04 | <p0a> | dolio: so the part where linearity kicks in is ensuring that the interface does not allow you to mix and match the operations in such a way that you operate in a closed handle |
| 05:06:13 | × | Jonno_FTW quits (~come@api.carswap.me) (Ping timeout: 264 seconds) |
| 05:06:21 | <p0a> | dolio: because it'd require you to operate twice in the same handle |
| 05:06:25 | → | darjeeling_ joins (~darjeelin@112.16.171.8) |
| 05:06:37 | <dolio> | c_wraith: Yeah. They have some kind of linear monad notion, too. |
| 05:06:44 | → | Jonno_FTW joins (~come@api.carswap.me) |
| 05:06:46 | <dolio> | I'm not really familiar with the details. |
| 05:07:03 | <c_wraith> | I really don't think that works, in the end... |
| 05:07:16 | <c_wraith> | If for no other reason, it destroys the ability to abstract over monads. |
| 05:07:19 | <dolio> | p0a: Right. |
| 05:07:34 | <c_wraith> | Because you want IO to be linear, but [] can't be linear... |
| 05:08:06 | <dolio> | Linear monads are a separate type class. And IO isn't linear, I think, but there's a LIO maybe. Like I said, I don't know the details. |
| 05:08:23 | <dolio> | They use some kind of do overloading for linear monads. |
| 05:08:23 | <c_wraith> | I just don't see it actually improving anything. |
| 05:08:47 | <dolio> | Well, I'm not saying it'll be good. I'm just saying what it would be. :) |
| 05:08:50 | <p0a> | It sounds good to me c_wraith |
| 05:09:33 | <dolio> | How good it is remains to be seen. |
| 05:09:45 | <p0a> | I wonder what happens with concurrency and that idea though |
| 05:10:20 | × | puffnfresh quits (~puffnfres@180-150-38-83.b49626.bne.nbn.aussiebb.net) (Quit: authenticating) |
| 05:10:36 | → | puffnfresh joins (~puffnfres@180-150-38-83.b49626.bne.nbn.aussiebb.net) |
| 05:11:04 | <p0a> | Maybe that is not an issue. I actually have not written any concurrent programs so I wouldn't know |
| 05:11:54 | <sim590> | Axman6: it's great. It works now with my build + install instruction. |
| 05:14:12 | <Axman6> | great |
| 05:14:25 | <MarcelineVQ> | p0a: fwiw linear arrows restrict how you use arguments not results. foo :: a -* (a, b) says that if `foo` is used I promise to use the argument `a` exactly once, it does not say anyting at all about what we're allowed to do with the (a,b) |
| 05:14:31 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:15:03 | <MarcelineVQ> | To that end boop : a -* (a,Int); boop x = (x,0) is entirely valid, and what dolio is probably referring to when he says return a new handle |
| 05:15:16 | → | falafel joins (~falafel@2605:e000:1527:d491:a806:37fa:6971:2798) |
| 05:16:56 | <p0a> | MarcelineVQ: I don't think returning a new handle is important (it could be the same handle, we wouldn't know anyway), other than to have something to continue operating on |
| 05:17:07 | <p0a> | I.e. I don't know if being 'new' is important. Could be the same |
| 05:17:42 | → | jedws joins (~jedws@121.209.139.222) |
| 05:17:43 | <p0a> | a simple interface would be f :: Int %1 -> Int and g :: Int -> Bool where f x = x + 1 and g x = x == 0. |
| 05:17:55 | <p0a> | (Sorry, I should've written g :: Int %1 -> Bool) |
| 05:18:00 | × | hive-mind quits (~hivemind@rrcs-67-53-148-69.west.biz.rr.com) (Ping timeout: 256 seconds) |
| 05:18:44 | <p0a> | so you can't do \x -> (f x, g x) |
| 05:19:17 | <dolio> | The important part is how the API forces the user to work, not the implementation of the API. |
| 05:19:39 | <p0a> | That's true I just wrote the implementation of f and g as an example. The types were what mattered |
| 05:19:59 | <p0a> | f would be 'operate on file' and g would be 'close the file' |
| 05:20:00 | → | xxasiaj joins (bcc0ac95@ipbcc0ac95.dynamic.kabel-deutschland.de) |
| 05:20:10 | <dolio> | If the result of a linear function arrow is unrestricted, I'm not exactly sure how it'd be accomplished. I guess CPS. |
| 05:20:36 | × | cow-orker quits (~foobar@pogostick.net) (Ping timeout: 244 seconds) |
| 05:20:48 | → | Quarl joins (~Quarl@94.191.138.174.mobile.tre.se) |
| 05:21:16 | <xxasiaj> | hi , does anyone knows how to setup haskell in arch ? and also GHCi |
| 05:21:41 | <MarcelineVQ> | xxasiaj: ghcup is the method I'd reccomend |
| 05:21:43 | <koz_> | xxasiaj: I would suggest using ghcup. |
| 05:21:46 | <koz_> | MarcelineVQ: Jinx? |
| 05:21:53 | <yushyin> | ghcup it is! |
| 05:22:08 | <MarcelineVQ> | You can get it from the AUR |
| 05:22:20 | <xxasiaj> | thanks |
| 05:22:41 | <xxasiaj> | from AUR i could only get GHC not GHCi |
| 05:22:51 | <Axman6> | ghci is ghc |
| 05:22:54 | <MarcelineVQ> | ghci comes with ghc which ghcup will get you :> |
| 05:23:09 | <MarcelineVQ> | Yes, technically it's just a wrapper for ghc --interactive |
| 05:23:43 | <xxasiaj> | oh that's great then . thanks |
| 05:24:10 | → | jgt joins (~jgt@195.225.146.77) |
| 05:24:15 | <MarcelineVQ> | I'd also remove any haskell things you have installed from pacman already before you use ghcup |
| 05:24:43 | <xxasiaj> | how to do that |
| 05:25:04 | <xxasiaj> | i think i also installed stack |
| 05:25:15 | <Axman6> | did Arch unbreak all the Haskell stuff they broke a few years ago? It went from being one of the OSs of choice to being seemingly unusable overnight |
| 05:25:30 | <yushyin> | xxasiaj: pacman -Rsuc ghc ghc-lib stack # is my guess |
| 05:25:58 | <p0a> | Axman6: isn't the issue with dynamic linking being enforced? |
| 05:26:33 | <Axman6> | I don't remember the details but that sounds samilliar |
| 05:26:39 | <Axman6> | familiar* |
| 05:27:10 | <MarcelineVQ> | I'm not actually sure! I'd check pacman -Qs haskell first and see what pops up |
| 05:27:41 | → | cow-orker joins (~foobar@pogostick.net) |
| 05:27:50 | <yushyin> | Axman6: p0a: yes, dynamic linking is still the default for arch's haskell packages, but at least it does provide a ghc-static if wanted |
| 05:29:22 | <xxasiaj> | MarcelineVQ : this is what appeared : pacman -Qs haskelllocal/ghc-libs 8.10.2-1 The Glasgow Haskell Compiler - Dynamic Librarieslocal/haskell-async 2.2.2-23 Run IO operations asynchronously and wait for their resultslocal/haskell-base16-bytestring 0.1.1.7-3 Fast base16 (hex) encoding and decoding for |
| 05:29:22 | <xxasiaj> | ByteStringslocal/haskell-base64-bytestring 1.2.0.0-6 Fast base64 encoding and decoding for ByteStringslocal/haskell-cryptohash-sha256 0.11.101.0-17 Fast, pure and practical SHA-256 implementation.... |
| 05:30:36 | <p0a> | Axman6: It seems that the issues are fixed |
| 05:31:04 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 05:31:51 | <yushyin> | xxasiaj: if you really want to remove it just do pacman -Rsuc ghc-libs but you can just use ghcup anyways |
| 05:31:53 | <p0a> | Axman6: the experience will be different from other distros, but you are not left in a state where you don't know what to do, or can't do what you want; the wiki has details |
| 05:34:05 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:34:23 | <Axman6> | The Arch wiki always has details, it's the best thing about Arch :) |
| 05:36:13 | → | nineonin_ joins (~nineonine@50.216.62.2) |
| 05:36:55 | × | sagax quits (~sagax_nb@213.138.71.146) (Quit: Konversation terminated!) |
| 05:38:53 | × | nineonine quits (~nineonine@216-19-190-182.dyn.novuscom.net) (Ping timeout: 272 seconds) |
| 05:38:58 | × | tanuki quits (~quassel@173.168.154.189) (Ping timeout: 256 seconds) |
| 05:40:43 | × | finkata quits (~dpetrov@83.222.188.39) (Read error: Connection reset by peer) |
| 05:41:05 | × | p0a quits (~user@unaffiliated/p0a) (Quit: thank you for the answers) |
| 05:46:55 | → | random joins (~random@185.219.70.106) |
| 05:47:45 | × | alp quits (~alp@2a01:e0a:58b:4920:b51a:42ee:4512:fdae) (Ping timeout: 272 seconds) |
| 05:49:08 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 05:50:41 | ← | iqubic parts (~user@2601:602:9500:4870:d13c:5aea:b558:d2ed) ("ERC (IRC client for Emacs 28.0.50)") |
| 05:50:58 | → | iqubic` joins (~user@2601:602:9500:4870:cdaf:7435:4c77:278a) |
| 05:51:26 | → | jb55 joins (~jb55@gateway/tor-sasl/jb55) |
| 05:51:31 | × | iqubic` quits (~user@2601:602:9500:4870:cdaf:7435:4c77:278a) (Client Quit) |
| 05:54:36 | → | Sanchayan joins (~Sanchayan@223.226.111.203) |
| 05:58:28 | hackage | flink-statefulfun 0.3.0.0 - Flink stateful functions SDK https://hackage.haskell.org/package/flink-statefulfun-0.3.0.0 (tdbgamer) |
| 05:59:22 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 256 seconds) |
| 06:00:01 | × | kreative quits (~kreative@185.163.110.116) () |
| 06:00:12 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 06:00:35 | × | nshepperd quits (~nshepperd@pool-96-239-61-124.nycmny.fios.verizon.net) (Ping timeout: 240 seconds) |
| 06:03:21 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 06:04:24 | → | jwynn6 joins (~jwynn6@050-088-122-078.res.spectrum.com) |
| 06:04:31 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 244 seconds) |
| 06:04:35 | × | cow-orker quits (~foobar@pogostick.net) (Ping timeout: 240 seconds) |
| 06:04:49 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
| 06:05:15 | → | p0a joins (~user@unaffiliated/p0a) |
| 06:05:19 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 06:05:48 | × | andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection) |
| 06:07:59 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 258 seconds) |
| 06:10:47 | × | nbloomf quits (~nbloomf@2600:1700:83e0:1f40:1975:ad5b:4777:bf80) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 06:11:40 | → | cow-orker joins (~foobar@pogostick.net) |
| 06:15:25 | → | alp joins (~alp@2a01:e0a:58b:4920:8cb0:eda6:3ba1:bbe3) |
| 06:18:25 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 06:19:25 | × | johs quits (sid246410@gateway/web/irccloud.com/x-fxzggmlrvgjkxynk) (Ping timeout: 240 seconds) |
| 06:19:33 | × | mudri quits (sid317655@gateway/web/irccloud.com/x-fieggmdqfmzcrqpn) (Ping timeout: 260 seconds) |
| 06:19:45 | × | entel quits (uid256215@botters/entel) (Ping timeout: 260 seconds) |
| 06:20:05 | × | sfvm quits (~sfvm@37.228.215.148) (Quit: off to the basement, mixing up the medicine) |
| 06:20:06 | × | scav quits (sid309693@gateway/web/irccloud.com/x-aajvlddkzxpzyrkk) (Read error: Connection reset by peer) |
| 06:20:07 | × | rodlogic__ quits (sid214676@gateway/web/irccloud.com/x-amlajdzmxjyobgrq) (Read error: Connection reset by peer) |
| 06:20:07 | × | mcfilib quits (sid302703@gateway/web/irccloud.com/x-rynmppnojynjznyn) (Read error: Connection reset by peer) |
| 06:20:09 | × | elvishjerricco quits (sid237756@NixOS/user/ElvishJerricco) (Read error: Connection reset by peer) |
| 06:20:09 | × | eacameron quits (sid256985@gateway/web/irccloud.com/x-gpifboixmoeemfmh) (Read error: Connection reset by peer) |
| 06:20:17 | → | mudri joins (sid317655@gateway/web/irccloud.com/x-wgciiciclurklmio) |
| 06:20:26 | → | scav joins (sid309693@gateway/web/irccloud.com/x-wzdeycixeytkuxbp) |
| 06:20:26 | → | eacameron joins (sid256985@gateway/web/irccloud.com/x-kpwlorbysgtnxhte) |
| 06:20:26 | → | mcfilib joins (sid302703@gateway/web/irccloud.com/x-jxboonrzncouqkfs) |
| 06:20:27 | → | johs joins (sid246410@gateway/web/irccloud.com/x-mkeicffdlyarxtfa) |
| 06:20:30 | → | elvishjerricco joins (sid237756@NixOS/user/ElvishJerricco) |
| 06:20:30 | → | rodlogic__ joins (sid214676@gateway/web/irccloud.com/x-nihpzxtqkbdvurne) |
| 06:20:34 | → | entel joins (uid256215@botters/entel) |
| 06:20:44 | × | p0a quits (~user@unaffiliated/p0a) (Quit: bye) |
| 06:23:25 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 06:24:34 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 06:24:48 | → | andreas303 joins (~andreas@gateway/tor-sasl/andreas303) |
| 06:25:25 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 06:30:01 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds) |
| 06:35:05 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 06:36:31 | × | Rudd0 quits (~Rudd0@185.189.115.98) (Remote host closed the connection) |
| 06:38:35 | × | Sanchayan quits (~Sanchayan@223.226.111.203) (Quit: leaving) |
| 06:40:04 | × | xxasiaj quits (bcc0ac95@ipbcc0ac95.dynamic.kabel-deutschland.de) (Ping timeout: 245 seconds) |
| 06:40:20 | → | lucid_0x80 joins (~lucid_0x8@188.253.231.113) |
| 06:40:21 | × | giaco quits (~jack@2-238-151-49.ip244.fastwebnet.it) (Remote host closed the connection) |
| 06:40:55 | → | otulp joins (~otulp@ti0187q162-5025.bb.online.no) |
| 06:41:04 | → | giaco joins (~jack@2-238-151-49.ip244.fastwebnet.it) |
| 06:45:05 | → | tbreslein joins (~tbreslein@2a02:8108:140:44f8::901) |
| 06:46:40 | → | sagax joins (~sagax_nb@213.138.71.146) |
| 06:49:16 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 06:50:04 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 06:50:28 | × | Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer) |
| 06:54:21 | → | sammuel86 joins (~sammuel86@185.244.214.216) |
| 06:57:21 | × | bobajett quits (~user@2001:470:0:301::1e) (Remote host closed the connection) |
| 06:57:31 | <sim590> | How can I create a wrapper around integers that can be instanciated just with an Integer (without needing to write teh constructor). Like Integer and Int can both instanciate with the same digit glyphs. |
| 07:00:03 | → | bitmagie joins (~Thunderbi@200116b806af98000151301dfab240c8.dip.versatel-1u1.de) |
| 07:03:26 | → | kritzefitz joins (~kritzefit@fw-front.credativ.com) |
| 07:03:38 | <opqdonut> | :t 3 |
| 07:03:40 | <lambdabot> | Num p => p |
| 07:03:40 | <Axman6> | make an instance of Num |
| 07:03:48 | <sim590> | Oh that's all :o |
| 07:03:53 | <opqdonut> | especially the fromInteger method |
| 07:04:09 | <Axman6> | "3" means "fromIntegral (3 :: Integer)" |
| 07:04:10 | → | danvet_ joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
| 07:05:22 | × | xff0x quits (~fox@2001:1a81:53e7:fb00:e98b:1e53:4e8a:cb9b) (Ping timeout: 260 seconds) |
| 07:05:27 | <sim590> | d:t fromIntegral |
| 07:05:32 | <sim590> | :t fromIntegral |
| 07:05:34 | <lambdabot> | (Integral a, Num b) => a -> b |
| 07:05:54 | <kritzefitz> | Isn't it fromInteger? |
| 07:06:02 | <Axman6> | probably |
| 07:06:07 | × | falafel quits (~falafel@2605:e000:1527:d491:a806:37fa:6971:2798) (Ping timeout: 240 seconds) |
| 07:07:03 | → | xff0x joins (~fox@2001:1a81:53e7:fb00:e98b:1e53:4e8a:cb9b) |
| 07:10:20 | × | bitmapper quits (uid464869@gateway/web/irccloud.com/x-jdjhyordzkibihwa) (Quit: Connection closed for inactivity) |
| 07:11:21 | × | alp quits (~alp@2a01:e0a:58b:4920:8cb0:eda6:3ba1:bbe3) (Ping timeout: 272 seconds) |
| 07:11:45 | × | bitmagie quits (~Thunderbi@200116b806af98000151301dfab240c8.dip.versatel-1u1.de) (Quit: bitmagie) |
| 07:14:54 | → | rslima_____ joins (sid26145@gateway/web/irccloud.com/x-vbogpauczgzfxuev) |
| 07:15:03 | → | pierrot_ joins (~pi@vmi95795.contabo.host) |
| 07:15:15 | × | pierrot quits (~pi@unaffiliated/pierrot) (Quit: Let us not forget that the perfect is also the enemy of the bad and the ugly.) |
| 07:15:15 | × | pdxleif quits (~pdxleif@ec2-54-68-166-10.us-west-2.compute.amazonaws.com) (Quit: ZNC - http://znc.in) |
| 07:15:16 | × | rslima____ quits (sid26145@gateway/web/irccloud.com/x-nijwoaxwcetixacu) (Read error: Connection reset by peer) |
| 07:15:16 | × | kkd quits (~memxor@unaffiliated/kartikeya) (Quit: bye!) |
| 07:15:25 | → | memxor joins (~memxor@2400:8902::f03c:92ff:feac:6d1) |
| 07:15:25 | × | memxor quits (~memxor@2400:8902::f03c:92ff:feac:6d1) (Changing host) |
| 07:15:25 | → | memxor joins (~memxor@unaffiliated/kartikeya) |
| 07:15:32 | × | thonkpod quits (~thonkpod@2001:19f0:ac01:b46:5400:1ff:fec7:d73d) (Ping timeout: 260 seconds) |
| 07:15:34 | × | bob_twinkles quits (~quassel@ec2-52-37-66-13.us-west-2.compute.amazonaws.com) (Remote host closed the connection) |
| 07:15:40 | × | CitizenSnips quits (~CitizenSn@irc.refl.club) (Quit: ZNC 1.8.1 - https://znc.in) |
| 07:16:02 | → | CitizenSnips joins (~CitizenSn@irc.refl.club) |
| 07:16:09 | × | sveit quits (~sveit@2001:19f0:ac01:247:5400:ff:fe5c:689f) (Ping timeout: 244 seconds) |
| 07:16:13 | × | mmohammadi9812 quits (~mmohammad@5.238.179.190) (Ping timeout: 258 seconds) |
| 07:16:50 | → | borne joins (~fritjof@200116b864837e00537d5cc8226f9d9f.dip.versatel-1u1.de) |
| 07:17:10 | × | phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 272 seconds) |
| 07:17:11 | → | pdxleif joins (~pdxleif@ec2-54-68-166-10.us-west-2.compute.amazonaws.com) |
| 07:17:25 | → | shatriff joins (~vitaliish@176.52.219.10) |
| 07:17:27 | × | ptrcmd quits (~ptrcmd@unaffiliated/petercommand) (Ping timeout: 265 seconds) |
| 07:17:39 | → | thonkpod joins (~thonkpod@2001:19f0:ac01:b46:5400:1ff:fec7:d73d) |
| 07:17:44 | → | ptrcmd joins (~ptrcmd@unaffiliated/petercommand) |
| 07:17:54 | → | phaul joins (~phaul@ruby/staff/phaul) |
| 07:18:10 | → | sveit joins (~sveit@2001:19f0:ac01:247:5400:ff:fe5c:689f) |
| 07:18:10 | → | bob_twinkles joins (~quassel@ec2-52-37-66-13.us-west-2.compute.amazonaws.com) |
| 07:19:56 | → | fendor joins (~fendor@77.119.131.134.wireless.dyn.drei.com) |
| 07:21:40 | → | alp joins (~alp@88.126.45.36) |
| 07:25:27 | × | josh_ quits (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Remote host closed the connection) |
| 07:25:33 | × | niko quits (~niko@freenode/staff/ubuntu.member.niko) (Quit: leaving) |
| 07:27:01 | → | niko joins (~niko@freenode/staff/ubuntu.member.niko) |
| 07:27:20 | → | josh_ joins (~josh@c-67-164-104-206.hsd1.ca.comcast.net) |
| 07:29:38 | → | bitmagie joins (~Thunderbi@200116b806af98000151301dfab240c8.dip.versatel-1u1.de) |
| 07:30:12 | → | hive-mind joins (~hivemind@rrcs-67-53-148-69.west.biz.rr.com) |
| 07:31:12 | → | chele joins (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) |
| 07:32:06 | → | bahamas joins (~lucian@unaffiliated/bahamas) |
| 07:33:06 | × | bitmagie quits (~Thunderbi@200116b806af98000151301dfab240c8.dip.versatel-1u1.de) (Client Quit) |
| 07:33:24 | × | cow-orker quits (~foobar@pogostick.net) (Ping timeout: 265 seconds) |
| 07:35:46 | × | machinedgod quits (~machinedg@d67-193-126-196.home3.cgocable.net) (Ping timeout: 246 seconds) |
| 07:36:47 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 07:37:44 | → | madjestic joins (~madjestic@86-88-72-244.fixed.kpn.net) |
| 07:39:47 | × | darjeeling_ quits (~darjeelin@112.16.171.8) (Ping timeout: 240 seconds) |
| 07:40:05 | × | gnumonik quits (~gnumonik@c-73-170-91-210.hsd1.ca.comcast.net) (Read error: Connection reset by peer) |
| 07:40:14 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye) |
| 07:40:16 | → | cow-orker joins (~foobar@pogostick.net) |
| 07:40:21 | × | josh_ quits (~josh@c-67-164-104-206.hsd1.ca.comcast.net) (Remote host closed the connection) |
| 07:40:40 | → | mananamenos joins (~mananamen@84.122.202.215.dyn.user.ono.com) |
| 07:42:45 | → | glguy_ joins (x@freenode/staff/haskell.developer.glguy) |
| 07:42:45 | × | glguy quits (x@freenode/staff/haskell.developer.glguy) (Killed (moon.freenode.net (Nickname regained by services))) |
| 07:42:45 | glguy_ | is now known as glguy |
| 07:43:04 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 07:45:20 | → | John20 joins (~John@82.46.59.122) |
| 07:45:36 | → | Orbstheorem joins (~roosember@hellendaal.orbstheorem.ch) |
| 07:47:25 | × | macrover quits (~macrover@ip70-189-231-35.lv.lv.cox.net) (Ping timeout: 265 seconds) |
| 07:47:53 | → | kindaro joins (1f08d381@h31-8-211-129.dyn.bashtel.ru) |
| 07:48:21 | → | thir joins (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) |
| 07:49:42 | → | Tops21 joins (~Tobias@dyndsl-095-033-025-123.ewe-ip-backbone.de) |
| 07:51:03 | <kindaro> | Suppose `main = interact (show @Int ∘ read)`. How can I extend this program to operate on any of a variety of types, type name being given by user on command line? My aim is to write an echo server for use in automated checking of parsing and serialization, client being written in another language. |
| 07:51:51 | <opqdonut> | haskell types disappear at runtime, so there's no direct way |
| 07:52:15 | × | Tops2 quits (~Tobias@dyndsl-091-249-082-222.ewe-ip-backbone.de) (Ping timeout: 265 seconds) |
| 07:52:15 | <opqdonut> | but you can do something like write an Enum for the supported types |
| 07:52:38 | <opqdonut> | or something even fancier with singletons or some other type-level trickery |
| 07:53:01 | × | xff0x quits (~fox@2001:1a81:53e7:fb00:e98b:1e53:4e8a:cb9b) (Ping timeout: 244 seconds) |
| 07:53:03 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 07:54:13 | → | xff0x joins (~fox@2001:1a81:53e7:fb00:9052:62db:4246:c379) |
| 07:54:59 | × | jedws quits (~jedws@121.209.139.222) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 07:55:17 | <lortabac> | probably the simplest way is to pattern-match on the user-provided string |
| 07:55:44 | <lortabac> | it doesn't require any advanced feature |
| 07:56:02 | × | mac10688 quits (~mac10688@c-76-115-116-76.hsd1.or.comcast.net) (Ping timeout: 244 seconds) |
| 07:56:29 | <kindaro> | Imagine I have a 50 types large variety. Some case expression! |
| 07:56:29 | → | mac10688 joins (~mac10688@c-76-115-116-76.hsd1.or.comcast.net) |
| 07:56:32 | <lortabac> | or to parse to an enum, and pattern-match on it |
| 07:57:24 | × | zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving) |
| 07:57:41 | <tomsmeding> | kindaro: would you want to allow the user to enter any haskell type? What about "IO ()"? :) |
| 07:57:42 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
| 07:58:35 | → | zaquest joins (~notzaques@5.128.210.178) |
| 07:59:03 | <kindaro> | No, only those in a specified variety. If a type is not supported, I should respectfully decline. |
| 07:59:51 | × | hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Quit: hekkaidekapus) |
| 08:00:20 | → | coot joins (~coot@37.30.59.210.nat.umts.dynamic.t-mobile.pl) |
| 08:00:36 | <tomsmeding> | then I guess if you're already making a list of the supported ones, well, you already have to write the list :) |
| 08:01:06 | <tomsmeding> | doing it with Enum/Read/Show can help reducing the number of times you have to write that list, I guess |
| 08:01:20 | → | dhil joins (~dhil@11.29.39.217.dyn.plus.net) |
| 08:03:19 | <lortabac> | kindaro: maybe you can try to generate a big GADT with TemplateHaskell and a mechanical rule for parsing, but at some point you necessarily need to list all the types at least once |
| 08:03:39 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 08:04:21 | <lortabac> | something like data CliType :: * -> * where Int :: CliType Int; Char :: CliType Char... |
| 08:05:17 | <kindaro> | Suppose I want to support all types that are instances of `Show` that are in scope at the time of compilation. |
| 08:05:37 | <kindaro> | I then need to get a list of such types and build a case expression. |
| 08:06:50 | <tomsmeding> | "all types that are instances of `Show`" sounds nice but is not something that Haskell lets you query easily |
| 08:07:30 | → | notzmv` joins (~user@177.45.26.174) |
| 08:07:33 | <tomsmeding> | not even sure if TemplateHaskell will get you that |
| 08:08:09 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 08:08:39 | <tomsmeding> | oh it does |
| 08:08:54 | <tomsmeding> | ooooooh that is decidedly ugly |
| 08:09:15 | memxor | is now known as kkd |
| 08:09:22 | <kindaro> | Can you give me some links? |
| 08:09:47 | × | howdoi quits (uid224@gateway/web/irccloud.com/x-zozvjyzrnsmbzmrc) (Quit: Connection closed for inactivity) |
| 08:11:02 | × | notzmv quits (~user@unaffiliated/zmv) (Ping timeout: 258 seconds) |
| 08:12:20 | × | tzh quits (~tzh@2601:448:c500:5300::82b3) (Quit: zzz) |
| 08:12:58 | <tomsmeding> | just checking myself if it will work at all, but https://hackage.haskell.org/package/template-haskell-2.16.0.0/docs/Language-Haskell-TH.html#v:reifyInstances |
| 08:13:37 | <lortabac> | kindaro: there are a couple of ugly solutions for that, though I would never use them for real |
| 08:13:49 | <lortabac> | @hackage constraints-emerge |
| 08:13:49 | <lambdabot> | https://hackage.haskell.org/package/constraints-emerge |
| 08:14:05 | × | xcmw quits (~textual@dyn-72-33-0-89.uwnet.wisc.edu) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 08:14:29 | <kindaro> | Oh, this is cute! |
| 08:14:31 | <lortabac> | https://github.com/rampion/constraint-unions |
| 08:15:27 | × | bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 240 seconds) |
| 08:16:27 | × | lucid_0x80 quits (~lucid_0x8@188.253.231.113) (Ping timeout: 240 seconds) |
| 08:16:27 | <kindaro> | I recall passing explicit dictionaries is being considered for GHC: https://github.com/ghc-proposals/ghc-proposals/pull/324 |
| 08:18:01 | → | knupfer joins (~Thunderbi@mue-88-130-61-186.dsl.tropolys.de) |
| 08:18:29 | <tomsmeding> | kindaro: import Language.Haskell.TH ; import Language.Haskell.TH.Ppr ; putStrLn $( LitE . StringL . pprint <$> reifyInstances ''Show [ VarT (mkName "a") ] ) |
| 08:18:34 | <tomsmeding> | that prints stuff :p |
| 08:18:54 | <tomsmeding> | presumably if you know a bit more about templatehaskell you can make that work somehow? |
| 08:22:05 | → | bahamas joins (~lucian@unaffiliated/bahamas) |
| 08:22:21 | → | ces joins (~ces@52d3ce3c.dynamic-ip.k-net.dk) |
| 08:23:27 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 08:24:23 | → | raichoo joins (~raichoo@213.240.178.58) |
| 08:26:14 | → | cpressey joins (~cpressey@79-72-201-29.dynamic.dsl.as9105.com) |
| 08:26:15 | → | kuribas joins (~user@ptr-25vy0i8if8811202m3x.18120a2.ip6.access.telenet.be) |
| 08:28:44 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
| 08:32:04 | → | __monty__ joins (~toonn@unaffiliated/toonn) |
| 08:33:32 | <kuribas> | what is wrong with clojure guys absolutely having to bash haskell to show their language? https://lispcast.com/user-wizard-scenario/ |
| 08:33:49 | × | carldd1 quits (~carldd@90-224-49-113-no56.tbcn.telia.com) (Read error: Connection reset by peer) |
| 08:33:52 | <merijn> | kuribas: Insecurity |
| 08:33:53 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 08:34:25 | <merijn> | Nothing illustrates your point as well as a strawman the size of the wicker man... |
| 08:34:43 | <kuribas> | merijn: if they are happy with their language, why not just use it? |
| 08:34:55 | → | carldd1 joins (~carldd@90-224-49-113-no56.tbcn.telia.com) |
| 08:35:12 | <merijn> | kuribas: Because they feel insecure about using it and need to justify the superiority :p |
| 08:35:27 | <merijn> | That's like 90% of all "language X sucks, look at language Y" advocacy |
| 08:35:33 | <kuribas> | it's not like haskell is perfect |
| 08:35:38 | <merijn> | Unless is C or C++, then it's just truth |
| 08:35:44 | <kuribas> | lol |
| 08:35:49 | <merijn> | s/Unless/Unless X/ |
| 08:35:50 | tomsmeding | X doubt |
| 08:36:30 | <kuribas> | I am perfectly fine with bashing haskell, but their criticism makes no sense. |
| 08:36:44 | × | hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-arhqczabjmakjtmj) (Quit: Connection closed for inactivity) |
| 08:36:50 | <merijn> | kuribas: Of course, because they don't know haskell enough to make a coherent criticism |
| 08:37:07 | <merijn> | Just look at their silly 8 alternatives for partial validation |
| 08:37:17 | <kuribas> | I don't see other lisp guys do this, like common lisp or scheme. |
| 08:37:25 | <kuribas> | merijn: you mean spec? |
| 08:37:30 | <merijn> | There's much more elegant approaches using higher kinded types |
| 08:37:42 | <merijn> | kuribas: Now, the literaly example in your link |
| 08:37:43 | × | knupfer quits (~Thunderbi@mue-88-130-61-186.dsl.tropolys.de) (Ping timeout: 246 seconds) |
| 08:38:30 | <merijn> | kuribas: https://paste.tomsmeding.com/yy3PqZUb |
| 08:38:35 | <tomsmeding> | kuribas: that article is hilarious |
| 08:38:38 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
| 08:38:40 | <merijn> | As if any self-respecting Haskell programmer would write that |
| 08:38:49 | <kuribas> | yeah :) |
| 08:38:54 | <merijn> | That shit is begging for a digestive-functor/applicative validation so badly |
| 08:39:03 | → | chaosmasttter joins (~chaosmast@p200300c4a70aba018412238bea948280.dip0.t-ipconnect.de) |
| 08:39:10 | <tomsmeding> | it's basically saying: clojure is cool because it doesn't have the tools to give you type safety |
| 08:39:15 | <tomsmeding> | I mean, you can get the exact same in haskell |
| 08:39:18 | <tomsmeding> | they even did that in the article! |
| 08:39:20 | <merijn> | Like, Validation obsoletes their entire argument |
| 08:39:31 | <tomsmeding> | it's literally not an argument against haskell or for clojure |
| 08:39:47 | <tomsmeding> | only argument being made is that haskell is more flexible, apparently? (I don't know clojure so can't confirm/deny) |
| 08:39:59 | <merijn> | kuribas: Lisp/scheme programmers don't feel compelled to "prove" themselves because they've got history/legacy |
| 08:40:21 | <tomsmeding> | merijn: yes that example cracked me up too |
| 08:40:44 | <merijn> | kuribas: Clojure is "the new kid" of lisps and so they feel compelled to justify it being better than Scheme/Lisp by picking silly fights like thise |
| 08:41:20 | <kuribas> | merijn: or just a record with Maybes? |
| 08:41:40 | → | thc202 joins (~thc202@unaffiliated/thc202) |
| 08:41:49 | <tomsmeding> | well they discarded that because it wasn't flexible enough for the frontenders, right? |
| 08:42:03 | <merijn> | kuribas: Really just anything but what they actually did |
| 08:42:12 | <kuribas> | tomsmeding: yeah, most stuff with hashmaps can be done in haskell with records. Except for merging, but that's dodge anyway. |
| 08:42:39 | <tomsmeding> | except adding new fields at runtime |
| 08:42:43 | <tomsmeding> | which they wanted apparently |
| 08:43:11 | <merijn> | which is a dumb thing to want anyway :p |
| 08:43:26 | <kuribas> | https://gist.github.com/kuribas/8afd49cf87fe5b1c32b1009ab59c4b1d |
| 08:43:35 | <tomsmeding> | article makes the case that it isn't, but that isn't even the problem |
| 08:44:01 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 08:44:54 | <kuribas> | tomsmeding: this does exactly what they want, you can add fields easily, and change the order of processing. |
| 08:45:02 | <kuribas> | just swap the guards |
| 08:45:05 | → | vicfred_ joins (~vicfred@unaffiliated/vicfred) |
| 08:45:10 | <tomsmeding> | not as easily as they want, right? |
| 08:45:24 | <kuribas> | what do they want then? |
| 08:45:29 | <tomsmeding> | they didn't want to change the backend code to add fields, or didn't I read the article closely enough (likely) |
| 08:46:00 | <tomsmeding> | > "We [backend team] required a description of the field and its type, and it would be deployed in the next release after we got to it. The front-end team needed to cycle faster than that." |
| 08:46:02 | <lambdabot> | "We [backend team] required a description of the field and its type, and it ... |
| 08:46:11 | <tomsmeding> | lambdabot: you're not wrong |
| 08:46:36 | <kuribas> | tomsmeding: that sounds like a social problem |
| 08:46:48 | <tomsmeding> | which, also, isn't even the point |
| 08:46:51 | <tomsmeding> | perhaps it is! |
| 08:46:56 | <kuribas> | tomsmeding: but even then, with a proper pipeline, such a change and recompiling takes 5 minutes in haskell. |
| 08:47:03 | <tomsmeding> | true |
| 08:47:06 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Ping timeout: 272 seconds) |
| 08:47:17 | <tomsmeding> | but, like, perhaps their organisation makes that they don't want that |
| 08:47:28 | <tomsmeding> | maybe they have a mandatory QA process for every backend upgrade or something |
| 08:47:41 | <tomsmeding> | but if they want to iterate without the backend changing, then, well, design your backend on that :p |
| 08:47:47 | <tomsmeding> | haskell gives you the flexibility |
| 08:48:04 | <tomsmeding> | anyhow the point is argued perfectly by the article itself so perhaps I should stop ranting :p |
| 08:48:26 | <AWizzArd> | I am writing an app and use Nix as build system. I would like to specify four things: what Haskell-Dependencies do I want to be in my release? What Haskell-Deps do I want to have during development time (i.e. benchmarking, tests, ...). And then I want to specify what OS-Deps I want during development in my nix-shell (ls, cd, cat, tree, ...) and what OS-Deps I want to be in my release (which can go into a tar.gz for dockerization). |
| 08:48:27 | <cpressey> | Doing data modelling like FirstAndLastNames, FirstNameAndEmail, LastNameAndEmail, ... is ridiculous *in any language*. I want to say "obviously ridiculous" but the very existence of the article makes me wonder about that. |
| 08:48:33 | <merijn> | It's just one of the classic blunders |
| 08:48:48 | <merijn> | "Tying your external representation directly to your internal representation" |
| 08:48:49 | × | thir quits (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 08:48:49 | <AWizzArd> | I see https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/haskell-modules/generic-builder.nix and there are tons of "Depends" attributes listed |
| 08:48:56 | <kuribas> | tomsmeding: in that case I would have a personFields field which is just a Aeson Value. |
| 08:49:00 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
| 08:49:11 | <merijn> | That's just as bad as "starting a land war in China" or "going against a Sicilian when death is on the line" |
| 08:49:30 | <AWizzArd> | What is the meaning of buildDepends, libraryHaskellDepends, executableHaskellDepends, libraryToolDepends, executableToolDepends, testToolDepends, benchmarkToolDepends, librarySystemDepends, executableSystemDepends, libraryFrameworkDepends, executableFrameworkDepends, testDepends, and the 50 others? |
| 08:49:59 | <merijn> | Sounds like a Nix question? |
| 08:51:17 | × | jrqc quits (~rofl@96.78.87.197) (Ping timeout: 258 seconds) |
| 08:52:04 | <kuribas> | merijn: in our app it's not only tied to the API, but also to the database. |
| 08:52:30 | <kuribas> | merijn: hashmaps just pass through everything, with only a light layer of transformation between. |
| 08:52:37 | → | glguy_ joins (x@freenode/staff/haskell.developer.glguy) |
| 08:52:37 | glguy | is now known as Guest12883 |
| 08:52:37 | × | Guest12883 quits (x@freenode/staff/haskell.developer.glguy) (Killed (tolkien.freenode.net (Nickname regained by services))) |
| 08:52:37 | glguy_ | is now known as glguy |
| 08:53:00 | <merijn> | kuribas: Every single time I've done that I've lived to regret it :p |
| 08:53:14 | <AWizzArd> | merijn: a Nix question that is very Haskell related. As in: what flags can I pass to "ghc", which happens to be a Linux tool, but which is essentially not a #Linux question. |
| 08:53:34 | <merijn> | I've learned to accept that the "boilerplate' of separate external and internal representations is worth it and inevitable |
| 08:53:35 | <maerwald> | AWizzArd: imo still better to ask in the nix channel |
| 08:53:50 | <kuribas> | merijn: however it's convenient in servant to write your records like the json objects. |
| 08:54:14 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 08:54:51 | <kuribas> | merijn: or I would need two types, ExternalResource, and Resource |
| 08:55:00 | <merijn> | kuribas: Yes |
| 08:55:15 | <lortabac> | I think it is a good idea to have two types anyway |
| 08:55:20 | → | jrqc joins (~rofl@96.78.87.197) |
| 08:55:58 | <merijn> | kuribas: Eventually you'll come around to my and lortabac's way of thinking, after you've made yourself suffer enough :) |
| 08:56:23 | <kuribas> | possibly |
| 08:56:36 | <kuribas> | I adapt my code as the needs change |
| 08:56:52 | <kuribas> | but clojure is a big bottleneck |
| 08:57:01 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9) |
| 08:57:21 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 08:57:47 | <kuribas> | with its inability to model the business domain, provide safe abstractions, and giving zero consistency garantees. |
| 08:58:27 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 08:59:23 | × | gxt quits (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds) |
| 09:00:01 | × | sammuel86 quits (~sammuel86@185.244.214.216) () |
| 09:00:27 | × | madjestic quits (~madjestic@86-88-72-244.fixed.kpn.net) (Ping timeout: 240 seconds) |
| 09:00:30 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 09:02:50 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9) |
| 09:03:23 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 09:04:16 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 09:06:26 | → | todda7 joins (~torstein@ppp005055049059.access.hol.gr) |
| 09:06:59 | <kuribas> | merijn: actually I already have more types for one resource. Like a type for getting and setting information, a type with less fields, etc... |
| 09:07:00 | × | carlomagno1 quits (~cararell@inet-hqmc02-o.oracle.com) (Remote host closed the connection) |
| 09:08:06 | <kuribas> | merijn: a clojurist would probably now grin in satisfaction, look at all that complexity! |
| 09:08:13 | <kuribas> | merijn: but IMO it's worth it. |
| 09:08:43 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 09:14:27 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 09:18:47 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 09:20:40 | <sm[m]> | there was no criticism or bashing in that article.. it's well written and interesting I think |
| 09:20:42 | × | dhil quits (~dhil@11.29.39.217.dyn.plus.net) (Ping timeout: 265 seconds) |
| 09:21:17 | <kuribas> | sm[m]: the haskell code is pretty bad |
| 09:21:30 | → | DireFog joins (~DireFog@s91904426.blix.com) |
| 09:22:17 | <sm[m]> | that's a silly thing to say, since they're just walking through a series of what ifs (pretty realistic thought process for someone figuring this stuff out) |
| 09:23:42 | <sm[m]> | I think it shows haskell provides a lot of freedom to model your typing needs |
| 09:24:32 | <kuribas> | no, it fits perfectly in the clojure narative that types are too heavy and unnecessary. |
| 09:24:37 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 09:25:44 | × | cpressey quits (~cpressey@79-72-201-29.dynamic.dsl.as9105.com) (Ping timeout: 272 seconds) |
| 09:25:44 | <sm[m]> | perhaps, but that doesn't make it it criticism or bashing, and I think you weaken your argument by saying so |
| 09:26:25 | <sm[m]> | Just MHO |
| 09:27:13 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9) |
| 09:28:00 | → | cpressey joins (~cpressey@79-72-200-19.dynamic.dsl.as9105.com) |
| 09:28:09 | <kuribas> | sm[m]: perhaps it was written in good faith, but the code is still bad. |
| 09:28:24 | <sm[m]> | thanks for the link, I will watch for the HN discussion |
| 09:28:47 | × | bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 240 seconds) |
| 09:29:01 | <kuribas> | sm[m]: btw, I don't believe in show the bad way first |
| 09:29:10 | → | bahamas joins (~lucian@unaffiliated/bahamas) |
| 09:29:14 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
| 09:29:32 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 256 seconds) |
| 09:30:03 | <kuribas> | You learn the best by looking at good examples. |
| 09:30:37 | <kuribas> | Taking best ideas from everywhere and assimilating them into your own style. |
| 09:30:43 | <maerwald> | kuribas: I agree, I had a prof who used to show every single pitfall of a language, when teaching a language and thought that would give ppl an intuition. All it did was confuse them |
| 09:30:57 | <kuribas> | maerwald: right :) |
| 09:31:08 | <maerwald> | the C++ course was... |
| 09:31:19 | <sm[m]> | the article says that sometimes you want a more static model. So the first is not bad. Its just an engineering choice depending on the need. |
| 09:32:20 | <sm[m]> | the article lays out some of the options nicely. You could just As easily read it in reverse, describing a refactoring of over dynamic code to more statically checked. |
| 09:32:48 | <kuribas> | sm[m]: https://paste.tomsmeding.com/yy3PqZUb |
| 09:32:54 | <kuribas> | sm[m]: that's not bad? |
| 09:32:54 | × | ces quits (~ces@52d3ce3c.dynamic-ip.k-net.dk) (Quit: WeeChat 2.9) |
| 09:32:56 | <merijn> | sm[m]: The problem I have with it is that the static code is just a badly written strawman. You could easily have a static verbose that's both less verbose and more flexible |
| 09:32:59 | <sm[m]> | afk, sorry |
| 09:33:19 | <merijn> | sm[m]: And then using that bad code to justify the more dynamic approach |
| 09:33:53 | <kuribas> | sm[m]: I am pretty sure he wouldn't write this kind of code in clojure. |
| 09:34:11 | <kuribas> | sm[m]: I guess he is thinking about partial hashmaps. |
| 09:34:13 | <sm[m]> | (maybe write a follow up showing more possibilities ? I'd read it!) |
| 09:35:40 | → | ph88 joins (~ph88@213.23.78.154) |
| 09:36:15 | <kuribas> | probably he was thinking about a clojure workflow, then putting haskell types on it. |
| 09:36:21 | <sm[m]> | (Ps and yes that particular variant seemed bad for most needs Incan imagine, and I think they said so) |
| 09:36:24 | <kuribas> | then concluding haskell types are way to heavy. |
| 09:36:30 | × | m0rphism quits (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 272 seconds) |
| 09:36:42 | × | operand quits (~operand@is.altijd.moe) (Ping timeout: 260 seconds) |
| 09:37:14 | × | ptrcmd quits (~ptrcmd@unaffiliated/petercommand) (Ping timeout: 265 seconds) |
| 09:37:15 | → | ptrcmd_ joins (~ptrcmd@unaffiliated/petercommand) |
| 09:37:15 | <sm[m]> | gone |
| 09:37:36 | → | m0rphism joins (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de) |
| 09:37:59 | → | operand joins (~operand@is.altijd.moe) |
| 09:38:27 | × | jrqc quits (~rofl@96.78.87.197) (Ping timeout: 240 seconds) |
| 09:38:27 | × | mstruebing quits (~mstruebin@2001:41d0:8:93c7::1) (Ping timeout: 260 seconds) |
| 09:38:27 | × | copypasteque_ quits (~copypaste@2001:41d0:8:b325::1) (Ping timeout: 260 seconds) |
| 09:39:03 | → | mstruebing joins (~mstruebin@2001:41d0:8:93c7::1) |
| 09:39:20 | <ph88> | hey guys .. i have this code runReaderT (bla options) conf when i put flip in front of it i get a bunch of type errors ... maybe i need another function then ?? |
| 09:39:52 | → | copypasteque_ joins (~copypaste@2001:41d0:8:b325::1) |
| 09:40:25 | <maerwald> | (flip runReaderT) ...? |
| 09:40:29 | <[exa]> | ph88: what does it look like with the flip in the front? |
| 09:40:32 | → | acidjnk_new joins (~acidjnk@p200300d0c72378337d49dd4f750ab9d4.dip0.t-ipconnect.de) |
| 09:41:20 | → | dhil joins (~dhil@11.29.39.217.dyn.plus.net) |
| 09:41:53 | <kuribas> | ph88: runReaderT conf $ bla options ? |
| 09:41:55 | → | jrqc joins (~rofl@96.78.87.197) |
| 09:42:05 | <kuribas> | ph88: erm flip runReaderT conf $ bla options ? |
| 09:42:14 | <kuribas> | that should work |
| 09:43:20 | → | gxt joins (~gxt@gateway/tor-sasl/gxt) |
| 09:44:27 | → | solonarv joins (~solonarv@astrasbourg-653-1-252-112.w92-161.abo.wanadoo.fr) |
| 09:44:57 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 09:47:03 | <[exa]> | are there any operators around? ($ may break it) |
| 09:47:35 | → | cosimone joins (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) |
| 09:49:17 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 09:52:58 | × | bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 272 seconds) |
| 09:56:01 | × | rotaerk quits (rotaerk@2600:3c02::f03c:91ff:fe70:4a45) (Ping timeout: 272 seconds) |
| 09:56:48 | × | todda7 quits (~torstein@ppp005055049059.access.hol.gr) (Ping timeout: 256 seconds) |
| 09:58:12 | → | polyrain joins (~polyrain@2001:8003:e501:6901:988a:949a:6cb6:3522) |
| 10:00:33 | → | Rudd0 joins (~Rudd0@185.189.115.98) |
| 10:00:34 | × | ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection) |
| 10:01:12 | → | ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex) |
| 10:05:07 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 10:05:19 | thewormkill | is now known as twk- |
| 10:05:43 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 10:07:12 | → | Sanchayan joins (~Sanchayan@223.226.111.203) |
| 10:08:24 | → | DavidEichmann joins (~david@43.240.198.146.dyn.plus.net) |
| 10:09:27 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 10:13:33 | → | lucid_0x80 joins (~lucid_0x8@85.132.73.6) |
| 10:14:50 | → | bitmagie joins (~Thunderbi@200116b806af9800a5686823a67cc6e9.dip.versatel-1u1.de) |
| 10:15:12 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 10:15:13 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 260 seconds) |
| 10:16:04 | <hc> | [exa]: check #freenode for operators? ;p |
| 10:17:09 | <[exa]> | hc: it was more like...any operators around that haskell expression :D |
| 10:17:41 | <hc> | I know, just a silly joke :) |
| 10:17:59 | <[exa]> | :] |
| 10:19:27 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 10:20:02 | × | lucid_0x80 quits (~lucid_0x8@85.132.73.6) (Ping timeout: 256 seconds) |
| 10:20:43 | × | polyrain quits (~polyrain@2001:8003:e501:6901:988a:949a:6cb6:3522) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 10:21:41 | → | wonko7 joins (~wonko7@2a01:e35:2ffb:7040:8c5f:831a:4acc:45dd) |
| 10:23:56 | <ph88> | [exa], kuribas thank you .. i see what i did wrong now ... i put flip $ |
| 10:25:21 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 10:25:46 | → | rotaerk joins (rotaerk@2600:3c02::f03c:91ff:fe70:4a45) |
| 10:27:00 | → | bahamas joins (~lucian@188.24.181.166) |
| 10:27:00 | × | bahamas quits (~lucian@188.24.181.166) (Changing host) |
| 10:27:00 | → | bahamas joins (~lucian@unaffiliated/bahamas) |
| 10:29:12 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 10:30:18 | × | alp quits (~alp@88.126.45.36) (Ping timeout: 265 seconds) |
| 10:32:43 | × | bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 265 seconds) |
| 10:33:34 | → | darjeeling_ joins (~darjeelin@122.245.121.113) |
| 10:34:44 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:c862:81df:d6b3:8407) (Ping timeout: 244 seconds) |
| 10:35:27 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 10:35:52 | × | sw1nn quits (~sw1nn@host86-173-104-87.range86-173.btcentralplus.com) (Quit: WeeChat 2.9) |
| 10:37:47 | × | wonko7 quits (~wonko7@2a01:e35:2ffb:7040:8c5f:831a:4acc:45dd) (Ping timeout: 240 seconds) |
| 10:38:06 | → | sw1nn joins (~sw1nn@host86-173-104-87.range86-173.btcentralplus.com) |
| 10:38:45 | × | darjeeling_ quits (~darjeelin@122.245.121.113) (Ping timeout: 240 seconds) |
| 10:39:16 | → | Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas) |
| 10:39:47 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 10:39:55 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 10:40:11 | × | ryansmccoy quits (~ryansmcco@156.96.151.132) (Ping timeout: 240 seconds) |
| 10:40:29 | → | ryansmccoy joins (~ryansmcco@156.96.151.132) |
| 10:44:00 | × | sw1nn quits (~sw1nn@host86-173-104-87.range86-173.btcentralplus.com) (Quit: WeeChat 2.9) |
| 10:45:05 | → | sw1nn joins (~sw1nn@host86-173-104-87.range86-173.btcentralplus.com) |
| 10:45:41 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 10:45:57 | → | thir joins (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) |
| 10:46:43 | × | rprije quits (~rprije@27.143.220.203.dial.dynamic.acc01-myal-dub.comindico.com.au) (Ping timeout: 260 seconds) |
| 10:47:08 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:302e:75f2:472:3c96) |
| 10:48:01 | → | glguy_ joins (x@freenode/staff/haskell.developer.glguy) |
| 10:48:01 | glguy | is now known as Guest13239 |
| 10:48:01 | × | Guest13239 quits (x@freenode/staff/haskell.developer.glguy) (Killed (moon.freenode.net (Nickname regained by services))) |
| 10:48:01 | glguy_ | is now known as glguy |
| 10:49:31 | × | sw1nn quits (~sw1nn@host86-173-104-87.range86-173.btcentralplus.com) (Client Quit) |
| 10:50:14 | × | thir quits (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 10:50:25 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 10:50:36 | → | sw1nn joins (~sw1nn@host86-173-104-87.range86-173.btcentralplus.com) |
| 10:51:19 | outerpassage | is now known as Guest8389 |
| 10:51:19 | × | Guest8389 quits (~outerpass@li1196-30.members.linode.com) (Killed (kornbluth.freenode.net (Nickname regained by services))) |
| 10:51:23 | → | outerpassage joins (~outerpass@li1196-30.members.linode.com) |
| 10:52:16 | × | Patternmaster quits (~georg@li1192-118.members.linode.com) (Ping timeout: 256 seconds) |
| 10:53:54 | → | Patternmaster joins (~georg@li1192-118.members.linode.com) |
| 10:55:13 | → | darjeeling_ joins (~darjeelin@122.245.121.113) |
| 10:55:51 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 11:00:45 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
| 11:01:34 | → | p0a joins (~user@unaffiliated/p0a) |
| 11:02:22 | <p0a> | Hello I have a type that has some fields, say data Foo = Foo { a,b,c :: Int }. Now I want a MaybeFoo that is like Foo except all fields are Maybe Int |
| 11:02:50 | <p0a> | The idea is that I can search for Foo values in a list, equality == is only tested on the Just values |
| 11:04:14 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 256 seconds) |
| 11:05:52 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 11:10:28 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 11:14:04 | → | madjestic joins (~madjestic@86-88-72-244.fixed.kpn.net) |
| 11:15:54 | × | bitmagie quits (~Thunderbi@200116b806af9800a5686823a67cc6e9.dip.versatel-1u1.de) (Quit: bitmagie) |
| 11:16:06 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 11:16:20 | <merijn> | p0a: You can just define Foo as "Foo f = Foo { a, b, c :: f Int }" and then use "Foo Identity" as the "default" and "Foo Maybe" for the second case? |
| 11:18:12 | × | cpressey quits (~cpressey@79-72-200-19.dynamic.dsl.as9105.com) (Quit: WeeChat 1.9.1) |
| 11:18:29 | <p0a> | merijn: ah that's really nice, thank you |
| 11:18:39 | <p0a> | do you think 'f' is a good choice for that? |
| 11:19:06 | <p0a> | This is probably irrelevant but I'm curious if there's a better suggestoin |
| 11:20:05 | <merijn> | p0a: 'f' is just a variable (usually associated with Functors, hence the choice here) |
| 11:20:21 | <p0a> | Got it, thank you |
| 11:20:40 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 11:21:09 | <merijn> | p0a: Here's a nice blogpost that involves slightly more complicated type machinery for an even fancier version of that: https://reasonablypolymorphic.com/blog/higher-kinded-data/ |
| 11:21:42 | <merijn> | p0a: In fact, they literally use a "Person" "MaybePerson" example :p |
| 11:22:05 | <p0a> | Heh! |
| 11:22:09 | <p0a> | That's awesome, thanks. I will read it |
| 11:22:29 | × | jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection) |
| 11:23:43 | → | jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se) |
| 11:24:41 | <merijn> | p0a: I'd personally probably skip the whole Generic boilerplate, because it's kinda complicated, but the first part is certainly very useful |
| 11:25:16 | <p0a> | As I glanced over it |
| 11:25:20 | <p0a> | it got kinda scary towards the end |
| 11:25:37 | <p0a> | but if it is interesting I will read it |
| 11:25:50 | <merijn> | p0a: You can simply not use the scary part :) |
| 11:26:08 | <merijn> | p0a: The scary part is basically "using GHC Generics to avoid even writing the validate implementation" |
| 11:26:11 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 11:26:25 | → | pjb joins (~t@2a01cb04063ec50038cdaa6488b186d3.ipv6.abo.wanadoo.fr) |
| 11:26:27 | <p0a> | I see. I may not even need a validate myself |
| 11:26:30 | <merijn> | p0a: You can just use the datatype with a manual written validation/whatever and it'll "Just Work" |
| 11:26:33 | <p0a> | but we'll see, it depends on what the author is talking about |
| 11:26:45 | <p0a> | whoops, low battery... gotta go. Thank you again |
| 11:26:55 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 258 seconds) |
| 11:26:56 | × | p0a quits (~user@unaffiliated/p0a) (Quit: bye) |
| 11:30:11 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 11:30:37 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds) |
| 11:32:52 | <kuribas> | merijn: I prefer generics over higher kinded stuff |
| 11:33:23 | <kuribas> | or better, eot, when you don't need the heavy stuff that comes with generics: https://hackage.haskell.org/package/generics-eot-0.4.0.1/docs/Generics-Eot.html |
| 11:33:53 | <merijn> | kuribas: Those two don't even have the same usecase(s) so that seems like a weird comment |
| 11:34:15 | <merijn> | Especially given the context of a blogpost using both for very different things |
| 11:34:53 | → | bahamas joins (~lucian@188.24.181.166) |
| 11:34:53 | × | bahamas quits (~lucian@188.24.181.166) (Changing host) |
| 11:34:53 | → | bahamas joins (~lucian@unaffiliated/bahamas) |
| 11:36:25 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 11:39:54 | × | bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 265 seconds) |
| 11:40:58 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 11:41:07 | <maerwald> | Is there a way to discover whether a thread is currently blocked? |
| 11:42:11 | × | tinga quits (~tinga@5-168-208-80-pool.fiber.fcom.ch) (Ping timeout: 240 seconds) |
| 11:45:23 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 11:46:30 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 11:48:22 | × | alx741_ quits (~alx741@181.196.69.150) (Ping timeout: 256 seconds) |
| 11:49:07 | <kuribas> | merijn: yeah, the two aren't really related :) |
| 11:49:43 | <kuribas> | merijn: I dislike the HKD approach, because it is rather messy, and usually not that hard to avoid. |
| 11:49:47 | × | jgt quits (~jgt@195.225.146.77) (Ping timeout: 240 seconds) |
| 11:49:58 | → | alp joins (~alp@2a01:e0a:58b:4920:bc07:244b:4df4:499a) |
| 11:50:01 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 264 seconds) |
| 11:50:23 | → | idhugo joins (~idhugo@users-1190.st.net.au.dk) |
| 11:50:25 | × | plutoniix quits (~q@175.176.222.7) (Quit: Leaving) |
| 11:51:01 | → | fweht joins (uid404746@gateway/web/irccloud.com/x-hoeehmttzipzbkkn) |
| 11:51:24 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
| 11:51:52 | × | BalterNotz quits (ca420871@202.66.8.113) (Remote host closed the connection) |
| 11:53:46 | → | Saten-san joins (~Saten-san@ip-81-11-153-13.dsl.scarlet.be) |
| 11:53:51 | × | Saten-san quits (~Saten-san@ip-81-11-153-13.dsl.scarlet.be) (Client Quit) |
| 11:54:10 | → | Saten-san joins (~Saten-san@ip-81-11-153-13.dsl.scarlet.be) |
| 11:55:14 | × | Saten-san quits (~Saten-san@ip-81-11-153-13.dsl.scarlet.be) (Client Quit) |
| 11:56:37 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 11:57:53 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) (Quit: Quit.) |
| 12:00:02 | × | DireFog quits (~DireFog@s91904426.blix.com) () |
| 12:00:41 | × | Alleria_ quits (~AllahuAkb@69.202.254.168) (Ping timeout: 265 seconds) |
| 12:00:54 | → | alx741_ joins (~alx741@186.178.110.227) |
| 12:01:02 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
| 12:01:57 | → | ggole joins (~ggole@2001:8003:8119:7200:f871:c0ad:b761:dbf4) |
| 12:03:09 | → | avdb joins (~avdb@ip-81-11-153-13.dsl.scarlet.be) |
| 12:06:19 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 12:06:44 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 12:08:27 | hackage | hakyll 4.13.4.1 - A static website compiler library https://hackage.haskell.org/package/hakyll-4.13.4.1 (JasperVanDerJeugt) |
| 12:11:09 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 12:11:59 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 12:13:34 | ← | fweht parts (uid404746@gateway/web/irccloud.com/x-hoeehmttzipzbkkn) () |
| 12:14:56 | → | coot_ joins (~coot@37.30.60.139.nat.umts.dynamic.t-mobile.pl) |
| 12:15:07 | × | sagax quits (~sagax_nb@213.138.71.146) (Remote host closed the connection) |
| 12:16:52 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 12:17:13 | → | mu_ joins (~mu@unaffiliated/mu) |
| 12:18:04 | × | coot quits (~coot@37.30.59.210.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 256 seconds) |
| 12:18:15 | coot_ | is now known as coot |
| 12:19:03 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 12:19:52 | → | cpressey joins (~cpressey@79-72-200-19.dynamic.dsl.as9105.com) |
| 12:21:27 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 12:21:54 | × | Stanley00 quits (~stanley00@unaffiliated/stanley00) () |
| 12:25:17 | × | kindaro quits (1f08d381@h31-8-211-129.dyn.bashtel.ru) (Remote host closed the connection) |
| 12:27:03 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 12:28:07 | × | mu_ quits (~mu@unaffiliated/mu) (Ping timeout: 240 seconds) |
| 12:29:55 | × | chaosmasttter quits (~chaosmast@p200300c4a70aba018412238bea948280.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 12:29:59 | → | cosimone joins (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) |
| 12:31:07 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 240 seconds) |
| 12:31:07 | × | John20 quits (~John@82.46.59.122) (Ping timeout: 240 seconds) |
| 12:31:18 | × | Takumo quits (takumo@unaffiliated/takumokatekari) (Quit: WeeChat 1.9.1) |
| 12:31:43 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 12:33:43 | × | gxt quits (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds) |
| 12:34:36 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:302e:75f2:472:3c96) (Ping timeout: 244 seconds) |
| 12:35:26 | × | shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection) |
| 12:35:27 | → | bahamas joins (~lucian@188.24.181.166) |
| 12:35:27 | × | bahamas quits (~lucian@188.24.181.166) (Changing host) |
| 12:35:27 | → | bahamas joins (~lucian@unaffiliated/bahamas) |
| 12:35:44 | → | shatriff joins (~vitaliish@176.52.219.10) |
| 12:35:57 | → | Alleria_ joins (~AllahuAkb@2604:2000:1484:26:59c0:566a:2725:87ae) |
| 12:36:18 | → | gxt joins (~gxt@gateway/tor-sasl/gxt) |
| 12:36:45 | × | idhugo quits (~idhugo@users-1190.st.net.au.dk) (Quit: Leaving) |
| 12:37:09 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 12:38:00 | → | wonko7 joins (~wonko7@2a01:e35:2ffb:36a0:8c5f:831a:4acc:45dd) |
| 12:38:42 | → | AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl) |
| 12:39:34 | × | coot quits (~coot@37.30.60.139.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 246 seconds) |
| 12:41:20 | → | sagax joins (~sagax_nb@213.138.71.146) |
| 12:41:42 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 12:45:05 | × | halogenandtoast quits (~halogenan@072-176-116-031.res.spectrum.com) (Quit: WeeChat 2.9) |
| 12:47:17 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 12:47:25 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:b4e9:399f:908f:6639) |
| 12:50:07 | × | Orbstheorem quits (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 240 seconds) |
| 12:51:55 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
| 12:53:46 | → | jgt joins (~jgt@188.239.64.32) |
| 12:53:52 | → | Lodle joins (~Lodle@s91904426.blix.com) |
| 12:57:22 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 12:57:58 | hackage | servant-serf 0.0.1 - Generates a servant API module https://hackage.haskell.org/package/servant-serf-0.0.1 (goolord) |
| 13:00:46 | → | carlomagno joins (~cararell@inet-hqmc02-o.oracle.com) |
| 13:02:01 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 13:02:34 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 13:02:40 | × | bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 256 seconds) |
| 13:03:00 | → | chaosmasttter joins (~chaosmast@p200300c4a70aba018412238bea948280.dip0.t-ipconnect.de) |
| 13:03:30 | → | polyrain joins (~polyrain@2001:8003:e501:6901:988a:949a:6cb6:3522) |
| 13:06:11 | → | st8less joins (~st8less@ip72-204-59-82.fv.ks.cox.net) |
| 13:07:11 | → | hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net) |
| 13:07:32 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 13:11:35 | → | John20 joins (~John@82.46.59.122) |
| 13:11:46 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds) |
| 13:12:23 | × | ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 13:17:29 | × | Alleria_ quits (~AllahuAkb@2604:2000:1484:26:59c0:566a:2725:87ae) (Ping timeout: 244 seconds) |
| 13:17:43 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 13:18:23 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds) |
| 13:18:37 | → | Lowl3v3l joins (~Lowl3v3l@dslb-090-186-188-115.090.186.pools.vodafone-ip.de) |
| 13:21:27 | → | Alleria_ joins (~AllahuAkb@2604:2000:1484:26:59c0:566a:2725:87ae) |
| 13:22:36 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
| 13:22:57 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 13:25:54 | × | avdb quits (~avdb@ip-81-11-153-13.dsl.scarlet.be) (Quit: WeeChat 2.9) |
| 13:26:16 | × | chaosmasttter quits (~chaosmast@p200300c4a70aba018412238bea948280.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 13:27:49 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 13:29:47 | → | nbloomf joins (~nbloomf@2600:1700:83e0:1f40:1975:ad5b:4777:bf80) |
| 13:30:57 | × | nbloomf quits (~nbloomf@2600:1700:83e0:1f40:1975:ad5b:4777:bf80) (Client Quit) |
| 13:32:18 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 13:33:49 | × | tmciver quits (~tmciver@cpe-172-101-40-226.maine.res.rr.com) (Ping timeout: 264 seconds) |
| 13:35:07 | × | acidjnk_new quits (~acidjnk@p200300d0c72378337d49dd4f750ab9d4.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 13:36:41 | → | motte joins (~weechat@unaffiliated/motte) |
| 13:37:55 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 13:38:25 | → | nbloomf joins (~nbloomf@2600:1700:83e0:1f40:2975:3225:75da:b702) |
| 13:41:16 | <motte> | hi, i'm new to haskell and i would like to create a simple web server with basic access authentication. which library would best suit my needs? |
| 13:41:35 | <Uniaika> | not Servant, whatever you might be told |
| 13:41:43 | <Uniaika> | try Scotty and/or Yesod |
| 13:42:01 | <motte> | huh, that's what i was looking at currently. what's wrong with it? |
| 13:42:05 | <Taneb> | For this case I'd go scotty |
| 13:42:06 | <Uniaika> | ah, if you want to *create* a web *server*, you might have to go at a lower level with Warp/WAI |
| 13:42:20 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 13:42:27 | <Taneb> | servant is great if you want to have a large REST API. On the small, it's kind of got a lot of wasted power |
| 13:42:32 | <Uniaika> | motte: you don't have the level/understanding of type-level programming to understand what you'll need to do in order to use it |
| 13:42:37 | <opqdonut> | for a simple web server / backend, I'd just go with WAI & Warp directly |
| 13:42:42 | <Uniaika> | just don't hurt yourself with Servant yet |
| 13:43:05 | <motte> | the library should be as simple/minimal as possible, scalability isn't important etc. |
| 13:43:20 | <Uniaika> | go with WAI and Warp then |
| 13:43:23 | <Uniaika> | Godspeed! |
| 13:43:37 | <motte> | alright, will check it out, thankss |
| 13:43:48 | <hc> | lol, you don't need to understand any more type theory for servant than you do for getting along with warp/wai |
| 13:44:05 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 240 seconds) |
| 13:44:21 | <hc> | I mean, servant is already implemented; there are good howtos on how to use it |
| 13:44:51 | <motte> | oh, also, i plan to keep the credentials in a /etc/shadow -like text file. anything for that? |
| 13:44:52 | × | glguy quits (x@freenode/staff/haskell.developer.glguy) (Read error: Connection reset by peer) |
| 13:45:01 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 13:45:15 | <Uniaika> | hc: I did not mention type theory, I mentionned type-level programming - which is widely different |
| 13:45:17 | → | glguy joins (x@freenode/staff/haskell.developer.glguy) |
| 13:45:29 | <Uniaika> | at least type theory doesn't bring type error messages that are scary as shit |
| 13:45:53 | <Uniaika> | motte: why don't you hash+salt them in a SQL row? |
| 13:46:51 | → | aveltras joins (uid364989@gateway/web/irccloud.com/x-ituvpedwywfixetm) |
| 13:47:11 | × | sword865 quits (uid208942@gateway/web/irccloud.com/x-ifbndlqlczbvfcan) (Quit: Connection closed for inactivity) |
| 13:48:24 | <motte> | Uniaika: it's a pretty simple application, i don't think i need a database. just 1 configuration file for authorization and something for authentication |
| 13:48:47 | <Uniaika> | well you can use a SQLite database if you don't want to bother with a DBMS :) |
| 13:49:03 | <Uniaika> | I don't know if the /etc/shadow algorithm has an implementation in Haskell |
| 13:49:04 | <motte> | i pretty much already have the whole thing implemented using mqtt, but then i realized i sometimes need to send responses as well |
| 13:49:11 | <Uniaika> | that being said, it can be a fantastic side-project :P |
| 13:49:40 | <motte> | in mqtt's case i let the broker deal with authentication |
| 13:53:32 | × | Lodle quits (~Lodle@s91904426.blix.com) (Remote host closed the connection) |
| 13:53:44 | × | whataday quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 13:54:51 | → | whataday joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 13:55:27 | × | Clough quits (~Cain@190.121.220.203.dial.dynamic.acc01-fenw-glg.comindico.com.au) (Read error: Connection reset by peer) |
| 13:55:34 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 13:58:15 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 13:59:21 | → | nkly joins (~nkly@2a02:8109:9a80:a74:201:2eff:fe81:c6dd) |
| 13:59:27 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:b4e9:399f:908f:6639) (Ping timeout: 240 seconds) |
| 14:00:13 | × | jgt quits (~jgt@188.239.64.32) (Ping timeout: 264 seconds) |
| 14:00:34 | → | isovector1 joins (~isovector@172.103.216.166) |
| 14:01:01 | → | Amras joins (~Amras@unaffiliated/amras0000) |
| 14:01:07 | × | wonko7 quits (~wonko7@2a01:e35:2ffb:36a0:8c5f:831a:4acc:45dd) (Ping timeout: 240 seconds) |
| 14:03:08 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
| 14:03:58 | → | Wuzzy joins (~Wuzzy@p5790e6f5.dip0.t-ipconnect.de) |
| 14:04:36 | × | ph88 quits (~ph88@213.23.78.154) (Ping timeout: 256 seconds) |
| 14:05:23 | → | encod3 joins (~encod3@45-154-157-94.ftth.glasoperator.nl) |
| 14:05:37 | → | raehik joins (~raehik@cpc96984-rdng25-2-0-cust109.15-3.cable.virginm.net) |
| 14:05:48 | <kuribas> | merijn: I was thinking to make a library to pre (post-) process aeson data before (after) parsing/generating. |
| 14:05:57 | × | Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 260 seconds) |
| 14:06:03 | <kuribas> | merijn: to move around fields. |
| 14:06:26 | <kuribas> | merijn: in the best case in a typesafe way (using generics). |
| 14:06:27 | <Uniaika> | kuribas: aren't there already hooks to do that? |
| 14:06:49 | <kuribas> | Uniaika: you mean a handwritten parser? |
| 14:07:00 | <Uniaika> | no, hooks in Aeson |
| 14:07:02 | <Uniaika> | wait a sec |
| 14:08:22 | → | ystael joins (~ystael@209.6.50.55) |
| 14:08:26 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 14:09:07 | <Uniaika> | kuribas: https://hackage.haskell.org/package/aeson-1.4.6.0/docs/Data-Aeson.html#g:16 |
| 14:09:12 | <Uniaika> | option fields |
| 14:09:33 | <kuribas> | Uniaika: they only change the strings |
| 14:09:41 | <kuribas> | Uniaika: I want to reorder the JSON |
| 14:09:51 | <Uniaika> | wait, re-order it? |
| 14:10:49 | <Uniaika> | kuribas: that's tricky because objects are unordered while arrays are |
| 14:10:59 | <kuribas> | yeah, like {"subfield": {"x": 1, "y": 2}} => {"subfield_x": 1, "subfield_y": 2} |
| 14:11:19 | <Uniaika> | ah that's different |
| 14:11:26 | <Uniaika> | p. sure you can operate on the AST |
| 14:11:39 | <Uniaika> | although, to be fair, I would just use DTOs for that |
| 14:11:58 | <kuribas> | Uniaika: of course I can do Value -> Value, but I want something more principled, composable, and bidirectional. |
| 14:12:09 | <Uniaika> | and an explicit translation from the first (direct mapping of the object) to the second (better for my business logic) |
| 14:12:25 | <lortabac> | kuribas: lens-aeson ? |
| 14:12:29 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:df5:637e:fad1:ac7) |
| 14:12:36 | → | justanotheruser joins (~justanoth@unaffiliated/justanotheruser) |
| 14:12:50 | <kuribas> | lortabac: hmm, maybe an isomorphism? |
| 14:13:16 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
| 14:13:25 | <lortabac> | oh, if you don't want Value -> Value then lens-aeson is probably not the right tool |
| 14:16:33 | <kuribas> | well, maybe just Endo Value |
| 14:16:45 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 14:17:46 | × | random quits (~random@185.219.70.106) (Read error: Connection reset by peer) |
| 14:18:27 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 14:19:07 | → | Amras joins (~Amras@unaffiliated/amras0000) |
| 14:19:25 | × | xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 264 seconds) |
| 14:20:54 | × | Sanchayan quits (~Sanchayan@223.226.111.203) (Quit: leaving) |
| 14:21:14 | → | notzmv`` joins (~user@177.45.26.174) |
| 14:22:47 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 14:23:12 | × | kuribas quits (~user@ptr-25vy0i8if8811202m3x.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 14:24:43 | × | notzmv` quits (~user@177.45.26.174) (Ping timeout: 265 seconds) |
| 14:24:55 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 246 seconds) |
| 14:25:26 | → | obruT1 joins (~obruT@84.39.117.57) |
| 14:25:36 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 14:28:33 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 14:29:36 | → | Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net) |
| 14:30:33 | × | tbreslein quits (~tbreslein@2a02:8108:140:44f8::901) (Remote host closed the connection) |
| 14:30:50 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9) |
| 14:31:49 | → | tbreslein joins (~tbreslein@2a02:8108:140:44f8::901) |
| 14:32:35 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 14:33:29 | × | darjeeling_ quits (~darjeelin@122.245.121.113) (Ping timeout: 256 seconds) |
| 14:34:20 | → | darjeeling_ joins (~darjeelin@122.245.121.113) |
| 14:38:39 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 14:40:35 | → | polyphem joins (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) |
| 14:41:30 | → | mirrorbird joins (~psutcliff@2a00:801:3fb:53b9:b09b:cd4e:4e4a:44a9) |
| 14:43:34 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
| 14:45:37 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 14:47:24 | → | thir joins (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) |
| 14:48:54 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 14:51:47 | × | thir quits (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 14:53:28 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 14:54:46 | × | encod3 quits (~encod3@45-154-157-94.ftth.glasoperator.nl) () |
| 14:55:38 | × | raichoo quits (~raichoo@213.240.178.58) (Quit: Lost terminal) |
| 14:58:03 | → | ddellacosta joins (~dd@86.106.121.168) |
| 14:58:10 | → | glguy_ joins (x@freenode/staff/haskell.developer.glguy) |
| 14:58:10 | glguy | is now known as Guest34587 |
| 14:58:10 | × | Guest34587 quits (x@freenode/staff/haskell.developer.glguy) (Killed (moon.freenode.net (Nickname regained by services))) |
| 14:58:10 | glguy_ | is now known as glguy |
| 14:59:00 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 15:00:01 | × | obruT1 quits (~obruT@84.39.117.57) () |
| 15:00:49 | × | mac10688 quits (~mac10688@c-76-115-116-76.hsd1.or.comcast.net) (Ping timeout: 264 seconds) |
| 15:01:14 | → | mac10688 joins (~mac10688@c-76-115-116-76.hsd1.or.comcast.net) |
| 15:01:34 | → | aarvar joins (~foewfoiew@50.35.43.33) |
| 15:01:35 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 15:01:55 | → | coot joins (~coot@37.30.51.172.nat.umts.dynamic.t-mobile.pl) |
| 15:03:03 | → | Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 15:03:49 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 15:04:44 | <zincy_> | Is there a name for this? You have a N x N matrix and have a set of instructions to update elements in the grid |
| 15:05:08 | <zincy_> | startCol, endCol, startRow, endRow |
| 15:05:47 | <zincy_> | And a function to update each element |
| 15:05:47 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds) |
| 15:05:56 | Lord_of_Life_ | is now known as Lord_of_Life |
| 15:06:20 | <zincy_> | So you can compose transformations on given coordinates in the grid by sequencing instructions |
| 15:09:05 | × | borne quits (~fritjof@200116b864837e00537d5cc8226f9d9f.dip.versatel-1u1.de) (Ping timeout: 244 seconds) |
| 15:09:15 | <merijn> | zincy_: Array comprehensions? :p |
| 15:10:08 | <zincy_> | hehe |
| 15:10:58 | <merijn> | zincy_: Kinda serious |
| 15:11:00 | <merijn> | zincy_: http://www.sac-home.org/lib/exe/fetch.php?media=docs:tutorial.pdf |
| 15:11:20 | <merijn> | See chapter 4 on with loops |
| 15:12:30 | <merijn> | "tensor comprehensions" are also somewhat related |
| 15:13:03 | → | spew joins (uid195861@gateway/web/irccloud.com/x-jsbpggyredzfkvod) |
| 15:13:22 | <zincy_> | thanks! |
| 15:14:09 | <merijn> | zincy_: The various SaC papers should also talk a bit about fusing stuff like that together |
| 15:15:52 | → | thir joins (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) |
| 15:17:09 | <[exa]> | anyone on windows with working vscode integration? |
| 15:19:18 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 15:19:29 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 15:19:49 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 15:19:55 | × | thir quits (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 15:21:20 | → | chx joins (~chx@185.204.1.185) |
| 15:22:16 | → | lordcirth_ joins (~lordcirth@2607:f2c0:95a8:ef00:b128:6022:758c:dbc) |
| 15:22:39 | → | hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-unnsmhewxbfoaung) |
| 15:23:07 | <sm[m]> | I'm on mac with working vscode & haskell exts.. |
| 15:25:53 | → | todda7 joins (~torstein@athedsl-4367507.home.otenet.gr) |
| 15:26:41 | × | jespada quits (~jespada@90.254.241.6) (Ping timeout: 260 seconds) |
| 15:27:29 | → | bahamas joins (~lucian@unaffiliated/bahamas) |
| 15:28:15 | → | ClaudiusMaximus joins (~claude@198.123.199.146.dyn.plus.net) |
| 15:28:46 | × | ClaudiusMaximus quits (~claude@198.123.199.146.dyn.plus.net) (Changing host) |
| 15:28:46 | → | ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus) |
| 15:29:04 | → | jespada joins (~jespada@90.254.241.6) |
| 15:31:02 | <[exa]> | well I'm searching for "something that works without much effort" for 3-4 windows students, and don't have any windows handy to play with it |
| 15:32:33 | → | bloodstalker joins (~bloodstal@46.166.187.188) |
| 15:33:15 | <sm[m]> | Stack + Vscode + haskell extension seems very likely the winner there |
| 15:33:54 | → | macrover joins (~macrover@ip70-189-231-35.lv.lv.cox.net) |
| 15:35:45 | × | ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 15:36:27 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 240 seconds) |
| 15:37:17 | × | coot quits (~coot@37.30.51.172.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
| 15:37:50 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 15:38:07 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 15:39:11 | <maerwald> | stack? |
| 15:39:14 | <maerwald> | on windows? |
| 15:39:22 | <maerwald> | it has outdated msys2 |
| 15:40:07 | <maerwald> | installing system dependencies requires dealing with pacman |
| 15:40:27 | hackage | polysemy-video 0.1.0.0 - https://hackage.haskell.org/package/polysemy-video-0.1.0.0 (locallycompact) |
| 15:41:00 | → | xerox_ joins (~xerox@unaffiliated/xerox) |
| 15:41:17 | <zincy_> | merijn: SaC is cool, never heard of it before |
| 15:41:40 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 15:42:36 | <sm[m]> | [exa] might let us know |
| 15:42:43 | → | mu_ joins (~mu@unaffiliated/mu) |
| 15:42:52 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 15:43:20 | → | gtomas joins (~gtomas@a89-153-131-85.cpe.netcabo.pt) |
| 15:43:53 | × | nbloomf quits (~nbloomf@2600:1700:83e0:1f40:2975:3225:75da:b702) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 15:45:19 | notzmv`` | is now known as notzmv |
| 15:45:27 | × | notzmv quits (~user@177.45.26.174) (Changing host) |
| 15:45:27 | → | notzmv joins (~user@unaffiliated/zmv) |
| 15:45:48 | <[exa]> | yeah that's why I'm asking, they gave up on stack |
| 15:45:59 | <[exa]> | b/c installing it failed for like 3 times |
| 15:46:04 | × | elliott_ quits (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
| 15:46:05 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 240 seconds) |
| 15:47:28 | → | nbloomf joins (~nbloomf@2600:1700:83e0:1f40:e5aa:7dfa:231a:59a4) |
| 15:48:09 | <lordcirth_> | [exa], Win10? Wouldn't WSL be the best? |
| 15:48:45 | → | elliott_ joins (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) |
| 15:50:06 | <[exa]> | does that work with VS Code? |
| 15:52:37 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 15:52:42 | → | mu__ joins (~mu@unaffiliated/mu) |
| 15:53:05 | <lordcirth_> | Probably? |
| 15:54:32 | → | ubert joins (~Thunderbi@91.141.2.105.wireless.dyn.drei.com) |
| 15:56:10 | <[exa]> | hm okay :] |
| 15:56:38 | × | madjestic quits (~madjestic@86-88-72-244.fixed.kpn.net) (Ping timeout: 256 seconds) |
| 15:57:28 | × | polyrain quits (~polyrain@2001:8003:e501:6901:988a:949a:6cb6:3522) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 15:58:25 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 240 seconds) |
| 15:58:54 | × | gtomas quits (~gtomas@a89-153-131-85.cpe.netcabo.pt) (Quit: gtomas) |
| 15:59:04 | × | nbloomf quits (~nbloomf@2600:1700:83e0:1f40:e5aa:7dfa:231a:59a4) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 15:59:57 | hackage | aeson-value-parser 0.19.3 - API for parsing "aeson" JSON tree into Haskell types https://hackage.haskell.org/package/aeson-value-parser-0.19.3 (NikitaVolkov) |
| 16:00:00 | → | howdoi joins (uid224@gateway/web/irccloud.com/x-owzahvktatqyicxd) |
| 16:02:11 | × | mu__ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 16:02:22 | × | kritzefitz quits (~kritzefit@fw-front.credativ.com) (Remote host closed the connection) |
| 16:02:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 16:06:30 | → | nbloomf joins (~nbloomf@2600:1700:83e0:1f40:19c6:af75:179d:46af) |
| 16:06:35 | × | aveltras quits (uid364989@gateway/web/irccloud.com/x-ituvpedwywfixetm) (Quit: Connection closed for inactivity) |
| 16:06:37 | × | cpressey quits (~cpressey@79-72-200-19.dynamic.dsl.as9105.com) (Quit: WeeChat 1.9.1) |
| 16:08:28 | hackage | path-dhall-instance 0.1.0.1 - ToDhall and FromDhall instances for Path. https://hackage.haskell.org/package/path-dhall-instance-0.1.0.1 (locallycompact) |
| 16:09:26 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 16:09:54 | ← | lordcirth_ parts (~lordcirth@2607:f2c0:95a8:ef00:b128:6022:758c:dbc) ("Leaving") |
| 16:09:58 | hackage | polysemy-video 0.1.0.1 - https://hackage.haskell.org/package/polysemy-video-0.1.0.1 (locallycompact) |
| 16:10:22 | × | xlei quits (znc@unaffiliated/xlei) (Quit: ZNC - https://znc.in) |
| 16:11:01 | × | troydm quits (~troydm@unaffiliated/troydm) (Ping timeout: 264 seconds) |
| 16:12:15 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 16:12:48 | → | mu_ joins (~mu@unaffiliated/mu) |
| 16:12:57 | hackage | path-dhall-instance 0.1.1.0 - ToDhall and FromDhall instances for Path. https://hackage.haskell.org/package/path-dhall-instance-0.1.1.0 (locallycompact) |
| 16:16:37 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
| 16:16:57 | → | machinedgod joins (~machinedg@d67-193-126-196.home3.cgocable.net) |
| 16:17:12 | → | somek joins (b55ebc21@181.94.188.33) |
| 16:18:54 | → | wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) |
| 16:19:07 | → | nshepperd joins (~nshepperd@pool-96-239-61-124.nycmny.fios.verizon.net) |
| 16:22:27 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 16:22:47 | → | mu_ joins (~mu@unaffiliated/mu) |
| 16:23:57 | hackage | refinery 0.2.0.0 - Toolkit for building proof automation systems https://hackage.haskell.org/package/refinery-0.2.0.0 (ReedMullanix) |
| 16:24:13 | → | blase joins (~blase@4e69b241.skybroadband.com) |
| 16:24:22 | → | troydm joins (~troydm@unaffiliated/troydm) |
| 16:25:27 | → | kish joins (~oracle@unaffiliated/oracle) |
| 16:25:28 | × | blase_ quits (~blase@4e69b241.skybroadband.com) (Ping timeout: 256 seconds) |
| 16:26:01 | × | ski quits (~ski@m-1163-19.studat.chalmers.se) (Ping timeout: 264 seconds) |
| 16:29:27 | × | dhil quits (~dhil@11.29.39.217.dyn.plus.net) (Ping timeout: 240 seconds) |
| 16:29:55 | → | geekosaur joins (42d52102@66.213.33.2) |
| 16:32:37 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 16:32:43 | → | mu__ joins (~mu@unaffiliated/mu) |
| 16:33:01 | → | knupfer joins (~Thunderbi@200116b82ca43f00a81888fffe30a4cb.dip.versatel-1u1.de) |
| 16:33:01 | × | knupfer quits (~Thunderbi@200116b82ca43f00a81888fffe30a4cb.dip.versatel-1u1.de) (Client Quit) |
| 16:33:12 | → | knupfer joins (~Thunderbi@mue-88-130-61-186.dsl.tropolys.de) |
| 16:33:26 | → | lucid_0x80 joins (~lucid_0x8@188.253.231.113) |
| 16:33:40 | × | motherfsck quits (~motherfsc@unaffiliated/motherfsck) (Quit: quit) |
| 16:34:08 | × | lucid_0x80 quits (~lucid_0x8@188.253.231.113) (Client Quit) |
| 16:35:44 | → | bitmapper joins (uid464869@gateway/web/irccloud.com/x-snlzgsknnstcsppe) |
| 16:37:07 | → | tzh joins (~tzh@2601:448:c500:5300::4b20) |
| 16:37:43 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 16:42:15 | × | mu__ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 16:42:41 | → | mu_ joins (~mu@unaffiliated/mu) |
| 16:45:07 | × | todda7 quits (~torstein@athedsl-4367507.home.otenet.gr) (Ping timeout: 240 seconds) |
| 16:46:04 | ← | blackfield parts (~blackfiel@unaffiliated/blackfield) ("Leaving") |
| 16:47:31 | → | ski joins (~ski@129.16.53.148) |
| 16:49:12 | → | coot joins (~coot@37.30.34.146.nat.umts.dynamic.t-mobile.pl) |
| 16:49:18 | → | conal joins (~conal@198.8.81.205) |
| 16:49:32 | → | todda7 joins (~torstein@athedsl-4367507.home.otenet.gr) |
| 16:49:59 | <AWizzArd> | Is there a study/statistics about unqualified imports? Such as `import Data.Text` without explicitly listing the FNs or Types we want. |
| 16:50:28 | <AWizzArd> | Maybe somebody has analyzed/counted this on Hackage. |
| 16:51:31 | <AWizzArd> | Also, how to import all constructors? a) import Foo (Bar(..)) or b) import Foo (Bar (..)) b has a space after `Bar`. |
| 16:52:11 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 16:52:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 16:52:47 | ski | 'd go for the space |
| 16:53:31 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 16:53:42 | <AWizzArd> | ski: I also like b) with the space more. |
| 16:55:03 | × | Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 258 seconds) |
| 16:55:58 | × | machinedgod quits (~machinedg@d67-193-126-196.home3.cgocable.net) (Ping timeout: 260 seconds) |
| 16:57:53 | → | Turmfalke joins (~user@unaffiliated/siracusa) |
| 16:59:25 | <monochrom> | I use (a) |
| 16:59:43 | → | xlei joins (znc@unaffiliated/xlei) |
| 16:59:58 | <monochrom> | Thank you for having a space after Foo though :) |
| 17:01:04 | × | tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection) |
| 17:01:13 | <monochrom> | It is not important at all but I like the consistently-having-a-space over both "import M (f)" and "import M hiding (f)", i.e., I wouldn't "import M hiding(f)". |
| 17:01:57 | → | tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64) |
| 17:02:13 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 17:02:23 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:02:31 | × | bahamas quits (~lucian@unaffiliated/bahamas) (Quit: Lost terminal) |
| 17:02:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 17:02:56 | × | nineonin_ quits (~nineonine@50.216.62.2) (Ping timeout: 256 seconds) |
| 17:03:51 | → | Orbstheorem joins (~roosember@hellendaal.orbstheorem.ch) |
| 17:04:35 | → | voyons_calice joins (~dan@162.246.216.28) |
| 17:04:48 | × | fendor quits (~fendor@77.119.131.134.wireless.dyn.drei.com) (Remote host closed the connection) |
| 17:05:46 | → | fendor joins (~fendor@77.119.131.134.wireless.dyn.drei.com) |
| 17:07:26 | × | voyons_calisse quits (~dan@107-190-41-58.cpe.teksavvy.com) (Ping timeout: 272 seconds) |
| 17:07:40 | → | nineonine joins (~nineonine@50.216.62.2) |
| 17:08:08 | × | vicfred_ quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
| 17:08:50 | → | Amras joins (~Amras@unaffiliated/amras0000) |
| 17:09:07 | → | voyons_calisse joins (~dan@107-190-41-58.cpe.teksavvy.com) |
| 17:09:41 | × | fendor quits (~fendor@77.119.131.134.wireless.dyn.drei.com) (Client Quit) |
| 17:10:27 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 240 seconds) |
| 17:11:52 | <sm[m]> | [exa]: hard to say more without details, but stack was having some net failures recently |
| 17:12:00 | × | voyons_calice quits (~dan@162.246.216.28) (Ping timeout: 256 seconds) |
| 17:12:12 | → | motersen joins (~user@2001-4dd1-ce19-0-41b8-8f35-edf5-ff23.ipv6dyn.netcologne.de) |
| 17:12:12 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 17:12:20 | × | isovector1 quits (~isovector@172.103.216.166) (Read error: Connection reset by peer) |
| 17:12:43 | → | mu_ joins (~mu@unaffiliated/mu) |
| 17:13:30 | → | hiroaki joins (~hiroaki@ip4d176049.dynamic.kabel-deutschland.de) |
| 17:17:28 | × | kish quits (~oracle@unaffiliated/oracle) (Ping timeout: 246 seconds) |
| 17:18:47 | → | kish joins (~oracle@unaffiliated/oracle) |
| 17:20:07 | × | coot quits (~coot@37.30.34.146.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds) |
| 17:22:11 | × | wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 17:22:11 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 17:22:30 | → | coot joins (~coot@37.30.59.214.nat.umts.dynamic.t-mobile.pl) |
| 17:22:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 17:23:19 | → | machinedgod joins (~machinedg@45.78.189.122) |
| 17:24:12 | → | gwiley joins (~gwiley@2606:ae80:1c10:130::175) |
| 17:24:15 | × | gwiley quits (~gwiley@2606:ae80:1c10:130::175) (Client Quit) |
| 17:26:29 | → | thir joins (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) |
| 17:26:56 | × | ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 17:30:22 | → | ADG1089 joins (uid455466@gateway/web/irccloud.com/x-wfsqzgfoscwuqfvc) |
| 17:30:47 | × | thir quits (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 17:30:48 | → | dhil joins (~dhil@11.29.39.217.dyn.plus.net) |
| 17:30:51 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 17:32:41 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 17:32:50 | → | mu__ joins (~mu@unaffiliated/mu) |
| 17:33:08 | → | rustisafungus joins (~rustisafu@2602:306:cd3c:9350:210f:c391:77b9:29cb) |
| 17:35:56 | → | nineonin_ joins (~nineonine@216.81.48.202) |
| 17:37:51 | × | rustisafungus quits (~rustisafu@2602:306:cd3c:9350:210f:c391:77b9:29cb) (Quit: Leaving) |
| 17:38:47 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 17:38:57 | hackage | base-compat 0.11.2 - A compatibility layer for base https://hackage.haskell.org/package/base-compat-0.11.2 (ryanglscott) |
| 17:39:13 | × | nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 260 seconds) |
| 17:39:50 | → | ransom joins (~c4264035@undergraduate-jvossen-9690.mines.edu) |
| 17:39:57 | hackage | base-compat-batteries 0.11.2 - base-compat with extra batteries https://hackage.haskell.org/package/base-compat-batteries-0.11.2 (ryanglscott) |
| 17:40:57 | hackage | wordn 0.1.0.0 - arbitrary bit size Words https://hackage.haskell.org/package/wordn-0.1.0.0 (goolord) |
| 17:42:13 | × | mu__ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 17:42:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 17:43:26 | <maerwald> | sm[m]: haha |
| 17:43:35 | <maerwald> | I had that too and gave up |
| 17:43:47 | × | dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection) |
| 17:43:57 | hackage | scotty-form 0.3.0.0 - Html form validation using `ditto` https://hackage.haskell.org/package/scotty-form-0.3.0.0 (goolord) |
| 17:44:36 | <maerwald> | but that's rather an amazon problem I think |
| 17:44:39 | × | voyons_calisse quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer) |
| 17:45:05 | → | voyons_calisse joins (~dan@107-190-41-58.cpe.teksavvy.com) |
| 17:46:00 | × | sw1nn quits (~sw1nn@host86-173-104-87.range86-173.btcentralplus.com) (Quit: WeeChat 2.9) |
| 17:46:02 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 258 seconds) |
| 17:46:28 | hackage | base-orphans 0.8.3 - Backwards-compatible orphan instances for base https://hackage.haskell.org/package/base-orphans-0.8.3 (ryanglscott) |
| 17:47:22 | → | sw1nn joins (~sw1nn@host86-173-104-87.range86-173.btcentralplus.com) |
| 17:47:55 | <maerwald> | the only time when I was on windows and thought "stack might be better here" I was disappointed |
| 17:48:58 | × | jchia_ quits (~jchia@58.32.37.220) (Quit: Leaving.) |
| 17:50:17 | → | JoelMcCracken[m] joins (joelmccrac@gateway/shell/matrix.org/x-fkrjmkjfhjvsypdi) |
| 17:50:39 | <glguy> | Because it was or wasn't? :) |
| 17:51:02 | <maerwald> | it wasn't and I ended up using chocolatey, which was broken with 8.10.2 though or something |
| 17:51:10 | × | somek quits (b55ebc21@181.94.188.33) (Remote host closed the connection) |
| 17:51:22 | × | ransom quits (~c4264035@undergraduate-jvossen-9690.mines.edu) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 17:52:21 | → | chaosmasttter joins (~chaosmast@p200300c4a70aba018412238bea948280.dip0.t-ipconnect.de) |
| 17:52:21 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 17:52:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 17:54:58 | × | zacts quits (~zacts@dragora/developer/zacts) (Quit: leaving) |
| 17:54:59 | <sm[m]> | it was just a transient net failure, they fixed it both on the server and released a stack upgrade to make it less net dependent |
| 17:55:27 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 17:55:55 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 17:57:10 | → | mananamenos_ joins (~mananamen@84.122.202.215.dyn.user.ono.com) |
| 17:58:28 | → | ransom joins (~c4264035@2601:285:201:6720:4491:37d9:f3b2:caef) |
| 17:58:55 | <sm[m]> | detail: https://github.com/commercialhaskell/stack/issues/5387#issuecomment-697159635 |
| 18:00:02 | × | chx quits (~chx@185.204.1.185) () |
| 18:00:11 | <maerwald> | I'm still looking for the stack issue that explains why it re-clones the same repo multiple times if there are multiple subdirectories |
| 18:00:13 | × | mananamenos quits (~mananamen@84.122.202.215.dyn.user.ono.com) (Ping timeout: 258 seconds) |
| 18:00:37 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:df5:637e:fad1:ac7) (Ping timeout: 244 seconds) |
| 18:01:23 | <maerwald> | example: https://git.io/JUyU8 |
| 18:01:40 | <maerwald> | this takes 30 minutes to clone, because it keeps cloning the same repos over and over again |
| 18:01:45 | × | elliott_ quits (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
| 18:02:33 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) (Quit: Quit.) |
| 18:02:33 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 18:02:42 | → | mu__ joins (~mu@unaffiliated/mu) |
| 18:05:00 | → | elliott_ joins (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) |
| 18:05:33 | × | conal quits (~conal@198.8.81.205) (Quit: Computer has gone to sleep.) |
| 18:05:47 | × | John20 quits (~John@82.46.59.122) (Ping timeout: 240 seconds) |
| 18:05:52 | × | ggole quits (~ggole@2001:8003:8119:7200:f871:c0ad:b761:dbf4) (Quit: Leaving) |
| 18:06:58 | → | conal joins (~conal@198.8.81.205) |
| 18:06:58 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 18:08:07 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 18:08:52 | × | alp quits (~alp@2a01:e0a:58b:4920:bc07:244b:4df4:499a) (Ping timeout: 260 seconds) |
| 18:09:14 | × | geekosaur quits (42d52102@66.213.33.2) (Ping timeout: 245 seconds) |
| 18:09:38 | → | delimax joins (max@gateway/vpn/protonvpn/delimax) |
| 18:11:39 | × | nbloomf quits (~nbloomf@2600:1700:83e0:1f40:19c6:af75:179d:46af) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 18:12:36 | × | mu__ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 18:12:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 18:12:57 | hackage | Z-Data 0.1.4.1 - Array, vector and text https://hackage.haskell.org/package/Z-Data-0.1.4.1 (winterland) |
| 18:13:20 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:995e:484:bdc6:4ac4) |
| 18:14:10 | → | avdb joins (~avdb@ip-81-11-153-13.dsl.scarlet.be) |
| 18:14:22 | <glguy> | I know this is oddly specific, but I'm wondering if it might ring any bells. I'm finding that if I run my IRC client on Ubuntu (rather than macOS), using GHC 8.6.5 (rather than 8.10.2), connecting to ZNC (rather than directly to freenode) that I stop being able to send messages out to the server (I still receive them). If I change any of those three variables things work fine. I'm happy to just not support old GHC, but I'm just wondering if |
| 18:14:22 | <glguy> | anyone knows about a funny interaction with networking in older GHC that might be relevant |
| 18:15:25 | × | xff0x quits (~fox@2001:1a81:53e7:fb00:9052:62db:4246:c379) (Ping timeout: 240 seconds) |
| 18:15:41 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 18:15:52 | <sm[m]> | maerwald: sounds annoying.. report it I guess |
| 18:16:13 | × | ubert quits (~Thunderbi@91.141.2.105.wireless.dyn.drei.com) (Remote host closed the connection) |
| 18:16:25 | → | xff0x joins (~fox@2001:1a81:53e7:fb00:a420:19f5:c0d1:188d) |
| 18:18:13 | → | nbloomf joins (~nbloomf@2600:1700:83e0:1f40:dc69:a6e0:d077:5b95) |
| 18:21:17 | × | Tops21 quits (~Tobias@dyndsl-095-033-025-123.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 18:21:55 | → | acidjnk_new joins (~acidjnk@p200300d0c72378337d49dd4f750ab9d4.dip0.t-ipconnect.de) |
| 18:21:58 | hackage | generic-deriving 1.14 - Generic programming library for generalised deriving. https://hackage.haskell.org/package/generic-deriving-1.14 (ryanglscott) |
| 18:22:10 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 18:22:15 | → | madjestic joins (~madjestic@86-88-72-244.fixed.kpn.net) |
| 18:22:39 | <koz_> | glguy: That has to be one of the most specific errors I have ever heard. |
| 18:22:39 | × | dhouthoo quits (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.8) |
| 18:22:41 | → | mu_ joins (~mu@unaffiliated/mu) |
| 18:23:32 | × | nbloomf quits (~nbloomf@2600:1700:83e0:1f40:dc69:a6e0:d077:5b95) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 18:23:58 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 256 seconds) |
| 18:26:20 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 18:26:40 | → | vicfred joins (~vicfred@unaffiliated/vicfred) |
| 18:27:30 | × | ransom quits (~c4264035@2601:285:201:6720:4491:37d9:f3b2:caef) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 18:28:54 | <sm[m]> | glguy: compare the versions and changelogs of likely libs (network, ...) ? |
| 18:29:17 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 18:29:18 | → | nbloomf joins (~nbloomf@2600:1700:83e0:1f40:51e3:d2:c653:ccbb) |
| 18:30:44 | <maerwald> | yeah, you can compare plan.json |
| 18:30:49 | × | nckx quits (~nckx@tobias.gr) (Ping timeout: 264 seconds) |
| 18:31:01 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
| 18:31:05 | × | aldum quits (~vishera@aldum.pw) (Ping timeout: 240 seconds) |
| 18:31:22 | → | geekosaur joins (42d52102@66.213.33.2) |
| 18:32:15 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 18:32:24 | <glguy> | In my case the library versions are all visible through the --full-version flag :) |
| 18:32:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 18:33:43 | <glguy> | if I could only remember which VM I was using... |
| 18:33:51 | <sm[m]> | of the executable ? nice one |
| 18:34:22 | <glguy> | ?paste |
| 18:34:22 | <lambdabot> | A pastebin: https://paste.debian.net/ |
| 18:34:30 | × | chele quits (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
| 18:34:32 | × | mirrorbird quits (~psutcliff@2a00:801:3fb:53b9:b09b:cd4e:4e4a:44a9) (Remote host closed the connection) |
| 18:34:47 | <glguy> | https://paste.tomsmeding.com/4wA71uVU |
| 18:34:51 | → | texasmynsted joins (b9e53b1b@185.229.59.27) |
| 18:34:52 | × | kish quits (~oracle@unaffiliated/oracle) (Quit: Leaving) |
| 18:36:22 | <texasmynsted> | I am trying to determine what hlint thinks I have done wrong with my code. I have tried the same code a few different ways but the result is the same. |
| 18:36:41 | <[exa]> | texasmynsted: pls pastebin an example |
| 18:36:43 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 18:36:54 | <texasmynsted> | https://gist.github.com/mmynsted/0465fbc9f253231d7a04b1370b7e946f |
| 18:37:19 | <texasmynsted> | [exa] There is the code in a gist |
| 18:38:31 | <texasmynsted> | Says parse error. |
| 18:38:51 | <glguy> | you forgot to put the error in the past |
| 18:38:57 | <glguy> | paste* |
| 18:39:17 | <texasmynsted> | overloaded strings is the only extension active OverloadedStrings |
| 18:39:25 | <texasmynsted> | I updated |
| 18:39:35 | <texasmynsted> | "parse error" |
| 18:39:40 | <glguy> | did you truncate the rror? |
| 18:39:53 | × | Cerise quits (~jerry@unaffiliated/cerise) (Ping timeout: 260 seconds) |
| 18:39:55 | <glguy> | (I truncated error on purpose there...) |
| 18:40:01 | <geekosaur> | which line is 183? |
| 18:40:08 | <tbreslein> | which line is that in your example? |
| 18:40:16 | <glguy> | Because when I run hlint on that code I get a more useful error |
| 18:40:46 | <texasmynsted> | oh. Hey. I would like to get more useful errors. |
| 18:40:57 | <glguy> | The whole error is: /Users/emertens/Temp.hs:4:41-47: Error: Parse error: on input `pattern' |
| 18:41:06 | <glguy> | It doesn't like you using the identifier pattern |
| 18:41:21 | <glguy> | probably because of its role in PatternSynonyms |
| 18:41:33 | <texasmynsted> | How do you get better error messages? |
| 18:41:42 | <glguy> | upgrade your hlint I guess |
| 18:41:47 | <texasmynsted> | verbose does not change the messages for me |
| 18:42:04 | <glguy> | cabal install hlint |
| 18:42:04 | <geekosaur> | which would be a bug in hlint, if that extension isn't present then it's not a reserved identifier AIUI |
| 18:42:06 | <texasmynsted> | I am using HLint v2.2.3, (C) Neil Mitchell 2006-2019 |
| 18:42:12 | <glguy> | texasmynsted: 3.2 is out |
| 18:42:15 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 18:42:25 | <texasmynsted> | Hmm. |
| 18:42:41 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 260 seconds) |
| 18:42:43 | → | mu_ joins (~mu@unaffiliated/mu) |
| 18:42:48 | <glguy> | hlint is pretty much "best effort" when it comes to parsing |
| 18:42:50 | <texasmynsted> | I think I did cabal update and tried re-install yesterday. |
| 18:42:56 | <texasmynsted> | How do I upgrade it correctly? |
| 18:43:09 | <glguy> | you can try: cabal install hlint-3.2 # and see what complaints you get |
| 18:43:18 | <texasmynsted> | Will do |
| 18:43:31 | <geekosaur> | that said, it could be $PATH |
| 18:43:56 | <geekosaur> | that is, it installed but the old one's earlier in $PATH so gets found first |
| 18:43:58 | hackage | servant-serf 0.0.2 - Generates a servant API module https://hackage.haskell.org/package/servant-serf-0.0.2 (goolord) |
| 18:44:13 | × | kori quits (~kori@arrowheads/kori) (Ping timeout: 272 seconds) |
| 18:44:13 | <glguy> | great point ^ |
| 18:44:25 | <texasmynsted> | It is finding the one from $HOME/.cabal/bin/hlint |
| 18:44:33 | → | aldessa joins (~Hugh@host-2-103-12-241.as13285.net) |
| 18:44:42 | <sm[m]> | number one cause of haskell trouble... |
| 18:44:48 | <glguy> | hlint? :) |
| 18:44:58 | × | xerox_ quits (~xerox@unaffiliated/xerox) (Ping timeout: 272 seconds) |
| 18:44:59 | <sm[m]> | PATH :) |
| 18:45:18 | <texasmynsted> | Well it seems it is finding the correct hlint |
| 18:46:14 | × | avdb quits (~avdb@ip-81-11-153-13.dsl.scarlet.be) (Quit: WeeChat 2.9) |
| 18:47:16 | <aldessa> | when you specify a license in package.yaml e.g. BSD3 does it automatically check if my license is compatible with all my dependencies |
| 18:47:28 | <texasmynsted> | Attempting the upgrade. Maybe then I will get a different message. |
| 18:47:47 | → | aldum joins (~vishera@aldum.pw) |
| 18:48:23 | <sm[m]> | aldessa: no |
| 18:49:18 | <sm[m]> | That would be nice |
| 18:49:37 | <glguy> | cabal-plan as a license report command that can help |
| 18:49:55 | <Squarism> | Ouch. I've been out of the Nix loop long enough to forget easy things. I try to build my old project, that I remember was working last I checked. And get this error: |
| 18:49:56 | <Squarism> | ghc: can't find a package database at /home/myuser/.cabal/store/ghc-8.6.5/package.db |
| 18:50:01 | <texasmynsted> | I guess I need to add hlint comments to get it to avoid that section. |
| 18:50:10 | <Squarism> | ...but there is a bunch of stuff there |
| 18:50:31 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 18:50:38 | <glguy> | In my IRC client I have my Setup.hs abort if you attempt to build against something GPL, etc |
| 18:51:35 | → | knupfer1 joins (~Thunderbi@mue-88-130-61-186.dsl.tropolys.de) |
| 18:51:35 | × | knupfer quits (~Thunderbi@mue-88-130-61-186.dsl.tropolys.de) (Quit: knupfer) |
| 18:51:35 | knupfer1 | is now known as knupfer |
| 18:52:32 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 18:52:42 | <sm[m]> | glguy: slick.. any friction caused by having a custom Setup.hs ? |
| 18:52:43 | → | mu__ joins (~mu@unaffiliated/mu) |
| 18:52:58 | <glguy> | Not that I've experienced |
| 18:53:46 | <aldessa> | is gplV3 the most compatible license? am I right in guessing I can use MIT/BSD dependencies in GPL programs? |
| 18:53:58 | <texasmynsted> | wow building the ghc-lib-parser and no messages for a while now |
| 18:54:05 | → | fendor joins (~fendor@77.119.131.134.wireless.dyn.drei.com) |
| 18:54:22 | <glguy> | It's part of the process of assembling the full-version output |
| 18:55:21 | → | patryk_ joins (~patryk_@84.39.117.57) |
| 18:55:53 | <texasmynsted> | okay back to progress |
| 18:56:01 | <glguy> | aldessa: depends if you're making a library or executable |
| 18:56:09 | → | ransom joins (~c4264035@undergraduate-jvossen-9690.mines.edu) |
| 18:56:29 | <glguy> | If you're making a library most of the Haskell ecosystem won't be able to use your library if it's gpl |
| 18:57:04 | <Clint> | "won't" |
| 18:57:58 | ← | ryantrinkle parts (~ryan@cpe-68-173-35-198.nyc.res.rr.com) () |
| 18:57:59 | <aldessa> | i'm making an executable but it would be nice if someone needed the code that they code reuse it |
| 18:58:09 | <aldessa> | could* |
| 18:58:47 | × | danvet_ quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 240 seconds) |
| 18:58:55 | <texasmynsted> | Okay I get the better error message now about how there is: "Parse error: on input `pattern'" |
| 18:59:42 | <texasmynsted> | I guess this is a bug? I do now see what would be wrong with that input. |
| 19:00:07 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 240 seconds) |
| 19:00:28 | → | p0a joins (~user@unaffiliated/p0a) |
| 19:00:30 | <solonarv> | perhaps you forgot to enable a language extension? (the relevant one would be PatternSynonyms) |
| 19:00:58 | <p0a> | Hello how can I compile GHC from source? |
| 19:00:59 | <geekosaur> | no, the point is it's disabled and "pattern" should not be a keyword, but hlint thinks it is |
| 19:01:28 | hackage | servant-serf 0.0.3 - Generates a servant API module https://hackage.haskell.org/package/servant-serf-0.0.3 (goolord) |
| 19:01:39 | <texasmynsted> | oh |
| 19:01:56 | × | madjestic quits (~madjestic@86-88-72-244.fixed.kpn.net) (Ping timeout: 256 seconds) |
| 19:02:36 | × | mu__ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 19:02:39 | <fendor> | p0a, https://gitlab.haskell.org/ghc/ghc and https://gitlab.haskell.org/ghc/ghc/-/wikis/building |
| 19:02:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 19:02:45 | <texasmynsted> | Okay yes. I change the name and it works |
| 19:02:47 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 19:03:05 | <texasmynsted> | So how did you know that it thought that `pattern` was a reserved word? |
| 19:03:13 | <texasmynsted> | I did not get that from the error message |
| 19:03:56 | <geekosaur> | just from the fact that it errored on "pattern" and I know about the PatternSynonyms extension. same way glguy figured it out a couple pages of text back :) |
| 19:04:01 | → | wanaks[m] joins (wanaksmatr@gateway/shell/matrix.org/x-ypunfwqxglzxjffl) |
| 19:04:37 | <glguy> | You just have to memorize all the ghc language extensions and have in mind where they overlap |
| 19:04:45 | <glguy> | <_< easy |
| 19:04:50 | <p0a> | fendor: thank you |
| 19:05:05 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 19:05:06 | <geekosaur> | luckily few of them introduce new keywords |
| 19:05:08 | <texasmynsted> | Pfffft. grrreat |
| 19:05:13 | <texasmynsted> | lol. Thank you! |
| 19:07:13 | → | alp joins (~alp@2a01:e0a:58b:4920:7484:254:28d2:c14c) |
| 19:07:51 | → | Cerise joins (~jerry@natsumi.devzero.info) |
| 19:07:51 | × | Cerise quits (~jerry@natsumi.devzero.info) (Changing host) |
| 19:07:51 | → | Cerise joins (~jerry@unaffiliated/cerise) |
| 19:07:53 | → | avdb joins (~avdb@ip-81-11-153-13.dsl.scarlet.be) |
| 19:08:28 | → | nckx joins (~nckx@tobias.gr) |
| 19:08:44 | × | revprez_anzio quits (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 256 seconds) |
| 19:09:20 | → | revprez_anzio joins (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) |
| 19:10:25 | × | machinedgod quits (~machinedg@45.78.189.122) (Ping timeout: 264 seconds) |
| 19:12:17 | → | mirrorbird joins (~psutcliff@2a00:801:3fb:53b9:b09b:cd4e:4e4a:44a9) |
| 19:12:17 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 19:12:36 | → | John20 joins (~John@82.46.59.122) |
| 19:12:43 | → | mu_ joins (~mu@unaffiliated/mu) |
| 19:13:27 | × | knupfer quits (~Thunderbi@mue-88-130-61-186.dsl.tropolys.de) (Ping timeout: 240 seconds) |
| 19:13:50 | → | cosimone joins (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) |
| 19:14:04 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 19:14:20 | × | avdb quits (~avdb@ip-81-11-153-13.dsl.scarlet.be) (Ping timeout: 256 seconds) |
| 19:15:02 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 19:17:33 | × | conal quits (~conal@198.8.81.205) (Quit: Computer has gone to sleep.) |
| 19:18:49 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
| 19:19:07 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 19:19:11 | × | tbreslein quits (~tbreslein@2a02:8108:140:44f8::901) (Remote host closed the connection) |
| 19:21:18 | × | Orbstheorem quits (~roosember@hellendaal.orbstheorem.ch) (Quit: WeeChat 2.3) |
| 19:21:19 | × | texasmynsted quits (b9e53b1b@185.229.59.27) (Ping timeout: 245 seconds) |
| 19:22:24 | <p0a> | Hello, I have this code: https://paste.tomsmeding.com/Y6afnL1R |
| 19:22:25 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 19:22:50 | → | mu_ joins (~mu@unaffiliated/mu) |
| 19:22:51 | <p0a> | The error is that you can't have Eq, Show, Read be derived for File', I believe due to HKD. What can I do? |
| 19:23:27 | hackage | poly 0.5.0.0 - Polynomials https://hackage.haskell.org/package/poly-0.5.0.0 (Bodigrim) |
| 19:24:35 | → | xerox_ joins (~xerox@unaffiliated/xerox) |
| 19:25:15 | <p0a> | I think I have to somehow use `deriving' with specific instances but I don't know how to do that |
| 19:25:31 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 19:25:35 | <tomsmeding> | p0a: the issue is that to derive e.g. Eq for File' f, it is required that Eq (KHD f FilePath), etc. also holds |
| 19:26:04 | <tomsmeding> | for simple cases ghc can automatically generate the necessary contexts in the generated instance, but apparently in this case it can't |
| 19:26:20 | <p0a> | How can I provide the instances for File? That's the one I want |
| 19:27:11 | <p0a> | if I add `deriving' after `type File = File' Identity' I get a parsing error |
| 19:27:33 | <tomsmeding> | indeed, adding 'deriving' after a tye synonym declaration is invalid syntax |
| 19:27:39 | <tomsmeding> | however, you can do it like this: |
| 19:27:55 | × | alp quits (~alp@2a01:e0a:58b:4920:7484:254:28d2:c14c) (Ping timeout: 272 seconds) |
| 19:28:15 | <tomsmeding> | https://paste.tomsmeding.com/okCA6gS4 |
| 19:28:32 | × | AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving) |
| 19:28:32 | <tomsmeding> | StandaloneDeriving is to allow writing those, well, stand-alone 'deriving' statements |
| 19:28:58 | <tomsmeding> | FlexibleInstances and TypeSynonymInstances is to be allowed to write an instance for a type synonym (i.e. File, as opposed to File') in the first place |
| 19:29:18 | → | ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
| 19:29:21 | <p0a> | heh thank you |
| 19:29:26 | → | tinga joins (~tinga@5-168-208-80-pool.fiber.fcom.ch) |
| 19:29:27 | <p0a> | that was tricky |
| 19:29:48 | × | mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Remote host closed the connection) |
| 19:29:49 | <tomsmeding> | (well really that's only TypeSynonymInstances; FlexibleInstances is then required because when expanding the File type synonym, the instance becomes Eq (File' Identity), and because that Identity is not a type variable, FlexibleInstances is needed) |
| 19:29:53 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 19:30:10 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 19:30:22 | <tomsmeding> | generally when you want to derive instances that GHC doesn't do automatically, I try it as a standalone deriving statement |
| 19:30:37 | <tomsmeding> | usually that will also not work (though sometimes it will), but then GHC tends to give better error messages |
| 19:31:04 | <p0a> | hahah got it |
| 19:31:06 | <tomsmeding> | in this case, if you just add StandaloneDeriving and write those stand-alone instances, it will correctly ask you to add the other two extensions |
| 19:31:12 | <p0a> | you sort of have to squeeze it out of ghc |
| 19:31:15 | <tomsmeding> | :p |
| 19:31:54 | <p0a> | I am afraid I am not understanding the extensions very well but I will continue writing code for now |
| 19:32:07 | <tomsmeding> | which one? |
| 19:32:07 | <p0a> | that is, I do not understand their purpose |
| 19:32:13 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 19:32:23 | <p0a> | well let's start with TypeSynonymInstances |
| 19:32:35 | <tomsmeding> | without any extensions, haskell only allows you to write an instance for a type of the form T a b c d |
| 19:32:40 | <p0a> | Oh wait, that one you explained |
| 19:32:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 19:32:45 | <tomsmeding> | where T is a type name, and a b c d ... are type variables |
| 19:32:47 | <p0a> | I think the cryptic one is FlexibleInstnaces |
| 19:32:59 | <tomsmeding> | yeah |
| 19:33:20 | <tomsmeding> | if T is a type synonym, it doesn't match the recipe so you need TypeSynonymInstances (which resolves the name first) |
| 19:33:39 | <tomsmeding> | if a b c d, etc, are not type variables but explicitly instantiated to a particular type, then you need FlexibleInstances |
| 19:33:58 | <tomsmeding> | for example, you can't write 'instance Show [MyCustomType]' directly |
| 19:34:13 | <tomsmeding> | because that's, of course, really 'Show ([] MyCustomType)', and MyCustomType is not a type variable |
| 19:34:23 | <p0a> | What is it instead? |
| 19:34:28 | <tomsmeding> | well, a type :p |
| 19:34:29 | <tomsmeding> | not a variable |
| 19:34:31 | <p0a> | right, okay |
| 19:34:39 | <tomsmeding> | you _can_ write 'instance Show [a]' because that is 'Show ([] a)' and 'a' _is_ a type variable |
| 19:34:52 | <geekosaur> | except it'll overlap |
| 19:34:58 | <tomsmeding> | basically, normally you can only create instances for _all_ polymorphic versions of a type |
| 19:35:09 | <tomsmeding> | geekosaur: okay yes in this case for Show ([] ...) it will overlap |
| 19:35:12 | <p0a> | I see, FlexibleInstances let's you exercise an incision |
| 19:35:17 | <tomsmeding> | because there is already Show a => Show [a] |
| 19:35:28 | <tomsmeding> | substitute some random other class for Show :p |
| 19:35:35 | <tomsmeding> | p0a: kinda :) |
| 19:36:01 | <tomsmeding> | once instance contexts start to get complex you might also need UndecidableInstances at some point |
| 19:36:02 | <p0a> | Very nice, thank you :) that's an extension I commonly see |
| 19:36:03 | → | madjestic joins (~madjestic@86-88-72-244.fixed.kpn.net) |
| 19:36:20 | <tomsmeding> | though I don't know the precise rules for that one :) |
| 19:36:29 | <p0a> | don't worry it's not on the menu right now |
| 19:36:31 | <geekosaur> | "avoid" |
| 19:36:35 | <p0a> | lol |
| 19:36:52 | <tomsmeding> | well yeah, avoid most things that say "undecidable" |
| 19:38:25 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 19:39:11 | × | ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
| 19:39:39 | → | borne joins (~fritjof@200116b864837e00537d5cc8226f9d9f.dip.versatel-1u1.de) |
| 19:40:44 | <p0a> | If I want (Just 3) == 3 and Nothing == 3 to be True, how can I implement this? Say I have a :: Maybe Int and b :: Int, and wish to have the above comparisons |
| 19:41:09 | <p0a> | I'm going to look into Control.Monad.Maybe |
| 19:41:11 | <tomsmeding> | :t (==) |
| 19:41:13 | <lambdabot> | Eq a => a -> a -> Bool |
| 19:41:15 | <p0a> | Or Maybe Data.Maybe |
| 19:41:23 | <tomsmeding> | Maybe Int does not unify with Int |
| 19:41:30 | → | Orbstheorem joins (~roosember@hellendaal.orbstheorem.ch) |
| 19:41:40 | → | kindaro joins (1f08d381@h31-8-211-129.dyn.bashtel.ru) |
| 19:41:42 | <p0a> | Sure, it doesn't have to be with == , I'm just curious of neat source code to do that |
| 19:41:49 | <{abby}> | > maybe 3 id (Just 3) |
| 19:41:50 | <p0a> | my code would have if elses |
| 19:41:51 | <lambdabot> | 3 |
| 19:41:57 | <{abby}> | > maybe 3 id Nothing |
| 19:42:00 | <lambdabot> | 3 |
| 19:42:12 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 19:42:18 | <tomsmeding> | > (fromMaybe 3 (Just 5), fromMaybe 3 Nothing) |
| 19:42:20 | <lambdabot> | (5,3) |
| 19:42:22 | <{abby}> | maybe default id = fromMaybe default, but I'm not sure if fromMaybe is in scope (import it from Data.Maybe) |
| 19:42:27 | <tomsmeding> | that's what fromMaybe is for |
| 19:42:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 19:42:44 | <tomsmeding> | ah yes |
| 19:43:10 | <tomsmeding> | p0a: surely it would be a case expression on the Maybe value, though, not an actual if-then-else? |
| 19:43:29 | <p0a> | Right tomsmeding , but you can also use isJust and isNothing |
| 19:43:30 | <{abby}> | tomsmeding: better safe than sorry :p I'm never sure what's in lambdabot's scope |
| 19:43:40 | <tomsmeding> | {abby}: fair :p |
| 19:43:51 | <kindaro> | In Template Haskell, how can I convert an `Exp` to a `Pat`? I have a `Type` and I want to pattern match on its literal name as given by `Type.Reflection.tyConName`. |
| 19:44:01 | <tomsmeding> | p0a: isJust and fromJust? while there are legitimate use cases for fromJust, think thrice when using it |
| 19:44:12 | <p0a> | (x == \x -> fromMaybe x y) is then what I'd do I think |
| 19:44:19 | <p0a> | thank you |
| 19:44:21 | <tomsmeding> | because usually you're better off with a case expression or an existing combinator |
| 19:44:23 | <kindaro> | So, I can construct an `Exp` with a quasi quote, but it seems I cannot construct a `Pat`. |
| 19:44:32 | <tomsmeding> | less partiality more better |
| 19:44:41 | <p0a> | right, that is true |
| 19:45:12 | <kindaro> | For example, this would not work: `getTypeNameLiteral subject = (tyConName ∘ typeRepTyCon) (typeRep @ $(return subject))` |
| 19:45:54 | <kindaro> | This compiles but gives me a `Q Exp`: `getTypeNameLiteral subject = [|(tyConName ∘ typeRepTyCon) (typeRep @ $(return subject))|]` |
| 19:46:09 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 260 seconds) |
| 19:46:27 | <kindaro> | This does not compile: `getTypeNameLiteral subject = [p|(tyConName ∘ typeRepTyCon) (typeRep @ $(return subject))|]` |
| 19:46:36 | <tomsmeding> | what kind of pattern would you want it to be |
| 19:46:47 | <tomsmeding> | string? data constructor? |
| 19:46:58 | <tomsmeding> | can't you create the Pat value yourself |
| 19:47:01 | <tomsmeding> | https://hackage.haskell.org/package/template-haskell-2.16.0.0/docs/Language-Haskell-TH.html |
| 19:47:43 | <kindaro> | For `Type` = `(ConT GHC.Types.Int)`, I would like `"Int"`, and so on. |
| 19:48:19 | <kindaro> | I cannot create a `Pat` value because I have no idea what string `tyConName` would produce. |
| 19:48:32 | <kindaro> | I have to first run `tyConName` somehow. |
| 19:49:04 | <tomsmeding> | oh your problem is to get the TyCon to pass to tyConName? |
| 19:49:10 | <tomsmeding> | from what do you want to get it |
| 19:49:18 | <tomsmeding> | a value of that type? |
| 19:49:19 | <kindaro> | From `Type`. |
| 19:49:50 | <kindaro> | This `Type`: https://hackage.haskell.org/package/template-haskell-2.16.0.0/docs/Language-Haskell-TH.html#t:Type |
| 19:50:01 | × | ADG1089 quits (uid455466@gateway/web/irccloud.com/x-wfsqzgfoscwuqfvc) (Quit: Connection closed for inactivity) |
| 19:50:05 | × | JoelMcCracken[m] quits (joelmccrac@gateway/shell/matrix.org/x-fkrjmkjfhjvsypdi) (Quit: authenticating) |
| 19:50:12 | → | JoelMcCracken[m] joins (joelmccrac@gateway/shell/matrix.org/x-nmxpzgkyreszwsoo) |
| 19:50:15 | <kindaro> | So, I first have to convert this `Type` to an actual expression, at which point it becomes incompatible with `Pat`. |
| 19:50:25 | <tomsmeding> | but, a type can have many constructors, right? |
| 19:50:32 | <tomsmeding> | data A = A | B |
| 19:50:39 | <kindaro> | It has one type constructor. |
| 19:50:42 | <tomsmeding> | if the Type is A, do you want the TyCon for A or for B? |
| 19:50:43 | <tomsmeding> | ah |
| 19:50:43 | <kindaro> | In your case `A`. |
| 19:50:50 | → | nobody239419341 joins (5e7be5a0@94.123.229.160) |
| 19:51:01 | <tomsmeding> | can't you use generics |
| 19:51:18 | <kindaro> | Like how? |
| 19:51:54 | → | conal joins (~conal@64.71.133.70) |
| 19:51:57 | <kindaro> | As you may remember, my problem can be put as constructing a large case expression. |
| 19:52:06 | <tomsmeding> | right |
| 19:52:13 | <kindaro> | The way to do that is via Template Haskell. |
| 19:52:13 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 19:52:16 | <aldessa> | by the way for my earlier problem, the solution was 'stack ls --dependencies --no-include-base --license' to see all the licenses |
| 19:52:27 | hackage | deriving-compat 0.5.10 - Backports of GHC deriving extensions https://hackage.haskell.org/package/deriving-compat-0.5.10 (ryanglscott) |
| 19:52:29 | × | ransom quits (~c4264035@undergraduate-jvossen-9690.mines.edu) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 19:52:41 | → | mu_ joins (~mu@unaffiliated/mu) |
| 19:52:44 | × | mirrorbird quits (~psutcliff@2a00:801:3fb:53b9:b09b:cd4e:4e4a:44a9) (Ping timeout: 244 seconds) |
| 19:52:49 | <kindaro> | I made some progress, but it is unclear how I can associate a literal pattern with a `Type`. |
| 19:52:51 | <nobody239419341> | hello can someone help me understand this function signrature `palindrome = reverse >>= (==)` I'm beginner to haskell |
| 19:53:45 | <Cheery> | :t reverse >>= (==) |
| 19:53:45 | <sm[m]> | aldessa: stack ls dependencies --no-include-base --license ... very cool, thanks |
| 19:53:46 | <lambdabot> | Eq a => [a] -> Bool |
| 19:53:50 | <tomsmeding> | kindaro: I know how to write a function 'magic :: Generic a => String' that produces the name of the first type constructor of 'a'; would that be sufficient for you? |
| 19:53:53 | <monochrom> | It is not for beginners. Please don't worry about that one. Please learn and play with basic examples first. |
| 19:54:09 | <p0a> | nobody239419341: I believe that is not a signature. I think signatures refer to the types after :: |
| 19:54:12 | <monochrom> | Whoever showed you "reverse >>= (==)" did not respect that you are a beginner. |
| 19:54:13 | <tomsmeding> | kindaro: I'm not familiar enough with TH to know whether generics play nicely with it |
| 19:54:44 | <nobody239419341> | I was self learning from https://wiki.haskell.org/99_questions/Solutions/6 here and would like to understand that solution |
| 19:54:46 | <kindaro> | I expect that they do not. |
| 19:54:54 | <nobody239419341> | I wrote first solution myself without looking to the solutions page |
| 19:56:04 | <nobody239419341> | I know how would I look to the function signatures by ` :t ` in ghci |
| 19:56:06 | <Cheery> | :t (>>=) reverse |
| 19:56:08 | <lambdabot> | ([a] -> [a] -> b) -> [a] -> b |
| 19:56:14 | <Cheery> | :t (==) |
| 19:56:16 | <lambdabot> | Eq a => a -> a -> Bool |
| 19:56:58 | <tomsmeding> | kindaro: 'tyConName (typeRepTyCon (typeRep @T))' is of type String |
| 19:57:01 | sm[m] | discovers a few weirdo packages using BSD-2 (megaparsec & text) |
| 19:57:09 | <tomsmeding> | not sure where Exp comes into the discussion |
| 19:57:32 | <tomsmeding> | also I now realise that you're talking about the _type_ constructor, not a _data_ constructor :p |
| 19:58:16 | × | ddellacosta quits (~dd@86.106.121.168) (Quit: WeeChat 2.8) |
| 19:58:52 | tomsmeding | is surprised about the amount of reflection that ghc gives you with Type.Reflection, Data.Typeable and templatehaskell |
| 19:59:14 | <kindaro> | nobody239419341 This is some advanced Haskell, I have been doing it for some years but it took me effort to understand how your function works. You may wish to consult the Monad instance for functions. https://hackage.haskell.org/package/base-4.14.0.0/docs/src/GHC.Base.html#line-979 |
| 19:59:16 | <Cheery> | tomsmeding: any short introduction to Type Reflection you'd recommend? |
| 19:59:28 | <Cheery> | or data typeable, those sound interesting. |
| 20:00:26 | × | Quarl quits (~Quarl@94.191.138.174.mobile.tre.se) (Read error: Connection reset by peer) |
| 20:00:30 | <tomsmeding> | Cheery: I learned about the existence of Type.Reflection when kindaro mentioned it |
| 20:00:37 | <tomsmeding> | I'm afraid I'm not the right person to ask :p |
| 20:00:39 | <Cheery> | nobody239419341: that implementation for checking palindrome is vicious. |
| 20:00:41 | <nobody239419341> | kindaro thank you I will look to it |
| 20:00:43 | <kindaro> | nobody239419341 As you may see, it does exactly what you need it to do. _«Why»_ is another question. It is fair to say that I never ever used the monad instance for functions. |
| 20:01:01 | <p0a> | Oh so that's what it is using. Wow, tricky |
| 20:01:37 | <Cheery> | functions make a valid monad with their last argument.. it's a bit difficult to understand but it's valid. |
| 20:01:38 | <kindaro> | Seeing that `Reader` is really a function, this may give some intuition. |
| 20:01:45 | <sm[m]> | ...and one weirdo using ISC (glguy :). Interesting, I didn't know about ISC |
| 20:01:58 | hackage | linear 1.21.2 - Linear Algebra https://hackage.haskell.org/package/linear-1.21.2 (ryanglscott) |
| 20:02:09 | <sm[m]> | https://www.gnu.org/licenses/license-list.en.html#ISC |
| 20:02:10 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 20:02:19 | <Cheery> | nobody239419341: [a] -> [a] is the type signature for reverse. |
| 20:02:31 | <p0a> | Cheery: I think this explains some of it? https://mjoldfield.com/atelier/2014/07/monads-fn.html |
| 20:02:33 | <nobody239419341> | yes |
| 20:02:34 | <p0a> | Or am I wrong? |
| 20:02:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 20:02:52 | <tomsmeding> | sm[m]: what about https://hackage.haskell.org/package/dependent-map |
| 20:02:58 | × | eyenx quits (~eyenxeyen@unaffiliated/eye/x-1653358) (Quit: killed) |
| 20:03:05 | → | xcmw joins (~textual@dyn-72-33-0-89.uwnet.wisc.edu) |
| 20:03:07 | <Cheery> | nobody239419341: now imagine that's something like F [a] where F x = [a] -> x |
| 20:03:50 | <nobody239419341> | what does it mean to apply the infix operator `->` for function definition |
| 20:04:04 | → | ddellacosta joins (~dd@86.106.121.168) |
| 20:04:26 | <kindaro> | tomsmeding, so the story goes: I get the list of `Type` values by examining `reifyInstances`. Now I must use `tyConName` on the corresponding types. But this correspondence is not trivial to establish. |
| 20:04:28 | <nobody239419341> | This is new to me, only seen it on signatures and case expressions, and reverse form on do blocks |
| 20:04:43 | <sm[m]> | tomsmeding: they seem to be on top of things.. nice precision |
| 20:05:20 | <sm[m]> | oh, well "I have no idea which, if any, of the following licenses apply, so I've copied them all.", maybe precision is not the word :) |
| 20:05:37 | <sm[m]> | nice transparency |
| 20:06:06 | → | eyenx joins (~eyenxeyen@unaffiliated/eye/x-1653358) |
| 20:06:11 | → | kish joins (~oracle@unaffiliated/oracle) |
| 20:06:37 | <kindaro> | tomsmeding, so I may transform `Type` to an `Exp` that contains the corresponding type constructor, and then I can use it to obtain an expression for its `tyConName`. |
| 20:06:55 | <kindaro> | tomsmeding Does this explanation make things clearer? |
| 20:07:09 | <Cheery> | nobody239419341: Well I can tell you it's hard, and my explanation may go over, if that's the case, I'll try to elaborate so you understand it enough. |
| 20:07:26 | <tomsmeding> | kindaro: if the type in question is data A = B | C, do you want, "A", "B" or "C"? |
| 20:07:35 | <kindaro> | `A`. |
| 20:07:39 | <tomsmeding> | okay |
| 20:07:47 | <Cheery> | nobody239419341: but the important part now is, you need to look at the function type like that. |
| 20:07:48 | <nobody239419341> | i can't even say if I know precisely what's a typeclass and type and data and whatever things in haskell |
| 20:07:58 | <kindaro> | tomsmeding I cannot really obtain anything else from `reifyInstances°. |
| 20:07:59 | <Cheery> | :t (>>=) |
| 20:08:01 | <tomsmeding> | is it hard to give a piece of code that contains one `_` hole where you don't know what function to insert? |
| 20:08:01 | <lambdabot> | Monad m => m a -> (a -> m b) -> m b |
| 20:08:23 | <Cheery> | nobody239419341: you see how that type signature goes, now you can expand here.. You had.. |
| 20:08:45 | <Cheery> | nobody239419341: m [a] -> ([a] -> m b) -> m b |
| 20:08:54 | → | olliey joins (5f92092d@95.146.9.45) |
| 20:08:59 | <nobody239419341> | yeah It's just I think about an Num when I see Monad so I imagine like Its like Num m => Num a (a -> .... etc |
| 20:09:19 | <Cheery> | so if you do (>>=) reverse, we got this.. |
| 20:09:23 | <Cheery> | :t (>>=) reverse |
| 20:09:24 | <lambdabot> | ([a] -> [a] -> b) -> [a] -> b |
| 20:09:49 | <Cheery> | the next parameter is a function, and now it has expanded like that.. so the first parameter is the result of 'reverse', what else could it be? |
| 20:10:01 | <nobody239419341> | okay go on, I have one question to ask at the end or now, if you like |
| 20:10:04 | <Cheery> | the second parameter is the argument passed to reverse. |
| 20:10:09 | <kindaro> | tomsmeding `getTypeNameLiteral subject = _ [|(tyConName ∘ typeRepTyCon) (typeRep @ $(return subject))|] ∷ Q Pat` |
| 20:10:42 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 20:10:57 | → | DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
| 20:10:59 | → | filwisher joins (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) |
| 20:11:30 | × | geekosaur quits (42d52102@66.213.33.2) (Remote host closed the connection) |
| 20:11:34 | <Cheery> | nobody239419341: so if you take [1,2] == [2,1] it's bit like checking whether [1,2] is a palindrome? |
| 20:11:45 | <nobody239419341> | yes |
| 20:11:46 | → | mirrorbird joins (~psutcliff@m83-187-182-226.cust.tele2.se) |
| 20:12:00 | <nobody239419341> | :t (>>=) |
| 20:12:02 | <lambdabot> | Monad m => m a -> (a -> m b) -> m b |
| 20:12:05 | <Cheery> | nobody239419341: so if you put it there, like this: (>>=) reverse (==) |
| 20:12:22 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 20:12:23 | <Cheery> | you get this kind of composition of reverse with that function of checking equality of two lists. |
| 20:12:28 | × | eyenx quits (~eyenxeyen@unaffiliated/eye/x-1653358) (Quit: killed) |
| 20:12:45 | → | mu_ joins (~mu@unaffiliated/mu) |
| 20:12:52 | <Cheery> | :t (>>=) reverse (==) |
| 20:12:54 | <lambdabot> | Eq a => [a] -> Bool |
| 20:13:18 | <ski> | @type (>>=) `asTypeIn` \(>>=) -> (>>=) reverse (==) |
| 20:13:20 | <lambdabot> | Eq a => ([a] -> [a]) -> ([a] -> [a] -> Bool) -> [a] -> Bool |
| 20:14:01 | <Cheery> | cool. |
| 20:15:02 | <ski> | > (>>=) f (g :: Expr -> Expr -> Expr) x |
| 20:15:05 | <lambdabot> | g (f x) x |
| 20:15:37 | → | eyenx joins (~eyenxeyen@unaffiliated/eye/x-1653358) |
| 20:16:03 | <nobody239419341> | thank you Cheery. It helped a bit |
| 20:16:40 | → | tchouri joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 20:17:05 | <Cheery> | nobody239419341: Also check out ski's explanation, but the idea is that functions are valid monads and that thing kind of treats reverse as a monad, then binds the equality to it. |
| 20:17:08 | tchouri | is now known as hekkaidekapus |
| 20:17:14 | → | ashbreeze joins (~mark@72-161-49-118.dyn.centurytel.net) |
| 20:18:12 | <Cheery> | it probably helps if you consider how functions are valid functors, or then it doesn't. |
| 20:19:28 | <Cheery> | @type fmap `asTypeIn` \fmap -> (fmap f g :: a -> b) |
| 20:19:29 | <lambdabot> | error: |
| 20:19:30 | <lambdabot> | • Couldn't match type ‘f’ with ‘(->) a1’ |
| 20:19:30 | <lambdabot> | because type variable ‘a1’ would escape its scope |
| 20:19:33 | × | _ashbreeze_ quits (~mark@72-161-253-130.dyn.centurytel.net) (Ping timeout: 260 seconds) |
| 20:19:44 | <ski> | (not functions. functions are values, monads are not values. you mean the (partially applied function) type `([a] ->)', being a monad. so e.g. `(>>=) :: Monad m => m b -> (b -> m c) -> m c' then becomes `([a] -> b) -> (b -> [a] -> c) -> [a] -> c') |
| 20:20:12 | <nobody239419341> | wait this could be important information for me to understand |
| 20:20:16 | <nobody239419341> | so is all functions are types? |
| 20:20:46 | → | knupfer joins (~Thunderbi@200116b82ca43f002c28ccfffeb57fee.dip.versatel-1u1.de) |
| 20:20:47 | × | knupfer quits (~Thunderbi@200116b82ca43f002c28ccfffeb57fee.dip.versatel-1u1.de) (Client Quit) |
| 20:20:50 | <p0a> | yeah nobody239419341 |
| 20:20:54 | × | edwtjo quits (~edwtjo@fsf/member/edwtjo) (Ping timeout: 258 seconds) |
| 20:20:58 | → | knupfer joins (~Thunderbi@200116b82ca43f005c40053ed66b0b42.dip.versatel-1u1.de) |
| 20:21:10 | <ski> | @type fmap `asTypeIn` \fmap -> fmap ?f ?g |
| 20:21:12 | <lambdabot> | (Functor f, ?f::a -> b, ?g::f a) => (a -> b) -> f a -> f b |
| 20:21:18 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 260 seconds) |
| 20:21:32 | <ski> | nobody239419341 : functions are not types |
| 20:21:36 | → | mahene joins (~mahene@2a02:8109:86c0:8d68:5400:2bfd:d746:732c) |
| 20:21:43 | <Cheery> | (a -> b) -> (c -> a) -> (c -> b) |
| 20:21:48 | <ski> | "function types" means the types of functions |
| 20:22:02 | → | alp joins (~alp@2a01:e0a:58b:4920:d4f2:e84:b07:a9f2) |
| 20:22:37 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 20:22:41 | <nobody239419341> | so how do you pass the reverse function as an argument to the (>>=) ? |
| 20:22:47 | → | mu__ joins (~mu@unaffiliated/mu) |
| 20:23:21 | <Cheery> | nobody239419341: There's an instance Monad (a ->) |
| 20:23:31 | <Cheery> | it is matched when you do os. |
| 20:23:40 | <p0a> | nobody239419341: what is happening is a bit different than that. There's a lot of stuff going on involving definitions you probably are not even aware of |
| 20:23:57 | <p0a> | nobody239419341: to just compose two functions you do something like (f . g) |
| 20:24:20 | → | AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl) |
| 20:24:24 | <monochrom> | >>= is an infix operator, so just write "reverse >>= ..."? |
| 20:25:05 | <Cheery> | https://hackage.haskell.org/package/base-4.14.0.0/docs/src/GHC.Base.html#line-979 |
| 20:25:07 | <p0a> | The trick with your palindrome implementation is that it uses a well-known feature of the language (monads), but also a less commonly used monad (the function monad). That's how I understand it. To understand the better known parts of monads, is already a task in itself nobody239419341 |
| 20:25:31 | × | AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Client Quit) |
| 20:26:18 | × | John20 quits (~John@82.46.59.122) (Ping timeout: 272 seconds) |
| 20:26:37 | × | mahene quits (~mahene@2a02:8109:86c0:8d68:5400:2bfd:d746:732c) (Quit: Leaving) |
| 20:27:13 | × | ashbreeze quits (~mark@72-161-49-118.dyn.centurytel.net) (Ping timeout: 260 seconds) |
| 20:27:17 | <nobody239419341> | uh why nobody can explain like just an example -> it takes the reverse function and puts it on the right side of the (==) and whenever a list is called on it, list will put on left side of the (==) and reverse will be applied and put it on the right side |
| 20:27:20 | → | AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl) |
| 20:27:58 | hackage | transformers-compat 0.6.6 - A small compatibility shim for the transformers library https://hackage.haskell.org/package/transformers-compat-0.6.6 (ryanglscott) |
| 20:28:01 | <nobody239419341> | Damn monads |
| 20:28:12 | <monochrom> | Huh? That explanation is BS. |
| 20:28:15 | <Cheery> | nobody239419341: it's lot of details that go into it becoming (==) (reverse x) x |
| 20:28:29 | <p0a> | monochrom: mine? Whoops, sorry |
| 20:28:37 | <nobody239419341> | I can imagine |
| 20:28:40 | → | _ashbreeze_ joins (~mark@72-161-254-200.dyn.centurytel.net) |
| 20:28:42 | <Cheery> | or reverse x == x |
| 20:28:46 | <monochrom> | No, nobody239419341's explanation. |
| 20:29:10 | <Cheery> | btw.. on functors of.. not functions but partially applied functions. |
| 20:29:30 | <Cheery> | djinn finds a value for a type. |
| 20:29:37 | <Cheery> | @djinn (a -> b) -> (c -> a) -> (c -> b) |
| 20:29:37 | <lambdabot> | f a b c = a (b c) |
| 20:30:04 | <monochrom> | See, in the first place, I am against tackling >>= at a beginner stage in the first stage, especially for a palindrome exercise that can be done in 10 different elementary ways already. |
| 20:30:09 | → | mahene joins (~mahene@2a02:8109:86c0:8d68:5400:2bfd:d746:732c) |
| 20:30:23 | <Cheery> | yup. but he asked for it. :) |
| 20:30:36 | <monochrom> | I have no idea why you people decided to entertain this request and get into such a rabbit hole. |
| 20:30:38 | <Cheery> | and I guess this is helpful to see.. how this comes up together. |
| 20:30:55 | <p0a> | I think it's a show-off really, to write a palindrome like that |
| 20:31:10 | <nobody239419341> | I'm just stuck in a loop for creating recursive functions and exercises for two months |
| 20:31:20 | <monochrom> | It takes like 2-4 weeks of preparations before >>= makes sense for this exercise. Not 2 hours. |
| 20:31:23 | <nobody239419341> | I can't get progress without having eaten some parts of the FP |
| 20:31:53 | <p0a> | nobody239419341: In my opinion it's better to start with `Maybe' and `IO' |
| 20:31:59 | <Cheery> | :t (.) |
| 20:32:00 | <lambdabot> | (b -> c) -> (a -> b) -> a -> c |
| 20:32:16 | <p0a> | Write programs that do simple tasks but require some checking of values. You'll have to be using Maybe and IO for that |
| 20:32:16 | × | mu__ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 20:32:22 | <nobody239419341> | I see maybe as like a box |
| 20:32:35 | <Cheery> | https://hackage.haskell.org/package/base-4.14.0.0/docs/src/GHC.Base.html#line-969 |
| 20:32:37 | × | kindaro quits (1f08d381@h31-8-211-129.dyn.bashtel.ru) (Remote host closed the connection) |
| 20:32:42 | <Cheery> | there reads.. fmap = (.) |
| 20:32:43 | → | mu_ joins (~mu@unaffiliated/mu) |
| 20:32:57 | hackage | error-or 0.1.0.0 - Composable, hierarchical errors. https://hackage.haskell.org/package/error-or-0.1.0.0 (luntain) |
| 20:33:08 | <xsperry> | cheers fmap is (.) for function functor |
| 20:33:14 | <xsperry> | Cheery* |
| 20:33:21 | <p0a> | nobody239419341: Write a program that keeps an address book and looks up a name in it, allows you to modify a record and save/load records from a file |
| 20:33:27 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 20:33:32 | <monochrom> | Well, I stuck my students in a loop for creating recursive functions and exercises for two months. And only then they are ready for >>= |
| 20:34:05 | <monochrom> | People really don't realize the effect and benefits of "repetitive" immersion. |
| 20:34:28 | <xsperry> | Cheery, for list (for example), it is just map |
| 20:35:56 | <tomsmeding> | @tell kindaro here is something: https://paste.tomsmeding.com/WWaRcppB |
| 20:35:56 | <lambdabot> | Consider it noted. |
| 20:36:35 | <nobody239419341> | okay guys thank you all for the suggestions. I'll keep doing exercises and try out that address book application |
| 20:37:07 | <Cheery> | nobody239419341: np. I hope it helped. It's just a fancy trick and nothing wrong with those, but it involves understanding this kind of things. |
| 20:37:42 | × | ryansmccoy quits (~ryansmcco@156.96.151.132) (Ping timeout: 272 seconds) |
| 20:37:58 | <Cheery> | at some context the idea of (->) a as a monad, does make sense. |
| 20:38:09 | → | ryansmccoy joins (~ryansmcco@156.96.151.132) |
| 20:38:51 | × | mahene quits (~mahene@2a02:8109:86c0:8d68:5400:2bfd:d746:732c) (Ping timeout: 272 seconds) |
| 20:39:21 | <monochrom> | Well first thing you have to embrace that "X->Y" is "((->) X) Y" and the shock that the "(->) X" part can be isolated out as a standalone thing. |
| 20:39:38 | <monochrom> | That alone probably takes a week to absorb already. |
| 20:39:50 | <p0a> | Why is X->Y parsed like that? |
| 20:39:57 | <p0a> | is 1 + 2 also the same? |
| 20:40:00 | <Cheery> | for instance, a program requires an additional parameter, but it's not used too often, you might supply it as last parameter and form a monad around it. |
| 20:40:01 | <monochrom> | Yes. |
| 20:40:04 | × | nobody239419341 quits (5e7be5a0@94.123.229.160) (Remote host closed the connection) |
| 20:40:15 | <monochrom> | See? So much prerequisites. |
| 20:40:36 | <Rembane> | > (+) 1 2 |
| 20:40:39 | <lambdabot> | 3 |
| 20:40:40 | × | mirrorbird quits (~psutcliff@m83-187-182-226.cust.tele2.se) (Quit: Leaving) |
| 20:40:48 | <monochrom> | But you're confusing the term level and the type level. |
| 20:41:01 | <p0a> | Right, okay. Because I was thinking of - now |
| 20:41:26 | <p0a> | I'm just confused, ignore me |
| 20:42:12 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 20:42:28 | <p0a> | I'm impressed at how quickly I was able to whip together a simple file database program that helps me keep track of my books and notes |
| 20:42:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 20:42:42 | <p0a> | took me 2 days of maybe 30 minutes each (well thanks to this channel as well) |
| 20:44:13 | <sm[m]> | p0a: nice! |
| 20:45:06 | × | madjestic quits (~madjestic@86-88-72-244.fixed.kpn.net) (Ping timeout: 265 seconds) |
| 20:46:57 | × | Raito_Bezarius quits (~Raito_Bez@unaffiliated/raito-bezarius/x-8764578) (Ping timeout: 260 seconds) |
| 20:46:58 | × | coot quits (~coot@37.30.59.214.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 20:47:12 | <Cheery> | about that.. I'm thinking of a little project.. I start looking what kind of html/tagsoup functionality my blog driver would require to be written in haskell |
| 20:47:51 | <p0a> | sm[m]: thank you :) I agree |
| 20:48:00 | <p0a> | I'll share it here once it's looking good |
| 20:48:05 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 20:48:27 | × | motersen quits (~user@2001-4dd1-ce19-0-41b8-8f35-edf5-ff23.ipv6dyn.netcologne.de) (Ping timeout: 240 seconds) |
| 20:49:47 | → | mirrorbird joins (~psutcliff@2a00:801:3fb:53b9:b09b:cd4e:4e4a:44a9) |
| 20:51:32 | → | mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh) |
| 20:52:16 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 20:52:46 | → | mu_ joins (~mu@unaffiliated/mu) |
| 20:54:29 | <Cheery> | aside just going to google each function, is there a page dedicated to giving haskell equivalents for os.walk, os.path.join, etc... ? |
| 20:54:33 | <sm[m]> | I think there's a lot of speed-of-development and power in haskell & libs, just waiting for a bit more refinement/curation/tooling to come together |
| 20:55:02 | <sm[m]> | not yet tapped, I mean |
| 20:55:07 | <Rembane> | Cheery: System.Directory, System.Environment, hm... and more! :D |
| 20:55:38 | <Rembane> | Cheery: If you happen to know the C stdlib, the functions are named almost the same in Haskell, but they are slightly more sane. |
| 20:56:00 | <Cheery> | I'd also like about a function that gives current date, and some datetime handling. |
| 20:56:01 | × | xcmw quits (~textual@dyn-72-33-0-89.uwnet.wisc.edu) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 20:56:03 | → | artotrie joins (~private@2604:2000:1540:4121:c018:ab87:8515:a83a) |
| 20:56:14 | <aldessa> | I'd like to learn numerical methods. I hear Haskell is a bad language to do it in, is this true if I'm using unboxed mutable arrays in the ST monad? |
| 20:56:31 | <Rembane> | Cheery: That's trickier |
| 20:56:53 | <Rembane> | aldessa: It depends, if you can work with slow numerical methods it's alright |
| 20:57:07 | × | _ashbreeze_ quits (~mark@72-161-254-200.dyn.centurytel.net) (Ping timeout: 240 seconds) |
| 20:57:47 | <aldessa> | why is it slow Rembane? i thought Haskell was slower because of garbage collection; does the ST monad not avoid that? |
| 20:59:00 | <Rembane> | aldessa: Laziness has a tendency to bite if not properly contained and Haskell is slower than Fortran for such things. |
| 20:59:01 | → | _ashbreeze_ joins (~mark@72-161-254-200.dyn.centurytel.net) |
| 20:59:02 | ← | artotrie parts (~private@2604:2000:1540:4121:c018:ab87:8515:a83a) ("Leaving") |
| 20:59:20 | <Rembane> | Cheery: I used thyme for that, but I think it's needlessly complicated. |
| 21:00:01 | × | patryk_ quits (~patryk_@84.39.117.57) () |
| 21:00:03 | → | Raito_Bezarius joins (~Raito_Bez@unaffiliated/raito-bezarius/x-8764578) |
| 21:00:11 | → | bitmagie joins (~Thunderbi@200116b806af9800a5686823a67cc6e9.dip.versatel-1u1.de) |
| 21:01:16 | <monochrom> | unboxed mutable array likely kills most of the laziness. |
| 21:02:19 | <xsperry> | Cheery, also System.FilePath, and for dates there's time package |
| 21:02:19 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 21:02:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 21:02:46 | <monochrom> | But it still stands to reason to re-use existing C-bound numerical libraries like LAPACK because they are both well-tuned and well-tested over the years. |
| 21:02:47 | <Cale> | Slow is relative -- people do all kinds of numerical stuff in Python, so no doubt Haskell is an option for a lot of applications. |
| 21:03:05 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 21:03:11 | <monochrom> | and well-understood |
| 21:03:11 | <Cale> | and yeah, typically you're going to use bindings to stuff that was optimised at a lower level |
| 21:03:54 | <monochrom> | It is possible to replicate the same expertise in Haskell if you prepare to spend the same amount of person-years. |
| 21:04:09 | <monochrom> | But don't expect to take merely days. |
| 21:04:56 | <aldessa> | i'd be writing my own numerical methods because i'm doing a course in them; |
| 21:05:08 | <monochrom> | Ah OK then just cause. |
| 21:05:27 | × | st8less quits (~st8less@ip72-204-59-82.fv.ks.cox.net) (Ping timeout: 240 seconds) |
| 21:06:05 | <monochrom> | If you aren't aware of how Haskell is compiled to machine code and how laziness is done this way, then expect to suffer inefficiency. |
| 21:06:30 | × | Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving) |
| 21:06:43 | <monochrom> | In fact not only constant-multiplier inefficiency. You could be spending linear space where constant space should be enough. |
| 21:06:54 | <dolio> | Blaming it all on laziness is naive. |
| 21:07:06 | <monochrom> | I know. |
| 21:07:19 | <dolio> | If you want efficiency, you need to understand many things about how the compiler works. |
| 21:07:21 | <monochrom> | But for most numerical algorithms, eagerness is the better default. |
| 21:07:27 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 21:07:28 | → | rprije joins (~rprije@203.214.95.251) |
| 21:07:29 | <aldessa> | i was mostly concerned about memory management |
| 21:07:29 | <monochrom> | Yes that. |
| 21:07:47 | <Cale> | Laziness will also be the thing that trips up beginners a bunch, even if there are cases where it can be put to excellent use |
| 21:08:13 | <monochrom> | Especially if you're transcribing imperative numerical algorithms such as from most textbooks to Haskell. They were written for eager evaluation. |
| 21:08:15 | <dolio> | monochrom: I know you know that. :) |
| 21:08:18 | <p0a> | It suffices to say that if you do numerical optimizatio in Haskell you'll be learning two (at least) things at once |
| 21:08:20 | <monochrom> | OK! |
| 21:08:29 | × | fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.7.1) |
| 21:08:49 | <aldessa> | i don't know any languages other than Haskell so I'd like to avoid learning another one |
| 21:08:54 | <aldessa> | anyhow |
| 21:09:06 | <aldessa> | is foreign ptr meant to only be used for foreign bindings? it seems to be that way |
| 21:09:07 | <sm[m]> | quite right |
| 21:09:31 | <monochrom> | Of course if you follow John Hughes's paper and turn your Newton's method into a "generate infinite list of iterates" and a "consume until convergence" then laziness is required. |
| 21:09:45 | <monochrom> | (But how many numerical method students are going to do that?) |
| 21:09:56 | → | Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
| 21:09:58 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 21:10:26 | <dolio> | I just wanted to make sure it's clear in this conversation. People automatically jump to blame laziness, but the truth is you need to know what you're doing in almost any language, and laziness is often used as a scapegoat. |
| 21:10:31 | <p0a> | consume until convergence sounds scary |
| 21:10:52 | <p0a> | You could get caught in infinite loops with Newton's method I think :P |
| 21:11:05 | <monochrom> | p0a: Like this: http://www.cs.utoronto.ca/~trebla/CSCC24-2020-Summer/03-haskell-evaluation.html#lazygood |
| 21:11:27 | <monochrom> | Oh, every textbook pseudocode for Newton's method has the same problem. |
| 21:11:30 | <p0a> | ah with x^3 - b = 0 it won't happen |
| 21:11:37 | × | olliey quits (5f92092d@95.146.9.45) (Remote host closed the connection) |
| 21:11:55 | <monochrom> | But I stole this idea from John Hughes's "why FP matters" |
| 21:12:18 | <p0a> | very nice |
| 21:12:18 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 21:12:33 | <monochrom> | In hindsight, a lot of us agree that it's really "why FP with laziness matters" |
| 21:12:46 | → | mu_ joins (~mu@unaffiliated/mu) |
| 21:13:42 | <Cheery> | subprocess.call(['rsync', '-r', '--delete', src, dst]) |
| 21:13:49 | <p0a> | I'm going to read your link soon. I have a few todo reads on my list, just ticked off higher-kinded data; I want to learn a bit about FFI next and also your link |
| 21:14:00 | <Cheery> | google says System.Process gives equivalent. |
| 21:14:20 | <monochrom> | dolio is right, the criterion for performance is "you understand the compiler". And this is true of Fortran and C, too. |
| 21:14:55 | <monochrom> | And LAPACK is successful because the authors do understand Fortran compilers. |
| 21:15:14 | <xsperry> | Cheery, there's also this (several examples on that page): https://hackage.haskell.org/package/typed-process |
| 21:15:30 | <monochrom> | For example they know that "invariant code motion" is a thing. |
| 21:16:33 | <motte> | anyone have experience with WAI? how can i access the basic auth username in my Application code? should i try to extract it from the request headers or use a middleware with Vault or something? |
| 21:16:52 | <Cheery> | Is there monoid for html/xml? |
| 21:16:57 | × | knupfer quits (~Thunderbi@200116b82ca43f005c40053ed66b0b42.dip.versatel-1u1.de) (Ping timeout: 244 seconds) |
| 21:18:05 | <Cheery> | well I miscommunicated, but some agreed upon way to construct html is what I'm looking for |
| 21:18:07 | × | Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds) |
| 21:18:14 | × | ryansmccoy quits (~ryansmcco@156.96.151.132) (Ping timeout: 272 seconds) |
| 21:18:29 | <Cheery> | eg. (Tag "item" attrs body) |
| 21:18:32 | <aldessa> | monochrom, that's pretty true. I used SPJ's book to make a broken G machine implementation and you really see how hard it is to do strictness analysis and other stuff. |
| 21:18:41 | <Cheery> | then forming <item ...>stuff</item> |
| 21:18:52 | → | ryansmccoy joins (~ryansmcco@193.37.254.27) |
| 21:19:14 | <aldessa> | i read this paper http://www.leafpetersen.com/leaf/publications/ifl2013/haskell-gap.pdf a while ago; how does GHC compare to the intell haskell research compiler? |
| 21:20:00 | <monochrom> | Hrm! I thought Intel only had a research C compiler. |
| 21:20:20 | <phadej> | icc is not a research compiler |
| 21:20:32 | <Rembane> | Cheery: I'm quite fond of lucid: https://hackage.haskell.org/package/lucid |
| 21:20:40 | → | son0p joins (~son0p@181.136.122.143) |
| 21:20:52 | <motte> | nvm got it, there is a function just for that |
| 21:20:55 | <aldessa> | they wrote a whole program optimising compiler for Haskell |
| 21:21:25 | → | machinedgod joins (~machinedg@d67-193-126-196.home3.cgocable.net) |
| 21:22:03 | × | chaosmasttter quits (~chaosmast@p200300c4a70aba018412238bea948280.dip0.t-ipconnect.de) (Quit: WeeChat 2.9) |
| 21:22:13 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 21:22:20 | × | p0a quits (~user@unaffiliated/p0a) (Quit: bye) |
| 21:22:28 | hackage | ordinal 0.1.2.0 - Convert numbers to words in different languages. https://hackage.haskell.org/package/ordinal-0.1.2.0 (wvanonsem90) |
| 21:22:43 | → | mu_ joins (~mu@unaffiliated/mu) |
| 21:23:16 | <aldessa> | thanks everyone for the caution but because i'm a student the speed really doesn't matter that much |
| 21:23:20 | <aldessa> | i'm going to go with GHC primitives if i can |
| 21:24:14 | → | madjestic joins (~madjestic@86-88-72-244.fixed.kpn.net) |
| 21:27:48 | → | thir joins (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) |
| 21:30:06 | × | voyons_calisse quits (~dan@107-190-41-58.cpe.teksavvy.com) (Read error: Connection reset by peer) |
| 21:30:35 | → | voyons_calisse joins (~dan@107-190-41-58.cpe.teksavvy.com) |
| 21:30:45 | → | Amras joins (~Amras@unaffiliated/amras0000) |
| 21:31:32 | → | falafel joins (~falafel@2605:e000:1527:d491:a806:37fa:6971:2798) |
| 21:32:37 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 21:32:43 | → | mu__ joins (~mu@unaffiliated/mu) |
| 21:32:58 | × | thir quits (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 21:35:21 | × | Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 260 seconds) |
| 21:41:00 | → | heebo joins (~user@cpc97956-croy24-2-0-cust20.19-2.cable.virginm.net) |
| 21:41:59 | <justsomeguy> | (Sorry about the away messages; I was having keyboard problems.) |
| 21:42:08 | × | mananamenos_ quits (~mananamen@84.122.202.215.dyn.user.ono.com) (Ping timeout: 265 seconds) |
| 21:42:09 | <heebo> | has haskell performance significantly improved in ghc 8? |
| 21:42:12 | × | mu__ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 21:42:18 | <heebo> | ive been away from the scene for a while |
| 21:42:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 21:43:08 | <heebo> | im also interested in finding out about hls , just installed it with ghcup , but unsure how to configure emacs to use it |
| 21:43:31 | <maerwald> | heebo: https://github.com/haskell/haskell-language-server#using-haskell-language-server-with-emacs |
| 21:44:08 | <heebo> | oh thanks!!! just what the doctor ordered! |
| 21:45:56 | <sm[m]> | improved since when heebo ? |
| 21:45:57 | × | AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving) |
| 21:46:11 | <maerwald> | since 8 |
| 21:46:56 | → | Amras joins (~Amras@unaffiliated/amras0000) |
| 21:47:33 | <heebo> | yeah since early 8 |
| 21:47:47 | <heebo> | ghc moves so fast , its really hard to keep up |
| 21:48:09 | <sm[m]> | I would guess the answer is: not that you'd notice |
| 21:48:14 | <maerwald> | if you mean compilation speed, code generation quality etc... I'm actually not sure |
| 21:48:24 | <heebo> | spend a little time studying rust , cat theory or machine learning - and come back to a changed haskell world |
| 21:48:26 | <maerwald> | But new GHC extensions for sure |
| 21:48:33 | <heebo> | lol |
| 21:48:48 | × | son0p quits (~son0p@181.136.122.143) (Quit: leaving) |
| 21:49:11 | <heebo> | i havent got my head around all of the extensions from 8 |
| 21:49:16 | <sm[m]> | I believe some libs have had some significant speedups lately, like bytestring |
| 21:49:35 | <maerwald> | heebo: debugging got a little better maybe |
| 21:49:57 | <sm[m]> | some pathologically slow cases will have been fixed |
| 21:50:25 | <heebo> | oh nice ill tuck in and find out whats clever , thanks all |
| 21:51:20 | <maerwald> | you might also have noticed the exciting tool wars... I think all that hadn't begun yet prior to 8 |
| 21:51:27 | × | Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds) |
| 21:52:02 | <heebo> | as in hls vs hie? |
| 21:52:20 | <maerwald> | that's not a war, just confusion and rebranding :p |
| 21:52:20 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 21:52:30 | <maerwald> | rather cabal vs stack |
| 21:52:35 | × | ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 21:52:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 21:52:43 | <maerwald> | and then nix came along too |
| 21:53:02 | <heebo> | cabal fought back? |
| 21:53:05 | <maerwald> | yeah |
| 21:53:25 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 21:53:27 | <heebo> | how? |
| 21:53:28 | <maerwald> | went into training and increased its power level |
| 21:53:30 | → | son0p joins (~son0p@181.136.122.143) |
| 21:53:31 | <heebo> | lol |
| 21:53:38 | <heebo> | over 9k? |
| 21:53:42 | <maerwald> | for sure |
| 21:53:58 | → | Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas) |
| 21:54:24 | <heebo> | i need to forgive cabal , i abandoned her a while ago |
| 21:54:37 | <heebo> | actually me and stack just used her behind the scenes |
| 21:54:41 | → | forcer1 joins (~forcer@193.56.252.210) |
| 21:54:47 | <Cheery> | Rembane: Why HTML builder should be a monad? |
| 21:55:07 | <Rembane> | Cheery: Mostly to get a nice syntax to work with |
| 21:55:36 | <maerwald> | heebo: also, sandboxes are gone |
| 21:55:39 | <heebo> | so you can combine builders ? |
| 21:56:02 | <heebo> | maerwald: what?! so.... do i need to buy and external harddrive? |
| 21:56:27 | <sm[m]> | no they're not.. phadej is trying to get rid of them.. |
| 21:56:43 | <maerwald> | sm[m]: they are |
| 21:57:01 | <heebo> | Cheery: presumably so you can combine builders in an ordered way? |
| 21:57:05 | <sm[m]> | are not! :-p |
| 21:57:14 | <maerwald> | sm[m]: sandboxes are removed |
| 21:57:19 | <maerwald> | try it |
| 21:57:27 | <monochrom> | which version? |
| 21:57:47 | <sm[m]> | ok, I must be confused. I guess we still have only non-sandbox v1 ? I forgot they were different |
| 21:58:03 | <maerwald> | yes, that's different |
| 21:58:05 | → | AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl) |
| 21:58:21 | <sm[m]> | but I'm still right because users will still show up here with cabal 2.4 (thx monochrom !) |
| 21:58:35 | → | kori joins (~kori@arrowheads/kori) |
| 21:58:35 | <maerwald> | 2.4 isn't recommended |
| 21:58:42 | → | mav1 joins (~mav@p5b02806a.dip0.t-ipconnect.de) |
| 21:59:00 | <sm[m]> | ha ha they laugh at our non-recommendations |
| 21:59:04 | <monochrom> | "cabal v1-sandbox init" still does things, 3.2.0.0 |
| 21:59:15 | <sm[m]> | there you go |
| 21:59:20 | <heebo> | ok so without sandboxes dont you just end up clobbering your workspace with irrellevant libraries? |
| 21:59:23 | <monochrom> | If my test is a bad test, let me know. |
| 21:59:37 | × | filwisher quits (~filwisher@cpc76738-dals23-2-0-cust186.20-2.cable.virginm.net) (Ping timeout: 264 seconds) |
| 21:59:50 | <sm[m]> | heebo: cabal by default now uses "v2" commands which share libs nicely |
| 21:59:52 | <maerwald> | monochrom: they are removed in 3.4.0.0-rc3 |
| 21:59:53 | <monochrom> | No heebo, "nix-style", so like what stack does |
| 22:00:10 | <monochrom> | See? "which version?" was actually important. |
| 22:00:32 | <monochrom> | But rc3 and alpha27 don't count. |
| 22:00:51 | <maerwald> | 3.4.0.0-rc3 is gonna be out with ghc 9 most likely |
| 22:01:00 | <monochrom> | You still can't go around and say "GHC has LinearTypes now" just because 9.0.1-alpha1 has it. |
| 22:01:17 | <monochrom> | Well yes but we're still months before that. |
| 22:01:23 | <maerwald> | there is no 9.0.1-alpha1 (it's not valid PVP, haha) |
| 22:01:41 | <monochrom> | https://downloads.haskell.org/ghc/9.0.1-alpha1/ |
| 22:02:01 | <maerwald> | monochrom: it reports something different if you do `ghc --numeric-version` :p |
| 22:02:16 | × | conal quits (~conal@64.71.133.70) (Read error: Connection reset by peer) |
| 22:02:16 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 22:02:25 | <monochrom> | https://mail.haskell.org/pipermail/haskell/2020-September/026044.html |
| 22:02:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 22:02:44 | × | son0p quits (~son0p@181.136.122.143) (Quit: leaving) |
| 22:03:08 | <heebo> | well is there any reason to use stack anymore? |
| 22:03:46 | <Cheery> | Hey.. I think I have isolated my usage patterns of beautiful soup module. |
| 22:03:54 | <monochrom> | Yes if you outsource GHC installation to stack so you don't think about it. |
| 22:04:01 | <monochrom> | Yes if you like stackage's vision. |
| 22:04:21 | → | conal joins (~conal@64.71.133.70) |
| 22:04:27 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:995e:484:bdc6:4ac4) (Ping timeout: 240 seconds) |
| 22:04:46 | <Cheery> | The obvious one is that I fetch stuff. |
| 22:05:06 | <maerwald> | monochrom: https://gitlab.haskell.org/ghc/ghc/-/issues/2496 |
| 22:05:07 | <Cheery> | the next one is that I replace stuff with something else. |
| 22:05:10 | × | aldessa quits (~Hugh@host-2-103-12-241.as13285.net) (Remote host closed the connection) |
| 22:05:29 | → | aldessa joins (~Hugh@host-2-103-12-241.as13285.net) |
| 22:05:37 | → | Guest56 joins (93877451@gateway/web/cgi-irc/kiwiirc.com/ip.147.135.116.81) |
| 22:05:44 | × | urdh quits (~urdh@unaffiliated/urdh) (Ping timeout: 272 seconds) |
| 22:05:51 | <monochrom> | heebo: The new cabal semantics is at https://cabal.readthedocs.io/en/3.4/nix-local-build-overview.html |
| 22:06:10 | <Cheery> | so for example, my code might be locating title and body of the document. |
| 22:06:26 | <Cheery> | then it may do stuff to it, and reconstruct the document. |
| 22:06:28 | <monochrom> | maerwald: Oh, that. Bug, like I thought. |
| 22:06:50 | → | son0p joins (~son0p@181.136.122.143) |
| 22:06:52 | <monochrom> | Err wait, nevermind, 12 years ago? Haha. |
| 22:07:05 | <maerwald> | It's still in deprecation phase |
| 22:07:28 | → | urdh joins (~urdh@unaffiliated/urdh) |
| 22:07:33 | <sm[m]> | heebo: stack vs cabal is still at least as big a division as before. stack still is better at some things but cabal is now also better at some things |
| 22:07:43 | <sm[m]> | so you're fine using the one you prefer |
| 22:08:12 | → | Tristan- joins (~tristan@luna.whatbox.ca) |
| 22:08:25 | → | Xnuk- joins (~xnuk@vultr.xnu.kr) |
| 22:08:25 | × | Xnuk quits (~xnuk@45.76.202.58) (Ping timeout: 240 seconds) |
| 22:08:26 | <maerwald> | stack has the worse philosophy, cabal the worse codebase. Now, I could have phrased that positively somehow... |
| 22:08:34 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection) |
| 22:08:55 | × | _Tristan_ quits (~tristan@luna.whatbox.ca) (Ping timeout: 240 seconds) |
| 22:09:07 | <Guest56> | I'm so h0rny now. Wanna trade. Add me here >> https://bit.ly/3iiA2Ef << |
| 22:09:15 | <maerwald> | nah, we're good |
| 22:09:26 | <monochrom> | Well I'm OK with phrasing negatively such as "my course has the least difficult monad tutorial" because it is not goiing to be easy. |
| 22:09:36 | <sm[m]> | heebo: there are.. partisans |
| 22:09:48 | ChanServ | sets mode +o monochrom |
| 22:09:52 | monochrom | sets mode +b *!*@gateway/web/cgi-irc/kiwiirc.com/ip.147.135.116.81 |
| 22:09:52 | Guest56 | is kicked by monochrom (Guest56) |
| 22:10:01 | <maerwald> | sm[m]: :D |
| 22:10:06 | → | fresheyeball joins (~isaac@c-71-237-105-37.hsd1.co.comcast.net) |
| 22:10:11 | <Rembane> | maerwald: I guess cabal has too few coders, stack has too few philosophers and you have too few positivelers. I think this might be one of my worst puns. |
| 22:10:12 | <fresheyeball> | hey out there |
| 22:10:21 | <fresheyeball> | I am not a stack user and I have an issue |
| 22:10:32 | <fresheyeball> | I need to get regex-pcre to build |
| 22:10:41 | <fresheyeball> | https://gitlab.com/fresheyeball/Shpadoinkle-snowman/-/jobs/766428404#L1684 |
| 22:10:57 | <fresheyeball> | anyone know how to debug this? |
| 22:10:59 | <maerwald> | fresheyeball: on windows? |
| 22:11:06 | <fresheyeball> | linux |
| 22:11:19 | <heebo> | i really dont care what the code base is like , i just want the tool that is easiest to use and most reliable |
| 22:11:31 | <heebo> | i guess that makes me a phillistine |
| 22:11:33 | <sm[m]> | fresheyeball: * Missing (or bad) C library: pcre |
| 22:11:56 | <sm[m]> | it's a hard to pick out the signal from these build logs |
| 22:12:08 | → | wroathe_ joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) |
| 22:12:10 | <fresheyeball> | how. did. you. see that? |
| 22:12:13 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 22:12:27 | <sm[m]> | searched from the top for pcre |
| 22:12:27 | × | son0p quits (~son0p@181.136.122.143) (Ping timeout: 240 seconds) |
| 22:12:35 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 22:12:35 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds) |
| 22:12:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 22:12:50 | <hololeap> | `Profunctor p => (b -> a) -> (a -> b) -> p a a -> p b b` |
| 22:12:54 | <hololeap> | is there a name for this? |
| 22:13:03 | <sm[m]> | if someone could make those errors more apparent, they would make a lot of haskell users happy |
| 22:13:11 | ← | kish parts (~oracle@unaffiliated/oracle) ("Leaving") |
| 22:13:34 | → | son0p joins (~son0p@181.136.122.143) |
| 22:13:38 | <maerwald> | Rembane: hm well... the thing is... improving on philosophy is usually something that never happens. Improving on code... every few decades it happens |
| 22:13:45 | <dolio> | dimap |
| 22:13:55 | × | mirrorbird quits (~psutcliff@2a00:801:3fb:53b9:b09b:cd4e:4e4a:44a9) (Quit: Leaving) |
| 22:14:07 | <Rembane> | maerwald: Yeah, I think that was my point, I didn't really tell it to anyone though |
| 22:14:17 | <hololeap> | dolio: yeah, i know that one |
| 22:14:26 | <hololeap> | also, are Arrows and Profunctors isomorphic to each other? |
| 22:14:54 | <dolio> | No. |
| 22:15:44 | <hololeap> | what is a good counter-example? |
| 22:16:01 | <Cheery> | ok.. so now I think I start understanding what I want here.. First of all I got a document, then I got queries that selects portions of that document. |
| 22:16:23 | <EvanR> | heh, if they were isomorphic, what nonsense could you cause |
| 22:16:29 | <Cheery> | then when it's time to fetch, I would like to combine queries and run a "fold" on the document. |
| 22:16:31 | <EvanR> | weird direction to go at it from |
| 22:16:54 | <Cheery> | Another case is that I want to rewrite or replace contents in that document and reconstruct it. |
| 22:17:10 | wroathe_ | is now known as wroathe |
| 22:17:16 | <Cheery> | is it possible that I should look into profunctor optics or lenses with this thing? |
| 22:17:22 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:ed19:5da:9d69:c63c) |
| 22:17:58 | <Cheery> | or is there some other notion of combining queries, then fetching with a query. |
| 22:18:11 | <Cheery> | or well, combining fetches, then applying them in one fold. |
| 22:18:16 | <hololeap> | well, there is the WrapArrow newtype, which seems to signify that any Arrow can become a Profunctor rather trivially |
| 22:18:28 | hackage | pointed 5.0.2 - Pointed and copointed data https://hackage.haskell.org/package/pointed-5.0.2 (ryanglscott) |
| 22:18:29 | <dolio> | Arrows are profunctors, but not vice versa. |
| 22:19:40 | <hololeap> | i'm having a hard time imagining a counter-example |
| 22:20:12 | × | fendor quits (~fendor@77.119.131.134.wireless.dyn.drei.com) (Remote host closed the connection) |
| 22:20:32 | → | xcmw joins (~textual@dyn-72-33-0-89.uwnet.wisc.edu) |
| 22:20:37 | <fresheyeball> | sm[m]: any idea how I can provide pcre to stack? |
| 22:20:42 | <fresheyeball> | It is on the system |
| 22:21:02 | <hololeap> | or maybe i don't understand the two concepts well enough |
| 22:21:09 | × | andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection) |
| 22:21:32 | × | bitmagie quits (~Thunderbi@200116b806af9800a5686823a67cc6e9.dip.versatel-1u1.de) (Quit: bitmagie) |
| 22:21:49 | <EvanR> | demonstrating "not isomorphic" would mean if you had a hypothetical isomorphism you could use it to make true = false or similar |
| 22:21:50 | <dolio> | Well, it's probably relatively easy to produce a counter example with some sort of 'free profunctor on T :: * -> * -> *'. |
| 22:22:32 | <heebo> | Cheery: it seems all of the above , you should be able to decompose and reconstruct html builders within the html builder monad |
| 22:22:33 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 22:22:44 | → | mu__ joins (~mu@unaffiliated/mu) |
| 22:23:17 | <dolio> | Where T is allowed to be a GADT that only has values for certain choices of (pairs of) types. |
| 22:23:20 | <heebo> | hololeap: being able to transform one way isnt isomorphic though |
| 22:23:46 | <dolio> | The 'free' part would add the ability to map each side, but not the other arrow stuff. |
| 22:24:35 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 22:24:36 | → | andreas303 joins (~andreas@gateway/tor-sasl/andreas303) |
| 22:24:39 | <dolio> | Arrows are actually the profunctor equivalent of monads. |
| 22:24:44 | × | Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 256 seconds) |
| 22:25:08 | × | aldessa quits (~Hugh@host-2-103-12-241.as13285.net) (Quit: Leaving) |
| 22:25:12 | <dolio> | (Slightly beyond that, really, but close.) |
| 22:25:15 | × | kori quits (~kori@arrowheads/kori) (Ping timeout: 272 seconds) |
| 22:25:30 | × | nbloomf quits (~nbloomf@2600:1700:83e0:1f40:51e3:d2:c653:ccbb) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 22:25:52 | × | andreas303 quits (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection) |
| 22:26:03 | <hololeap> | huh, interesting stuff |
| 22:27:32 | <dolio> | Because (->) is like an identity profunctor, so `(a -> b) -> P a b` is like the monad unit, and `P a b × P b c -> P a c` is like the monad join. |
| 22:28:03 | × | ziman quits (~ziman@c25-5.condornet.sk) (Ping timeout: 265 seconds) |
| 22:28:25 | → | ziman joins (~ziman@c25-5.condornet.sk) |
| 22:28:32 | × | elliott_ quits (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) (Ping timeout: 265 seconds) |
| 22:28:55 | → | andreas303 joins (~andreas@gateway/tor-sasl/andreas303) |
| 22:29:07 | <sm[m]> | fresheyeball : in some non-standard place on the system ? probably you need the --extra-include-dir and/or --extra-lib-dir options |
| 22:31:07 | × | xff0x quits (~fox@2001:1a81:53e7:fb00:a420:19f5:c0d1:188d) (Ping timeout: 260 seconds) |
| 22:31:23 | → | DataComp_ joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
| 22:31:36 | × | tzh quits (~tzh@2601:448:c500:5300::4b20) (Remote host closed the connection) |
| 22:31:36 | → | xff0x joins (~fox@2001:1a81:53e7:fb00:f5c9:5f72:d493:76cb) |
| 22:31:57 | <fresheyeball> | sm[m]: what would be the standard place? |
| 22:32:08 | → | tzh joins (~tzh@2601:448:c500:5300::4b20) |
| 22:32:13 | × | mu__ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 22:32:27 | × | DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Ping timeout: 240 seconds) |
| 22:32:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 22:32:52 | <sm[m]> | fresheyeball: I think it would find them automatically in either /usr/{include,lib} or /usr/local/{include,lib} |
| 22:35:25 | × | falafel quits (~falafel@2605:e000:1527:d491:a806:37fa:6971:2798) (Ping timeout: 240 seconds) |
| 22:37:43 | × | mav1 quits (~mav@p5b02806a.dip0.t-ipconnect.de) (Ping timeout: 265 seconds) |
| 22:38:07 | × | heebo quits (~user@cpc97956-croy24-2-0-cust20.19-2.cable.virginm.net) (Ping timeout: 240 seconds) |
| 22:38:20 | <hololeap> | `P a b × P b c -> P a c` seems more like <*>, although not exactly |
| 22:39:51 | <dolio> | Well, looks are deceiving in this case. :) |
| 22:40:08 | × | conal quits (~conal@64.71.133.70) (Read error: Connection reset by peer) |
| 22:40:41 | <dolio> | The way it works is that you can consider profunctors as generalizing functors. In this case, they generalize Type → Type functors because both arguments are types. |
| 22:41:03 | × | __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving) |
| 22:41:34 | × | ziman quits (~ziman@c25-5.condornet.sk) (Ping timeout: 246 seconds) |
| 22:42:03 | <dolio> | And the way you compose two profunctors is `(P . Q) a b = exists e. P a e × Q e b`. |
| 22:42:14 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 22:42:46 | → | mu_ joins (~mu@unaffiliated/mu) |
| 22:42:51 | <dolio> | (->) is the identity of that composition, because you can just pull it into the other profunctor by mapping. |
| 22:42:52 | → | conal joins (~conal@64.71.133.70) |
| 22:43:19 | × | xcmw quits (~textual@dyn-72-33-0-89.uwnet.wisc.edu) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 22:43:35 | <dolio> | So arrow composition is `P . P => P` in this sense. |
| 22:44:33 | <hololeap> | what does `P . P => P` mean? |
| 22:45:09 | → | kori joins (~kori@arrowheads/kori) |
| 22:45:16 | <dolio> | Natural transformation. Like `join : M.M => M` for monads. |
| 22:45:32 | → | mirrorbird joins (~psutcliff@2a00:801:3fb:53b9:b09b:cd4e:4e4a:44a9) |
| 22:45:34 | <hololeap> | oh ok |
| 22:45:58 | hackage | vty 5.31 - A simple terminal UI library https://hackage.haskell.org/package/vty-5.31 (JonathanDaugherty) |
| 22:46:58 | hackage | language-dickinson 1.4.0.0 - A language for generative literature https://hackage.haskell.org/package/language-dickinson-1.4.0.0 (vmchale) |
| 22:47:50 | <dolio> | There are two ways (at least) to embed functors into profunctors. F goes to either `\a b -> (a -> F b)` or `\a b -> (F a -> b)`. And I think either way you choose will respect composition. |
| 22:48:11 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 22:48:22 | <dolio> | So, the embedding of `F.G` is the embedding of F profunctor-composed with the embedding of G. |
| 22:48:50 | <dolio> | Because again you can pull one of the function arrows into the other. |
| 22:49:34 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 22:49:34 | → | Amras joins (~Amras@unaffiliated/amras0000) |
| 22:50:01 | × | conal quits (~conal@64.71.133.70) (Read error: Connection reset by peer) |
| 22:50:38 | × | madjestic quits (~madjestic@86-88-72-244.fixed.kpn.net) (Ping timeout: 260 seconds) |
| 22:50:49 | <dolio> | The identity functor embeds to the identity profunctor (->). And one of the embeddings takes a monad to its kleisli arrow profunctor, which is an arrow/profunctor-monad. |
| 22:51:50 | → | conal joins (~conal@64.71.133.70) |
| 22:51:54 | <dolio> | The other embedding flips things around so it probably takes a monad to a profunctor-comonad. |
| 22:52:37 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 22:52:43 | → | mu__ joins (~mu@unaffiliated/mu) |
| 22:59:27 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 23:01:41 | → | elliott_ joins (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) |
| 23:02:22 | × | mu__ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 23:02:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 23:03:58 | hackage | lift-generics 0.2 - GHC.Generics-based Language.Haskell.TH.Syntax.lift implementation https://hackage.haskell.org/package/lift-generics-0.2 (ryanglscott) |
| 23:04:00 | × | Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 272 seconds) |
| 23:04:25 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:b248:7aff:feea:34b6) (Ping timeout: 240 seconds) |
| 23:04:33 | <orzo> | When using GADTs, it seems common to have functions pattern matching every GADT constructor but then using the same polymorphic code on the right hand side for each case. There ought to be a way to write that as a single pattern match. Something like _ except that it stands for any of a finite number of GADT cases. |
| 23:04:38 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 272 seconds) |
| 23:04:53 | → | xcmw joins (~textual@dyn-72-33-0-89.uwnet.wisc.edu) |
| 23:05:26 | → | snakemasterflex joins (~snakemast@213.100.206.23) |
| 23:05:45 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 23:05:59 | <orzo> | maybe we could abuse the BangPattern syntax and specify it as (foo !_ = polymorphic) |
| 23:09:45 | × | snakemasterflex quits (~snakemast@213.100.206.23) (Ping timeout: 240 seconds) |
| 23:10:35 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
| 23:12:37 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 23:12:43 | → | mu__ joins (~mu@unaffiliated/mu) |
| 23:15:27 | hackage | data-reify 0.6.2 - Reify a recursive data structure into an explicit graph. https://hackage.haskell.org/package/data-reify-0.6.2 (ryanglscott) |
| 23:16:19 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 23:17:33 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 23:17:53 | → | Amras joins (~Amras@unaffiliated/amras0000) |
| 23:20:25 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 23:22:11 | × | mu__ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 23:22:30 | × | alp quits (~alp@2a01:e0a:58b:4920:d4f2:e84:b07:a9f2) (Ping timeout: 244 seconds) |
| 23:22:36 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 23:22:41 | → | mu_ joins (~mu@unaffiliated/mu) |
| 23:23:27 | × | elliott_ quits (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
| 23:23:27 | × | kori quits (~kori@arrowheads/kori) (Read error: Connection reset by peer) |
| 23:26:25 | × | wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
| 23:26:31 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 23:27:25 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 23:27:30 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 23:28:02 | × | o1lo01ol_ quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
| 23:28:41 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 23:28:46 | × | son0p quits (~son0p@181.136.122.143) (Remote host closed the connection) |
| 23:30:25 | → | thir joins (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) |
| 23:30:35 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 23:31:47 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds) |
| 23:31:52 | × | todda7 quits (~torstein@athedsl-4367507.home.otenet.gr) (Ping timeout: 272 seconds) |
| 23:32:21 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 23:32:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 23:33:07 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 240 seconds) |
| 23:33:13 | × | dhil quits (~dhil@11.29.39.217.dyn.plus.net) (Ping timeout: 264 seconds) |
| 23:33:22 | × | ryansmccoy quits (~ryansmcco@193.37.254.27) (Ping timeout: 246 seconds) |
| 23:33:59 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 23:34:09 | → | ziman joins (~ziman@c25-5.condornet.sk) |
| 23:34:10 | → | ryansmccoy joins (~ryansmcco@156.96.151.132) |
| 23:34:27 | × | thir quits (~thir@p200300f27f0fc60094e773283d7bf825.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 23:36:31 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 23:37:50 | → | jgt joins (~jgt@188.239.64.32) |
| 23:38:11 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds) |
| 23:39:56 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 23:40:06 | × | delimax quits (max@gateway/vpn/protonvpn/delimax) (Quit: until next time) |
| 23:40:07 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 23:40:13 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 23:42:14 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 23:42:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 23:43:58 | hackage | intern 0.9.3 - Efficient hash-consing for arbitrary data types https://hackage.haskell.org/package/intern-0.9.3 (ryanglscott) |
| 23:44:30 | → | nbloomf joins (~nbloomf@2600:1700:83e0:1f40:51c3:9040:83ae:b100) |
| 23:45:22 | → | kori joins (~kori@arrowheads/kori) |
| 23:46:20 | × | nbloomf quits (~nbloomf@2600:1700:83e0:1f40:51c3:9040:83ae:b100) (Client Quit) |
| 23:48:03 | → | jedws joins (~jedws@121.209.139.222) |
| 23:50:36 | → | c1c1d1cd177__7_7 joins (~user@46.0.224.53) |
| 23:50:45 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 23:52:12 | × | mu_ quits (~mu@unaffiliated/mu) (Read error: Connection reset by peer) |
| 23:52:12 | × | mirrorbird quits (~psutcliff@2a00:801:3fb:53b9:b09b:cd4e:4e4a:44a9) (Quit: Leaving) |
| 23:52:33 | × | whiteline quits (~whiteline@unaffiliated/whiteline) (Ping timeout: 260 seconds) |
| 23:52:42 | → | mu_ joins (~mu@unaffiliated/mu) |
| 23:53:16 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 258 seconds) |
| 23:55:45 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 23:57:15 | → | Guest32532 joins (b55ebc21@181.94.188.33) |
| 23:57:27 | × | Guest32532 quits (b55ebc21@181.94.188.33) (Remote host closed the connection) |
| 23:58:08 | × | c1c1d1cd177__7_7 quits (~user@46.0.224.53) (Quit: ERC (IRC client for Emacs 25.2.2)) |
| 23:58:15 | → | elliott_ joins (~elliott_@pool-100-36-54-163.washdc.fios.verizon.net) |
| 23:58:25 | → | danso joins (~dan@107-190-41-58.cpe.teksavvy.com) |
All times are in UTC on 2020-09-30.