2020-11-05 00:04:25 +0100 | theDon | (~td@94.134.91.97) (Ping timeout: 240 seconds) |
2020-11-05 00:04:58 +0100 | DTZUZU_ | (~DTZUZU@207.81.171.87) |
2020-11-05 00:06:47 +0100 | DTZUZU | (~DTZUZU@207.81.171.87) (Ping timeout: 258 seconds) |
2020-11-05 00:09:13 +0100 | conal | (~conal@66.115.157.70) |
2020-11-05 00:10:46 +0100 | <nshepperd> | using lenses for text manipulation is fun |
2020-11-05 00:11:45 +0100 | Tario | (~Tario@201.192.165.173) |
2020-11-05 00:14:05 +0100 | <nshepperd> | i made a little library with functions like: take a parser and return a traversal of each matching substring |
2020-11-05 00:18:15 +0100 | Franciman | (~francesco@host-79-36-167-172.retail.telecomitalia.it) (Quit: Leaving) |
2020-11-05 00:18:30 +0100 | hackage | Win32 2.10.1.0 - A binding to Windows Win32 API. https://hackage.haskell.org/package/Win32-2.10.1.0 (TamarChristina) |
2020-11-05 00:22:19 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 00:24:47 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
2020-11-05 00:25:41 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-05 00:26:00 +0100 | pavonia | (~user@unaffiliated/siracusa) |
2020-11-05 00:26:01 +0100 | xerox_ | (~xerox@unaffiliated/xerox) (Ping timeout: 246 seconds) |
2020-11-05 00:26:08 +0100 | <Axman6> | nshepperd: link? that sounds familliar |
2020-11-05 00:26:39 +0100 | <Axman6> | lens-regex is super cool too |
2020-11-05 00:27:17 +0100 | <nshepperd> | it's not anything i uploaded |
2020-11-05 00:27:23 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2020-11-05 00:27:25 +0100 | <nshepperd> | maybe i should tho |
2020-11-05 00:27:31 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
2020-11-05 00:27:48 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-05 00:28:32 +0100 | conal | (~conal@66.115.157.70) (Quit: Computer has gone to sleep.) |
2020-11-05 00:29:11 +0100 | conal | (~conal@66.115.157.70) |
2020-11-05 00:30:02 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 00:30:33 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 00:32:37 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
2020-11-05 00:33:14 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-05 00:33:16 +0100 | mmohammadi9812 | (~mmohammad@2.178.217.171) (Ping timeout: 256 seconds) |
2020-11-05 00:35:35 +0100 | christo | (~chris@81.96.113.213) (Ping timeout: 272 seconds) |
2020-11-05 00:35:59 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2020-11-05 00:36:04 +0100 | <bqv> | d.nnr |
2020-11-05 00:36:24 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 00:36:44 +0100 | <bqv> | is it possible in any context to use foreign imports in typeclass instances? |
2020-11-05 00:37:01 +0100 | <bqv> | (without resorting to templatehaskell, which is probably pretty heatheny :D) |
2020-11-05 00:37:07 +0100 | <glguy> | The foreign imports will be top-level definitions |
2020-11-05 00:37:28 +0100 | <glguy> | you can then use the identifiers declared there in your instance declarations |
2020-11-05 00:37:47 +0100 | <bqv> | so that's a no |
2020-11-05 00:37:53 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-11-05 00:38:00 +0100 | hackage | massiv-io 0.4.0.0 - Import/export of Image files into massiv Arrays https://hackage.haskell.org/package/massiv-io-0.4.0.0 (lehins) |
2020-11-05 00:38:20 +0100 | <bqv> | was hoping for a type parameter'd foreign import |
2020-11-05 00:38:40 +0100 | <bqv> | actually, might still be able to... |
2020-11-05 00:38:49 +0100 | <bqv> | who likes void pointers... |
2020-11-05 00:40:13 +0100 | <monochrom> | I don't see any limitation apart from barely inconvenient syntax. |
2020-11-05 00:40:30 +0100 | dhouthoo | (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9) |
2020-11-05 00:41:36 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2020-11-05 00:44:10 +0100 | mmohammadi9812 | (~mmohammad@2.178.132.235) |
2020-11-05 00:44:44 +0100 | jakob_ | (~textual@p200300f49f1622005c3255e4d89f5bc8.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…) |
2020-11-05 00:45:13 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-05 00:47:00 +0100 | jakob_ | (~textual@p200300f49f1622009d826d3ed3c60d57.dip0.t-ipconnect.de) |
2020-11-05 00:49:21 +0100 | <xe4> | where can I ask questions about using stylish-haskell with my text editor? |
2020-11-05 00:49:43 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2020-11-05 00:49:45 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-05 00:50:25 +0100 | nut | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds) |
2020-11-05 00:52:41 +0100 | ystael | (~ystael@209.6.50.55) (Ping timeout: 256 seconds) |
2020-11-05 00:52:55 +0100 | conal | (~conal@66.115.157.70) (Quit: Computer has gone to sleep.) |
2020-11-05 00:55:01 +0100 | LKoen | (~LKoen@53.253.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”) |
2020-11-05 00:55:51 +0100 | alp | (~alp@2a01:e0a:58b:4920:543f:1fa8:3f98:5d73) (Ping timeout: 272 seconds) |
2020-11-05 00:56:38 +0100 | theDon | (~td@i5E86B1F0.versanet.de) |
2020-11-05 00:57:28 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2020-11-05 00:57:45 +0100 | xff0x | (~fox@2001:1a81:53f2:500:153c:e136:7dea:e190) (Ping timeout: 272 seconds) |
2020-11-05 00:58:08 +0100 | xff0x | (~fox@2001:1a81:53f2:500:5f26:7f0a:da68:24d7) |
2020-11-05 00:58:25 +0100 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
2020-11-05 00:59:27 +0100 | Entertainment | (~entertain@104.246.132.210) (Quit: Leaving.) |
2020-11-05 00:59:58 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-11-05 01:00:01 +0100 | kest10 | (~kest10@139.28.218.148) () |
2020-11-05 01:00:40 +0100 | argent0 | (~argent0@168.227.96.2) (Ping timeout: 246 seconds) |
2020-11-05 01:03:53 +0100 | Tario | (~Tario@201.192.165.173) |
2020-11-05 01:07:29 +0100 | conal | (~conal@64.71.133.70) |
2020-11-05 01:10:32 +0100 | ulidtko | (~ulidtko@193.111.48.79) (Remote host closed the connection) |
2020-11-05 01:16:40 +0100 | Ariakenom | (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) (Read error: Connection reset by peer) |
2020-11-05 01:17:31 +0100 | ulidtko | (~ulidtko@193.111.48.79) |
2020-11-05 01:19:48 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) |
2020-11-05 01:20:52 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection) |
2020-11-05 01:21:14 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) |
2020-11-05 01:21:43 +0100 | Smaczny | (~Smaczny@185.204.1.185) |
2020-11-05 01:21:43 +0100 | hekkaidekapus | (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
2020-11-05 01:22:18 +0100 | coot | (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2020-11-05 01:23:25 +0100 | elliott__ | (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) |
2020-11-05 01:23:57 +0100 | texasmynsted | (~texasmyns@185.247.70.76) |
2020-11-05 01:25:48 +0100 | Deide | (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
2020-11-05 01:26:32 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
2020-11-05 01:27:50 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-05 01:33:08 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-05 01:37:05 +0100 | elliott_ | (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
2020-11-05 01:37:39 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 244 seconds) |
2020-11-05 01:37:53 +0100 | linker_ | (~linker@185.12.21.77) (Remote host closed the connection) |
2020-11-05 01:38:56 +0100 | master_o | (50a46f47@80-164-111-71-dynamic.dk.customer.tdc.net) |
2020-11-05 01:39:53 +0100 | elliott_ | (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) |
2020-11-05 01:41:26 +0100 | xff0x | (~fox@2001:1a81:53f2:500:5f26:7f0a:da68:24d7) (Ping timeout: 264 seconds) |
2020-11-05 01:42:19 +0100 | xff0x | (~fox@2001:1a81:53f2:500:7ba4:92a8:6e01:ae71) |
2020-11-05 01:42:46 +0100 | gentauro | (~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer) |
2020-11-05 01:43:16 +0100 | gentauro | (~gentauro@unaffiliated/gentauro) |
2020-11-05 01:43:28 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:ed58:dda3:fd80:2c46) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-05 01:45:29 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2020-11-05 01:47:05 +0100 | pera | (~pera@unaffiliated/pera) (Ping timeout: 240 seconds) |
2020-11-05 01:48:16 +0100 | catchme | (uid355354@gateway/web/irccloud.com/x-jjbcbrnidixjkmxm) (Quit: Connection closed for inactivity) |
2020-11-05 01:48:34 +0100 | Jeanne-Kamikaze | (~Jeanne-Ka@68.235.43.150) |
2020-11-05 01:48:57 +0100 | softwarm | (4408f588@ip68-8-245-136.sd.sd.cox.net) |
2020-11-05 01:49:15 +0100 | elliott_ | (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 265 seconds) |
2020-11-05 01:50:11 +0100 | enva2712 | (~enva2712@cpe-75-86-42-2.wi.res.rr.com) |
2020-11-05 01:51:46 +0100 | asthasr | (~asthasr@162.210.29.120) |
2020-11-05 01:55:28 +0100 | asthasr | (~asthasr@162.210.29.120) (Client Quit) |
2020-11-05 01:57:13 +0100 | DavidEichmann | (~david@43.240.198.146.dyn.plus.net) (Ping timeout: 264 seconds) |
2020-11-05 01:57:36 +0100 | plutoniix | (~q@175.176.222.7) |
2020-11-05 02:00:38 +0100 | <fresheyeball> | \q |
2020-11-05 02:00:41 +0100 | fresheyeball | (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.7.1) |
2020-11-05 02:03:34 +0100 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...) |
2020-11-05 02:05:19 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 02:08:05 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
2020-11-05 02:10:35 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 02:15:39 +0100 | christo | (~chris@81.96.113.213) (Ping timeout: 272 seconds) |
2020-11-05 02:15:56 +0100 | lucasb | (uid333435@gateway/web/irccloud.com/x-cbmhwogtcotlrzny) (Quit: Connection closed for inactivity) |
2020-11-05 02:17:33 +0100 | master_o | (50a46f47@80-164-111-71-dynamic.dk.customer.tdc.net) (Remote host closed the connection) |
2020-11-05 02:18:45 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 240 seconds) |
2020-11-05 02:20:06 +0100 | guest115 | (~user@49.5.6.87) |
2020-11-05 02:21:28 +0100 | inkbottle | (~inkbottle@aaubervilliers-654-1-110-84.w86-212.abo.wanadoo.fr) |
2020-11-05 02:21:39 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-104-94.w86-212.abo.wanadoo.fr) (Ping timeout: 256 seconds) |
2020-11-05 02:24:07 +0100 | <Axman6> | xe4: asking here is fine, but I can't guarantee you'll get a good answer |
2020-11-05 02:24:37 +0100 | Lord_of_Life | (~Lord@46.217.217.162) |
2020-11-05 02:24:38 +0100 | Lord_of_Life_ | (~Lord@46.217.221.241) (Ping timeout: 260 seconds) |
2020-11-05 02:25:24 +0100 | darjeeling_ | (~darjeelin@115.215.43.51) (Ping timeout: 256 seconds) |
2020-11-05 02:25:58 +0100 | crdrost | (~crdrost@c-98-207-102-156.hsd1.ca.comcast.net) (Quit: Leaving) |
2020-11-05 02:26:50 +0100 | aarvar | (~foewfoiew@c.24.56.239.179.static.broadstripe.net) |
2020-11-05 02:26:55 +0100 | aarvar | (~foewfoiew@c.24.56.239.179.static.broadstripe.net) () |
2020-11-05 02:29:46 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-05 02:32:18 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
2020-11-05 02:37:20 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 02:37:25 +0100 | Entertainment | (~entertain@104.246.132.210) |
2020-11-05 02:38:06 +0100 | Chi1thangoo | (~Chi1thang@87.112.60.168) (Ping timeout: 244 seconds) |
2020-11-05 02:39:50 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds) |
2020-11-05 02:41:34 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2020-11-05 02:45:29 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-05 02:50:18 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-11-05 02:56:33 +0100 | Entertainment | (~entertain@104.246.132.210) (Quit: Leaving.) |
2020-11-05 02:56:46 +0100 | jcowan | (sid325434@gateway/web/irccloud.com/x-evadozowlzlhtjmy) |
2020-11-05 02:57:45 +0100 | <bollu> | What are the precise semantics of bang-patterns? Consider |let foo' = let !x = error "ERR" in \y -> y|. Can GHC reduce this to |let foo' = \y -> y| |
2020-11-05 02:58:00 +0100 | <jcowan> | Why are there so few instances of class Map? Or am I just not seeing them in Hoogle? |
2020-11-05 02:58:52 +0100 | <koz_> | jcowan: Wait, _class_ Map? |
2020-11-05 03:00:01 +0100 | <jcowan> | koz_: https://hackage.haskell.org/package/collections-api-1.0.0.0/docs/Data-Collections.html#g:4 |
2020-11-05 03:00:10 +0100 | <koz_> | Ah, OK. TIL. |
2020-11-05 03:01:07 +0100 | ddellaco1 | (~dd@86.106.121.168) |
2020-11-05 03:01:20 +0100 | <jcowan> | but apparently type Map is the only instance. You'd think a list of pairs would be an instance too. |
2020-11-05 03:01:46 +0100 | ddellacosta | (~dd@86.106.121.168) (Read error: Connection reset by peer) |
2020-11-05 03:02:06 +0100 | <jcowan> | I guess it's because it doesn't meet the (informal) big-O constraints |
2020-11-05 03:02:27 +0100 | <koz_> | jcowan: You can do something like 'newtype AssocList (k :: Type) (v :: Type) = AssocList [(k,v)]', then write an instance against that? |
2020-11-05 03:03:30 +0100 | <jcowan> | hmm, no, there are no O(...) constraints |
2020-11-05 03:04:14 +0100 | <jcowan> | But yes, that makes sense, I'm just surprised it's not already the case. |
2020-11-05 03:04:50 +0100 | borne | (~fritjof@200116b864d4e2005d0cb1433c5d4cbb.dip.versatel-1u1.de) (Ping timeout: 264 seconds) |
2020-11-05 03:05:18 +0100 | Lycurgus | (~niemand@98.4.97.110) |
2020-11-05 03:08:01 +0100 | <Axman6> | I've never heard of that package, why do you believe it's something you should care about? |
2020-11-05 03:08:05 +0100 | m0rphism | (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 260 seconds) |
2020-11-05 03:08:12 +0100 | <Axman6> | is it used by anything? |
2020-11-05 03:08:37 +0100 | <jcowan> | No idea. What I'm investigating is whether the whole idea of a map class actually makes sense or not. |
2020-11-05 03:09:02 +0100 | machinedgod | (~machinedg@142.169.78.247) (Ping timeout: 256 seconds) |
2020-11-05 03:10:18 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 03:11:02 +0100 | machinedgod | (~machinedg@207.253.244.210) |
2020-11-05 03:13:58 +0100 | <davean> | lens kinda has a Map class, in pieces |
2020-11-05 03:15:02 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2020-11-05 03:22:41 +0100 | m0rphism | (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) |
2020-11-05 03:22:48 +0100 | <dolio> | Pieces is probably better anyway. I'm not sure you want a huge class with all the things you can do with a map. |
2020-11-05 03:26:08 +0100 | ransom | (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
2020-11-05 03:30:19 +0100 | drbean | (~drbean@TC210-63-209-23.static.apol.com.tw) |
2020-11-05 03:33:09 +0100 | Lycurgus | (~niemand@98.4.97.110) (Quit: Exeunt) |
2020-11-05 03:35:52 +0100 | enva2712 | (~enva2712@cpe-75-86-42-2.wi.res.rr.com) (Quit: leaving) |
2020-11-05 03:36:04 +0100 | machinedgod | (~machinedg@207.253.244.210) (Ping timeout: 246 seconds) |
2020-11-05 03:38:12 +0100 | machinedgod | (~machinedg@142.169.78.199) |
2020-11-05 03:39:24 +0100 | <davean> | dolio: I agree, I expect jcowan will find its not by chance that package isn't well known or maintained |
2020-11-05 03:40:21 +0100 | <davean> | Decomposed heirarchies with sensible laws for piece piece and addition work very well and are more general. |
2020-11-05 03:41:20 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:10ae:4d3f:5d98:36e2) |
2020-11-05 03:43:19 +0100 | ClaudiusMaximus | (~claude@unaffiliated/claudiusmaximus) (Read error: Connection reset by peer) |
2020-11-05 03:43:38 +0100 | toorevitimirp | (~tooreviti@117.182.183.132) |
2020-11-05 03:44:49 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 246 seconds) |
2020-11-05 03:46:13 +0100 | machinedgod | (~machinedg@142.169.78.199) (Ping timeout: 246 seconds) |
2020-11-05 03:46:26 +0100 | <c_wraith> | What is the breakdown for Map, roughly? At + Foldable? |
2020-11-05 03:48:05 +0100 | machinedgod | (~machinedg@142.169.78.111) |
2020-11-05 03:48:56 +0100 | <c_wraith> | well, I guess you have all of Traversable if you want it |
2020-11-05 03:49:16 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2020-11-05 03:49:22 +0100 | conal | (~conal@64.71.133.70) |
2020-11-05 03:49:36 +0100 | <c_wraith> | That misses out on things like the union/intersection operators, but does lens have stuff for those? |
2020-11-05 03:51:02 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2020-11-05 03:52:21 +0100 | <c_wraith> | I guess I could just read https://hackage.haskell.org/package/lens/docs/Data-Map-Lens.html |
2020-11-05 03:52:51 +0100 | <c_wraith> | Nothing appears to directly address union/intersection stuff |
2020-11-05 03:53:20 +0100 | xerox_ | (~xerox@unaffiliated/xerox) |
2020-11-05 03:53:22 +0100 | <ddellaco1> | it's very strange how I'm just now trying to figure out how to use lens with Maps, and I come here and everyone is talking about it |
2020-11-05 03:53:53 +0100 | Gurkenglas__ | (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds) |
2020-11-05 03:54:06 +0100 | m0rphism | (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 258 seconds) |
2020-11-05 03:54:20 +0100 | <ddellaco1> | in particular how to manipulate the keys. Didn't occur to me to look at Data.Map.Lens, thank you |
2020-11-05 03:54:34 +0100 | xff0x | (~fox@2001:1a81:53f2:500:7ba4:92a8:6e01:ae71) (Ping timeout: 244 seconds) |
2020-11-05 03:56:40 +0100 | xff0x | (~fox@2001:1a81:522f:7b00:29b2:8682:67ea:c01f) |
2020-11-05 04:00:02 +0100 | Smaczny | (~Smaczny@185.204.1.185) () |
2020-11-05 04:00:13 +0100 | <jcowan> | Map should be a Set (of assoociations) |
2020-11-05 04:00:43 +0100 | son0p | (~son0p@181.136.122.143) (Quit: Lost terminal) |
2020-11-05 04:03:57 +0100 | dmwit | (~dmwit@pool-108-28-166-212.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
2020-11-05 04:04:23 +0100 | <dolio> | That sounds like something that would show up in Oleg's examples of violations of the Liskov principle. |
2020-11-05 04:05:05 +0100 | argent0 | (~argent0@168.227.96.2) |
2020-11-05 04:05:23 +0100 | argent0 | (~argent0@168.227.96.2) (Remote host closed the connection) |
2020-11-05 04:06:33 +0100 | machinedgod | (~machinedg@142.169.78.111) (Quit: leaving) |
2020-11-05 04:07:19 +0100 | <monochrom> | Instead, Set is a special case of Map: Set X is Map X () |
2020-11-05 04:07:22 +0100 | lagothrix | Guest68265 |
2020-11-05 04:07:30 +0100 | lagothrix | (~lagothrix@unaffiliated/lagothrix) |
2020-11-05 04:08:08 +0100 | <monochrom> | That is, comparing Set operations with Map operations. |
2020-11-05 04:09:09 +0100 | dmwit | (~dmwit@pool-108-28-166-212.washdc.fios.verizon.net) |
2020-11-05 04:10:37 +0100 | Guest68265 | (~lagothrix@unaffiliated/lagothrix) (Ping timeout: 260 seconds) |
2020-11-05 04:13:48 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2020-11-05 04:17:01 +0100 | irc_user | (uid423822@gateway/web/irccloud.com/x-nqqmqoyedjtdxopn) |
2020-11-05 04:19:13 +0100 | urodna | (~urodna@unaffiliated/urodna) (Quit: urodna) |
2020-11-05 04:19:25 +0100 | theDon | (~td@i5E86B1F0.versanet.de) (Ping timeout: 264 seconds) |
2020-11-05 04:21:04 +0100 | theDon | (~td@muedsl-82-207-239-021.citykom.de) |
2020-11-05 04:25:31 +0100 | hackage | tonatona 0.1.2.1 - meta application framework https://hackage.haskell.org/package/tonatona-0.1.2.1 (qnoyxu) |
2020-11-05 04:27:00 +0100 | hackage | tonalude 0.1.1.1 - A standard library for Tonatona framework. https://hackage.haskell.org/package/tonalude-0.1.1.1 (qnoyxu) |
2020-11-05 04:27:04 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2020-11-05 04:28:00 +0100 | hackage | tonatona-servant 0.1.0.4, tonatona-persistent-sqlite 0.1.0.2, tonatona-persistent-postgresql 0.1.0.2, tonatona-logger 0.2.0.2, tonaparser 0.1.0.1 (qnoyxu) |
2020-11-05 04:28:33 +0100 | conal | (~conal@64.71.133.70) |
2020-11-05 04:32:10 +0100 | mi23523523 | (~Mi1029384@82.131.36.5.cable.starman.ee) |
2020-11-05 04:33:28 +0100 | <Axman6> | ddellaco1: http://hackage.haskell.org/package/lens-4.19.2/docs/Control-Lens-At.html is probably what you want to use |
2020-11-05 04:33:30 +0100 | mi23523523 | (~Mi1029384@82.131.36.5.cable.starman.ee) (Read error: Connection reset by peer) |
2020-11-05 04:34:13 +0100 | <justsomeguy> | Out of (idle) curiosity, is there a language extension to add syntax support for first-class sets and maps, like python has? The closest thing I'm aware of is OverloadedLists, but being able to write something like {1:"this",2:"that"} is really nice. |
2020-11-05 04:34:21 +0100 | mi23523523 | (~Mi1029384@82.131.36.5.cable.starman.ee) |
2020-11-05 04:34:39 +0100 | <Axman6> | I thnk overloaded lists with tuples is as close as it gets |
2020-11-05 04:35:06 +0100 | <sshine> | justsomeguy, you can make a quasi quoter? ;) |
2020-11-05 04:35:11 +0100 | <Axman6> | % [(True,"Hello"),(False,"bye")] :: Map Bool String |
2020-11-05 04:35:12 +0100 | <yahb> | Axman6: ; <interactive>:75:35: error:; Not in scope: type constructor or class `Map'; Perhaps you meant one of these: `M.Map' (imported from Data.Map), `Max' (imported from Data.Semigroup) |
2020-11-05 04:35:19 +0100 | <Axman6> | % [(True,"Hello"),(False,"bye")] :: M.Map Bool String |
2020-11-05 04:35:19 +0100 | <yahb> | Axman6: ; <interactive>:76:1: error:; * Couldn't match expected type `M.Map Bool String' with actual type `[(Bool, [Char])]'; * In the expression: [(True, "Hello"), (False, "bye")] :: M.Map Bool String; In an equation for `it': it = [(True, "Hello"), (False, "bye")] :: M.Map Bool String |
2020-11-05 04:35:29 +0100 | <justsomeguy> | Well, it's still pretty good. I guess Haskell compensates by not needing so much syntax in other places. -- wait, quasiquoters can do that? |
2020-11-05 04:35:38 +0100 | <Axman6> | % :set -XOverloadedLists |
2020-11-05 04:35:39 +0100 | <yahb> | Axman6: |
2020-11-05 04:35:41 +0100 | <Axman6> | % [(True,"Hello"),(False,"bye")] :: M.Map Bool String |
2020-11-05 04:35:41 +0100 | <yahb> | Axman6: fromList [(False,"bye"),(True,"Hello")] |
2020-11-05 04:36:20 +0100 | <Axman6> | justsomeguy: quasi quoters are basically just functions from String to Haskell |
2020-11-05 04:36:45 +0100 | <sshine> | justsomeguy, I don't think you'd like that. you could make it so that you have [map|{a: 1, b: 2}], but I'd question the trade-off. |
2020-11-05 04:36:58 +0100 | <Axman6> | so you could have [map|{foo: True, bar: 7}|] but it's pretty ugly IMO |
2020-11-05 04:37:27 +0100 | <Axman6> | you could I guess just do [map|foo: True, bar: 7|] |
2020-11-05 04:37:35 +0100 | <ddellaco1> | Axman6: thanks. I ended up just doing some fmap ugliness for the time being, going to revisit tomorrow |
2020-11-05 04:37:37 +0100 | <sshine> | justsomeguy, there is some technical trade-off, but the big trade-off, I think, is you're not really coding Haskell. :-P |
2020-11-05 04:38:21 +0100 | <justsomeguy> | Hmm, maybe this is something that I should be solving with an editor macro, instead. |
2020-11-05 04:39:06 +0100 | <justsomeguy> | (Or not solving at all, since it's not a big deal :^p) |
2020-11-05 04:39:11 +0100 | nbloomf_ | (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) |
2020-11-05 04:39:18 +0100 | <Axman6> | % let a ==> b = (a,b) |
2020-11-05 04:39:18 +0100 | <yahb> | Axman6: |
2020-11-05 04:39:23 +0100 | <dolio> | It seems like OverloadedLists is completely adequate. |
2020-11-05 04:39:37 +0100 | <Axman6> | % [True ==> "Hello", False ==> "bye"] :: M.Map Bool String |
2020-11-05 04:39:38 +0100 | <yahb> | Axman6: fromList [(False,"bye"),(True,"Hello")] |
2020-11-05 04:40:12 +0100 | <sshine> | justsomeguy, you could do a similar reasoning with regexes. Perl has $x =~ m/(foo)*/ syntax and in Haskell the nicest alternative (I think) is regex-applicative which is more like 'many (string "foo")' -- so takes up more space, but the style is combinator composition. |
2020-11-05 04:40:47 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2020-11-05 04:40:48 +0100 | ColdRush | (~coldrush@4e69b241.skybroadband.com) (Ping timeout: 272 seconds) |
2020-11-05 04:40:50 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:10ae:4d3f:5d98:36e2) (Ping timeout: 264 seconds) |
2020-11-05 04:41:07 +0100 | <sshine> | justsomeguy, wrt. Maps and syntax support, if you already accept the syntactic weight of composing combinators, is just 'fromList' and the many parentheses around tuples. |
2020-11-05 04:42:16 +0100 | <justsomeguy> | Right, it's not bad at all. |
2020-11-05 04:42:37 +0100 | <sshine> | justsomeguy, and if you think 'fromList' is too heavy, OverloadedLists can remove it. but you'd still want a syntactically consistent way to address the remaining values in a way that is similar to how you adress other things. |
2020-11-05 04:42:46 +0100 | <sshine> | justsomeguy, it depends on the perspective. |
2020-11-05 04:43:16 +0100 | <sshine> | justsomeguy, combinators aren't always the shortest. but the benefit of being able to compose things is so high. |
2020-11-05 04:43:56 +0100 | theDon | (~td@muedsl-82-207-239-021.citykom.de) (Ping timeout: 258 seconds) |
2020-11-05 04:44:37 +0100 | Tario | (~Tario@201.192.165.173) |
2020-11-05 04:45:13 +0100 | st8less | (~st8less@2603:a060:11fd:0:acb3:c1f9:8208:550f) (Quit: WeeChat 2.7.1) |
2020-11-05 04:45:49 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-05 04:46:08 +0100 | <texasmynsted> | I am not really sure how to search for or even describe what I am looking for... Is there something I can use to "grep" a bunch of files for a token using a parser like megaparsec or something rather than regexp? |
2020-11-05 04:46:14 +0100 | <sshine> | justsomeguy, e.g. in Perl if you want to combine two regexes, you need to be aware of not accidentally embedding user-input strings into your regex, since Perl regexes are a bit too powerful (e.g. allow general recursion and exponential compute holes, since they're not regular).. so m/$regex1$regex2/ is fine as long as $regex1 and $regex2 weren't dirty. if anything is dirty you want \Q$dirtybit\E. with |
2020-11-05 04:46:20 +0100 | <sshine> | regex-applicative I'm not familiar with a way to make those accidents. |
2020-11-05 04:46:44 +0100 | <Axman6> | texasmynsted: well, there is https://hackage.haskell.org/package/lens-regex-0.1.1/docs/Text-Regex-Lens.html... |
2020-11-05 04:46:57 +0100 | GUEST48003 | (~GUEST4800@124.123.104.52) |
2020-11-05 04:47:07 +0100 | <texasmynsted> | that sounds like it uses regexps |
2020-11-05 04:47:12 +0100 | <Axman6> | it does |
2020-11-05 04:47:39 +0100 | jud | (~jud@unaffiliated/jud) (Read error: Connection reset by peer) |
2020-11-05 04:47:39 +0100 | <Axman6> | I'm sure I've seen something which does a similar things |
2020-11-05 04:47:49 +0100 | <texasmynsted> | I was looking for an alternative to regexps. (I do not think regexps are easy to read, maintain, or debug.) |
2020-11-05 04:48:05 +0100 | <sshine> | texasmynsted, regex-applicative / Megaparsec? :) |
2020-11-05 04:48:09 +0100 | <Axman6> | https://hackage.haskell.org/package/replace-attoparsec? |
2020-11-05 04:48:18 +0100 | jud | (~jud@unaffiliated/jud) |
2020-11-05 04:48:23 +0100 | <texasmynsted> | I am looking for a token in the YAML header of markdown files. |
2020-11-05 04:48:24 +0100 | <sshine> | Axman6, neat. |
2020-11-05 04:48:27 +0100 | chise | (3b29a236@59.41.162.54) |
2020-11-05 04:48:55 +0100 | <texasmynsted> | oh intersting. |
2020-11-05 04:48:56 +0100 | <sshine> | texasmynsted, like a tag or something? |
2020-11-05 04:49:12 +0100 | <texasmynsted> | yes. like "isUnpublished=true" |
2020-11-05 04:49:43 +0100 | jud | (~jud@unaffiliated/jud) (Max SendQ exceeded) |
2020-11-05 04:49:55 +0100 | <texasmynsted> | like I have a bunch of markdown files. Some I do not want published so I want them added to an exclude list for rsync |
2020-11-05 04:50:01 +0100 | <Axman6> | Can't decide is this is cool or gross: streamEditT (char '{' *> manyTill anyChar (char '}')) (fmap T.pack . getEnv) "- {HOME} -" |
2020-11-05 04:50:11 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds) |
2020-11-05 04:50:17 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-11-05 04:51:08 +0100 | jud | (~jud@unaffiliated/jud) |
2020-11-05 04:51:24 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2020-11-05 04:51:40 +0100 | <sshine> | > "isUnpublished=true" `isInfixOf` "I'm not sure what a token in the YAML header of a Markdown file looks like, but if it contains isUnpublished=true, maybe this qualifies?" |
2020-11-05 04:51:42 +0100 | <lambdabot> | True |
2020-11-05 04:52:41 +0100 | Guest74313 | (~benj@195.206.169.184) |
2020-11-05 04:52:42 +0100 | <texasmynsted> | YAML header starts with --- and ends with --- |
2020-11-05 04:52:47 +0100 | <texasmynsted> | At the top of the file |
2020-11-05 04:53:03 +0100 | <Axman6> | this sounds like you could just use pandoc |
2020-11-05 04:53:12 +0100 | <Axman6> | "just" |
2020-11-05 04:53:22 +0100 | <texasmynsted> | maybe but I am trying to get a list of files. |
2020-11-05 04:53:22 +0100 | <sshine> | "one does not just..." |
2020-11-05 04:53:26 +0100 | <Axman6> | I mean you're describing a format pandoc knows about |
2020-11-05 04:53:41 +0100 | Sheilong | (uid293653@gateway/web/irccloud.com/x-hgnmrpxqnetkvsrt) () |
2020-11-05 04:54:21 +0100 | <texasmynsted> | Pandoc seems well suited to filtering/altering/rendering markdown files, but I am not sure how to get it to just search for tokens and add or not a file name to a list |
2020-11-05 04:54:50 +0100 | <texasmynsted> | I could convert each file to the AST then search the AST, then ? |
2020-11-05 04:55:03 +0100 | texasmynsted | hoogles `isInfixOf` |
2020-11-05 04:56:21 +0100 | <texasmynsted> | oh. isInfixOf is usef. |
2020-11-05 04:56:27 +0100 | <texasmynsted> | I mean useful |
2020-11-05 04:57:12 +0100 | <sshine> | if you want to build a mostly sufficient Markdown header parser, but not pull out a big gun, ask yourself how little you can get away with. isInfixOf won't let you blog about what you're doing right now. :-P |
2020-11-05 05:01:32 +0100 | GUEST48003 | (~GUEST4800@124.123.104.52) (Remote host closed the connection) |
2020-11-05 05:01:51 +0100 | GUEST48896 | (~GUEST4889@124.123.104.52) |
2020-11-05 05:04:05 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds) |
2020-11-05 05:04:56 +0100 | shatriff_ | (~vitaliish@176.52.219.10) |
2020-11-05 05:07:41 +0100 | shatriff | (~vitaliish@176.52.219.10) (Ping timeout: 256 seconds) |
2020-11-05 05:09:24 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-05 05:09:35 +0100 | <texasmynsted> | I think that finding the token is less the issue. More of the issue is searching all the files. |
2020-11-05 05:10:30 +0100 | <Axman6> | if you can search one file, and you can get all the file names, then you just traverse |
2020-11-05 05:11:41 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 05:11:45 +0100 | ransom | (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Ping timeout: 240 seconds) |
2020-11-05 05:12:13 +0100 | vicfred | (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
2020-11-05 05:12:25 +0100 | k199 | (3e8b7dcd@62.139.125.205) |
2020-11-05 05:13:28 +0100 | drbean | (~drbean@TC210-63-209-23.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin1 - https://znc.in) |
2020-11-05 05:13:42 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 256 seconds) |
2020-11-05 05:14:05 +0100 | ddellaco1 | (~dd@86.106.121.168) (Ping timeout: 240 seconds) |
2020-11-05 05:15:41 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2020-11-05 05:16:09 +0100 | <sshine> | texasmynsted, https://gist.github.com/sshine/4e8673ad48b3f6098e4dbe097a9dfe5f |
2020-11-05 05:16:45 +0100 | mi23523523 | (~Mi1029384@82.131.36.5.cable.starman.ee) (Quit: Leaving) |
2020-11-05 05:16:53 +0100 | <texasmynsted> | WOW! Thank you! |
2020-11-05 05:17:08 +0100 | <texasmynsted> | Now I understand. :-) |
2020-11-05 05:17:17 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds) |
2020-11-05 05:17:22 +0100 | <justsomeguy> | That is very nice and easy to read, even for a noob like me. |
2020-11-05 05:17:52 +0100 | <sshine> | it started as a one-liner so I could paste it on IRC. |
2020-11-05 05:18:10 +0100 | <Axman6> | yuno bytestring |
2020-11-05 05:18:24 +0100 | star_watt | (7c7b6834@124.123.104.52) |
2020-11-05 05:18:44 +0100 | <sshine> | Axman6, good point, thanks. |
2020-11-05 05:19:20 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
2020-11-05 05:19:28 +0100 | <pjb> | perhaps I would use isPublished instead, to avoid double-negatives… |
2020-11-05 05:19:34 +0100 | coot | (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) |
2020-11-05 05:20:01 +0100 | k199 | (3e8b7dcd@62.139.125.205) (Remote host closed the connection) |
2020-11-05 05:20:21 +0100 | <Axman6> | texasmynsted: just becareful that you don't write a blog post about this and forget to publish the file because you have the string "isUnpublished=true" in it :P |
2020-11-05 05:20:37 +0100 | <texasmynsted> | LOL |
2020-11-05 05:20:45 +0100 | <koz_> | isUnpublished=false is _definitely_ likely to lead to confusion. |
2020-11-05 05:21:18 +0100 | <texasmynsted> | preventPublish: true |
2020-11-05 05:21:30 +0100 | jud | (~jud@unaffiliated/jud) (Ping timeout: 258 seconds) |
2020-11-05 05:21:44 +0100 | jcowan | (sid325434@gateway/web/irccloud.com/x-evadozowlzlhtjmy) () |
2020-11-05 05:21:49 +0100 | <sshine> | pjb, good idea :) except I don't know if "isUnpublished=true" is the same as "isPublished=false" :-D |
2020-11-05 05:22:03 +0100 | <Axman6> | I worked at a place which had a script that could update itself, and its check to see if it had downloaded a complete file was to check if it had a specific string, which was placed at the end of the file |
2020-11-05 05:22:28 +0100 | <Axman6> | the way it checked that was to just grep for... that string... inside the file that was doing the update |
2020-11-05 05:22:45 +0100 | <sshine> | koz_, yeah, I'd definitely stick to assuming that things aren't published by default, and I have to put "isPublished=true"... it seems that publishedness is a property, whereas unpublishedness is more like the absence of a property. |
2020-11-05 05:22:57 +0100 | <Axman6> | so you had ... grep COMPLETEFILE thefile... #COMPLETEFILE <EOF> |
2020-11-05 05:23:12 +0100 | <Axman6> | so, if it downloaded enought o pass the grep line, it would pass the test |
2020-11-05 05:23:24 +0100 | <koz_> | texasmynsted: notFitForHumanConsumption=true |
2020-11-05 05:23:42 +0100 | <Axman6> | literally any other regex given to grep that matched would have made it ok |
2020-11-05 05:25:43 +0100 | <sshine> | texasmynsted, if you ever start wondering "Hey, why do I put all my files into linked lists of single characters?", you can reload the page. |
2020-11-05 05:25:44 +0100 | <pjb> | Axman6: its a classic; you can do it by not using the target string in the regexp, but a regexp that matches it, such as: grep -e '[C]OMPLETEFILE' "$0" |
2020-11-05 05:25:49 +0100 | <justsomeguy> | Hmm... It's interesting how that is. I had to debug a script that had a ton of checks that something is not true (if ! [ condition ]; then .. ; fi), and even though I was expecting it the negation, I found it hard to read because I instinctively assumed the condition was checking for True -- had to do a double take every time. |
2020-11-05 05:26:01 +0100 | GUEST48896 | (~GUEST4889@124.123.104.52) (Remote host closed the connection) |
2020-11-05 05:26:03 +0100 | <Axman6> | pjb: yep, exactly |
2020-11-05 05:26:23 +0100 | <sshine> | texasmynsted, (the only difference is "BS." and some import/overloading machinery) |
2020-11-05 05:27:09 +0100 | <sshine> | pjb, [h][e][h][e]. |
2020-11-05 05:27:33 +0100 | <pjb> | or even '\h\e\h\e' |
2020-11-05 05:27:34 +0100 | <texasmynsted> | lol |
2020-11-05 05:27:55 +0100 | <sshine> | TCL has a pretty decent regex implementation. |
2020-11-05 05:28:37 +0100 | <sshine> | it's powerful yet not unreasonable. and the library functions around it are actually useful. unfortunately, in TCL, everything is a string. |
2020-11-05 05:28:40 +0100 | <Axman6> | is Haskell89's type system turing complete? |
2020-11-05 05:28:49 +0100 | <texasmynsted> | :-) |
2020-11-05 05:28:51 +0100 | <c_wraith> | No |
2020-11-05 05:29:32 +0100 | star0558 | (~star0558@124.123.104.52) |
2020-11-05 05:31:10 +0100 | <dsal> | I'm super happy to ~never use regex. |
2020-11-05 05:31:51 +0100 | <Axman6> | nah they're great in text editors |
2020-11-05 05:32:01 +0100 | <Axman6> | but should never be in code |
2020-11-05 05:32:17 +0100 | <dibblego> | and text editors are not great |
2020-11-05 05:32:38 +0100 | <texasmynsted> | I do not like regexp. I only use them when I must. |
2020-11-05 05:32:42 +0100 | <sshine> | dsal, $you =~ m/never/ use regex? |
2020-11-05 05:33:02 +0100 | <texasmynsted> | Thanks again sshine |
2020-11-05 05:36:16 +0100 | <dsal> | Axman6: Oh, yeah, that's a good point. I do occasionally use them to find stuff with my editor or grep or whatever. Just not in programs. |
2020-11-05 05:36:44 +0100 | <Axman6> | I've always wanted lenses over haskell courde to use in a text editor |
2020-11-05 05:37:47 +0100 | <sshine> | dsal, I went to buy a drill hammer at the hardware store since my percussion drill wasn't cutting through. the salesman wanted to sell me one that shared a battery type with a very good electric screwdriver, because, you know, screwing in things using a percussion drill is... reckless. yet, that is what I do because I'd rather hold two oversized powertools when I am dancing on a ladder two oversized |
2020-11-05 05:37:50 +0100 | <dibblego> | aka, an editor without the strings! |
2020-11-05 05:37:53 +0100 | <sshine> | powertools plus an appropriately sized one. |
2020-11-05 05:38:47 +0100 | <dsal> | A regex isn't an oversized powertool. It's the sawzall you use for everything because it's all you have. |
2020-11-05 05:38:49 +0100 | <sshine> | s/(?<=ladder )/rather than / |
2020-11-05 05:39:01 +0100 | <dsal> | My neighbor was trying to cut up a tree with his sawzall. Awful time he had. |
2020-11-05 05:39:09 +0100 | jakob_ | (~textual@p200300f49f1622009d826d3ed3c60d57.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…) |
2020-11-05 05:39:09 +0100 | Axman6 | wants to know what a drill hammer is |
2020-11-05 05:39:28 +0100 | jakob_ | (~textual@p200300f49f1622009d826d3ed3c60d57.dip0.t-ipconnect.de) |
2020-11-05 05:39:30 +0100 | <sshine> | Axman6, it's a small jackhammer for concrete walls and ceilings. |
2020-11-05 05:39:44 +0100 | <MarcelineVQ> | hammer drill :> |
2020-11-05 05:39:50 +0100 | <sshine> | Axman6, it punches and doesn't drill. |
2020-11-05 05:40:16 +0100 | <sshine> | Axman6, a percussion drill does both, but it doesn't punch as hard. |
2020-11-05 05:40:43 +0100 | <sshine> | so if you ever move into a solid concrete building and want to put up anything on your wall, you may need a drill hammer. |
2020-11-05 05:41:59 +0100 | <dsal> | I like having the right tool for the job. I have a tiny chopsaw specifically for cutting brass casings into smaller brass casings. https://usercontent.irccloud-cdn.com/file/WU4zyLxR/minichop.jpg |
2020-11-05 05:42:05 +0100 | <dsal> | When I need to parse stuff in Haskell, I pretty much just use megaparsec. Sometimes attoparsec. Rarely read. I used regexes once and ended up regretting it (but learning proper parsers). |
2020-11-05 05:42:15 +0100 | <sshine> | percussion drills often let you choose "punch, punch and drill, drill only" and the "drill only" works perfectly as an overweight, trigger-happy electric screwdriver. |
2020-11-05 05:42:16 +0100 | notnatebtw | (~nate@125.161.131.218) |
2020-11-05 05:42:35 +0100 | <sshine> | in this scenario, Megaparsec is the percussion drill. |
2020-11-05 05:43:17 +0100 | <sshine> | dsal, I'd use a percussion drill for that. haha, j/k. |
2020-11-05 05:43:58 +0100 | <dsal> | Heh, I used a dremel to do that once, free hand. It technically worked. But that was really dumb. |
2020-11-05 05:44:26 +0100 | jakob_ | (~textual@p200300f49f1622009d826d3ed3c60d57.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2020-11-05 05:46:53 +0100 | star0558 | (~star0558@124.123.104.52) (Remote host closed the connection) |
2020-11-05 05:47:12 +0100 | star1616 | (~star1616@124.123.104.52) |
2020-11-05 05:47:49 +0100 | <sshine> | dsal, I used regex-applicative once to see how a very regex-like task would look like. and then I re-did it with Megaparsec, and it seemed nothing significant was gained. https://dev.to/piq9117/haskell-enforcing-naming-convention-with-parsec-1f2h#comments -- but regex-applicative is a nice library nonetheless. |
2020-11-05 05:48:08 +0100 | <MarcelineVQ> | sshine: around here you'd call a percussion drill a hammer drill, you're describing a rotary hammer though yeah? humans aren't so hot at creating discerning names :O |
2020-11-05 05:48:11 +0100 | <sshine> | s/gained/gained from using regex-applicative in the first place/ |
2020-11-05 05:48:14 +0100 | star1616 | (~star1616@124.123.104.52) (Remote host closed the connection) |
2020-11-05 05:48:32 +0100 | Codaraxis | (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) |
2020-11-05 05:49:11 +0100 | coot | (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2020-11-05 05:49:12 +0100 | watt739 | (~watt739@124.123.104.52) |
2020-11-05 05:49:36 +0100 | <sshine> | MarcelineVQ, I'm using google translate. in my language "borehammer" = drill hammer = its main feature is that it punches, in spiute of "drill" being a part of its name. I guess "drill" refers to the long, thin shape of the thing that punches, rather than the action. |
2020-11-05 05:49:45 +0100 | coot | (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) |
2020-11-05 05:50:16 +0100 | stonebrige | (~stonebrig@4e69b241.skybroadband.com) |
2020-11-05 05:50:22 +0100 | <dsal> | sshine: That's kind of weird. It doesn't look like a regex language. |
2020-11-05 05:50:55 +0100 | aarvar | (~foewfoiew@c.24.56.239.179.static.broadstripe.net) |
2020-11-05 05:51:19 +0100 | <sshine> | MarcelineVQ, whereas "slagboremaskine" = percussion drill = its drilling function is strong, and its punching function is weak, and combined you get through a lot of materials without wrecking them (e.g. bricks, but it's too crude for bathroom tiles and too weak for concrete). |
2020-11-05 05:51:45 +0100 | puffnfresh | (~puffnfres@180-150-38-83.b49626.bne.nbn.aussiebb.net) (Read error: Network is unreachable) |
2020-11-05 05:52:47 +0100 | <MarcelineVQ> | so literal :> slag bore mchine |
2020-11-05 05:52:51 +0100 | <sshine> | dsal, the meat of the task is pretty much exactly the same in regex-applicative and megaparsec. |
2020-11-05 05:53:07 +0100 | <sshine> | MarcelineVQ, haha yes, this is a good name. punch drill machine. |
2020-11-05 05:53:09 +0100 | <dsal> | Yeah, both seem like fine ways to do parsing. |
2020-11-05 05:53:39 +0100 | <sshine> | dsal, yeah. and sometimes you realize, "shit, what I'm doing is not regular." and it'd be neat if all you had to do was break out of applicative style, but not switch library. :-P |
2020-11-05 05:55:28 +0100 | puffnfresh | (~puffnfres@180-150-38-83.b49626.bne.nbn.aussiebb.net) |
2020-11-05 05:57:54 +0100 | alp | (~alp@2a01:e0a:58b:4920:c9f2:c45e:5046:e2e6) |
2020-11-05 06:00:33 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 06:00:52 +0100 | texasmynsted | (~texasmyns@185.247.70.76) (Remote host closed the connection) |
2020-11-05 06:01:40 +0100 | texasmynsted | (~texasmyns@185.247.70.76) |
2020-11-05 06:05:14 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 06:05:32 +0100 | <sshine> | dsal, I think that regex gets a bad rep for the classical syntax. regex-applicative unscrews that a bit (in spite of not really being that useful in a lot of cases). another example where I think something built on top of just regex (leveraging the limit) is Kleenex: https://github.com/diku-kmc/kleenexlang#use |
2020-11-05 06:05:48 +0100 | texasmynsted | (~texasmyns@185.247.70.76) (Ping timeout: 244 seconds) |
2020-11-05 06:06:01 +0100 | <sshine> | that last sentence missed a superlative. |
2020-11-05 06:10:15 +0100 | christo | (~chris@81.96.113.213) (Ping timeout: 265 seconds) |
2020-11-05 06:12:25 +0100 | notnatebtw | hidedagger |
2020-11-05 06:12:25 +0100 | solonarv | (~solonarv@astrasbourg-653-1-263-62.w92-161.abo.wanadoo.fr) (Ping timeout: 260 seconds) |
2020-11-05 06:13:12 +0100 | hidedagger | (~nate@125.161.131.218) (Quit: WeeChat 2.9) |
2020-11-05 06:15:00 +0100 | hyiltiz | (~quassel@unaffiliated/hyiltiz) (Remote host closed the connection) |
2020-11-05 06:15:20 +0100 | hidedagger | (~nate@125.161.131.218) |
2020-11-05 06:16:03 +0100 | hidedagger | (~nate@125.161.131.218) (Client Quit) |
2020-11-05 06:16:48 +0100 | star_watt | (7c7b6834@124.123.104.52) (Remote host closed the connection) |
2020-11-05 06:18:25 +0100 | zoran119 | (~zoran119@124-169-22-52.dyn.iinet.net.au) (Quit: leaving) |
2020-11-05 06:25:57 +0100 | xff0x | (~fox@2001:1a81:522f:7b00:29b2:8682:67ea:c01f) (Ping timeout: 244 seconds) |
2020-11-05 06:26:40 +0100 | irc_user | (uid423822@gateway/web/irccloud.com/x-nqqmqoyedjtdxopn) (Quit: Connection closed for inactivity) |
2020-11-05 06:26:52 +0100 | xff0x | (~fox@2001:1a81:522f:7b00:d95:27ea:7e18:f05f) |
2020-11-05 06:34:41 +0100 | DTZUZU | (~DTZUZU@207.81.171.116) |
2020-11-05 06:36:17 +0100 | acidjnk_new2 | (~acidjnk@p200300d0c718f665213d210801ac68e4.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2020-11-05 06:37:00 +0100 | watt739 | (~watt739@124.123.104.52) (Ping timeout: 256 seconds) |
2020-11-05 06:37:10 +0100 | DTZUZU_ | (~DTZUZU@207.81.171.87) (Ping timeout: 260 seconds) |
2020-11-05 06:37:25 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 240 seconds) |
2020-11-05 06:38:25 +0100 | chise | (3b29a236@59.41.162.54) (Remote host closed the connection) |
2020-11-05 06:40:36 +0100 | day_ | (~Unknown@unaffiliated/day) |
2020-11-05 06:44:13 +0100 | day | (~Unknown@unaffiliated/day) (Ping timeout: 260 seconds) |
2020-11-05 06:44:14 +0100 | day_ | day |
2020-11-05 06:45:11 +0100 | Lycurgus | (~niemand@98.4.97.110) |
2020-11-05 06:46:07 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-05 06:48:52 +0100 | ten | (~ten@1.136.105.204) |
2020-11-05 06:49:38 +0100 | <ten> | /Help |
2020-11-05 06:49:43 +0100 | ten | (~ten@1.136.105.204) (Client Quit) |
2020-11-05 06:50:36 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2020-11-05 06:55:39 +0100 | Lycurgus | (~niemand@98.4.97.110) (Quit: Exeunt) |
2020-11-05 06:56:07 +0100 | shatriff_ | (~vitaliish@176.52.219.10) (Remote host closed the connection) |
2020-11-05 06:56:29 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2020-11-05 07:00:01 +0100 | Guest74313 | (~benj@195.206.169.184) () |
2020-11-05 07:01:06 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving) |
2020-11-05 07:02:40 +0100 | L29Ah | (~L29Ah@unaffiliated/l29ah) (Ping timeout: 272 seconds) |
2020-11-05 07:04:15 +0100 | hidedagger | (~nate@125.161.131.218) |
2020-11-05 07:04:24 +0100 | hyiltiz | (~quassel@2601:14d:4100:112c:cff4:7114:bc84:3722) |
2020-11-05 07:04:24 +0100 | hyiltiz | (~quassel@2601:14d:4100:112c:cff4:7114:bc84:3722) (Changing host) |
2020-11-05 07:04:24 +0100 | hyiltiz | (~quassel@unaffiliated/hyiltiz) |
2020-11-05 07:04:39 +0100 | L29Ah | (~L29Ah@unaffiliated/l29ah) |
2020-11-05 07:06:02 +0100 | jedws | (~jedws@101.184.150.81) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-05 07:09:56 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-05 07:10:47 +0100 | alp | (~alp@2a01:e0a:58b:4920:c9f2:c45e:5046:e2e6) (Ping timeout: 272 seconds) |
2020-11-05 07:14:07 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 246 seconds) |
2020-11-05 07:14:33 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds) |
2020-11-05 07:15:10 +0100 | hidedagger | (~nate@125.161.131.218) (Quit: WeeChat 2.9) |
2020-11-05 07:15:21 +0100 | mmohammadi9812 | (~mmohammad@2.178.132.235) (Ping timeout: 258 seconds) |
2020-11-05 07:16:14 +0100 | hyiltiz_ | (~quassel@82.118.227.47) |
2020-11-05 07:16:49 +0100 | hidedagger | (~nate@125.161.131.218) |
2020-11-05 07:17:55 +0100 | hyiltiz | (~quassel@unaffiliated/hyiltiz) (Quit: hyiltiz) |
2020-11-05 07:22:10 +0100 | howdoi | (uid224@gateway/web/irccloud.com/x-vhoynudvnfkkavxn) (Quit: Connection closed for inactivity) |
2020-11-05 07:25:43 +0100 | Jeanne-Kamikaze | (~Jeanne-Ka@68.235.43.150) (Quit: Leaving) |
2020-11-05 07:29:06 +0100 | yinfeng | (~yinfeng@2001:250:5002:8100::3:bd7b) |
2020-11-05 07:36:25 +0100 | jespada | (~jespada@90.254.245.49) (Ping timeout: 240 seconds) |
2020-11-05 07:39:22 +0100 | jespada | (~jespada@90.254.245.49) |
2020-11-05 07:40:01 +0100 | hackage | shakebook 0.13.1.0 - Shake-based technical documentation generator; HTML & PDF https://hackage.haskell.org/package/shakebook-0.13.1.0 (locallycompact) |
2020-11-05 07:46:58 +0100 | bgamari_ | (~bgamari@72.65.102.83) (Ping timeout: 268 seconds) |
2020-11-05 07:48:40 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 07:50:00 +0100 | hackage | gopro-plus 0.4.1.3 - GoPro Plus Client API. https://hackage.haskell.org/package/gopro-plus-0.4.1.3 (dustin) |
2020-11-05 07:50:54 +0100 | softwarm | (4408f588@ip68-8-245-136.sd.sd.cox.net) (Remote host closed the connection) |
2020-11-05 07:52:45 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2020-11-05 07:53:49 +0100 | CodeAlways | (uid272474@gateway/web/irccloud.com/x-ydthmisqrovakaks) |
2020-11-05 07:57:30 +0100 | hackage | shake-plus 0.3.3.1 - Re-export of Shake using well-typed paths and ReaderT. https://hackage.haskell.org/package/shake-plus-0.3.3.1 (locallycompact) |
2020-11-05 08:08:01 +0100 | jess | (jess@freenode/staff/jess) (Quit: Leaving) |
2020-11-05 08:09:25 +0100 | elliott__ | (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
2020-11-05 08:11:49 +0100 | mmohammadi9812 | (~mmohammad@5.113.30.246) |
2020-11-05 08:15:13 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-05 08:17:14 +0100 | jedws | (~jedws@101.184.150.81) |
2020-11-05 08:18:18 +0100 | mmohammadi9812 | (~mmohammad@5.113.30.246) (Read error: Connection reset by peer) |
2020-11-05 08:19:53 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2020-11-05 08:22:54 +0100 | lockshaw | (~lockshaw@165.22.163.71) (Quit: ZNC 1.7.2+deb3 - https://znc.in) |
2020-11-05 08:23:17 +0100 | lockshaw | (~lockshaw@165.22.163.71) |
2020-11-05 08:25:29 +0100 | knupfer | (~Thunderbi@200116b82c33ca00c94caacc2b768892.dip.versatel-1u1.de) |
2020-11-05 08:25:45 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
2020-11-05 08:28:31 +0100 | aarvar | (~foewfoiew@c.24.56.239.179.static.broadstripe.net) () |
2020-11-05 08:34:05 +0100 | knupfer | (~Thunderbi@200116b82c33ca00c94caacc2b768892.dip.versatel-1u1.de) (Ping timeout: 244 seconds) |
2020-11-05 08:36:34 +0100 | coot | (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 256 seconds) |
2020-11-05 08:36:55 +0100 | scasc | (~szabi@213142096120.public.telering.at) |
2020-11-05 08:38:12 +0100 | <scasc> | I was doing a quick search on both Wikipedia and haskell.org (including the wikis), but couldn't find a good tabulated overview of GHC versions with release dates (and ideally with corresponding "base" library version numbers). |
2020-11-05 08:38:33 +0100 | plutoniix | (~q@175.176.222.7) (Ping timeout: 260 seconds) |
2020-11-05 08:38:53 +0100 | <scasc> | Do you know of a good overview of release dates? (I have an idea where I could compile it from, but I'd appreciate not having to do it myself :-) |
2020-11-05 08:42:41 +0100 | <yushyin> | https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history |
2020-11-05 08:42:56 +0100 | plutoniix | (~q@175.176.222.7) |
2020-11-05 08:44:05 +0100 | dhouthoo | (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) |
2020-11-05 08:45:41 +0100 | Axma50981 | (~Axman6@pdpc/supporter/student/Axman6) |
2020-11-05 08:45:47 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-05 08:47:53 +0100 | Axman6 | (~Axman6@pdpc/supporter/student/Axman6) (Ping timeout: 260 seconds) |
2020-11-05 08:48:28 +0100 | plutoniix | (~q@175.176.222.7) (Ping timeout: 260 seconds) |
2020-11-05 08:50:13 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 260 seconds) |
2020-11-05 08:57:01 +0100 | coot | (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) |
2020-11-05 08:58:34 +0100 | MindlessDrone | (~MindlessD@unaffiliated/mindlessdrone) (Ping timeout: 272 seconds) |
2020-11-05 08:59:45 +0100 | plutoniix | (~q@175.176.222.7) |
2020-11-05 09:00:38 +0100 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
2020-11-05 09:01:20 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2020-11-05 09:01:51 +0100 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
2020-11-05 09:02:24 +0100 | PlasmaStrike | (~mattplasm@45.83.89.28) |
2020-11-05 09:04:23 +0100 | MindlessDrone | (~MindlessD@unaffiliated/mindlessdrone) |
2020-11-05 09:04:56 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
2020-11-05 09:05:10 +0100 | chele | (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) |
2020-11-05 09:07:16 +0100 | <dminuoso> | To revisit the earlier discussion. Im not completely sold on the idea that regular expressions are bad. In a lot of situations they are much faster to write, than to either manually parse down String or use parser combinators. Especially for one-off tools that need to be quickly written, they are very handy. |
2020-11-05 09:07:34 +0100 | <dminuoso> | They are probably *overused*, but I think they have their place in code. |
2020-11-05 09:07:46 +0100 | Sanchayan | (~Sanchayan@223.226.118.59) |
2020-11-05 09:08:10 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 09:08:20 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2020-11-05 09:10:50 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-05 09:11:33 +0100 | knupfer | (~Thunderbi@dynamic-046-114-148-101.46.114.pool.telefonica.de) |
2020-11-05 09:11:43 +0100 | knupfer | (~Thunderbi@dynamic-046-114-148-101.46.114.pool.telefonica.de) (Client Quit) |
2020-11-05 09:11:52 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2020-11-05 09:12:03 +0100 | knupfer | (~Thunderbi@dynamic-046-114-148-101.46.114.pool.telefonica.de) |
2020-11-05 09:12:19 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2020-11-05 09:13:18 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 09:13:18 +0100 | knupfer | (~Thunderbi@dynamic-046-114-148-101.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
2020-11-05 09:13:44 +0100 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) |
2020-11-05 09:14:09 +0100 | hololeap_ | (~hololeap@unaffiliated/hololeap) |
2020-11-05 09:14:44 +0100 | danvet_ | (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) |
2020-11-05 09:14:54 +0100 | alp | (~alp@2a01:e0a:58b:4920:b1ae:7aff:716a:2fef) |
2020-11-05 09:14:55 +0100 | danvet_ | (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) (Remote host closed the connection) |
2020-11-05 09:15:13 +0100 | kav | (~kari@dsl-hkibng42-56733f-225.dhcp.inet.fi) (Ping timeout: 246 seconds) |
2020-11-05 09:15:51 +0100 | hololeap | (~hololeap@unaffiliated/hololeap) (Ping timeout: 265 seconds) |
2020-11-05 09:16:12 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) |
2020-11-05 09:16:38 +0100 | <scasc> | yushyin: Thanks, I remembered having seen base versions tabulated somewhere. |
2020-11-05 09:16:58 +0100 | <scasc> | That could be augmented with release dates for the GHC versions :-) |
2020-11-05 09:17:01 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 264 seconds) |
2020-11-05 09:17:29 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
2020-11-05 09:18:24 +0100 | Sgeo | (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer) |
2020-11-05 09:18:31 +0100 | yinfeng | (~yinfeng@2001:250:5002:8100::3:bd7b) (Ping timeout: 244 seconds) |
2020-11-05 09:19:39 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
2020-11-05 09:20:34 +0100 | yinfeng | (~yinfeng@122.96.106.57) |
2020-11-05 09:20:45 +0100 | rotty | (rotty@ghost.xx.vu) |
2020-11-05 09:21:24 +0100 | nbloomf_ | (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-05 09:22:02 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2020-11-05 09:22:02 +0100 | <[exa]> | dminuoso: they are great for user-specified grammar parts where you don't want a full compiler in your program |
2020-11-05 09:22:05 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 09:22:54 +0100 | kav | (~kari@dsl-hkibng42-56733f-225.dhcp.inet.fi) |
2020-11-05 09:23:59 +0100 | <[exa]> | dminuoso: like, I'd really love a library now with a more transparent interface than regex-base |
2020-11-05 09:24:19 +0100 | <dminuoso> | [exa]: pcre-heavy has a good interface |
2020-11-05 09:24:31 +0100 | hidedagger | (~nate@125.161.131.218) (Quit: WeeChat 2.9) |
2020-11-05 09:24:45 +0100 | <[exa]> | will have a look, thanks |
2020-11-05 09:25:21 +0100 | <[exa]> | the point is that regex-base somehow seems to mainly support the mode of use that sounds wrong to me (eg writing a regex to your program to check a mail) |
2020-11-05 09:26:25 +0100 | jess | (jess@freenode/staff/jess) |
2020-11-05 09:26:52 +0100 | <[exa]> | ok pcre-heavy and pcre-light are cool |
2020-11-05 09:27:05 +0100 | <[exa]> | is there something similar without external deps? I'm now on regex-tdfa |
2020-11-05 09:28:56 +0100 | mimi_vx | (~mimi@tulipan.habr.nat.praha12.net) |
2020-11-05 09:29:34 +0100 | <dminuoso> | [exa]: Mmm, regex-applicative perhaps |
2020-11-05 09:29:41 +0100 | <dminuoso> | (Which is also a library Im quite fond of) |
2020-11-05 09:30:01 +0100 | <[exa]> | ok sounds good |
2020-11-05 09:30:05 +0100 | <dminuoso> | It's a cross between parser combinators and regular expressions, but it gets away with pure haskell instead of QQs |
2020-11-05 09:30:15 +0100 | <[exa]> | looks good |
2020-11-05 09:31:01 +0100 | fraktor | (~walt@129.93.191.18) |
2020-11-05 09:31:12 +0100 | <[exa]> | palpatine voice: goooooood |
2020-11-05 09:31:16 +0100 | <lortabac> | my personal problem with common regex implementations is the stringy syntax |
2020-11-05 09:31:22 +0100 | <fraktor> | I've got a question that's kind of a general algorithms question, but I'm planning on attempting to implement it in Haskell. Is here a good place to ask? |
2020-11-05 09:31:32 +0100 | <lortabac> | I wasn't aware of regex-applicative, it looks good |
2020-11-05 09:31:40 +0100 | <[exa]> | fraktor: quite possibly yes, you'll get a decent redirect if not :] |
2020-11-05 09:31:48 +0100 | <fraktor> | Fair enough. |
2020-11-05 09:31:53 +0100 | borne | (~fritjof@200116b8643b36005d0cb1433c5d4cbb.dip.versatel-1u1.de) |
2020-11-05 09:32:28 +0100 | <[exa]> | ok that sounds like it.. like, regex strings and QQs have imho no place in good code when you can write it right (and more extensibly) using standard haskell |
2020-11-05 09:32:29 +0100 | kritzefitz | (~kritzefit@fw-front.credativ.com) |
2020-11-05 09:32:47 +0100 | <fraktor> | I've got a problem that is kind of like 1d bin packing, but different. Basically, I have several objects, and bins of several sizes. I can have as many of each kind of bin as I want, but I need to minimize the total amount of space left over in each bin. |
2020-11-05 09:33:23 +0100 | hidedagger | (~nate@125.161.131.218) |
2020-11-05 09:34:35 +0100 | <[exa]> | fraktor: the objects have 1D size? |
2020-11-05 09:34:43 +0100 | <fraktor> | For the purpose of this problem yes. |
2020-11-05 09:35:31 +0100 | <fraktor> | Actually I'll just share the practical application of this: I need to cut several lengths of 2x4, and I can buy boards in pre-determined lengths. I want to minimize waste. |
2020-11-05 09:35:33 +0100 | <[exa]> | so the input is say objectSizes=[1,2,3,4,10] and you have binSizes=[8,11] and try to minimize the amount of space in used bins that is unfilled, right? |
2020-11-05 09:35:48 +0100 | <fraktor> | Exactly. But there may be multiple objects of the same size. |
2020-11-05 09:35:49 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 09:36:06 +0100 | scasc | (~szabi@213142096120.public.telering.at) (Quit: Leaving) |
2020-11-05 09:36:23 +0100 | <[exa]> | this sounds like a knapsack but hopefully it's not that bad. :] |
2020-11-05 09:36:43 +0100 | <lortabac> | fraktor: do you also want to minimize the number of bins you use? (by putting more than 1 object in a bin) |
2020-11-05 09:38:26 +0100 | <[exa]> | imho not necessariy (unless shorter boards are proportionally more expensive than longer boards) |
2020-11-05 09:38:33 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-05 09:38:47 +0100 | <fraktor> | All other things being equal, yeah, but I'd rather reduce waste than have fewer boards. |
2020-11-05 09:39:02 +0100 | <fraktor> | And it's certainly not critical. |
2020-11-05 09:39:10 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-05 09:39:54 +0100 | <lortabac> | if you can afford 1 object for each bin, I'd say you don't need any algorithm at all, you just choose the first bin your object fits in |
2020-11-05 09:40:50 +0100 | dmiles | (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Read error: Connection reset by peer) |
2020-11-05 09:40:54 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
2020-11-05 09:40:56 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-05 09:41:33 +0100 | <fraktor> | What if I have objects [1, 2, 2], and I have bins [1, 3]? Then I would end up with [([1], 1), ([2], 3), ([2], 3)], even though [([1, 2], 3), ([2], 3)] is a more efficient packing. |
2020-11-05 09:41:51 +0100 | <fraktor> | The first packing has 2 units of waste, while the second packing only has 1. |
2020-11-05 09:42:31 +0100 | <lortabac> | ok I understand now |
2020-11-05 09:42:48 +0100 | dmiles | (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) |
2020-11-05 09:42:57 +0100 | <[exa]> | lortabac: that would generate a lot of waste |
2020-11-05 09:43:26 +0100 | <[exa]> | fraktor: how many objects/bins do you expect? |
2020-11-05 09:43:30 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-05 09:43:44 +0100 | <fraktor> | Bins, let's say 4, and objects, I'd say about 20. |
2020-11-05 09:43:59 +0100 | <fraktor> | But I'd like something that scales efficiently if at all possible. |
2020-11-05 09:44:06 +0100 | britva | (~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) |
2020-11-05 09:44:08 +0100 | Lord_of_Life | (~Lord@46.217.217.162) (Changing host) |
2020-11-05 09:44:08 +0100 | Lord_of_Life | (~Lord@unaffiliated/lord-of-life/x-0885362) |
2020-11-05 09:44:17 +0100 | <[exa]> | well for now just enjoy the computers and go brute force :D |
2020-11-05 09:44:47 +0100 | <lortabac> | :) |
2020-11-05 09:45:21 +0100 | <fraktor> | That's still relatively large, as far as I can tell. Like, I would have to check every ordering of the objects, and then every possible grouping for that ordering, right? |
2020-11-05 09:46:32 +0100 | watt976 | (~watt976@124.123.107.59) |
2020-11-05 09:47:22 +0100 | <[exa]> | I'm starting to suspect there'd be a dynamic programming solution |
2020-11-05 09:47:51 +0100 | <lortabac> | you can probably reframe the problem to be solvable with linear programming, by giving a sufficiently big (finite) number of bins |
2020-11-05 09:48:34 +0100 | <fraktor> | I mean, the largest number of bins would be the number of objects, so I have a hard upper bound. But I'm not that familiar with linear programming. |
2020-11-05 09:48:50 +0100 | <[exa]> | that's going to just transfer the guesswork to the linear solver :] |
2020-11-05 09:48:53 +0100 | <fraktor> | And this definitely does seem like the kind of thing that would have a dynamic programming solution, but I'm not sure I could figure it out when I'm this tired lol. |
2020-11-05 09:49:00 +0100 | temporary1233 | (~szabi@213142096120.public.telering.at) |
2020-11-05 09:50:01 +0100 | <[exa]> | ok technically, lets give it a bit of determinism |
2020-11-05 09:50:14 +0100 | britva | (~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) (Quit: This computer has gone to sleep) |
2020-11-05 09:50:34 +0100 | britva | (~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) |
2020-11-05 09:51:12 +0100 | <[exa]> | 1] it doesn't matter in which order you choose the boards and cut out the parts you want, so you can work the algorithm as iterative nondeterministic "I cut out a first piece and might have either this board left, or that board left" |
2020-11-05 09:51:50 +0100 | watt976 | (~watt976@124.123.107.59) (Remote host closed the connection) |
2020-11-05 09:52:01 +0100 | <fraktor> | Are you saying that cutting [2, 1] out of a board is functionally equivalent to cutting out [1, 2]? I'd agree. |
2020-11-05 09:52:19 +0100 | __monty__ | (~toonn@unaffiliated/toonn) |
2020-11-05 09:52:24 +0100 | watt332 | (~watt332@124.123.107.59) |
2020-11-05 09:52:31 +0100 | <[exa]> | then heuristic, 2] cut out the pieces that are most unwieldy first |
2020-11-05 09:52:44 +0100 | <[exa]> | so that you don't have to generate a lots of waste towards the end of the search |
2020-11-05 09:52:44 +0100 | PlasmaSt` | (~mattplasm@45.83.89.28) |
2020-11-05 09:52:55 +0100 | <[exa]> | 3] branch bound and hope |
2020-11-05 09:54:06 +0100 | hidedagger | (~nate@125.161.131.218) (Quit: WeeChat 2.9) |
2020-11-05 09:54:28 +0100 | mmohammadi9812 | (~mmohammad@5.113.30.246) |
2020-11-05 09:54:34 +0100 | PlasmaStrike | (~mattplasm@45.83.89.28) (Ping timeout: 260 seconds) |
2020-11-05 09:54:36 +0100 | mmohammadi9812 | (~mmohammad@5.113.30.246) (Client Quit) |
2020-11-05 09:54:49 +0100 | Axma50981 | Axman6 |
2020-11-05 09:54:56 +0100 | dmiles | (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 272 seconds) |
2020-11-05 09:55:04 +0100 | <fraktor> | I'm trying to think if there are any situations in which doing a grouping of 3 in one board and 1 in another is more wasteful than doing 2 and 2. |
2020-11-05 09:55:10 +0100 | <[exa]> | anyway this reduces to subset sum, for items of total size W and subset of size S you give it boards of size S and (W-S) and it will either solve the subset or prove that it's easier by subdividing S into pieces |
2020-11-05 09:55:37 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2020-11-05 09:55:47 +0100 | <[exa]> | (modulo corner cases) |
2020-11-05 09:56:06 +0100 | <tomsmeding> | total waste = sum_{b in used boards} length(b) - sum_{o in objects} length(o) |
2020-11-05 09:56:19 +0100 | <tomsmeding> | so minimal waste <=> minimal total length of boards chosen |
2020-11-05 09:57:22 +0100 | <fraktor> | tomsmeding: I don't think so. At least not in all cases. |
2020-11-05 09:57:44 +0100 | <fraktor> | Because I'm not saying "I have chosen these boards, fit these cuts into them." I'm trying to choose which boards to get in the first place. |
2020-11-05 09:58:03 +0100 | <tomsmeding> | "minimal total length of boards chosen" |
2020-11-05 09:58:32 +0100 | <fraktor> | Oh! I misread. I thought it was "minimal number of boards chosen." In that case, you're correct. |
2020-11-05 09:58:53 +0100 | Amras | (~Amras@unaffiliated/amras0000) (Ping timeout: 246 seconds) |
2020-11-05 09:58:59 +0100 | <tomsmeding> | not sure if this observation helps in any way though :p |
2020-11-05 09:59:23 +0100 | <fraktor> | It's either completely useless or the key to cracking the puzzle |
2020-11-05 09:59:28 +0100 | <fraktor> | Not sure which |
2020-11-05 09:59:58 +0100 | <tomsmeding> | it's fairly easy to formulate as an ILP problem |
2020-11-05 10:00:02 +0100 | Sanchayan | (~Sanchayan@223.226.118.59) (Quit: leaving) |
2020-11-05 10:00:26 +0100 | ski | . o O ( "Inductive Logic Programming" ? ) |
2020-11-05 10:00:33 +0100 | <tomsmeding> | integer linear programming :') |
2020-11-05 10:00:37 +0100 | <tomsmeding> | yay acronyms |
2020-11-05 10:00:41 +0100 | <ski> | ah |
2020-11-05 10:00:56 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 10:00:57 +0100 | <fraktor> | Oh wow, that's hard though |
2020-11-05 10:01:12 +0100 | <tomsmeding> | ILP problems are NP-complete in general so this proves nothing |
2020-11-05 10:01:20 +0100 | <ski> | (why's it called "Linear Programming", btw ?) |
2020-11-05 10:01:31 +0100 | <tomsmeding> | but ILP solvers are notoriously good at solving hard problems faster than expected |
2020-11-05 10:01:43 +0100 | <tomsmeding> | ski: ILP = LP + branch-and-bound, where LP = linear programming |
2020-11-05 10:02:10 +0100 | <tomsmeding> | the standard algorithm is solving the problem without the restriction that all variables need to be integral, and then doing branch-and-bound to find a valid ILP solution |
2020-11-05 10:02:12 +0100 | <fraktor> | I think it's called LP because the underlying systems have linear relationships to each other? |
2020-11-05 10:02:30 +0100 | <tomsmeding> | (that first step is just solving an LP problem) |
2020-11-05 10:03:02 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 10:03:09 +0100 | <tomsmeding> | I'm struggling to understand [exa]'s reduction though; have you just proven that this problem is at least as hard as subset sum? |
2020-11-05 10:03:21 +0100 | <[exa]> | ski: because it's so np-hard that you can encode programs into that :D |
2020-11-05 10:03:44 +0100 | <tomsmeding> | oh _that_ was the question, yeah the name is atrocious |
2020-11-05 10:04:13 +0100 | <fraktor> | tomsmeding: I've never used a linear programming library before, would you be willing to help me encode this into it? |
2020-11-05 10:04:18 +0100 | <tomsmeding> | [exa]: because if you've proven that, expressing this as an ILP might be fairly optimal :p |
2020-11-05 10:04:23 +0100 | <tomsmeding> | fraktor: sure |
2020-11-05 10:04:25 +0100 | PlasmaSt` | (~mattplasm@45.83.89.28) (Ping timeout: 264 seconds) |
2020-11-05 10:04:27 +0100 | <[exa]> | tomsmeding: given some careful choice of board lengths I guess you can solve a good number of subset sum cases with that |
2020-11-05 10:04:40 +0100 | <tomsmeding> | all, or a good number? |
2020-11-05 10:04:50 +0100 | <ski> | fraktor : doesn't explain the "programming" part, though |
2020-11-05 10:05:04 +0100 | <ski> | [exa] : isn't that just for the integer variety ? |
2020-11-05 10:05:14 +0100 | <[exa]> | tomsmeding: what I wanted to point out, it's better to have a heuristic search written in 10 minutes than pulling in the ILP solver and hoping it's going to reinvent the heuristic |
2020-11-05 10:05:21 +0100 | <lortabac> | ski: "programming" is not meant as computer programming, but more like "planning" |
2020-11-05 10:05:44 +0100 | <tomsmeding> | except if you're sadistic and want an exactly optimal solution :p |
2020-11-05 10:06:09 +0100 | <fraktor> | If nothing else I'll learn how to use an ILP solver. |
2020-11-05 10:06:43 +0100 | <tomsmeding> | (I have to dig how it worked again too, give me a minute :p |
2020-11-05 10:06:44 +0100 | <tomsmeding> | ) |
2020-11-05 10:07:36 +0100 | ski | . o O ( "Why “dynamic programming”?" by Arcane Sentiment in 2010-04-23 <http://arcanesentiment.blogspot.com/2010/04/why-dynamic-programming.html> ) |
2020-11-05 10:07:38 +0100 | rprije | (~rprije@194-193-168-77.tpgi.com.au) (Ping timeout: 260 seconds) |
2020-11-05 10:07:46 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 10:07:52 +0100 | Franciman | (~francesco@host-79-36-167-172.retail.telecomitalia.it) |
2020-11-05 10:08:31 +0100 | rprije | (~rprije@124.148.131.132) |
2020-11-05 10:10:25 +0100 | <tomsmeding> | fraktor: so the idea of an LP problem (let's start with that) is the following |
2020-11-05 10:10:37 +0100 | <tomsmeding> | you define a number of real-valued variables, x1,...,xn |
2020-11-05 10:10:51 +0100 | <tomsmeding> | and 1. give an optimisation function, which is a linear combination of those variables |
2020-11-05 10:11:09 +0100 | <tomsmeding> | and 2. a list of linear constraints, which are of the form (linear combination of the variables) <= (real constant) |
2020-11-05 10:11:31 +0100 | <tomsmeding> | then the LP solver gives you an assignment of the variables such that the target function is minimised |
2020-11-05 10:11:37 +0100 | <tomsmeding> | (s/optimisation function/target function/) |
2020-11-05 10:11:53 +0100 | <tomsmeding> | ILP solvers can additionally handle the restriction that certain variables may only be integer-valued |
2020-11-05 10:12:28 +0100 | <fraktor> | I'm really sorry, but something came up and I gotta go |
2020-11-05 10:12:35 +0100 | <tomsmeding> | np :) |
2020-11-05 10:12:40 +0100 | <fraktor> | I'll definitely look into this though, thank you |
2020-11-05 10:12:41 +0100 | fraktor | (~walt@129.93.191.18) (Quit: WeeChat 2.8) |
2020-11-05 10:13:03 +0100 | tomsmeding | might still code this up for reason of procrastination |
2020-11-05 10:13:09 +0100 | <[exa]> | sounds like fedex delivered the boards! |
2020-11-05 10:13:22 +0100 | <tomsmeding> | :D |
2020-11-05 10:14:12 +0100 | <__monty__> | s/np/np-hard/ FTFY |
2020-11-05 10:14:30 +0100 | <[exa]> | anyway the sum problems are cool from the hardness perspective |
2020-11-05 10:14:53 +0100 | <[exa]> | https://en.wikipedia.org/wiki/3SUM <- most illustrative one I know of |
2020-11-05 10:15:01 +0100 | zaquest | (~notzaques@5.128.210.178) (Quit: Leaving) |
2020-11-05 10:15:49 +0100 | <tomsmeding> | ah the log bounds, O(n^2 / (log n / log log n)^(2/3)) lovely <3 |
2020-11-05 10:16:28 +0100 | zaquest | (~notzaques@5.128.210.178) |
2020-11-05 10:16:52 +0100 | <ski> | this is an instance of CP (Constraint Programming) (of which CLP, Constraint Logic Programming, is a more nicely integrated form) |
2020-11-05 10:17:48 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 10:18:15 +0100 | xff0x | (~fox@2001:1a81:522f:7b00:d95:27ea:7e18:f05f) (Ping timeout: 272 seconds) |
2020-11-05 10:18:41 +0100 | DavidEichmann | (~david@43.240.198.146.dyn.plus.net) |
2020-11-05 10:19:02 +0100 | xff0x | (~fox@2001:1a81:522f:7b00:1cd6:2f35:f89:eebf) |
2020-11-05 10:19:04 +0100 | ggole | (~ggole@2001:8003:8119:7200:3462:7213:ea5b:f472) |
2020-11-05 10:22:06 +0100 | slewis | (~slewis@185.204.1.185) |
2020-11-05 10:22:57 +0100 | avdb | (~avdb@ip-83-134-202-8.dsl.scarlet.be) |
2020-11-05 10:24:15 +0100 | raichoo | (~raichoo@213.240.178.58) |
2020-11-05 10:25:24 +0100 | <raichoo> | Hi everyone, we have rebooted Advent of Haskell 2020 and are currently collecting potential blog articles. www.adventofhaskell.com |
2020-11-05 10:25:57 +0100 | TMA | (tma@twin.jikos.cz) (Read error: Connection reset by peer) |
2020-11-05 10:26:05 +0100 | <Axman6> | hooray! |
2020-11-05 10:26:27 +0100 | <Axman6> | also I feel like that's a nick I haven't aseen for a very long time... |
2020-11-05 10:26:34 +0100 | britva | (~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) (Quit: This computer has gone to sleep) |
2020-11-05 10:27:10 +0100 | <raichoo> | I've been MIA from twitter for kind of a long time and I'm not posting that much in here :D |
2020-11-05 10:27:20 +0100 | <raichoo> | But glad someone remembers me nevertheless ^^ |
2020-11-05 10:27:32 +0100 | dmiles | (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) |
2020-11-05 10:29:15 +0100 | <Axman6> | hmm, I could possibly make soething for this too |
2020-11-05 10:29:26 +0100 | <Axman6> | something too. mauybe IRC + pub is a bad idea |
2020-11-05 10:29:51 +0100 | thc202 | (~thc202@unaffiliated/thc202) |
2020-11-05 10:29:52 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 10:30:07 +0100 | britva | (~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) |
2020-11-05 10:31:30 +0100 | <raichoo> | Axman6: That would be cool :) Just drop me a mail, all the submissions to advent@antei.de go straight to me. |
2020-11-05 10:31:58 +0100 | <merijn> | raichoo: Did you mail the Haskell Weekly News guy yet? |
2020-11-05 10:32:12 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 10:33:36 +0100 | <raichoo> | merijn: Just blasted things out on social media. We just pushed the website online yesterday. Could you drop me the contact in a DM? |
2020-11-05 10:34:03 +0100 | <merijn> | raichoo: Contact info is here: https://haskellweekly.news/ |
2020-11-05 10:34:25 +0100 | <merijn> | I think it usually goes out on friday, so if you're fast it could still be added :) |
2020-11-05 10:34:54 +0100 | <raichoo> | Whoop whoop, thanks for the pointer, will do that right now :D |
2020-11-05 10:35:21 +0100 | fendor | (~fendor@178.115.130.128.wireless.dyn.drei.com) |
2020-11-05 10:42:01 +0100 | hackage | wai-extra 3.1.2 - Provides some basic WAI handlers and middleware. https://hackage.haskell.org/package/wai-extra-3.1.2 (MichaelSnoyman) |
2020-11-05 10:42:44 +0100 | dmiles | (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 244 seconds) |
2020-11-05 10:45:05 +0100 | mdunnio | (~mdunnio@208.59.170.5) |
2020-11-05 10:45:19 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) (Quit: Konversation terminated!) |
2020-11-05 10:45:37 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) |
2020-11-05 10:45:40 +0100 | theDon | (~td@94.134.91.129) |
2020-11-05 10:46:20 +0100 | Gurkenglas__ | (~Gurkengla@unaffiliated/gurkenglas) |
2020-11-05 10:47:17 +0100 | bgamari | (~bgamari@2001:470:e438::1) |
2020-11-05 10:47:24 +0100 | hnOsmium0001 | (uid453710@gateway/web/irccloud.com/x-hpmiowuimqysffdt) (Quit: Connection closed for inactivity) |
2020-11-05 10:48:29 +0100 | fendor | (~fendor@178.115.130.128.wireless.dyn.drei.com) (Ping timeout: 258 seconds) |
2020-11-05 10:49:25 +0100 | mdunnio | (~mdunnio@208.59.170.5) (Ping timeout: 240 seconds) |
2020-11-05 10:50:10 +0100 | mdunnio | (~mdunnio@208.59.170.5) |
2020-11-05 10:50:27 +0100 | fendor | (~fendor@178.165.130.110.wireless.dyn.drei.com) |
2020-11-05 10:52:10 +0100 | mmohammadi9812 | (~mmohammad@188.210.113.223) |
2020-11-05 10:53:46 +0100 | fendor_ | (~fendor@078132052150.public.t-mobile.at) |
2020-11-05 10:54:25 +0100 | mdunnio | (~mdunnio@208.59.170.5) (Ping timeout: 240 seconds) |
2020-11-05 10:55:41 +0100 | kish | (~oracle@unaffiliated/oracle) (Remote host closed the connection) |
2020-11-05 10:57:21 +0100 | kish | (~oracle@unaffiliated/oracle) |
2020-11-05 10:59:08 +0100 | fendor__ | (~fendor@212095005240.public.telering.at) |
2020-11-05 11:00:04 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-05 11:01:25 +0100 | fendor_ | (~fendor@078132052150.public.t-mobile.at) (Ping timeout: 240 seconds) |
2020-11-05 11:03:02 +0100 | solonarv | (~solonarv@astrasbourg-653-1-263-62.w92-161.abo.wanadoo.fr) |
2020-11-05 11:03:20 +0100 | britva | (~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) (Quit: This computer has gone to sleep) |
2020-11-05 11:04:25 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 246 seconds) |
2020-11-05 11:06:21 +0100 | dmiles | (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) |
2020-11-05 11:08:28 +0100 | darjeeling_ | (~darjeelin@115.215.43.51) |
2020-11-05 11:11:23 +0100 | TMA | (tma@twin.jikos.cz) |
2020-11-05 11:13:56 +0100 | guest115 | (~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1)) |
2020-11-05 11:18:25 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
2020-11-05 11:18:57 +0100 | acidjnk_new2 | (~acidjnk@p200300d0c718f6890d36626cfb994f1d.dip0.t-ipconnect.de) |
2020-11-05 11:20:39 +0100 | m0rphism | (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) |
2020-11-05 11:22:03 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) |
2020-11-05 11:23:51 +0100 | kritzefitz | (~kritzefit@fw-front.credativ.com) (Remote host closed the connection) |
2020-11-05 11:31:58 +0100 | <tomsmeding> | @tell fraktor https://tomsmeding.com/ss/get/tomsmeding/V5dE2W |
2020-11-05 11:31:58 +0100 | <lambdabot> | Consider it noted. |
2020-11-05 11:34:15 +0100 | alp | (~alp@2a01:e0a:58b:4920:b1ae:7aff:716a:2fef) (Ping timeout: 272 seconds) |
2020-11-05 11:36:16 +0100 | alp | (~alp@2a01:e0a:58b:4920:6070:c578:85d0:a73a) |
2020-11-05 11:36:44 +0100 | <[exa]> | tomsmeding: all go to board 1? |
2020-11-05 11:36:49 +0100 | <[exa]> | (oh okay thats board type 1) |
2020-11-05 11:37:09 +0100 | <tomsmeding> | zero-based indices :p |
2020-11-05 11:37:10 +0100 | <tomsmeding> | but yes |
2020-11-05 11:37:53 +0100 | <[exa]> | what's the ILP library btw? |
2020-11-05 11:38:05 +0100 | <tomsmeding> | I'm using an external process, https://sourceforge.net/projects/lpsolve/ |
2020-11-05 11:38:11 +0100 | <tomsmeding> | will put the code in a paste in a minute |
2020-11-05 11:38:17 +0100 | <[exa]> | o good |
2020-11-05 11:39:08 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 11:41:05 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 11:42:09 +0100 | temporary1233 | (~szabi@213142096120.public.telering.at) (Ping timeout: 258 seconds) |
2020-11-05 11:45:11 +0100 | akegalj | (~akegalj@93-142-95-221.adsl.net.t-com.hr) |
2020-11-05 11:45:30 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 11:45:49 +0100 | watt332 | (~watt332@124.123.107.59) (Ping timeout: 264 seconds) |
2020-11-05 11:48:08 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-05 11:48:44 +0100 | <tomsmeding> | @tell fraktor https://paste.tomsmeding.com/rT6TJbdr (also [exa]) |
2020-11-05 11:48:44 +0100 | <lambdabot> | Consider it noted. |
2020-11-05 11:49:17 +0100 | <tomsmeding> | lol I realise now that the output for a constant linear combination is borked but it works |
2020-11-05 11:49:27 +0100 | <tomsmeding> | "<= + 1" |
2020-11-05 11:49:40 +0100 | <tomsmeding> | it works thus it's fine |
2020-11-05 11:49:50 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 11:50:04 +0100 | tomsmeding | wonders whether to amend the paste directly in the database |
2020-11-05 11:50:49 +0100 | shatriff | (~vitaliish@176.52.219.10) |
2020-11-05 11:54:52 +0100 | meck | (~meck@li1809-18.members.linode.com) (Quit: ZNC 1.8.2 - https://znc.in) |
2020-11-05 11:56:07 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 11:56:34 +0100 | dmiles | (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 246 seconds) |
2020-11-05 11:59:16 +0100 | dmiles | (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) |
2020-11-05 12:00:34 +0100 | Guest_54 | (0253f68a@bl22-246-138.dsl.telepac.pt) |
2020-11-05 12:01:02 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9) |
2020-11-05 12:01:15 +0100 | meck | (~meck@li1809-18.members.linode.com) |
2020-11-05 12:01:30 +0100 | hackage | cut-the-crap 2.3.1 - Cuts out uninteresting parts of videos by detecting silences. https://hackage.haskell.org/package/cut-the-crap-2.3.1 (Jappie) |
2020-11-05 12:01:44 +0100 | Guest_54 | (0253f68a@bl22-246-138.dsl.telepac.pt) (Remote host closed the connection) |
2020-11-05 12:02:25 +0100 | shailangsa | (~shailangs@host86-186-133-58.range86-186.btcentralplus.com) (Ping timeout: 240 seconds) |
2020-11-05 12:05:13 +0100 | raichoo | (~raichoo@213.240.178.58) (Quit: Lost terminal) |
2020-11-05 12:05:41 +0100 | pera | (~pera@unaffiliated/pera) |
2020-11-05 12:11:40 +0100 | SirSaul | (559113cc@204-19-145-85.ftth.glasoperator.nl) |
2020-11-05 12:12:37 +0100 | <SirSaul> | Hello people, can someone help me with a problem regarding indentation or something like that. |
2020-11-05 12:13:05 +0100 | <yushyin> | sure, ask away |
2020-11-05 12:13:37 +0100 | <SirSaul> | I'm quite new to functional programming and following a tutorial on Xwindow https://wiki.haskell.org/X_window_programming_in_Haskell |
2020-11-05 12:13:59 +0100 | <SirSaul> | Things were fine at first, but the latter pieces of code didn't work, even when I copied them 1:1 |
2020-11-05 12:14:35 +0100 | <SirSaul> | main.hs:15:6: error: parse error on input ‘=’ Perhaps you need a 'let' in a 'do' block? |
2020-11-05 12:14:47 +0100 | <SirSaul> | I assume it's something wrong with the way it's written |
2020-11-05 12:15:28 +0100 | <SirSaul> | I have all the dependecies btw, the first pieces of code worked fine. |
2020-11-05 12:15:41 +0100 | <tomjaguarpaw> | Perhaps paste your code on https://paste.tomsmeding.com/ |
2020-11-05 12:15:42 +0100 | <yushyin> | SirSaul: can you paste your code? https://paste.tomsmeding.com/ |
2020-11-05 12:16:05 +0100 | <SirSaul> | The code is in the tutorial link from the haskell website |
2020-11-05 12:16:48 +0100 | <tomjaguarpaw> | Yes, but it's likely something in the indentation has gone wrong when you have posted that code into your editor |
2020-11-05 12:17:02 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection) |
2020-11-05 12:17:03 +0100 | <SirSaul> | I see |
2020-11-05 12:17:05 +0100 | <SirSaul> | I will check |
2020-11-05 12:17:19 +0100 | tomsmeding | expects tabs |
2020-11-05 12:17:21 +0100 | Tops2 | (~Tobias@dyndsl-095-033-088-103.ewe-ip-backbone.de) |
2020-11-05 12:17:24 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) |
2020-11-05 12:17:31 +0100 | <SirSaul> | https://paste.tomsmeding.com/csO4jTzn |
2020-11-05 12:17:50 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 12:17:55 +0100 | <yushyin> | tomsmeding: ghc warns about tabs nowadays |
2020-11-05 12:18:06 +0100 | fendor_ | (~fendor@77.119.128.54.wireless.dyn.drei.com) |
2020-11-05 12:18:07 +0100 | <tomsmeding> | SirSaul: that "scr = defaultScreenOfDisplay dpy" line in 'main' needs to be indented ;) |
2020-11-05 12:18:14 +0100 | <tomsmeding> | yushyin: also without -Wall? |
2020-11-05 12:18:37 +0100 | <SirSaul> | Alright, yea I don't really know. I work in vim so pretty basic haha |
2020-11-05 12:18:48 +0100 | <SirSaul> | the syntax is quite new for me. |
2020-11-05 12:18:57 +0100 | <SirSaul> | feels like coding 1101 again haha |
2020-11-05 12:19:05 +0100 | <tomjaguarpaw> | It seems that there are a lot of indentation errors, for example in mkUnmanagedWindow |
2020-11-05 12:19:28 +0100 | <SirSaul> | Yea it's probably because I copied it 1:1 from the web after i tried to write it by hand |
2020-11-05 12:19:54 +0100 | <SirSaul> | does it matter tabs or spaces? or is either good as long as it is consistent? |
2020-11-05 12:20:01 +0100 | <tomsmeding> | still, the spaces should've copied along |
2020-11-05 12:20:04 +0100 | <tomsmeding> | spaces only in haskell |
2020-11-05 12:20:09 +0100 | <SirSaul> | alright |
2020-11-05 12:20:25 +0100 | fendor | (~fendor@178.165.130.110.wireless.dyn.drei.com) (Ping timeout: 240 seconds) |
2020-11-05 12:20:46 +0100 | <tomjaguarpaw> | Copying and pasting Haskell code is not easy. You have to make sure you copy the spaces exactly. |
2020-11-05 12:21:18 +0100 | <SirSaul> | Yea, it's also hard to see properly as I'm not familiar yet. |
2020-11-05 12:22:14 +0100 | <tomjaguarpaw> | Oh, those indentation errors do also appear on https://wiki.haskell.org/X_window_programming_in_Haskell |
2020-11-05 12:22:20 +0100 | <tomjaguarpaw> | It may well be that the page is just wrong |
2020-11-05 12:22:36 +0100 | <tomsmeding> | oh wow |
2020-11-05 12:22:37 +0100 | <tomsmeding> | yes |
2020-11-05 12:22:50 +0100 | <tomjaguarpaw> | It hasn't really been edited since 2010 so it could be well out of date and generally unhelpful |
2020-11-05 12:22:52 +0100 | <SirSaul> | Yes, that why I came here |
2020-11-05 12:22:59 +0100 | <SirSaul> | I assumed an error on the page |
2020-11-05 12:23:07 +0100 | <yushyin> | tomsmeding: yes -Wtabs is on by default, even without -Wall |
2020-11-05 12:23:13 +0100 | <SirSaul> | Actually was trying to someone who could maybe edit the wiki |
2020-11-05 12:23:14 +0100 | <tomsmeding> | yushyin: 🎉 |
2020-11-05 12:23:42 +0100 | <tomjaguarpaw> | If your goal is to learn Haskell I would recommend against the wiki. It's massively out of date. |
2020-11-05 12:23:42 +0100 | liff | (liff@kapsi.fi) (Ping timeout: 260 seconds) |
2020-11-05 12:23:50 +0100 | <SirSaul> | Yea I'm actually looking for some not to hard, not to easy apps to try and make |
2020-11-05 12:23:51 +0100 | <yushyin> | but it's fine to use tabs in haskell, if you really really want to, it's just easy to get wrong :D |
2020-11-05 12:23:55 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
2020-11-05 12:23:59 +0100 | liff | (liff@kapsi.fi) |
2020-11-05 12:24:04 +0100 | <SirSaul> | most haskell things I find are like things add 10 2, or hello world.. |
2020-11-05 12:24:11 +0100 | <SirSaul> | but Im looking for something a bit more. |
2020-11-05 12:24:22 +0100 | <tomjaguarpaw> | Hmm, I don't know of one personally. Maybe someone else can recommend something. |
2020-11-05 12:24:58 +0100 | <tomsmeding> | how did that wiki even end up wrong? it's not even a formatting bug, there's really missing indentation in the page source |
2020-11-05 12:24:59 +0100 | <SirSaul> | I need to up my knowledge and skills before I can truly do something, but just writting add and square functions ins just plain boring |
2020-11-05 12:25:03 +0100 | <SirSaul> | I know how that works. |
2020-11-05 12:25:15 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection) |
2020-11-05 12:25:19 +0100 | <tomjaguarpaw> | tomsmeding: The Wiki is just generally broken |
2020-11-05 12:25:37 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) |
2020-11-05 12:25:37 +0100 | fendor__ | (~fendor@212095005240.public.telering.at) (Read error: Connection reset by peer) |
2020-11-05 12:25:43 +0100 | <yushyin> | trying to solve AOC is always a nice way to learn a new language |
2020-11-05 12:25:54 +0100 | <tomsmeding> | or project euler, if that's your thing |
2020-11-05 12:26:34 +0100 | <SirSaul> | Well, my general idea is trying to write actual OS stuff in haskell |
2020-11-05 12:26:34 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 12:26:47 +0100 | <SirSaul> | I've got the knowledge for that, just not for haskell at the moment haha |
2020-11-05 12:27:05 +0100 | <SirSaul> | so im a noob and somewhat a pro at the same time. |
2020-11-05 12:27:06 +0100 | fendor__ | (~fendor@77.119.128.54.wireless.dyn.drei.com) |
2020-11-05 12:27:17 +0100 | <tomjaguarpaw> | (I added a warning at the top of that page) |
2020-11-05 12:28:03 +0100 | <SirSaul> | great for future coders :) |
2020-11-05 12:28:17 +0100 | <tomjaguarpaw> | SirSaul: Did you make any progress with the code on that page at all? |
2020-11-05 12:28:19 +0100 | <int-e> | https://wiki.haskell.org/index.php?title=X_window_programming_in_Haskell&oldid=14607 looks more correct; the next revision reformatted a lot of stuff incorrectly |
2020-11-05 12:28:36 +0100 | <SirSaul> | Yea' I've got the window running from the first part |
2020-11-05 12:28:53 +0100 | <yushyin> | I think Programming in Haskell by graham hutton is nice, if you already know about programming but not about haskell |
2020-11-05 12:29:19 +0100 | <tomjaguarpaw> | Then maybe int-e's suggestion is good. You could use the code from that version. Or you could try to fix the indentation yourself - that will be a quick but frustrating way to learn about indentation in Haskell! |
2020-11-05 12:29:24 +0100 | <SirSaul> | but the latter part after the unfinished window doesn't seem to work, and I'm not yet finding the correct indentation |
2020-11-05 12:30:03 +0100 | <SirSaul> | I will take a look at that revision int-e |
2020-11-05 12:30:40 +0100 | <SirSaul> | Thanks people for your quick response and help. |
2020-11-05 12:31:18 +0100 | invaser | (~Thunderbi@31.148.23.125) |
2020-11-05 12:31:25 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 12:32:24 +0100 | invaser | (~Thunderbi@31.148.23.125) (Client Quit) |
2020-11-05 12:33:46 +0100 | <tomjaguarpaw> | Feel free to come back and ask for more help if you run into more problems |
2020-11-05 12:33:57 +0100 | <tomjaguarpaw> | Hope you find something that works for you! |
2020-11-05 12:34:59 +0100 | rprije | (~rprije@124.148.131.132) (Ping timeout: 265 seconds) |
2020-11-05 12:35:00 +0100 | hackage | servant-openapi3 2.0.1.0 - Generate a Swagger/OpenAPI/OAS 3.0 specification for your servant API. https://hackage.haskell.org/package/servant-openapi3-2.0.1.0 (maksbotan) |
2020-11-05 12:35:05 +0100 | invaser | (~Thunderbi@31.148.23.125) |
2020-11-05 12:35:46 +0100 | christo | (~chris@81.96.113.213) (Ping timeout: 246 seconds) |
2020-11-05 12:36:19 +0100 | spamlessj | (~spamlessj@2a01:4f8:141:1329::2) (Ping timeout: 272 seconds) |
2020-11-05 12:37:41 +0100 | spamlessj | (~spamlessj@2a01:4f8:141:1329::2) |
2020-11-05 12:38:04 +0100 | <int-e> | I guess I'll just transplant the old code samples before the indentation edit of doom |
2020-11-05 12:39:25 +0100 | Gurkenglas__ | (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds) |
2020-11-05 12:40:01 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) (Remote host closed the connection) |
2020-11-05 12:41:17 +0100 | LKoen | (~LKoen@53.253.88.92.rev.sfr.net) |
2020-11-05 12:41:22 +0100 | MarcelineVQ | (~anja@198.254.202.72) (Ping timeout: 246 seconds) |
2020-11-05 12:43:30 +0100 | SirSaul | (559113cc@204-19-145-85.ftth.glasoperator.nl) (Remote host closed the connection) |
2020-11-05 12:43:44 +0100 | alp | (~alp@2a01:e0a:58b:4920:6070:c578:85d0:a73a) (Ping timeout: 246 seconds) |
2020-11-05 12:43:46 +0100 | mdunnio_ | (~mdunnio@208.59.170.5) |
2020-11-05 12:45:04 +0100 | Aquazi | (uid312403@gateway/web/irccloud.com/x-ghekqquifdegujeg) |
2020-11-05 12:47:17 +0100 | alp | (~alp@88.126.45.36) |
2020-11-05 12:47:52 +0100 | <int-e> | Oh SirSaul left. |
2020-11-05 12:48:38 +0100 | mdunnio_ | (~mdunnio@208.59.170.5) (Ping timeout: 264 seconds) |
2020-11-05 12:49:09 +0100 | <int-e> | tomjaguarpaw: I dropped the allusion to numerous indentation errors, but kept the outdated warning (since I didn't test any of the code) |
2020-11-05 12:49:16 +0100 | <tomjaguarpaw> | Great, thanks |
2020-11-05 12:52:33 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 12:59:53 +0100 | plutoniix | (~q@175.176.222.7) (Quit: Leaving) |
2020-11-05 13:00:01 +0100 | slewis | (~slewis@185.204.1.185) () |
2020-11-05 13:03:22 +0100 | <tomsmeding> | you can't pattern-match on a GADT without a type signature on the result, even if the result doesn't do anything with the existential types in the GADT? |
2020-11-05 13:04:45 +0100 | <tomsmeding> | ( https://paste.tomsmeding.com/h5VYeItr ) |
2020-11-05 13:09:19 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 13:09:37 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 13:10:14 +0100 | <dminuoso> | % :set -XGADTs |
2020-11-05 13:10:15 +0100 | <yahb> | dminuoso: |
2020-11-05 13:10:26 +0100 | <dminuoso> | % data G t where G1 :: T Int |
2020-11-05 13:10:26 +0100 | <yahb> | dminuoso: ; <interactive>:82:22: error: Not in scope: type constructor or class `T' |
2020-11-05 13:10:31 +0100 | <dminuoso> | % data G t where G1 :: G Int |
2020-11-05 13:10:32 +0100 | <yahb> | dminuoso: |
2020-11-05 13:10:37 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
2020-11-05 13:10:42 +0100 | <dminuoso> | % f g = case g of G1 -> True |
2020-11-05 13:10:42 +0100 | <yahb> | dminuoso: ; <interactive>:84:23: error:; * Couldn't match expected type `p' with actual type `Bool'; `p' is untouchable inside the constraints: t ~ Int bound by a pattern with constructor: G1 :: G Int, in a case alternative at <interactive>:84:17-18; `p' is a rigid type variable bound by; the inferred type of f :: G t -> p; at <interactive>:84:1-26; Possible fix: add a type |
2020-11-05 13:10:55 +0100 | kuribastard | (~user@ptr-25vy0i8ngykh0l4o8xc.18120a2.ip6.access.telenet.be) |
2020-11-05 13:11:11 +0100 | <dminuoso> | that seems strange |
2020-11-05 13:11:43 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2020-11-05 13:13:40 +0100 | <lortabac> | strangely, it compiles if you omit the argument type (with PartialTypeSignatures), but it doesn't if you omit the result |
2020-11-05 13:14:07 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2020-11-05 13:14:25 +0100 | <lortabac> | in other words the problem is not 'G t', but 'Bool' |
2020-11-05 13:15:51 +0100 | <ski> | % let f g = (case g of G1 -> True) :: Bool |
2020-11-05 13:15:51 +0100 | <yahb> | ski: |
2020-11-05 13:16:47 +0100 | urodna | (~urodna@unaffiliated/urodna) |
2020-11-05 13:17:31 +0100 | hackage | th-lego 0.2.3 - Template Haskell construction utilities https://hackage.haskell.org/package/th-lego-0.2.3 (NikitaVolkov) |
2020-11-05 13:18:52 +0100 | mmohammadi9812 | (~mmohammad@188.210.113.223) (Ping timeout: 272 seconds) |
2020-11-05 13:18:59 +0100 | fendor | (~fendor@178.115.129.187.wireless.dyn.drei.com) |
2020-11-05 13:18:59 +0100 | hpc | (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 256 seconds) |
2020-11-05 13:20:36 +0100 | <lortabac> | TBH I find it remarkable that GHC can at least preserve *some* type inference when using rank-n types, type families, GADTs etc. |
2020-11-05 13:20:37 +0100 | fendor_ | (~fendor@77.119.128.54.wireless.dyn.drei.com) (Ping timeout: 264 seconds) |
2020-11-05 13:20:40 +0100 | fendor__ | (~fendor@77.119.128.54.wireless.dyn.drei.com) (Ping timeout: 258 seconds) |
2020-11-05 13:20:50 +0100 | hpc | (~juzz@ip98-169-35-13.dc.dc.cox.net) |
2020-11-05 13:21:11 +0100 | dhouthoo | (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Read error: Connection reset by peer) |
2020-11-05 13:21:37 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2020-11-05 13:24:01 +0100 | hackage | ukrainian-phonetics-basic 0.1.8.0 - A library to work with the basic Ukrainian phonetics and syllable segmentation. https://hackage.haskell.org/package/ukrainian-phonetics-basic-0.1.8.0 (OleksandrZhabenko) |
2020-11-05 13:24:25 +0100 | <tomsmeding> | yes the fact that the problem is the Bool surprised me too |
2020-11-05 13:24:51 +0100 | <tomsmeding> | if it was the argument, I wouldn't have had trouble in my actual code because the 'g' argument would've had an inferred type from elsewhere |
2020-11-05 13:26:35 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
2020-11-05 13:26:53 +0100 | <tomsmeding> | (ah but in fact after I fixed something else the argument has an inferred type from elsewhere too, so I don't actually need a type signature. yay!) |
2020-11-05 13:27:00 +0100 | <tomsmeding> | s/argument/result/ |
2020-11-05 13:27:09 +0100 | <lortabac> | 'f :: G Int -> _; f G1 = True' typechecks |
2020-11-05 13:27:20 +0100 | <tomsmeding> | so it's the case? |
2020-11-05 13:27:23 +0100 | <lortabac> | it looks like it needs at least one of the two |
2020-11-05 13:27:48 +0100 | <lortabac> | yes I removed the case syntax here for brevity |
2020-11-05 13:27:49 +0100 | dmiles | (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 264 seconds) |
2020-11-05 13:28:14 +0100 | <tomsmeding> | oh it works because you put 'G Int' |
2020-11-05 13:28:20 +0100 | carlomagno | (~cararell@148.87.23.11) (Ping timeout: 258 seconds) |
2020-11-05 13:28:21 +0100 | <lortabac> | yes |
2020-11-05 13:29:07 +0100 | mmohammadi9812 | (~mmohammad@188.210.113.223) |
2020-11-05 13:30:30 +0100 | hackage | morpheus-graphql-core 0.16.0 - Morpheus GraphQL Core https://hackage.haskell.org/package/morpheus-graphql-core-0.16.0 (nalchevanidze) |
2020-11-05 13:31:31 +0100 | hackage | morpheus-graphql 0.16.0, morpheus-graphql-subscriptions 0.16.0, morpheus-graphql-client 0.16.0 (nalchevanidze) |
2020-11-05 13:32:56 +0100 | Rudd0 | (~Rudd0@185.189.115.108) (Ping timeout: 258 seconds) |
2020-11-05 13:34:56 +0100 | Sanchayan | (~Sanchayan@223.226.118.59) |
2020-11-05 13:35:26 +0100 | berberman | (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds) |
2020-11-05 13:36:01 +0100 | hackage | yaml-unscrambler 0.1 - Flexible declarative YAML parsing toolkit https://hackage.haskell.org/package/yaml-unscrambler-0.1 (NikitaVolkov) |
2020-11-05 13:36:28 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2020-11-05 13:38:24 +0100 | Entertainment | (~entertain@104.246.132.210) |
2020-11-05 13:39:01 +0100 | hackage | servant-swagger-ui 0.3.4.3.36.1 - Servant swagger ui https://hackage.haskell.org/package/servant-swagger-ui-0.3.4.3.36.1 (maksbotan) |
2020-11-05 13:40:31 +0100 | hackage | domain-core 0.1 - Low-level API of "domain" https://hackage.haskell.org/package/domain-core-0.1 (NikitaVolkov) |
2020-11-05 13:40:55 +0100 | asthasr | (~asthasr@162.210.29.120) |
2020-11-05 13:43:25 +0100 | bergsans | (~bergsans@c80-217-8-29.bredband.comhem.se) (Remote host closed the connection) |
2020-11-05 13:44:00 +0100 | hackage | yaml-unscrambler 0.1.0.1 - Flexible declarative YAML parsing toolkit https://hackage.haskell.org/package/yaml-unscrambler-0.1.0.1 (NikitaVolkov) |
2020-11-05 13:50:10 +0100 | knupfer | (~Thunderbi@200116b82c33ca00181e13fffead1b1e.dip.versatel-1u1.de) |
2020-11-05 13:50:11 +0100 | knupfer | (~Thunderbi@200116b82c33ca00181e13fffead1b1e.dip.versatel-1u1.de) (Client Quit) |
2020-11-05 13:50:24 +0100 | knupfer | (~Thunderbi@i59F7FF32.versanet.de) |
2020-11-05 13:50:29 +0100 | Eason0210 | (~user@101.85.10.81) |
2020-11-05 13:55:51 +0100 | ZeroZiat | (~ZeroZiat@192.30.89.67) |
2020-11-05 13:57:08 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-05 14:05:59 +0100 | apoc | (~apoc@bridge.mattzq.com) (Quit: WeeChat 2.8) |
2020-11-05 14:06:00 +0100 | mdunnio | (~mdunnio@208.59.170.5) |
2020-11-05 14:12:02 +0100 | texasmynsted | (~texasmyns@64.44.55.84) |
2020-11-05 14:15:17 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
2020-11-05 14:15:26 +0100 | mdunnio | (~mdunnio@208.59.170.5) (Ping timeout: 256 seconds) |
2020-11-05 14:15:56 +0100 | AlterEgo- | (~ladew@124-198-158-163.dynamic.caiway.nl) |
2020-11-05 14:16:40 +0100 | geekosaur | (82659a09@host154-009.vpn.uakron.edu) |
2020-11-05 14:18:07 +0100 | apoc | (~apoc@49.12.13.193) |
2020-11-05 14:22:04 +0100 | FreeBirdLjj | (~freebirdl@101.228.42.108) |
2020-11-05 14:23:13 +0100 | jakob_ | (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) |
2020-11-05 14:25:38 +0100 | bgamari_ | (~bgamari@72.65.102.116) |
2020-11-05 14:25:56 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
2020-11-05 14:26:17 +0100 | Alleria | (~AllahuAkb@zrcout.mskcc.org) |
2020-11-05 14:26:17 +0100 | bgamari | (~bgamari@2001:470:e438::1) (Ping timeout: 246 seconds) |
2020-11-05 14:26:40 +0100 | Alleria | Guest8524 |
2020-11-05 14:30:48 +0100 | Deide | (~Deide@217.155.19.23) |
2020-11-05 14:32:26 +0100 | ZeroZiat | (~ZeroZiat@192.30.89.67) (Remote host closed the connection) |
2020-11-05 14:33:31 +0100 | hackage | ukrainian-phonetics-basic 0.1.9.0 - A library to work with the basic Ukrainian phonetics and syllable segmentation. https://hackage.haskell.org/package/ukrainian-phonetics-basic-0.1.9.0 (OleksandrZhabenko) |
2020-11-05 14:43:16 +0100 | obihann | (~jhann@156.34.160.69) |
2020-11-05 14:44:01 +0100 | yinfeng | (~yinfeng@122.96.106.57) (Ping timeout: 264 seconds) |
2020-11-05 14:44:52 +0100 | yinfeng | (~yinfeng@58.212.52.57) |
2020-11-05 14:46:47 +0100 | obihann | (~jhann@156.34.160.69) (Client Quit) |
2020-11-05 14:47:12 +0100 | obihann | (~jhann@156.34.160.69) |
2020-11-05 14:47:12 +0100 | obihann | (~jhann@156.34.160.69) (Client Quit) |
2020-11-05 14:47:27 +0100 | timCF | (511495c6@198-149-20-81.sta.estpak.ee) |
2020-11-05 14:47:39 +0100 | obihann | (~jhann@156.34.160.69) |
2020-11-05 14:47:50 +0100 | lucasb | (uid333435@gateway/web/irccloud.com/x-sdppmllrnolsxyhi) |
2020-11-05 14:49:52 +0100 | timCF | (511495c6@198-149-20-81.sta.estpak.ee) (Remote host closed the connection) |
2020-11-05 14:51:00 +0100 | hackage | domain 0.1 - Codegen helping you define domain models https://hackage.haskell.org/package/domain-0.1 (NikitaVolkov) |
2020-11-05 14:53:37 +0100 | solonarv | (~solonarv@astrasbourg-653-1-263-62.w92-161.abo.wanadoo.fr) (Ping timeout: 256 seconds) |
2020-11-05 14:54:28 +0100 | Eason0210 | (~user@101.85.10.81) (Quit: ERC (IRC client for Emacs 28.0.50)) |
2020-11-05 15:02:32 +0100 | Schicko | (nicotymatr@gateway/shell/matrix.org/x-tpbzfbweaijhyvxh) |
2020-11-05 15:03:32 +0100 | jorj | (~jorj@162.220.240.216) (Quit: .) |
2020-11-05 15:03:51 +0100 | machinedgod | (~machinedg@142.169.78.227) |
2020-11-05 15:04:21 +0100 | MarcelineVQ | (~anja@198.254.202.72) |
2020-11-05 15:05:24 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-05 15:06:37 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) |
2020-11-05 15:07:31 +0100 | twopoint718 | (~cjw@fsf/member/twopoint718) |
2020-11-05 15:07:51 +0100 | T0pH4t | (~josh@c-73-53-48-224.hsd1.wa.comcast.net) (Quit: bye...) |
2020-11-05 15:07:52 +0100 | hyperisco | (~hyperisco@d192-186-117-226.static.comm.cgocable.net) |
2020-11-05 15:10:27 +0100 | whatisRT | (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) |
2020-11-05 15:10:52 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) (Client Quit) |
2020-11-05 15:11:46 +0100 | __monty__ | (~toonn@unaffiliated/toonn) (Quit: leaving) |
2020-11-05 15:15:32 +0100 | ClaudiusMaximus | (~claude@198.123.199.146.dyn.plus.net) |
2020-11-05 15:15:40 +0100 | ClaudiusMaximus | (~claude@198.123.199.146.dyn.plus.net) (Changing host) |
2020-11-05 15:15:40 +0100 | ClaudiusMaximus | (~claude@unaffiliated/claudiusmaximus) |
2020-11-05 15:17:44 +0100 | Schicko | (nicotymatr@gateway/shell/matrix.org/x-tpbzfbweaijhyvxh) ("User left") |
2020-11-05 15:19:50 +0100 | alp | (~alp@88.126.45.36) (Ping timeout: 264 seconds) |
2020-11-05 15:20:30 +0100 | alp | (~alp@88.126.45.36) |
2020-11-05 15:22:53 +0100 | PacoV | (~pcoves@16.194.31.93.rev.sfr.net) |
2020-11-05 15:22:57 +0100 | <PacoV> | Hi there. |
2020-11-05 15:24:34 +0100 | timCF | (511495c6@198-149-20-81.sta.estpak.ee) |
2020-11-05 15:24:49 +0100 | <PacoV> | I've written a static site generator with Hakyll that handles translations in templates thanks to a functionField. |
2020-11-05 15:25:19 +0100 | <PacoV> | The logic is simple : it takes two strings (language and the string to translate). |
2020-11-05 15:25:33 +0100 | <PacoV> | If a translation for the given language exists, it's returned. |
2020-11-05 15:25:41 +0100 | <PacoV> | Else, it keepd the original string. |
2020-11-05 15:26:10 +0100 | <PacoV> | My translations are in a map of maps (Map String (Map String Strin)). |
2020-11-05 15:26:42 +0100 | <PacoV> | I now want to store my translations in a yaml file, not hardcoded in the haskell code. |
2020-11-05 15:27:05 +0100 | <PacoV> | So, I'm looking for a way to parse that (Map String (Map String Strin)) from a yaml file. |
2020-11-05 15:27:28 +0100 | <timCF> | Hello! Are there any good libraries for multithreading communication? I'm trying to use STM/MVar but really struggle with `BlockedIndefinitelyOnMVar` and `BlockedIndefinitelyOnSTM` handling. It results from how Haskell runtime is counting references. The biggest issue here is that runtime kills both child and parent threads with async exceptions |
2020-11-05 15:27:28 +0100 | <timCF> | which are very annoying to handle |
2020-11-05 15:27:51 +0100 | <merijn> | timCF: The RTS doesn't use reference counting |
2020-11-05 15:28:02 +0100 | <PacoV> | I'm still a Haskell beginner and can't figure how to extract the content of the yaml file even using the yaml package. |
2020-11-05 15:28:21 +0100 | <merijn> | timCF: If you get those exceptions then the only thread that can access the MVar is blocking on the MVar (and thus can't ever wake up) |
2020-11-05 15:28:39 +0100 | <merijn> | timCF: So you have messed up your logic somewhere |
2020-11-05 15:29:23 +0100 | <PacoV> | Maybe the simple form of my question could be : do you have any working example of reading a (Map ) |
2020-11-05 15:29:27 +0100 | <merijn> | timCF: The runtime doesn't kill "both child and parent", because Haskell threads don't have such a thing as parent threads |
2020-11-05 15:29:36 +0100 | <PacoV> | Maybe the simple form of my question could be : do you have any working example of reading a (Map String String) from a Yaml file please? |
2020-11-05 15:29:58 +0100 | <merijn> | timCF: However, if the main thread exits the program stops, even if there are other threads still running |
2020-11-05 15:30:56 +0100 | <merijn> | timCF: You should probably tell us what you're doing and what you actually want, else we can only guess |
2020-11-05 15:31:03 +0100 | <timCF> | merijn it's valid situation in some cases. For example some sort of API socket subscriptions which is running in separate thread and is supposed to put value into TChan, but got disconnected, subscription process terminating, parent process considers deadlocked |
2020-11-05 15:31:08 +0100 | Cotillion | (~Cotillion@217.146.82.202) |
2020-11-05 15:31:24 +0100 | <merijn> | Well, yes |
2020-11-05 15:31:31 +0100 | <merijn> | That's because it is deadlocked |
2020-11-05 15:31:46 +0100 | <merijn> | Unless other threads also use the same TChan |
2020-11-05 15:33:16 +0100 | <timCF> | merijn I'm using `link` function from `Async` everywhere, to link parent and child processes, so I kinda have this category |
2020-11-05 15:33:34 +0100 | <merijn> | Well, if you don't want you parent to get killed...don't use link? |
2020-11-05 15:33:45 +0100 | <merijn> | Like...that's what link is for... |
2020-11-05 15:33:45 +0100 | timCF | (511495c6@198-149-20-81.sta.estpak.ee) (Remote host closed the connection) |
2020-11-05 15:34:00 +0100 | hackage | goldplate 0.1.2 - A lightweight golden test runner https://hackage.haskell.org/package/goldplate-0.1.2 (JasperVanDerJeugt) |
2020-11-05 15:38:17 +0100 | timCF | (511495c6@198-149-20-81.sta.estpak.ee) |
2020-11-05 15:39:27 +0100 | ystael | (~ystael@209.6.50.55) |
2020-11-05 15:40:52 +0100 | <PacoV> | Basically need to parse something like http://ix.io/2D7k as a (Map String (Map String String)). |
2020-11-05 15:41:08 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) |
2020-11-05 15:41:25 +0100 | geekosaur | (82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection) |
2020-11-05 15:42:36 +0100 | Ariakenom | (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) |
2020-11-05 15:47:00 +0100 | mdunnio | (~mdunnio@208.59.170.5) |
2020-11-05 15:47:24 +0100 | jollygood2 | (~bc8165ab@217.29.117.252) |
2020-11-05 15:47:31 +0100 | <jollygood2> | > splitOn [5] [1..10] |
2020-11-05 15:47:33 +0100 | <lambdabot> | [[1,2,3,4],[6,7,8,9,10]] |
2020-11-05 15:47:45 +0100 | <jollygood2> | is there something like this that will include separator in either list? |
2020-11-05 15:49:02 +0100 | <ski> | separator ? |
2020-11-05 15:49:16 +0100 | <ski> | hm |
2020-11-05 15:49:18 +0100 | <jollygood2> | 5 in the example above |
2020-11-05 15:50:04 +0100 | <int-e> | https://hackage.haskell.org/package/split-0.2.3.4/docs/Data-List-Split.html#v:onSublist |
2020-11-05 15:50:54 +0100 | <jollygood2> | close but not quite what I had in mind. f 5 [1..10] should give me [1,2,3,4,5] [6,7,8,9,10] |
2020-11-05 15:51:30 +0100 | timCF | (511495c6@198-149-20-81.sta.estpak.ee) (Remote host closed the connection) |
2020-11-05 15:51:47 +0100 | <jollygood2> | and f 3 [1,3,4,3,5] => [[1,3],[4,3],[5]] |
2020-11-05 15:52:49 +0100 | coot_ | (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) |
2020-11-05 15:53:39 +0100 | <ski> | > unfoldr (\xs0 -> guard (not (null xs0)) >> pure (let (ys,xs1) = break ('c' ==) xs0; (zs,xs2) = span ('c' ==) xs1 in (ys ++ zs,xs2))) "abacabadabacabaeabacabadabacabaf" |
2020-11-05 15:53:42 +0100 | <lambdabot> | ["abac","abadabac","abaeabac","abadabac","abaf"] |
2020-11-05 15:54:12 +0100 | pmikkelsen1 | (~pmikkelse@vps1.pmikkelsen.com) |
2020-11-05 15:54:13 +0100 | <ski> | > unfoldr (\xs0 -> guard (not (null xs0)) >> pure (let (ys,xs1) = break (3 ==) xs0; (zs,xs2) = span (3 ==) xs1 in (ys ++ zs,xs2))) [1,3,4,3,5] |
2020-11-05 15:54:15 +0100 | <lambdabot> | [[1,3],[4,3],[5]] |
2020-11-05 15:54:36 +0100 | coot | (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 256 seconds) |
2020-11-05 15:54:37 +0100 | coot_ | coot |
2020-11-05 15:56:29 +0100 | <jollygood2> | interesting |
2020-11-05 15:56:48 +0100 | pmikkelsen1 | (~pmikkelse@vps1.pmikkelsen.com) (Remote host closed the connection) |
2020-11-05 15:57:17 +0100 | <ski> | > let assoc = (fst &&& fst . snd) &&& snd . snd in unfoldr (\xs0 -> guard (not (null xs0)) >> (pure . first (uncurry (++)) . assoc) (span (3 ==) <$> break (3 ==) xs0)) [1,3,4,3,5] |
2020-11-05 15:57:19 +0100 | <lambdabot> | [[1,3],[4,3],[5]] |
2020-11-05 15:57:22 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Read error: Connection reset by peer) |
2020-11-05 16:00:02 +0100 | Cotillion | (~Cotillion@217.146.82.202) () |
2020-11-05 16:00:10 +0100 | kupi | (uid212005@gateway/web/irccloud.com/x-fvjiylahrovnfgof) |
2020-11-05 16:01:50 +0100 | alp | (~alp@88.126.45.36) (Ping timeout: 260 seconds) |
2020-11-05 16:01:52 +0100 | <jollygood2> | thanks for interesting solutions, but Data.List.Split can actually do this |
2020-11-05 16:01:55 +0100 | <jollygood2> | > split (keepDelimsR $ whenElt (==3)) [1,3,4,3,5] |
2020-11-05 16:01:58 +0100 | <lambdabot> | [[1,3],[4,3],[5]] |
2020-11-05 16:02:20 +0100 | <akegalj> | Hey guys. I just run onto article that says effect tracking is useless https://degoes.net/articles/no-effect-tracking . I am not sure has this been discussed in haskell community but I am not sure I understand the point he is making. In a similar way I find it would be beneficial to track exceptions - that way we can at least be sure we are at least handling all exceptions (and compiler can ensure that). |
2020-11-05 16:02:26 +0100 | <akegalj> | In short, what is your opinion about this and if this is already discussed somewhere from haskell community can you point me to it? |
2020-11-05 16:04:12 +0100 | benjamingr__ | (uid23465@gateway/web/irccloud.com/x-ifxghrbxkdgdxjip) |
2020-11-05 16:04:38 +0100 | sh9 | (~sh9@softbank060116136158.bbtec.net) (Ping timeout: 260 seconds) |
2020-11-05 16:06:23 +0100 | troydm | (~troydm@unaffiliated/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset) |
2020-11-05 16:06:30 +0100 | hackage | kubernetes-client-core 0.3.1.0 - Auto-generated kubernetes-client-core API Client https://hackage.haskell.org/package/kubernetes-client-core-0.3.1.0 (axeman) |
2020-11-05 16:07:07 +0100 | troydm | (~troydm@unaffiliated/troydm) |
2020-11-05 16:07:30 +0100 | hackage | kubernetes-client 0.3.1.0 - Client library for Kubernetes https://hackage.haskell.org/package/kubernetes-client-0.3.1.0 (axeman) |
2020-11-05 16:10:53 +0100 | dmiles | (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) |
2020-11-05 16:11:48 +0100 | pmikkelsen | (~pmikkelse@vps1.pmikkelsen.com) |
2020-11-05 16:14:05 +0100 | pmikkelsen | (~pmikkelse@vps1.pmikkelsen.com) (Read error: Connection reset by peer) |
2020-11-05 16:16:24 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 16:16:33 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 16:16:54 +0100 | whatisRT | (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) (Read error: Connection reset by peer) |
2020-11-05 16:20:20 +0100 | carlomagno | (~cararell@148.87.23.5) |
2020-11-05 16:21:34 +0100 | <ski> | akegalj : i would distinguish between "side-effects" and "effects". the poster correctly notes that e.g. `putStrLn :: String -> IO ()' doesn't have any side-effects, but i'd still claim that it has (`IO'-)effects. and that `IO' "tracks" effects (it's a very crude form a tracking, not fine-grained. also there's other types of effects, e.g. `Maybe',`[]',`Either e',`STM',`ST s',...) |
2020-11-05 16:22:56 +0100 | <hololeap_> | is there any way to turn `IO [a]` into `LogicT IO a`? |
2020-11-05 16:23:02 +0100 | hololeap_ | hololeap |
2020-11-05 16:27:16 +0100 | <hololeap> | % import System.Directory |
2020-11-05 16:27:16 +0100 | <yahb> | hololeap: |
2020-11-05 16:27:23 +0100 | <hololeap> | % :t \f -> fmap (concat . transpose) . traverse listDirectory >=> mapM_ f |
2020-11-05 16:27:23 +0100 | <yahb> | hololeap: (FilePath -> IO b) -> [FilePath] -> IO () |
2020-11-05 16:27:33 +0100 | <ski> | @type let oneOf = foldr ((<|>) . pure) empty in (oneOf =<<) . lift :: IO [a] -> LogicT IO a |
2020-11-05 16:27:34 +0100 | <lambdabot> | IO [a] -> LogicT IO a |
2020-11-05 16:29:26 +0100 | <hololeap> | i'm trying to do a breadth-first scan of a list of directories, and do some kind of IO action on each file, so a file structure like [a/a.txt |
2020-11-05 16:30:27 +0100 | <hololeap> | ["a/a.txt","a/b.txt","b/a.txt","c/a.txt"] would be processed in the order ["a/a.txt","b/a.txt","c/a.txt","a/b.txt"] |
2020-11-05 16:30:34 +0100 | knupfer | (~Thunderbi@i59F7FF32.versanet.de) (Quit: knupfer) |
2020-11-05 16:31:23 +0100 | <hololeap> | would LogicT be the way to go for this or should i just stick with lists, using transpose to get the order i'm looking for |
2020-11-05 16:31:33 +0100 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...) |
2020-11-05 16:31:57 +0100 | conal | (~conal@64.71.133.70) (Ping timeout: 258 seconds) |
2020-11-05 16:31:59 +0100 | <hololeap> | i'm still pretty unfamiliar with LogicT, so i might be reaching for it when it isn't necessary |
2020-11-05 16:33:25 +0100 | Amras | (~Amras@unaffiliated/amras0000) |
2020-11-05 16:34:31 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2020-11-05 16:36:32 +0100 | <ski> | akegalj : i agree that part of the power of `IO' (and other monads and idioms) is having effects be first-class values |
2020-11-05 16:37:17 +0100 | <ski> | @quote world's.best |
2020-11-05 16:37:17 +0100 | <lambdabot> | _pizza_ says: i think Haskell is undoubtedly the world's best programming language for discovering the first few dozen numbers in the Fibonacci sequence over IRC |
2020-11-05 16:37:45 +0100 | <ski> | @quote SPJ world's.best |
2020-11-05 16:37:45 +0100 | <lambdabot> | SPJ says: Haskell is the world's best imperative language. |
2020-11-05 16:38:00 +0100 | hackage | domain-optics 0.1 - Integration of domain with optics https://hackage.haskell.org/package/domain-optics-0.1 (NikitaVolkov) |
2020-11-05 16:39:02 +0100 | <ski> | part of the point of that quip is the first-classness. but another part, i'd argue, is that, because there's no side-effects, we can employ equational reasoning everywhere, commuting, duplicating and discarding, which wouldn't be valid in the presence of side-effects |
2020-11-05 16:39:59 +0100 | toorevitimirp | (~tooreviti@117.182.183.132) (Remote host closed the connection) |
2020-11-05 16:40:23 +0100 | mmohammadi9812 | (~mmohammad@188.210.113.223) (Ping timeout: 258 seconds) |
2020-11-05 16:42:11 +0100 | <ski> | re their point about already knowing what side-effects a procedure performs, if one knows what it's intended to do, i'd disagree. you could easily use a library-function that depends on some mutable state being set up to an appropriate, or some thread/process/service being started, and people do add such things to implementations without noting it in the interface |
2020-11-05 16:42:21 +0100 | Sgeo | (~Sgeo@ool-18b982ad.dyn.optonline.net) |
2020-11-05 16:42:56 +0100 | <akegalj> | ski: haha, I love quote thing :D Didn't know about that |
2020-11-05 16:43:55 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-11-05 16:44:22 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-05 16:44:38 +0100 | <ski> | so a compiler-enforced checking of what effects an operation could possibly do could be useful then. and having a tool (like compiler ior IDE) infer effects would sometimes not be enough, since we'd want to check expectations (at some interface level, the effects are private, can't leak, say) |
2020-11-05 16:45:15 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 16:45:40 +0100 | mimi_vx | (~mimi@tulipan.habr.nat.praha12.net) (Ping timeout: 246 seconds) |
2020-11-05 16:46:08 +0100 | <ski> | (still, `IO' is a very crude sort of tracking. all-or-nothing. no ability to dicern more specifically what kind of effects can occur. that can sometimes be a problem, yes) |
2020-11-05 16:46:48 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-11-05 16:47:32 +0100 | <ski> | also, i'd take issue with their "Effect-Tracked Java™", that it doesn't provide the same (reasoning) convenience as with the Haskell situation .. unless one adds some syntactic salt not only annotating the interfaces of operations, but also requiring each call to a side-effectful operation to be annotated in a way to highlight this |
2020-11-05 16:48:49 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds) |
2020-11-05 16:49:13 +0100 | <ski> | (Mercury is a language that has such a purity system, where impure (and semipure) calls must be annotated with syntactic salt `impure' and `semipure'. note that the purity system is primarily intended for FFI stuff, though. there's a separate `io' system, which is similar to the `World' that is uniquely passed around in Clean, and still also somewhat (albeit less) similar to `IO' in Haskell) |
2020-11-05 16:50:06 +0100 | <ski> | the point is that, without some such syntactic salt, you'll have to look up the interface of called operations, to check whether they may have side-effects. rather than seeing it directly there, in the source |
2020-11-05 16:50:52 +0100 | <ski> | (with IDE support, this could be less of an issue. but then there's a separate argument that perhaps it's a good thing to not have to rely on an IDE .. this can be discussed forward and back) |
2020-11-05 16:51:55 +0100 | <ski> | with such syntactic salt, you'll be alerted when you're interchanging the order of two side-effecting operations, or duplicating/factoring one, or discarding one, that the effects expressed might not be the same |
2020-11-05 16:52:09 +0100 | berberman | (~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in) |
2020-11-05 16:52:21 +0100 | mmohammadi9812 | (~mmohammad@188.210.99.150) |
2020-11-05 16:52:39 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2020-11-05 16:52:52 +0100 | <ski> | btw, note that Java does track exceptions (in a fine-grained manner). exceptions are another kind of side-effect |
2020-11-05 16:53:41 +0100 | <akegalj> | how does java track exceptions? |
2020-11-05 16:53:45 +0100 | <ski> | (it's also debatable whether the fine-grained tracking is good or not. note that the `IO' exceptions in Haskell are not tracked in fine-grained way) |
2020-11-05 16:53:57 +0100 | <ski> | `throws' clause attached to method signatures |
2020-11-05 16:53:58 +0100 | <merijn> | ski: Which was a massive mistake >.> |
2020-11-05 16:54:05 +0100 | <ski> | merijn : which ? |
2020-11-05 16:54:13 +0100 | <merijn> | unchecked exceptions in Haskell |
2020-11-05 16:54:54 +0100 | veverak | [[[]]] |
2020-11-05 16:55:29 +0100 | wltjr1 | (~wltjr@84.39.116.180) |
2020-11-05 16:55:32 +0100 | <ski> | in Haskell, the `<$>' in e.g. `reverse <$> getLine' is comparable to the aforementioned syntactic salt |
2020-11-05 16:55:48 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-05 16:57:00 +0100 | <ski> | (here, one can argue, that it would be better to annotate just the specific effectful calls, rather than the path down to them in the AST. i have experimented a little with some ideas for a "effect reflection syntax" that would address this) |
2020-11-05 16:57:18 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) |
2020-11-05 16:58:37 +0100 | <akegalj> | ski: you are right, I forgot that java tracks exceptions https://docs.oracle.com/javase/tutorial/essential/exceptions/declaring.html |
2020-11-05 16:58:49 +0100 | kaychaks | (sid236345@gateway/web/irccloud.com/x-tofmstsbickuunjr) |
2020-11-05 16:59:28 +0100 | <ski> | akegalj : still, interesting, thought-provoking, blag |
2020-11-05 17:00:04 +0100 | <akegalj> | ski: yes, thanks for your input. It was interesting read |
2020-11-05 17:00:06 +0100 | GuillaumeChrel[m | (guillaumec@gateway/shell/matrix.org/x-yyvevfplzzioqnuc) (Quit: Idle for 30+ days) |
2020-11-05 17:00:06 +0100 | tttom[m] | (tttommatri@gateway/shell/matrix.org/x-odejmlhnpwjjtcrh) (Quit: Idle for 30+ days) |
2020-11-05 17:00:06 +0100 | jiribenes1 | (jbjiribene@gateway/shell/matrix.org/x-bgfmaawtdxevtslk) (Quit: Idle for 30+ days) |
2020-11-05 17:00:06 +0100 | ethercrow[m] | (ethercrowm@gateway/shell/matrix.org/x-fwdkmrqysffhdlhg) (Quit: Idle for 30+ days) |
2020-11-05 17:00:06 +0100 | albestro[m] | (albestroma@gateway/shell/matrix.org/x-qdbcqirfearydihj) (Quit: Idle for 30+ days) |
2020-11-05 17:00:44 +0100 | Rudd0 | (~Rudd0@185.189.115.103) |
2020-11-05 17:01:32 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone) |
2020-11-05 17:01:53 +0100 | <ski> | akegalj : anyway .. to repeat, the author doesn't appear to make the distinction between "effect" and "side-effect". it's this distinction (present in the implementation code, not just in interfaces) that enables one to tell that one can use powerful equational reasoning & refactoring in the former case, and less powerful such in the latter case |
2020-11-05 17:04:08 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-11-05 17:04:10 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-05 17:04:13 +0100 | <ski> | if you have `do x <- foo; y <- bar; frob x y', in `ST s', say, and you happen to know that the state that `foo' interacts with is independent of the state that `bar' interacts with, then you can of course refactor this to `do y <- bar; x <- foo; frob x y'. but this independence is not tracked (no fine-grained state tracking) |
2020-11-05 17:04:15 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 17:04:22 +0100 | twopoint718 | (~cjw@fsf/member/twopoint718) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-05 17:04:50 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2020-11-05 17:06:07 +0100 | <ski> | in some monads or idioms, you may know that their effects are discardable, so that if you don't use the result of an action, then the action may be omitted. or perhaps you know that all effects commute, or possibly that they're duplicable (presumably some caching is going on, then) |
2020-11-05 17:07:21 +0100 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) |
2020-11-05 17:08:12 +0100 | <ski> | in Mercury, semipure predicate calls commutes with each other (and are also discardable and duplicable, iirc), but doesn't commute with impure ones. semipure ones may e.g. read some mutable state, but may not change it |
2020-11-05 17:10:11 +0100 | <akegalj> | goes to look at Mercury... |
2020-11-05 17:10:45 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
2020-11-05 17:11:25 +0100 | <akegalj> | ski: hm, thats interesting distinction between pure and semipure |
2020-11-05 17:11:38 +0100 | <ski> | (<https://www.mercurylang.org/information/doc-latest/mercury_ref/Impurity.html> is the relevant manual section on that. also see " Using impurity to create declarative interfaces in Mercury" by Tyson Dowd,Peter Schachte,Fergus Henderson,Zoltan Somogyi in 2000-04 at <https://www.mercurylang.org/documentation/papers.html#purity>) |
2020-11-05 17:12:02 +0100 | mimi_vx | (~mimi@2a01:490:16:1026:9892:f269:767a:6ad7) |
2020-11-05 17:13:55 +0100 | mimi1vx | (~mimi@tulipan.habr.nat.praha12.net) |
2020-11-05 17:14:01 +0100 | machinedgod | (~machinedg@142.169.78.227) (Ping timeout: 246 seconds) |
2020-11-05 17:15:13 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-05 17:15:30 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) |
2020-11-05 17:16:10 +0100 | <akegalj> | ski: that's enough info atm. I have to groak this info and think about it for a while to form some opinion. Thanks a lot for references and all input <3 . *akegalj* Goes for a walk to reflect |
2020-11-05 17:16:12 +0100 | machinedgod | (~machinedg@207.253.244.210) |
2020-11-05 17:16:16 +0100 | hnOsmium0001 | (uid453710@gateway/web/irccloud.com/x-yyqyliwcbydyqmwb) |
2020-11-05 17:16:53 +0100 | mimi_vx | (~mimi@2a01:490:16:1026:9892:f269:767a:6ad7) (Ping timeout: 272 seconds) |
2020-11-05 17:17:31 +0100 | hackage | generic-data 0.9.2.0 - Deriving instances with GHC.Generics and related utilities https://hackage.haskell.org/package/generic-data-0.9.2.0 (lyxia) |
2020-11-05 17:18:00 +0100 | <hololeap> | is there a way to merge two `ConduitT () o m ()` streams, so that they will yield `o`s in the same temporal order that they are produced in both streams? |
2020-11-05 17:18:36 +0100 | <hololeap> | e.g. writing stdout and stderr to the same file, in the order that each meassage is produced |
2020-11-05 17:18:47 +0100 | <hololeap> | s/message/line of text/ |
2020-11-05 17:18:48 +0100 | ClaudiusMaximus | (~claude@unaffiliated/claudiusmaximus) (Read error: Connection reset by peer) |
2020-11-05 17:19:32 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 17:19:41 +0100 | <merijn> | hololeap: That...is not a sensical question :) |
2020-11-05 17:19:55 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
2020-11-05 17:20:02 +0100 | <merijn> | hololeap: because conduit produces a sequential loop |
2020-11-05 17:20:16 +0100 | <merijn> | hololeap: There is no "temporal order" |
2020-11-05 17:20:32 +0100 | <hololeap> | ok, that's kind of what i was afraid of |
2020-11-05 17:20:33 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-05 17:20:55 +0100 | <merijn> | hololeap: If you run the two conduits and dump them into a channel, then you can have another conduit reading from the channel |
2020-11-05 17:21:41 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
2020-11-05 17:21:52 +0100 | <merijn> | hololeap: What are the original streams? |
2020-11-05 17:22:11 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) |
2020-11-05 17:22:24 +0100 | enva2712 | (~enva2712@cpe-75-86-42-2.wi.res.rr.com) |
2020-11-05 17:22:43 +0100 | twopoint718 | (~cjw@fsf/member/twopoint718) |
2020-11-05 17:22:49 +0100 | <hololeap> | the stdout and stderr streams shown here: https://hackage.haskell.org/package/conduit-extra-1.3.5/docs/Data-Conduit-Process.html#v:sourcePro… |
2020-11-05 17:22:58 +0100 | stef204 | (~stef204@unaffiliated/stef-204/x-384198) |
2020-11-05 17:23:23 +0100 | <merijn> | Yeah, you'll have to handle those in separate threads |
2020-11-05 17:24:18 +0100 | <hololeap> | (yeah my original question was messed up) |
2020-11-05 17:24:31 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-05 17:24:35 +0100 | <hololeap> | but, that's a good idea merijn, and i should be able to make it work |
2020-11-05 17:27:15 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-05 17:27:38 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Client Quit) |
2020-11-05 17:29:52 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 17:30:18 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 17:32:43 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 17:32:57 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 17:33:16 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 256 seconds) |
2020-11-05 17:35:24 +0100 | enva2712 | (~enva2712@cpe-75-86-42-2.wi.res.rr.com) (Quit: leaving) |
2020-11-05 17:37:45 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 17:38:04 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 17:38:25 +0100 | borne | (~fritjof@200116b8643b36005d0cb1433c5d4cbb.dip.versatel-1u1.de) (Ping timeout: 272 seconds) |
2020-11-05 17:39:08 +0100 | borne | (~fritjof@200116b8643b3600e0b7c534f6e7b66f.dip.versatel-1u1.de) |
2020-11-05 17:39:33 +0100 | Chi1thangoo | (~Chi1thang@87.112.60.168) |
2020-11-05 17:41:39 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 17:42:09 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 17:44:28 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection) |
2020-11-05 17:44:29 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 17:45:02 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 17:47:10 +0100 | u0_a298 | (~user@47.206.148.226) (Remote host closed the connection) |
2020-11-05 17:47:28 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 17:47:47 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) |
2020-11-05 17:49:23 +0100 | Sanchayan | (~Sanchayan@223.226.118.59) (Quit: leaving) |
2020-11-05 17:50:21 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
2020-11-05 17:50:50 +0100 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
2020-11-05 17:51:45 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-11-05 17:51:53 +0100 | jff | (~Thunderbi@a109-49-149-2.cpe.netcabo.pt) |
2020-11-05 17:51:56 +0100 | alp | (~alp@88.126.45.36) |
2020-11-05 17:54:05 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 17:54:34 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 17:56:40 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 17:57:17 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 17:59:26 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 17:59:58 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 18:02:05 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 18:02:32 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 18:03:00 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2020-11-05 18:04:40 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-11-05 18:05:05 +0100 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection) |
2020-11-05 18:05:17 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 18:06:02 +0100 | acidjnk_new2 | (~acidjnk@p200300d0c718f6890d36626cfb994f1d.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2020-11-05 18:06:15 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2020-11-05 18:07:00 +0100 | FreeBirdLjj | (~freebirdl@101.228.42.108) (Remote host closed the connection) |
2020-11-05 18:07:35 +0100 | FreeBirdLjj | (~freebirdl@101.228.42.108) |
2020-11-05 18:10:14 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2020-11-05 18:11:48 +0100 | FreeBirdLjj | (~freebirdl@101.228.42.108) (Ping timeout: 256 seconds) |
2020-11-05 18:12:23 +0100 | avdb | (~avdb@ip-83-134-202-8.dsl.scarlet.be) (Read error: Connection reset by peer) |
2020-11-05 18:12:45 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2020-11-05 18:12:49 +0100 | avdb | (~avdb@ip-83-134-202-8.dsl.scarlet.be) |
2020-11-05 18:14:44 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-05 18:15:00 +0100 | hackage | hevm 0.42.0 - Ethereum virtual machine evaluator https://hackage.haskell.org/package/hevm-0.42.0 (MrChico) |
2020-11-05 18:18:49 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-05 18:19:24 +0100 | shutdown_-h_now | (~arjan@2001:1c06:2d0b:2312:955d:b3db:6b4c:c2ab) (Ping timeout: 240 seconds) |
2020-11-05 18:25:36 +0100 | shutdown_-h_now | (~arjan@2001:1c06:2d0b:2312:95b6:c7bf:d0d6:b6df) |
2020-11-05 18:25:38 +0100 | justan0theruser | (~justanoth@unaffiliated/justanotheruser) |
2020-11-05 18:27:09 +0100 | Ariakenom | (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) (Remote host closed the connection) |
2020-11-05 18:27:31 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 18:27:38 +0100 | Ariakenom | (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) |
2020-11-05 18:27:44 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 244 seconds) |
2020-11-05 18:28:03 +0100 | CodeAlways | (uid272474@gateway/web/irccloud.com/x-ydthmisqrovakaks) (Quit: Connection closed for inactivity) |
2020-11-05 18:30:58 +0100 | evanjs | (~evanjs@075-129-188-019.res.spectrum.com) (Quit: ZNC 1.8.2 - https://znc.in) |
2020-11-05 18:32:11 +0100 | Gurkenglas__ | (~Gurkengla@unaffiliated/gurkenglas) |
2020-11-05 18:33:10 +0100 | evanjs | (~evanjs@075-129-188-019.res.spectrum.com) |
2020-11-05 18:33:50 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
2020-11-05 18:36:01 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-05 18:38:28 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-11-05 18:38:58 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 18:40:08 +0100 | Ariakenom | (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) (Quit: Leaving) |
2020-11-05 18:42:21 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 18:42:47 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 18:43:18 +0100 | alp | (~alp@88.126.45.36) (Ping timeout: 260 seconds) |
2020-11-05 18:43:19 +0100 | Ariakenom | (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) |
2020-11-05 18:43:50 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2020-11-05 18:45:10 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 260 seconds) |
2020-11-05 18:45:22 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-05 18:46:46 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:7cc2:21a2:16c3:f6f6) |
2020-11-05 18:48:48 +0100 | roconnor | (~roconnor@host-192.252-162-14.dyn.295.ca) (Ping timeout: 258 seconds) |
2020-11-05 18:48:59 +0100 | o1lo01ol1o | (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
2020-11-05 18:49:28 +0100 | nados | (~dan@69-165-210-185.cable.teksavvy.com) (Ping timeout: 272 seconds) |
2020-11-05 18:50:05 +0100 | Techcable | (znc@irc.techcable.net) (Quit: ZNC - http://znc.in) |
2020-11-05 18:50:54 +0100 | Techcable | (znc@irc.techcable.net) |
2020-11-05 18:53:42 +0100 | ransom | (c4264035@gateway/vpn/protonvpn/c4264035) |
2020-11-05 18:54:37 +0100 | roconnor | (~roconnor@host-192.252-162-14.dyn.295.ca) |
2020-11-05 18:56:49 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-05 18:57:49 +0100 | kuribastard | (~user@ptr-25vy0i8ngykh0l4o8xc.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
2020-11-05 19:00:01 +0100 | wltjr1 | (~wltjr@84.39.116.180) () |
2020-11-05 19:01:15 +0100 | conal | (~conal@64.71.133.70) |
2020-11-05 19:04:04 +0100 | howdoi | (uid224@gateway/web/irccloud.com/x-pkptafzrpfqhbpar) |
2020-11-05 19:07:20 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) () |
2020-11-05 19:10:06 +0100 | hidedagger | (~nate@125.161.131.218) |
2020-11-05 19:10:07 +0100 | shailangsa | (~shailangs@host86-186-133-58.range86-186.btcentralplus.com) |
2020-11-05 19:10:34 +0100 | solonarv | (~solonarv@astrasbourg-653-1-263-62.w92-161.abo.wanadoo.fr) |
2020-11-05 19:11:32 +0100 | knupfer | (~Thunderbi@200116b82c33ca00a8fb0b764d84b823.dip.versatel-1u1.de) |
2020-11-05 19:14:43 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 19:14:54 +0100 | chele | (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2020-11-05 19:15:51 +0100 | DavidEichmann | (~david@43.240.198.146.dyn.plus.net) (Remote host closed the connection) |
2020-11-05 19:17:54 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 19:17:54 +0100 | conal | (~conal@64.71.133.70) (Read error: Connection reset by peer) |
2020-11-05 19:18:11 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 19:18:19 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 19:21:37 +0100 | conal | (~conal@64.71.133.70) |
2020-11-05 19:21:46 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
2020-11-05 19:23:54 +0100 | u0_a298 | (~user@47.206.148.226) (Remote host closed the connection) |
2020-11-05 19:24:15 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 19:26:01 +0100 | hackage | prolude 0.0.0.6 - ITProTV's custom prelude https://hackage.haskell.org/package/prolude-0.0.0.6 (saramuse) |
2020-11-05 19:26:01 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) |
2020-11-05 19:26:14 +0100 | machinedgod | (~machinedg@207.253.244.210) (Ping timeout: 260 seconds) |
2020-11-05 19:26:38 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2020-11-05 19:26:44 +0100 | alp | (~alp@2a01:e0a:58b:4920:d896:803c:c09a:1a05) |
2020-11-05 19:28:04 +0100 | machinedgod | (~machinedg@142.169.78.93) |
2020-11-05 19:31:57 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 19:34:35 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-11-05 19:37:31 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 19:38:05 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 19:39:23 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2020-11-05 19:41:12 +0100 | N3RGY | (~N3RGY@65.141.87.122) |
2020-11-05 19:41:41 +0100 | chaosmasttter | (~chaosmast@p200300c4a7117c01e8fd3775638e9554.dip0.t-ipconnect.de) |
2020-11-05 19:42:55 +0100 | <tomjaguarpaw> | Is there a Haskell hashing library where I can take the hash of two hashes and have it produce something sensible? hashable (Data.Hashable) has results that are ... interesting |
2020-11-05 19:44:12 +0100 | <opqdonut> | usually one xors hashes together to combine them |
2020-11-05 19:44:30 +0100 | <opqdonut> | googling turns up https://hackage.haskell.org/package/data-hash-0.2.0.1/docs/Data-Hash.html |
2020-11-05 19:44:36 +0100 | <opqdonut> | with a combine :: Hash -> Hash -> Hash |
2020-11-05 19:44:57 +0100 | <opqdonut> | I hope you don't need cryptographic hashing? |
2020-11-05 19:45:58 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-05 19:47:01 +0100 | hackage | base16-bytestring 1.0.1.0 - RFC 4648-compliant Base16 encodings for ByteStrings https://hackage.haskell.org/package/base16-bytestring-1.0.1.0 (topos) |
2020-11-05 19:47:19 +0100 | <tomjaguarpaw> | opqdonut: Indeed, no need for cryptographic |
2020-11-05 19:47:48 +0100 | <tomjaguarpaw> | I was a little wary of that library since it hasn't been updated in 5 years. Maybe it's OK. |
2020-11-05 19:48:00 +0100 | hackage | persistent 2.11.0.1 - Type-safe, multi-backend data serialization. https://hackage.haskell.org/package/persistent-2.11.0.1 (parsonsmatt) |
2020-11-05 19:49:13 +0100 | akegalj | (~akegalj@93-142-95-221.adsl.net.t-com.hr) (Quit: leaving) |
2020-11-05 19:49:25 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Ping timeout: 264 seconds) |
2020-11-05 19:49:43 +0100 | <tomjaguarpaw> | Hmm, combining by rotate and xor doesn't sound very safe |
2020-11-05 19:50:16 +0100 | <tomjaguarpaw> | I would like 1 `combine` 2 not to collide with 0, for example |
2020-11-05 19:50:39 +0100 | <tomjaguarpaw> | But maybe it it's post-hashing it's Ok |
2020-11-05 19:51:08 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-05 19:51:13 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2020-11-05 19:52:22 +0100 | <sm[m]> | maralorn: https://shakebuild.com/faq#why-is-there-a-shake-executable is related |
2020-11-05 19:52:44 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-05 19:54:25 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds) |
2020-11-05 19:54:55 +0100 | untwisted | (~untwisted@84.39.116.180) |
2020-11-05 19:57:12 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 19:59:45 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 20:00:01 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 20:00:17 +0100 | alp | (~alp@2a01:e0a:58b:4920:d896:803c:c09a:1a05) (Ping timeout: 272 seconds) |
2020-11-05 20:01:13 +0100 | <maralorn> | sm: Thank you. The reason was simply that I needed to call it Shakefile.hs with capital S. |
2020-11-05 20:02:38 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2020-11-05 20:03:27 +0100 | berberman | (~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds) |
2020-11-05 20:03:29 +0100 | <maralorn> | I wish there were something like "shake watch" |
2020-11-05 20:03:39 +0100 | berberman_ | (~berberman@unaffiliated/berberman) |
2020-11-05 20:03:42 +0100 | <maralorn> | * I wish there was something like "shake watch" |
2020-11-05 20:04:14 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2020-11-05 20:05:44 +0100 | conal | (~conal@64.71.133.70) |
2020-11-05 20:07:22 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 20:08:39 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal) |
2020-11-05 20:11:27 +0100 | <monochrom> | "were" is OK. Actually more proper IMO :) |
2020-11-05 20:12:44 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-11-05 20:13:09 +0100 | N3RGY | (~N3RGY@65.141.87.122) () |
2020-11-05 20:14:56 +0100 | <tomsmeding> | yay subjunctive |
2020-11-05 20:15:42 +0100 | <tomsmeding> | @quickcheck \i -> hash (i :: Int) == i |
2020-11-05 20:15:42 +0100 | <lambdabot> | Unknown command, try @list |
2020-11-05 20:15:49 +0100 | <tomsmeding> | @check \i -> hash (i :: Int) == i |
2020-11-05 20:15:51 +0100 | <lambdabot> | error: |
2020-11-05 20:15:51 +0100 | <lambdabot> | • Variable not in scope: hash :: Int -> Int • Perhaps you meant ‘has’ (impor... |
2020-11-05 20:16:00 +0100 | <tomsmeding> | @check \i -> Data.Hashable.hash (i :: Int) == i |
2020-11-05 20:16:02 +0100 | <lambdabot> | error: |
2020-11-05 20:16:02 +0100 | <lambdabot> | Not in scope: ‘Data.Hashable.hash’ No module named ‘Data.Hashable’ is imported. |
2020-11-05 20:16:27 +0100 | <tomsmeding> | okay fine, but tomjaguarpaw this succeeds locally, which explains kind of why combining that with an xor doesn't work :p |
2020-11-05 20:16:56 +0100 | <sm[m]> | maralorn: I do ls FILES | entr SHAKECMD |
2020-11-05 20:17:31 +0100 | <maralorn> | sm: I do, too. |
2020-11-05 20:19:02 +0100 | <sm[m]> | you're right, it does seem like a feature that could be built in, I actually thought it was |
2020-11-05 20:19:21 +0100 | nados | (~dan@69-165-210-185.cable.teksavvy.com) |
2020-11-05 20:20:46 +0100 | Tario | (~Tario@198.252.153.28) |
2020-11-05 20:21:11 +0100 | conal | (~conal@64.71.133.70) (Ping timeout: 258 seconds) |
2020-11-05 20:21:11 +0100 | <tomjaguarpaw> | opqdonut: FWIW Data.Hash also has the property that I am trying to avoid, specifically: |
2020-11-05 20:21:14 +0100 | <tomjaguarpaw> | *Hash H> let h x y = (H.hash (x :: Int) `H.combine` (H.hash x `H.combine` H.hash (y :: Int)), H.hash y) |
2020-11-05 20:21:17 +0100 | <tomjaguarpaw> | *Hash H> h 123 45657 |
2020-11-05 20:21:20 +0100 | <tomjaguarpaw> | (Hash {asWord64 = 16277888606689116690},Hash {asWord64 = 16277888606689116690}) |
2020-11-05 20:21:24 +0100 | <tomjaguarpaw> | x `combine` x `combine` y == y |
2020-11-05 20:21:38 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-05 20:21:45 +0100 | <tomjaguarpaw> | I'm at a loss about how to avoid this. It seems to make compositional hashing of trees impossible. |
2020-11-05 20:23:38 +0100 | jespada | (~jespada@90.254.245.49) (Ping timeout: 260 seconds) |
2020-11-05 20:24:44 +0100 | jfredett_ | (~quassel@95.211.153.89) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
2020-11-05 20:24:55 +0100 | conal | (~conal@107.181.166.217) |
2020-11-05 20:25:28 +0100 | jfredett | (~quassel@95.211.153.89) |
2020-11-05 20:25:42 +0100 | vicfred | (~vicfred@unaffiliated/vicfred) |
2020-11-05 20:25:54 +0100 | jespada | (~jespada@90.254.245.49) |
2020-11-05 20:26:18 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) |
2020-11-05 20:26:43 +0100 | <tomsmeding> | @let wangHash = (\x -> x `xor` (x `rotateR` 16)) . (\x -> x * 2057) . (\x -> x `xor` (x `rotateR` 4)) . (\x -> x + (x `shiftL` 2)) . (\x -> x `xor` (x `rotateR` 12)) . (\x -> complement x + (x `shiftL` 15)) |
2020-11-05 20:26:44 +0100 | <tomjaguarpaw> | Python's hash has the property I desire. I'm not sure what the algorithm is though. |
2020-11-05 20:26:44 +0100 | <lambdabot> | Defined. |
2020-11-05 20:27:01 +0100 | <tomsmeding> | > wangHash 123 `xor` (wangHash 123 `xor` wangHash 45657) |
2020-11-05 20:27:03 +0100 | <lambdabot> | 14571355508018 |
2020-11-05 20:27:19 +0100 | <tomsmeding> | http://www.reedbeta.com/blog/quick-and-easy-gpu-random-numbers-in-d3d11/ |
2020-11-05 20:27:19 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2020-11-05 20:27:25 +0100 | <tomjaguarpaw> | > wangHash 123 `xor` (wangHash 123 `xor` wangHash 123) |
2020-11-05 20:27:27 +0100 | <lambdabot> | 38872050059 |
2020-11-05 20:27:32 +0100 | <tomjaguarpaw> | > wangHash 123 |
2020-11-05 20:27:34 +0100 | <lambdabot> | 38872050059 |
2020-11-05 20:27:37 +0100 | <tomjaguarpaw> | Still not idea |
2020-11-05 20:27:39 +0100 | <tomjaguarpaw> | l |
2020-11-05 20:27:39 +0100 | <tomsmeding> | o |
2020-11-05 20:28:25 +0100 | <tomsmeding> | well |
2020-11-05 20:28:28 +0100 | <tomsmeding> | that's kind of expected |
2020-11-05 20:28:39 +0100 | <tomsmeding> | @check \i -> i `xor` i == 0 |
2020-11-05 20:28:39 +0100 | <tomjaguarpaw> | Yes, if xor is the combiner |
2020-11-05 20:28:40 +0100 | <lambdabot> | +++ OK, passed 100 tests. |
2020-11-05 20:28:50 +0100 | twopoint718 | (~cjw@fsf/member/twopoint718) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-05 20:29:22 +0100 | <tomsmeding> | so let combine x y = hash (x `xor` permute y) |
2020-11-05 20:29:29 +0100 | <tomsmeding> | merkle trees? |
2020-11-05 20:29:35 +0100 | arampa | (5e454e4c@94.69.78.76) |
2020-11-05 20:29:48 +0100 | <tomjaguarpaw> | Well, I am basically trying to implement a merkle tree. |
2020-11-05 20:29:55 +0100 | <tomjaguarpaw> | The question is what hash algorithm I should use. |
2020-11-05 20:30:03 +0100 | <tomjaguarpaw> | They seem to use one called "tiger hash" |
2020-11-05 20:30:34 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 256 seconds) |
2020-11-05 20:31:51 +0100 | <tomsmeding> | is this not basically asking how to construct a hash that takes arbitrary-length input from one that takes fixed-length input? |
2020-11-05 20:32:39 +0100 | <tomjaguarpaw> | No, it's fixed length plus nesting |
2020-11-05 20:32:53 +0100 | <tomjaguarpaw> | *arbitrary length plus arbitrary nesting |
2020-11-05 20:33:10 +0100 | <tomjaguarpaw> | Well, the arbitrary length is a good start, but has other mitigations |
2020-11-05 20:33:56 +0100 | <tomsmeding> | if you can hash two blocks of data into one block of data, you can trivially hash arbitrary-length data, right? |
2020-11-05 20:34:17 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 20:34:32 +0100 | <tomsmeding> | from that perspective, being able to combine two hashes is ~equivalent to being able to handle arbitrary-length data |
2020-11-05 20:35:00 +0100 | aarvar | (~foewfoiew@c.24.56.239.179.static.broadstripe.net) |
2020-11-05 20:35:03 +0100 | ransom_ | (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
2020-11-05 20:35:06 +0100 | aarvar | (~foewfoiew@c.24.56.239.179.static.broadstripe.net) () |
2020-11-05 20:35:06 +0100 | <tomjaguarpaw> | I don't think it's so simple in the presence of the property x `combine` x `combine` y == y |
2020-11-05 20:35:25 +0100 | jfredett | (~quassel@95.211.153.89) (Ping timeout: 265 seconds) |
2020-11-05 20:35:27 +0100 | <tomjaguarpaw> | The Data.Hashable [a] instance also tracks the length of the list for this reason |
2020-11-05 20:35:29 +0100 | <tomsmeding> | well you also wouldn't want [x, x, y] to hash to the same as [y] |
2020-11-05 20:35:37 +0100 | <tomsmeding> | right |
2020-11-05 20:35:37 +0100 | <tomjaguarpaw> | Correct |
2020-11-05 20:35:48 +0100 | <tomjaguarpaw> | So Data.Hashable lacks some desirable property |
2020-11-05 20:36:10 +0100 | <int-e> | well, (x `combine` x) `combine` y would be kind of okay |
2020-11-05 20:36:24 +0100 | <int-e> | with that particular definition |
2020-11-05 20:36:45 +0100 | ransom | (c4264035@gateway/vpn/protonvpn/c4264035) (Ping timeout: 240 seconds) |
2020-11-05 20:37:37 +0100 | int-e | wonders how terrible combine x y = 3*x `xor` 5*y would be, for non-adverserial purposes of course. |
2020-11-05 20:37:58 +0100 | <tomsmeding> | tomjaguarpaw: I see you say that Python's hash works for you; how do you define 'combine' there? |
2020-11-05 20:38:27 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2020-11-05 20:39:05 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2020-11-05 20:39:06 +0100 | <tomsmeding> | I do believe that something of the form of 'combine x y = (x `rotateL` 15) `xor` (y `rotateR` 2)' is quite usual |
2020-11-05 20:39:31 +0100 | <arampa> | hi, noob question regarding an assignment: I have a custom data type which represents intervals of Int numbers (e.g., (3,5)) and a function which takes a list and generates an interval based on the values of that list. I get the following error: <interactive>:431:1: error: • Ambiguous type variable ‘a0’ arising from a use of ‘print’ |
2020-11-05 20:39:31 +0100 | <arampa> | prevents the constraint ‘(Show a0)’ from being solved. Probable fix: use a type annotation to specify what ‘a0’ should be. These potential instances exist: instance (Show a, Show b) => Show (Either a b) -- Defined in ‘Data.Either’ instance Show Ordering -- Defined in ‘GHC.Show’ instance Show |
2020-11-05 20:39:31 +0100 | ggole | (~ggole@2001:8003:8119:7200:3462:7213:ea5b:f472) (Quit: Leaving) |
2020-11-05 20:39:32 +0100 | <arampa> | Integer -- Defined in ‘GHC.Show’ ...plus 24 others ...plus 53 instances involving out-of-scope types (use -fprint-potential-instances to see them all) • In a stmt of an interactive GHCi command: print it |
2020-11-05 20:39:48 +0100 | <int-e> | @where paste |
2020-11-05 20:39:48 +0100 | <lambdabot> | Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com |
2020-11-05 20:40:16 +0100 | <tomsmeding> | should that thing get a proper domain name |
2020-11-05 20:40:27 +0100 | <arampa> | https://paste.tomsmeding.com/nmri084o |
2020-11-05 20:40:57 +0100 | <arampa> | the interesting thing is that, if I use this function by itself, i.e., not as part of a typeclass, it seems to work fine |
2020-11-05 20:41:00 +0100 | <int-e> | tomsmeding: what's improper about it :-P (I imagine it pings you quite a bit though) |
2020-11-05 20:41:19 +0100 | <tomsmeding> | arampa: the function by itself looks fine; how are you using it to produce that error? |
2020-11-05 20:41:45 +0100 | <arampa> | https://paste.tomsmeding.com/A37O6NQu |
2020-11-05 20:41:48 +0100 | <Uniaika> | tomsmeding: 5€ if you manage to get it hosted by haskell.org :P |
2020-11-05 20:41:58 +0100 | jakob_ | (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…) |
2020-11-05 20:42:02 +0100 | <tomsmeding> | Uniaika: life goals |
2020-11-05 20:42:30 +0100 | <tomsmeding> | arampa: I assume that you give this definition in a particular instance of that class? |
2020-11-05 20:42:33 +0100 | jakob_ | (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) |
2020-11-05 20:42:35 +0100 | <tomsmeding> | which one? :) |
2020-11-05 20:42:44 +0100 | jakob_ | (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Client Quit) |
2020-11-05 20:42:45 +0100 | <int-e> | arampa: that's not the complete code. please also include the error message (as a comment, for example). but as a guess, your custom datatype could use a "deriving Show". |
2020-11-05 20:43:12 +0100 | jakob_ | (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) |
2020-11-05 20:43:30 +0100 | jakob_ | (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Client Quit) |
2020-11-05 20:43:46 +0100 | <arampa> | https://paste.tomsmeding.com/YX1a14kM |
2020-11-05 20:43:58 +0100 | <arampa> | this is how I'd use it on an empty list, for example |
2020-11-05 20:44:02 +0100 | jakob_ | (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) |
2020-11-05 20:44:05 +0100 | <tomjaguarpaw> | tomsmeding: In Python I would do combine(x, y) == hash((x, y)) |
2020-11-05 20:44:18 +0100 | jakob_ | (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Client Quit) |
2020-11-05 20:44:51 +0100 | <arampa> | my goal is to make my Interval type an instance of the Code typeclass. It is already an instance of Show (without using deriving) |
2020-11-05 20:44:52 +0100 | jakob_ | (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) |
2020-11-05 20:45:04 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 246 seconds) |
2020-11-05 20:45:05 +0100 | jakob_ | (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Client Quit) |
2020-11-05 20:45:33 +0100 | <int-e> | arampa: you also need to specify what the result type should be; it's impossible for ghc to know which instance of `Code` it's supposed to use. |
2020-11-05 20:45:54 +0100 | conal | (~conal@107.181.166.217) (Quit: Computer has gone to sleep.) |
2020-11-05 20:46:17 +0100 | <int-e> | encode [] :: <whatever your type name is> |
2020-11-05 20:46:58 +0100 | <arampa> | encode [] :: Interval works fine |
2020-11-05 20:47:22 +0100 | Franciman | (~francesco@host-79-36-167-172.retail.telecomitalia.it) (Quit: Leaving) |
2020-11-05 20:48:08 +0100 | <arampa> | but if I do this https://paste.tomsmeding.com/YCKBD5QM |
2020-11-05 20:48:11 +0100 | <int-e> | This is a bit obscure, but the `a0` refers to the result type that ghc couldn't infer and is trying to print. The `print` is implicitly added by ghci when evaluating a plain expression |
2020-11-05 20:48:53 +0100 | <tomsmeding> | tomjaguarpaw: here's how python does tuple hashes as far as I can see: https://github.com/python/cpython/blob/f522a57ec77921ee2e60bd4ccda3c8daa5a43e95/Objects/tupleobjec… |
2020-11-05 20:48:56 +0100 | <arampa> | and I run it this way, https://paste.tomsmeding.com/b4qkf9SN this is what happens |
2020-11-05 20:48:59 +0100 | <int-e> | your `encode` is a member of a type class; it could have plenty of different implementations. |
2020-11-05 20:49:13 +0100 | <int-e> | so you have to specify the type at the point where `encode` is used. |
2020-11-05 20:49:58 +0100 | Tario | (~Tario@198.252.153.28) (Ping timeout: 246 seconds) |
2020-11-05 20:50:10 +0100 | <tomjaguarpaw> | tomsmeding: Thanks, yes, I may copy that |
2020-11-05 20:50:54 +0100 | <arampa> | so, encode [] :: Interval would be enough for my purposes? I do not use this function in any other functions |
2020-11-05 20:51:19 +0100 | <arampa> | or do you mean that I should define Interval in the type signature? |
2020-11-05 20:51:23 +0100 | <arampa> | sorry I get a bit confused |
2020-11-05 20:52:09 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-11-05 20:52:17 +0100 | <int-e> | arampa: encode [] :: Interval is sufficient. Annotating that `Empty` value is actually pointless; ghc will infer the type from the constructor. |
2020-11-05 20:54:10 +0100 | <int-e> | arampa: If you type `:t encode`, ghci will tell you that the type of `encode` is `Code a => [Int] -> a`. That doesn't mention Interval at all, which is why ghc(i) needs help to determine the result type. |
2020-11-05 20:54:34 +0100 | <arampa> | okay I understand, thank you so much! |
2020-11-05 20:55:10 +0100 | acidjnk_new2 | (~acidjnk@p200300d0c718f6890d36626cfb994f1d.dip0.t-ipconnect.de) |
2020-11-05 20:55:18 +0100 | twopoint718 | (~cjw@fsf/member/twopoint718) |
2020-11-05 20:56:08 +0100 | tswett | (aee69d95@unaffiliated/tswett) |
2020-11-05 20:56:22 +0100 | machinedgod | (~machinedg@142.169.78.93) (Read error: Connection reset by peer) |
2020-11-05 20:58:04 +0100 | alp | (~alp@2a01:e0a:58b:4920:51b5:8281:3384:97c9) |
2020-11-05 20:58:34 +0100 | machinedgod | (~machinedg@207.253.244.210) |
2020-11-05 20:59:01 +0100 | tswett | (aee69d95@unaffiliated/tswett) (Remote host closed the connection) |
2020-11-05 21:00:09 +0100 | <fendor> | finally, I found someone from university, doing the functional programming course |
2020-11-05 21:00:18 +0100 | <fendor> | *from my |
2020-11-05 21:00:42 +0100 | rprije | (~rprije@124.148.131.132) |
2020-11-05 21:01:01 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) () |
2020-11-05 21:01:56 +0100 | jollygood2 | (~bc8165ab@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout)) |
2020-11-05 21:03:04 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-05 21:04:15 +0100 | justan0theruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds) |
2020-11-05 21:05:37 +0100 | Rudd0 | (~Rudd0@185.189.115.103) (Ping timeout: 264 seconds) |
2020-11-05 21:06:33 +0100 | jacksonier | (~jacksonie@10.52.classcom.pl) |
2020-11-05 21:06:43 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
2020-11-05 21:07:25 +0100 | kish | (~oracle@unaffiliated/oracle) (Ping timeout: 240 seconds) |
2020-11-05 21:08:41 +0100 | jacksonier | (~jacksonie@10.52.classcom.pl) (Quit: Leaving...) |
2020-11-05 21:10:17 +0100 | hyiltiz_ | (~quassel@82.118.227.47) (Quit: hyiltiz_) |
2020-11-05 21:11:23 +0100 | jacksonier | (~jacksonie@10.52.classcom.pl) |
2020-11-05 21:11:53 +0100 | hyiltiz | (~quassel@unaffiliated/hyiltiz) |
2020-11-05 21:13:22 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) |
2020-11-05 21:14:46 +0100 | banner | (~banner@116-255-17-160.ip4.superloop.com) |
2020-11-05 21:15:49 +0100 | jacksonier | (~jacksonie@10.52.classcom.pl) () |
2020-11-05 21:16:14 +0100 | invaser | (~Thunderbi@31.148.23.125) (Ping timeout: 264 seconds) |
2020-11-05 21:17:28 +0100 | JohnnyL | (~john@unaffiliated/johnnyl) |
2020-11-05 21:17:35 +0100 | <JohnnyL> | How stable is SDL for haskell? |
2020-11-05 21:18:17 +0100 | banner | (~banner@116-255-17-160.ip4.superloop.com) (Client Quit) |
2020-11-05 21:18:18 +0100 | <dminuoso> | JohnnyL: There's sdl2 on hackage that has quite a few downloads. |
2020-11-05 21:18:46 +0100 | <dminuoso> | It has a couple issues on github, but oh well - this is sdl after all. |
2020-11-05 21:20:25 +0100 | <JohnnyL> | dminuoso: ok |
2020-11-05 21:21:02 +0100 | theorbtwo | (~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net) |
2020-11-05 21:21:04 +0100 | <JohnnyL> | I assume that it all compiles into one big binary. |
2020-11-05 21:23:18 +0100 | u0_a298 | (~user@47.206.148.226) (Remote host closed the connection) |
2020-11-05 21:23:31 +0100 | <dminuoso> | What do you mean? |
2020-11-05 21:23:33 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 21:24:08 +0100 | <koz_> | dminuoso: I think they are asking 'do I get static linking of my C deps'. |
2020-11-05 21:24:25 +0100 | <dminuoso> | You can statically link anything you want. |
2020-11-05 21:25:00 +0100 | banner | (~banner@116-255-17-160.ip4.superloop.com) |
2020-11-05 21:27:03 +0100 | alp | (~alp@2a01:e0a:58b:4920:51b5:8281:3384:97c9) (Ping timeout: 272 seconds) |
2020-11-05 21:27:03 +0100 | PacoV | (~pcoves@16.194.31.93.rev.sfr.net) (Quit: leaving) |
2020-11-05 21:27:03 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 21:27:29 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 21:27:39 +0100 | <dminuoso> | That is, if you want non-haskell to be statically linked, you can pass `-optl-static -optl-pthread` to ghc. Keep in mind that you very likely need musl or similar if you have any transitive dependency on NSS |
2020-11-05 21:27:58 +0100 | <dminuoso> | (Since statically linking glibc is not officially supported, and likely leads to quirky bugs) |
2020-11-05 21:27:58 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
2020-11-05 21:28:34 +0100 | banner | (~banner@116-255-17-160.ip4.superloop.com) (Remote host closed the connection) |
2020-11-05 21:28:52 +0100 | <dminuoso> | (And you must provide these libraries as .a to GHC, which for some libraries like libpg can be a hassle) |
2020-11-05 21:29:09 +0100 | invaser | (~Thunderbi@31.148.23.125) |
2020-11-05 21:29:50 +0100 | <bqv> | haskell itself is static by default, right? |
2020-11-05 21:29:56 +0100 | mirrorbird | (psutcliffe@gateway/vpn/mullvad/psutcliffe) |
2020-11-05 21:30:43 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
2020-11-05 21:31:32 +0100 | <sm[m]> | JohnnyL: sdl2 works great and doesn't change much, so I'd say pretty stable |
2020-11-05 21:32:13 +0100 | banner | (~banner@116-255-17-160.ip4.superloop.com) |
2020-11-05 21:33:33 +0100 | banner | (~banner@116-255-17-160.ip4.superloop.com) (Client Quit) |
2020-11-05 21:35:17 +0100 | kamikaze_ | (~kamikaze@59.103.111.71) |
2020-11-05 21:36:35 +0100 | <JohnnyL> | It's not sdl2 I'm worried about. |
2020-11-05 21:37:14 +0100 | knupfer | (~Thunderbi@200116b82c33ca00a8fb0b764d84b823.dip.versatel-1u1.de) (Ping timeout: 264 seconds) |
2020-11-05 21:38:07 +0100 | arampa | (5e454e4c@94.69.78.76) (Remote host closed the connection) |
2020-11-05 21:38:08 +0100 | fendor | (~fendor@178.115.129.187.wireless.dyn.drei.com) (Remote host closed the connection) |
2020-11-05 21:38:23 +0100 | thc202 | (~thc202@unaffiliated/thc202) (Ping timeout: 244 seconds) |
2020-11-05 21:39:19 +0100 | <matthew-> | am I right in thinking that when you're doing type inference for a throw-away var, e.g. _ every time you see _ you allocate a fresh type variable (for the purposes of unification) |
2020-11-05 21:39:57 +0100 | <bqv> | in answer to myself: yes. yes it is |
2020-11-05 21:41:08 +0100 | kamikaze_ | (~kamikaze@59.103.111.71) ("Leaving") |
2020-11-05 21:42:42 +0100 | geekosaur | (ac3a5323@172.58.83.35) |
2020-11-05 21:43:32 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2020-11-05 21:44:18 +0100 | <lyxia> | matthew-: yes. you can treat _ like just an unused variable. |
2020-11-05 21:44:57 +0100 | mirrorbird | (psutcliffe@gateway/vpn/mullvad/psutcliffe) (Quit: Leaving) |
2020-11-05 21:45:47 +0100 | AlterEgo- | (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving) |
2020-11-05 21:46:01 +0100 | bennofs1 | (~benno@dslb-094-222-083-101.094.222.pools.vodafone-ip.de) |
2020-11-05 21:46:15 +0100 | bennofs1 | (~benno@dslb-094-222-083-101.094.222.pools.vodafone-ip.de) (Client Quit) |
2020-11-05 21:46:51 +0100 | knupfer | (~Thunderbi@i59F7FF32.versanet.de) |
2020-11-05 21:47:27 +0100 | coot | (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2020-11-05 21:47:54 +0100 | jakob_ | (~textual@p57b0eae0.dip0.t-ipconnect.de) |
2020-11-05 21:49:57 +0100 | joaj | (~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca) |
2020-11-05 21:50:05 +0100 | <matthew-> | lyxia: thanks |
2020-11-05 21:52:01 +0100 | Chai-T-Rex | (~ChaiTRex@gateway/tor-sasl/chaitrex) (Quit: Chai-T-Rex) |
2020-11-05 21:52:36 +0100 | Aquazi | (uid312403@gateway/web/irccloud.com/x-ghekqquifdegujeg) (Quit: Connection closed for inactivity) |
2020-11-05 21:52:42 +0100 | ChaiTRex | (~ChaiTRex@gateway/tor-sasl/chaitrex) |
2020-11-05 21:54:45 +0100 | u0_a298 | (~user@47.206.148.226) (Remote host closed the connection) |
2020-11-05 21:54:48 +0100 | elliott_ | (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) |
2020-11-05 21:55:01 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 21:55:30 +0100 | jakob_ | (~textual@p57b0eae0.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…) |
2020-11-05 21:56:02 +0100 | <dminuoso> | lyxia: Interestingly, it turns out that this is not quite true. |
2020-11-05 21:56:17 +0100 | <merijn> | JohnnyL: In the end GHC just calls your system linker, so anything you know how to do with C libraries/executables should translate pretty much 1-to-1 to Haskell :) |
2020-11-05 21:56:28 +0100 | <dminuoso> | But that's probably a bug |
2020-11-05 21:56:48 +0100 | <dminuoso> | I found an elaborate situation, where annotationg with `_` leads GHC To infer a different type than if not annotated at all. |
2020-11-05 21:56:59 +0100 | <merijn> | JohnnyL: And by default all the Haskell stuff is already linked statically, so C libraries are all you really need to handle |
2020-11-05 21:57:44 +0100 | avdb | (~avdb@ip-83-134-202-8.dsl.scarlet.be) (Quit: avdb) |
2020-11-05 21:58:05 +0100 | <bqv> | it's like i'm on mute... |
2020-11-05 21:58:29 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Remote host closed the connection) |
2020-11-05 21:58:57 +0100 | <merijn> | bqv: That's because not everyone is completely reading the chat and some are just responding to things they see out of the corner of their eyes while playing videogames ;) |
2020-11-05 21:59:18 +0100 | Gurkenglas__ | (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds) |
2020-11-05 21:59:29 +0100 | kupi | (uid212005@gateway/web/irccloud.com/x-fvjiylahrovnfgof) (Quit: Connection closed for inactivity) |
2020-11-05 22:00:01 +0100 | hackage | protocol-buffers 2.4.17 - Parse Google Protocol Buffer specifications https://hackage.haskell.org/package/protocol-buffers-2.4.17 (TvH) |
2020-11-05 22:00:02 +0100 | untwisted | (~untwisted@84.39.116.180) () |
2020-11-05 22:01:00 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection) |
2020-11-05 22:01:01 +0100 | hackage | protocol-buffers-descriptor 2.4.17, hprotoc 2.4.17 (TvH): https://qbin.io/chevy-ago-djgz |
2020-11-05 22:01:48 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
2020-11-05 22:03:35 +0100 | ransom_ | (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-05 22:03:36 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-05 22:04:20 +0100 | asthasr | (~asthasr@162.210.29.120) (Quit: asthasr) |
2020-11-05 22:04:25 +0100 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds) |
2020-11-05 22:05:29 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
2020-11-05 22:05:34 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Client Quit) |
2020-11-05 22:07:09 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-05 22:08:01 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-05 22:10:15 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) |
2020-11-05 22:10:16 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-05 22:10:42 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-05 22:10:59 +0100 | jakob_ | (~textual@p200300f49f162200708c4f4194f529b6.dip0.t-ipconnect.de) |
2020-11-05 22:12:34 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-05 22:13:29 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
2020-11-05 22:13:49 +0100 | catchme | (uid355354@gateway/web/irccloud.com/x-wmqwbwgtbuzhjsjg) |
2020-11-05 22:15:22 +0100 | alp | (~alp@2a01:e0a:58b:4920:b090:7fae:5afc:83b5) |
2020-11-05 22:19:00 +0100 | ransom | (~c4264035@undergraduate-jvossen-9690.mines.edu) |
2020-11-05 22:19:48 +0100 | jakob_ | (~textual@p200300f49f162200708c4f4194f529b6.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…) |
2020-11-05 22:21:27 +0100 | jakob_ | (~textual@p200300f49f162200ac46a31c3038c656.dip0.t-ipconnect.de) |
2020-11-05 22:21:46 +0100 | mathepauker | (~mathepauk@s91904426.blix.com) |
2020-11-05 22:24:45 +0100 | geekosaur | (ac3a5323@172.58.83.35) (Remote host closed the connection) |
2020-11-05 22:27:03 +0100 | jakob_ | (~textual@p200300f49f162200ac46a31c3038c656.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…) |
2020-11-05 22:27:22 +0100 | invaser | (~Thunderbi@31.148.23.125) (Ping timeout: 256 seconds) |
2020-11-05 22:27:53 +0100 | jbox | (~atlas@unaffiliated/jbox) |
2020-11-05 22:27:55 +0100 | ransom | (~c4264035@undergraduate-jvossen-9690.mines.edu) (Quit: Textual IRC Client: www.textualapp.com) |
2020-11-05 22:34:01 +0100 | hackage | compdoc 0.2.0.0 - Parse a Pandoc to a composite value. https://hackage.haskell.org/package/compdoc-0.2.0.0 (locallycompact) |
2020-11-05 22:34:12 +0100 | mdunnio | (~mdunnio@208.59.170.5) (Remote host closed the connection) |
2020-11-05 22:34:21 +0100 | chaosmasttter | (~chaosmast@p200300c4a7117c01e8fd3775638e9554.dip0.t-ipconnect.de) (Quit: WeeChat 2.9) |
2020-11-05 22:34:42 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Ping timeout: 244 seconds) |
2020-11-05 22:34:47 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-05 22:35:03 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 260 seconds) |
2020-11-05 22:35:31 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 2.9) |
2020-11-05 22:37:25 +0100 | jakob_ | (~textual@p200300f49f162200657391ee70880d24.dip0.t-ipconnect.de) |
2020-11-05 22:39:18 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-05 22:43:55 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) |
2020-11-05 22:44:20 +0100 | mdunnio | (~mdunnio@208.59.170.5) |
2020-11-05 22:44:26 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2020-11-05 22:45:14 +0100 | grepcake | (~artyom@77.234.203.49) |
2020-11-05 22:45:57 +0100 | christo | (~chris@81.96.113.213) |
2020-11-05 22:47:52 +0100 | shatriff | (~vitaliish@176.52.219.10) (Remote host closed the connection) |
2020-11-05 22:48:39 +0100 | <grepcake> | Hi! Suppose, I have constraints on an existential type parameter and this parameter is not otherwise used in the constructor. How do I bind that type parameter when pattern-matchin? https://gist.github.com/grepcake/141d8f06e4328f3582371f5906eab243 |
2020-11-05 22:49:23 +0100 | <grepcake> | One way would be to add a dummy parameter to the constructor (Proxy, I guess?), but there a way to do it without adding parameters? |
2020-11-05 22:51:14 +0100 | <merijn> | Not any ways that I'd recommend |
2020-11-05 22:53:02 +0100 | <dminuoso> | grepcake: There is an alternate option, but that's still in a language proposal |
2020-11-05 22:53:28 +0100 | <grepcake> | dminuoso: out of curiosity, what is it? |
2020-11-05 22:53:28 +0100 | <dminuoso> | (And Im not sure whether you could actually bind that one there) |
2020-11-05 22:53:55 +0100 | <grepcake> | merijn: is doing things like this a bad practice in general? |
2020-11-05 22:54:09 +0100 | <grepcake> | Should I pass Dict on the value level instead? |
2020-11-05 22:54:41 +0100 | <dminuoso> | grepcake: https://github.com/ghc-proposals/ghc-proposals/blob/type-applications-in-patterns/proposals/type-a… |
2020-11-05 22:54:50 +0100 | <dminuoso> | grepcake: Dict is the only other option that I can see, yes. |
2020-11-05 22:55:55 +0100 | tomboy64 | (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection) |
2020-11-05 22:56:25 +0100 | <solonarv> | ah, I was thinking about typeapps in patterns but couldn't remember if they were already in the language |
2020-11-05 22:56:36 +0100 | <grepcake> | dminuoso: thanks, pretty interesting. examples seem to imply that it would be possible to bind param in my case |
2020-11-05 22:56:48 +0100 | tomboy64 | (~tomboy64@gateway/tor-sasl/tomboy64) |
2020-11-05 22:56:53 +0100 | conal | (~conal@107.181.166.217) |
2020-11-05 22:57:00 +0100 | [[[]]] | vevercak |
2020-11-05 22:57:03 +0100 | <dminuoso> | grepcake: right, Im just not 100% confident about interaction with GADTs and constriants |
2020-11-05 22:57:10 +0100 | nut | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2020-11-05 22:57:22 +0100 | <dminuoso> | (but the `constraints` library is definitely an option) |
2020-11-05 22:57:51 +0100 | <grepcake> | Yep, appparently I'll stick with it |
2020-11-05 22:57:56 +0100 | <dminuoso> | Also, since you seem to be meddling with constraints, you could be interested in this: https://hackage.haskell.org/package/constraints-extras-0.3.0.2/docs/Data-Constraint-Extras.html |
2020-11-05 22:58:11 +0100 | <dminuoso> | (*GADTs) |
2020-11-05 22:58:37 +0100 | <dminuoso> | Just something to be aware of, I dont know your code whether its useful to you. |
2020-11-05 22:58:53 +0100 | conal | (~conal@107.181.166.217) (Client Quit) |
2020-11-05 22:59:24 +0100 | <dminuoso> | Cale described it best as Pi for constraints. |
2020-11-05 23:00:31 +0100 | knupfer | (~Thunderbi@i59F7FF32.versanet.de) (Ping timeout: 246 seconds) |
2020-11-05 23:01:34 +0100 | u0_a298 | (~user@47.206.148.226) (Ping timeout: 246 seconds) |
2020-11-05 23:01:34 +0100 | <grepcake> | dminuoso: I'll definitely look into it, thanks! |
2020-11-05 23:02:19 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2020-11-05 23:04:20 +0100 | Rudd0 | (~Rudd0@185.189.115.98) |
2020-11-05 23:05:23 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 260 seconds) |
2020-11-05 23:07:25 +0100 | hyperisco | (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 240 seconds) |
2020-11-05 23:07:52 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
2020-11-05 23:09:52 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2020-11-05 23:10:38 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) |
2020-11-05 23:13:27 +0100 | jbox | (~atlas@unaffiliated/jbox) (Ping timeout: 272 seconds) |
2020-11-05 23:13:34 +0100 | grepcake | (~artyom@77.234.203.49) (Quit: Konversation terminated!) |
2020-11-05 23:17:28 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-11-05 23:19:35 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-05 23:21:07 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2020-11-05 23:21:22 +0100 | twopoint718 | (~cjw@fsf/member/twopoint718) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-05 23:21:26 +0100 | <bqv> | folks, a question |
2020-11-05 23:22:33 +0100 | <bqv> | would it be possible, through type magic, to have a way of working out what function arity a type has, and then transforming the result of that function type? |
2020-11-05 23:22:53 +0100 | dbmikus__ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-05 23:23:02 +0100 | <bqv> | i.e composing a function to that function regardless of arity |
2020-11-05 23:23:06 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Read error: Connection reset by peer) |
2020-11-05 23:24:08 +0100 | <Ariakenom> | well i can call id |
2020-11-05 23:24:11 +0100 | <Ariakenom> | :t id |
2020-11-05 23:24:13 +0100 | <lambdabot> | a -> a |
2020-11-05 23:24:14 +0100 | <Ariakenom> | 3 times |
2020-11-05 23:24:20 +0100 | <Ariakenom> | > id id id 1 |
2020-11-05 23:24:23 +0100 | <lambdabot> | 1 |
2020-11-05 23:24:38 +0100 | <Ariakenom> | not 3 times. I meant with 3 arguments |
2020-11-05 23:24:57 +0100 | <bqv> | of course, but id is a special case |
2020-11-05 23:25:10 +0100 | <bqv> | it's possible to detect arity through type magic, but it won't work with id-like types |
2020-11-05 23:25:21 +0100 | <bqv> | so i wonder if the rest is possible with that qualification too |
2020-11-05 23:25:28 +0100 | <glguy> | It's not particularly special, no. functions don't have arity in general |
2020-11-05 23:25:46 +0100 | <bqv> | ok say the result is an IO type |
2020-11-05 23:25:46 +0100 | <glguy> | they always take one argument |
2020-11-05 23:25:52 +0100 | <bqv> | does that help? |
2020-11-05 23:26:17 +0100 | <bqv> | can't type-recursion use that as an terminating case? |
2020-11-05 23:26:25 +0100 | <glguy> | If you restrict yourself to types of a form like that then you can do it with a typeclass |
2020-11-05 23:26:52 +0100 | <glguy> | class Thing a; instance Thing b => Thing (a -> b); instance Thing (IO a) |
2020-11-05 23:28:08 +0100 | <bqv> | neato |
2020-11-05 23:28:10 +0100 | <bqv> | yeah, ok |
2020-11-05 23:29:17 +0100 | fendor | (~fendor@178.115.129.187.wireless.dyn.drei.com) |
2020-11-05 23:29:21 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
2020-11-05 23:30:16 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) (Quit: Konversation terminated!) |
2020-11-05 23:30:31 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) |
2020-11-05 23:32:32 +0100 | <merijn> | glguy: Sure they do |
2020-11-05 23:32:40 +0100 | <merijn> | glguy: Functions have arity 1 :p |
2020-11-05 23:33:01 +0100 | twopoint718 | (~cjw@fsf/member/twopoint718) |
2020-11-05 23:34:29 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-05 23:34:46 +0100 | Tario | (~Tario@201.192.165.173) |
2020-11-05 23:34:48 +0100 | erisco | (~erisco@d24-57-249-233.home.cgocable.net) |
2020-11-05 23:36:36 +0100 | Ariakenom | (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) (Read error: Connection reset by peer) |
2020-11-05 23:36:54 +0100 | <JohnnyL> | merijn: :) |
2020-11-05 23:37:46 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 260 seconds) |
2020-11-05 23:39:18 +0100 | dwt | (~dwt@c-98-200-58-177.hsd1.tx.comcast.net) |
2020-11-05 23:39:45 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
2020-11-05 23:40:17 +0100 | Gurkenglas__ | (~Gurkengla@unaffiliated/gurkenglas) |
2020-11-05 23:40:33 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2020-11-05 23:40:44 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Client Quit) |
2020-11-05 23:45:06 +0100 | sagax | (~sagax_nb@213.138.71.146) (Remote host closed the connection) |
2020-11-05 23:47:23 +0100 | Foritus | (~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net) (Quit: ლ(ಠ益ಠლ) .:. <Ashley> my porn is hidden in a folder called "BBC Micro Emulator") |
2020-11-05 23:51:00 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2020-11-05 23:51:48 +0100 | conal | (~conal@107.181.166.217) |
2020-11-05 23:53:35 +0100 | Foritus | (~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net) |
2020-11-05 23:56:05 +0100 | conal | (~conal@107.181.166.217) (Ping timeout: 240 seconds) |
2020-11-05 23:56:26 +0100 | shatriff | (~vitaliish@176.52.219.10) |
2020-11-05 23:57:13 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2020-11-05 23:58:12 +0100 | jbox | (~atlas@unaffiliated/jbox) |