Logs on 2020-11-05 (freenode/#haskell)
| 00:00:01 | × | kest10 quits (~kest10@139.28.218.148) () |
| 00:00:40 | × | argent0 quits (~argent0@168.227.96.2) (Ping timeout: 246 seconds) |
| 00:03:53 | → | Tario joins (~Tario@201.192.165.173) |
| 00:07:29 | → | conal joins (~conal@64.71.133.70) |
| 00:10:32 | × | ulidtko quits (~ulidtko@193.111.48.79) (Remote host closed the connection) |
| 00:16:40 | × | Ariakenom quits (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) (Read error: Connection reset by peer) |
| 00:17:31 | → | ulidtko joins (~ulidtko@193.111.48.79) |
| 00:19:48 | → | hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 00:20:52 | × | hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection) |
| 00:21:14 | → | hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 00:21:43 | → | Smaczny joins (~Smaczny@185.204.1.185) |
| 00:21:43 | × | hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
| 00:22:18 | × | coot quits (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 00:23:25 | → | elliott__ joins (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) |
| 00:23:57 | → | texasmynsted joins (~texasmyns@185.247.70.76) |
| 00:25:48 | × | Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
| 00:26:32 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 00:27:50 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 00:33:08 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 00:37:05 | × | elliott_ quits (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
| 00:37:39 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 244 seconds) |
| 00:37:53 | × | linker_ quits (~linker@185.12.21.77) (Remote host closed the connection) |
| 00:38:56 | → | master_o joins (50a46f47@80-164-111-71-dynamic.dk.customer.tdc.net) |
| 00:39:53 | → | elliott_ joins (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) |
| 00:41:26 | × | xff0x quits (~fox@2001:1a81:53f2:500:5f26:7f0a:da68:24d7) (Ping timeout: 264 seconds) |
| 00:42:19 | → | xff0x joins (~fox@2001:1a81:53f2:500:7ba4:92a8:6e01:ae71) |
| 00:42:46 | × | gentauro quits (~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer) |
| 00:43:16 | → | gentauro joins (~gentauro@unaffiliated/gentauro) |
| 00:43:28 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:ed58:dda3:fd80:2c46) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 00:45:29 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 00:47:05 | × | pera quits (~pera@unaffiliated/pera) (Ping timeout: 240 seconds) |
| 00:48:16 | × | catchme quits (uid355354@gateway/web/irccloud.com/x-jjbcbrnidixjkmxm) (Quit: Connection closed for inactivity) |
| 00:48:34 | → | Jeanne-Kamikaze joins (~Jeanne-Ka@68.235.43.150) |
| 00:48:57 | → | softwarm joins (4408f588@ip68-8-245-136.sd.sd.cox.net) |
| 00:49:15 | × | elliott_ quits (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 265 seconds) |
| 00:50:11 | → | enva2712 joins (~enva2712@cpe-75-86-42-2.wi.res.rr.com) |
| 00:51:46 | → | asthasr joins (~asthasr@162.210.29.120) |
| 00:55:28 | × | asthasr quits (~asthasr@162.210.29.120) (Client Quit) |
| 00:57:13 | × | DavidEichmann quits (~david@43.240.198.146.dyn.plus.net) (Ping timeout: 264 seconds) |
| 00:57:36 | → | plutoniix joins (~q@175.176.222.7) |
| 01:00:38 | <fresheyeball> | \q |
| 01:00:41 | × | fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.7.1) |
| 01:03:34 | × | DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...) |
| 01:05:19 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 01:08:05 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:10:35 | → | christo joins (~chris@81.96.113.213) |
| 01:15:39 | × | christo quits (~chris@81.96.113.213) (Ping timeout: 272 seconds) |
| 01:15:56 | × | lucasb quits (uid333435@gateway/web/irccloud.com/x-cbmhwogtcotlrzny) (Quit: Connection closed for inactivity) |
| 01:17:33 | × | master_o quits (50a46f47@80-164-111-71-dynamic.dk.customer.tdc.net) (Remote host closed the connection) |
| 01:18:45 | × | dbmikus_ quits (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 240 seconds) |
| 01:20:06 | → | guest115 joins (~user@49.5.6.87) |
| 01:21:28 | → | inkbottle joins (~inkbottle@aaubervilliers-654-1-110-84.w86-212.abo.wanadoo.fr) |
| 01:21:39 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-104-94.w86-212.abo.wanadoo.fr) (Ping timeout: 256 seconds) |
| 01:24:07 | <Axman6> | xe4: asking here is fine, but I can't guarantee you'll get a good answer |
| 01:24:37 | → | Lord_of_Life joins (~Lord@46.217.217.162) |
| 01:24:38 | × | Lord_of_Life_ quits (~Lord@46.217.221.241) (Ping timeout: 260 seconds) |
| 01:25:24 | × | darjeeling_ quits (~darjeelin@115.215.43.51) (Ping timeout: 256 seconds) |
| 01:25:58 | × | crdrost quits (~crdrost@c-98-207-102-156.hsd1.ca.comcast.net) (Quit: Leaving) |
| 01:26:50 | → | aarvar joins (~foewfoiew@c.24.56.239.179.static.broadstripe.net) |
| 01:26:55 | ← | aarvar parts (~foewfoiew@c.24.56.239.179.static.broadstripe.net) () |
| 01:29:46 | → | dbmikus_ joins (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
| 01:32:18 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
| 01:37:20 | → | christo joins (~chris@81.96.113.213) |
| 01:37:25 | → | Entertainment joins (~entertain@104.246.132.210) |
| 01:38:06 | × | Chi1thangoo quits (~Chi1thang@87.112.60.168) (Ping timeout: 244 seconds) |
| 01:39:50 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds) |
| 01:41:34 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 01:45:29 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 01:50:18 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 01:56:33 | × | Entertainment quits (~entertain@104.246.132.210) (Quit: Leaving.) |
| 01:56:46 | → | jcowan joins (sid325434@gateway/web/irccloud.com/x-evadozowlzlhtjmy) |
| 01:57:45 | <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| |
| 01:58:00 | <jcowan> | Why are there so few instances of class Map? Or am I just not seeing them in Hoogle? |
| 01:58:52 | <koz_> | jcowan: Wait, _class_ Map? |
| 02:00:01 | <jcowan> | koz_: https://hackage.haskell.org/package/collections-api-1.0.0.0/docs/Data-Collections.html#g:4 |
| 02:00:10 | <koz_> | Ah, OK. TIL. |
| 02:01:07 | → | ddellaco1 joins (~dd@86.106.121.168) |
| 02:01:20 | <jcowan> | but apparently type Map is the only instance. You'd think a list of pairs would be an instance too. |
| 02:01:46 | × | ddellacosta quits (~dd@86.106.121.168) (Read error: Connection reset by peer) |
| 02:02:06 | <jcowan> | I guess it's because it doesn't meet the (informal) big-O constraints |
| 02:02:27 | <koz_> | jcowan: You can do something like 'newtype AssocList (k :: Type) (v :: Type) = AssocList [(k,v)]', then write an instance against that? |
| 02:03:30 | <jcowan> | hmm, no, there are no O(...) constraints |
| 02:04:14 | <jcowan> | But yes, that makes sense, I'm just surprised it's not already the case. |
| 02:04:50 | × | borne quits (~fritjof@200116b864d4e2005d0cb1433c5d4cbb.dip.versatel-1u1.de) (Ping timeout: 264 seconds) |
| 02:05:18 | → | Lycurgus joins (~niemand@98.4.97.110) |
| 02:08:01 | <Axman6> | I've never heard of that package, why do you believe it's something you should care about? |
| 02:08:05 | × | m0rphism quits (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 260 seconds) |
| 02:08:12 | <Axman6> | is it used by anything? |
| 02:08:37 | <jcowan> | No idea. What I'm investigating is whether the whole idea of a map class actually makes sense or not. |
| 02:09:02 | × | machinedgod quits (~machinedg@142.169.78.247) (Ping timeout: 256 seconds) |
| 02:10:18 | → | thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
| 02:11:02 | → | machinedgod joins (~machinedg@207.253.244.210) |
| 02:13:58 | <davean> | lens kinda has a Map class, in pieces |
| 02:15:02 | × | thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 02:22:41 | → | m0rphism joins (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) |
| 02:22:48 | <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. |
| 02:26:08 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 02:30:19 | → | drbean joins (~drbean@TC210-63-209-23.static.apol.com.tw) |
| 02:33:09 | × | Lycurgus quits (~niemand@98.4.97.110) (Quit: Exeunt) |
| 02:35:52 | × | enva2712 quits (~enva2712@cpe-75-86-42-2.wi.res.rr.com) (Quit: leaving) |
| 02:36:04 | × | machinedgod quits (~machinedg@207.253.244.210) (Ping timeout: 246 seconds) |
| 02:38:12 | → | machinedgod joins (~machinedg@142.169.78.199) |
| 02:39:24 | <davean> | dolio: I agree, I expect jcowan will find its not by chance that package isn't well known or maintained |
| 02:40:21 | <davean> | Decomposed heirarchies with sensible laws for piece piece and addition work very well and are more general. |
| 02:41:20 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:10ae:4d3f:5d98:36e2) |
| 02:43:19 | × | ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Read error: Connection reset by peer) |
| 02:43:38 | → | toorevitimirp joins (~tooreviti@117.182.183.132) |
| 02:44:49 | × | dbmikus_ quits (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 246 seconds) |
| 02:46:13 | × | machinedgod quits (~machinedg@142.169.78.199) (Ping timeout: 246 seconds) |
| 02:46:26 | <c_wraith> | What is the breakdown for Map, roughly? At + Foldable? |
| 02:48:05 | → | machinedgod joins (~machinedg@142.169.78.111) |
| 02:48:56 | <c_wraith> | well, I guess you have all of Traversable if you want it |
| 02:49:16 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 02:49:22 | → | conal joins (~conal@64.71.133.70) |
| 02:49:36 | <c_wraith> | That misses out on things like the union/intersection operators, but does lens have stuff for those? |
| 02:51:02 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 02:52:21 | <c_wraith> | I guess I could just read https://hackage.haskell.org/package/lens/docs/Data-Map-Lens.html |
| 02:52:51 | <c_wraith> | Nothing appears to directly address union/intersection stuff |
| 02:53:20 | → | xerox_ joins (~xerox@unaffiliated/xerox) |
| 02:53:22 | <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 |
| 02:53:53 | × | Gurkenglas__ quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds) |
| 02:54:06 | × | m0rphism quits (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 258 seconds) |
| 02:54:20 | <ddellaco1> | in particular how to manipulate the keys. Didn't occur to me to look at Data.Map.Lens, thank you |
| 02:54:34 | × | xff0x quits (~fox@2001:1a81:53f2:500:7ba4:92a8:6e01:ae71) (Ping timeout: 244 seconds) |
| 02:56:40 | → | xff0x joins (~fox@2001:1a81:522f:7b00:29b2:8682:67ea:c01f) |
| 03:00:02 | × | Smaczny quits (~Smaczny@185.204.1.185) () |
| 03:00:13 | <jcowan> | Map should be a Set (of assoociations) |
| 03:00:43 | × | son0p quits (~son0p@181.136.122.143) (Quit: Lost terminal) |
| 03:03:57 | × | dmwit quits (~dmwit@pool-108-28-166-212.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
| 03:04:23 | <dolio> | That sounds like something that would show up in Oleg's examples of violations of the Liskov principle. |
| 03:05:05 | → | argent0 joins (~argent0@168.227.96.2) |
| 03:05:23 | × | argent0 quits (~argent0@168.227.96.2) (Remote host closed the connection) |
| 03:06:33 | × | machinedgod quits (~machinedg@142.169.78.111) (Quit: leaving) |
| 03:07:19 | <monochrom> | Instead, Set is a special case of Map: Set X is Map X () |
| 03:07:22 | lagothrix | is now known as Guest68265 |
| 03:07:30 | → | lagothrix joins (~lagothrix@unaffiliated/lagothrix) |
| 03:08:08 | <monochrom> | That is, comparing Set operations with Map operations. |
| 03:09:09 | → | dmwit joins (~dmwit@pool-108-28-166-212.washdc.fios.verizon.net) |
| 03:10:37 | × | Guest68265 quits (~lagothrix@unaffiliated/lagothrix) (Ping timeout: 260 seconds) |
| 03:13:48 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 03:17:01 | → | irc_user joins (uid423822@gateway/web/irccloud.com/x-nqqmqoyedjtdxopn) |
| 03:19:13 | × | urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna) |
| 03:19:25 | × | theDon quits (~td@i5E86B1F0.versanet.de) (Ping timeout: 264 seconds) |
| 03:21:04 | → | theDon joins (~td@muedsl-82-207-239-021.citykom.de) |
| 03:25:31 | hackage | tonatona 0.1.2.1 - meta application framework https://hackage.haskell.org/package/tonatona-0.1.2.1 (qnoyxu) |
| 03:27:00 | hackage | tonalude 0.1.1.1 - A standard library for Tonatona framework. https://hackage.haskell.org/package/tonalude-0.1.1.1 (qnoyxu) |
| 03:27:04 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 03:28:00 | 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) |
| 03:28:33 | → | conal joins (~conal@64.71.133.70) |
| 03:32:10 | → | mi23523523 joins (~Mi1029384@82.131.36.5.cable.starman.ee) |
| 03:33:28 | <Axman6> | ddellaco1: http://hackage.haskell.org/package/lens-4.19.2/docs/Control-Lens-At.html is probably what you want to use |
| 03:33:30 | × | mi23523523 quits (~Mi1029384@82.131.36.5.cable.starman.ee) (Read error: Connection reset by peer) |
| 03:34:13 | <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. |
| 03:34:21 | → | mi23523523 joins (~Mi1029384@82.131.36.5.cable.starman.ee) |
| 03:34:39 | <Axman6> | I thnk overloaded lists with tuples is as close as it gets |
| 03:35:06 | <sshine> | justsomeguy, you can make a quasi quoter? ;) |
| 03:35:11 | <Axman6> | % [(True,"Hello"),(False,"bye")] :: Map Bool String |
| 03:35:12 | <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) |
| 03:35:19 | <Axman6> | % [(True,"Hello"),(False,"bye")] :: M.Map Bool String |
| 03:35:19 | <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 |
| 03:35:29 | <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? |
| 03:35:38 | <Axman6> | % :set -XOverloadedLists |
| 03:35:39 | <yahb> | Axman6: |
| 03:35:41 | <Axman6> | % [(True,"Hello"),(False,"bye")] :: M.Map Bool String |
| 03:35:41 | <yahb> | Axman6: fromList [(False,"bye"),(True,"Hello")] |
| 03:36:20 | <Axman6> | justsomeguy: quasi quoters are basically just functions from String to Haskell |
| 03:36:45 | <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. |
| 03:36:58 | <Axman6> | so you could have [map|{foo: True, bar: 7}|] but it's pretty ugly IMO |
| 03:37:27 | <Axman6> | you could I guess just do [map|foo: True, bar: 7|] |
| 03:37:35 | <ddellaco1> | Axman6: thanks. I ended up just doing some fmap ugliness for the time being, going to revisit tomorrow |
| 03:37:37 | <sshine> | justsomeguy, there is some technical trade-off, but the big trade-off, I think, is you're not really coding Haskell. :-P |
| 03:38:21 | <justsomeguy> | Hmm, maybe this is something that I should be solving with an editor macro, instead. |
| 03:39:06 | <justsomeguy> | (Or not solving at all, since it's not a big deal :^p) |
| 03:39:11 | → | nbloomf_ joins (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) |
| 03:39:18 | <Axman6> | % let a ==> b = (a,b) |
| 03:39:18 | <yahb> | Axman6: |
| 03:39:23 | <dolio> | It seems like OverloadedLists is completely adequate. |
| 03:39:37 | <Axman6> | % [True ==> "Hello", False ==> "bye"] :: M.Map Bool String |
| 03:39:38 | <yahb> | Axman6: fromList [(False,"bye"),(True,"Hello")] |
| 03:40:12 | <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. |
| 03:40:47 | → | Stanley00 joins (~stanley00@unaffiliated/stanley00) |
| 03:40:48 | × | ColdRush quits (~coldrush@4e69b241.skybroadband.com) (Ping timeout: 272 seconds) |
| 03:40:50 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:10ae:4d3f:5d98:36e2) (Ping timeout: 264 seconds) |
| 03:41:07 | <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. |
| 03:42:16 | <justsomeguy> | Right, it's not bad at all. |
| 03:42:37 | <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. |
| 03:42:46 | <sshine> | justsomeguy, it depends on the perspective. |
| 03:43:16 | <sshine> | justsomeguy, combinators aren't always the shortest. but the benefit of being able to compose things is so high. |
| 03:43:56 | × | theDon quits (~td@muedsl-82-207-239-021.citykom.de) (Ping timeout: 258 seconds) |
| 03:44:37 | → | Tario joins (~Tario@201.192.165.173) |
| 03:45:13 | × | st8less quits (~st8less@2603:a060:11fd:0:acb3:c1f9:8208:550f) (Quit: WeeChat 2.7.1) |
| 03:45:49 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:46:08 | <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? |
| 03:46:14 | <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 |
| 03:46:20 | <sshine> | regex-applicative I'm not familiar with a way to make those accidents. |
| 03:46:44 | <Axman6> | texasmynsted: well, there is https://hackage.haskell.org/package/lens-regex-0.1.1/docs/Text-Regex-Lens.html... |
| 03:46:57 | → | GUEST48003 joins (~GUEST4800@124.123.104.52) |
| 03:47:07 | <texasmynsted> | that sounds like it uses regexps |
| 03:47:12 | <Axman6> | it does |
| 03:47:39 | × | jud quits (~jud@unaffiliated/jud) (Read error: Connection reset by peer) |
| 03:47:39 | <Axman6> | I'm sure I've seen something which does a similar things |
| 03:47:49 | <texasmynsted> | I was looking for an alternative to regexps. (I do not think regexps are easy to read, maintain, or debug.) |
| 03:48:05 | <sshine> | texasmynsted, regex-applicative / Megaparsec? :) |
| 03:48:09 | <Axman6> | https://hackage.haskell.org/package/replace-attoparsec? |
| 03:48:18 | → | jud joins (~jud@unaffiliated/jud) |
| 03:48:23 | <texasmynsted> | I am looking for a token in the YAML header of markdown files. |
| 03:48:24 | <sshine> | Axman6, neat. |
| 03:48:27 | → | chise joins (3b29a236@59.41.162.54) |
| 03:48:55 | <texasmynsted> | oh intersting. |
| 03:48:56 | <sshine> | texasmynsted, like a tag or something? |
| 03:49:12 | <texasmynsted> | yes. like "isUnpublished=true" |
| 03:49:43 | × | jud quits (~jud@unaffiliated/jud) (Max SendQ exceeded) |
| 03:49:55 | <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 |
| 03:50:01 | <Axman6> | Can't decide is this is cool or gross: streamEditT (char '{' *> manyTill anyChar (char '}')) (fmap T.pack . getEnv) "- {HOME} -" |
| 03:50:11 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds) |
| 03:50:17 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 03:51:08 | → | jud joins (~jud@unaffiliated/jud) |
| 03:51:24 | → | justanotheruser joins (~justanoth@unaffiliated/justanotheruser) |
| 03:51:40 | <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?" |
| 03:51:42 | <lambdabot> | True |
| 03:52:41 | → | Guest74313 joins (~benj@195.206.169.184) |
| 03:52:42 | <texasmynsted> | YAML header starts with --- and ends with --- |
| 03:52:47 | <texasmynsted> | At the top of the file |
| 03:53:03 | <Axman6> | this sounds like you could just use pandoc |
| 03:53:12 | <Axman6> | "just" |
| 03:53:22 | <texasmynsted> | maybe but I am trying to get a list of files. |
| 03:53:22 | <sshine> | "one does not just..." |
| 03:53:26 | <Axman6> | I mean you're describing a format pandoc knows about |
| 03:53:41 | × | Sheilong quits (uid293653@gateway/web/irccloud.com/x-hgnmrpxqnetkvsrt) () |
| 03:54:21 | <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 |
| 03:54:50 | <texasmynsted> | I could convert each file to the AST then search the AST, then ? |
| 03:55:03 | texasmynsted | hoogles `isInfixOf` |
| 03:56:21 | <texasmynsted> | oh. isInfixOf is usef. |
| 03:56:27 | <texasmynsted> | I mean useful |
| 03:57:12 | <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 |
| 04:01:32 | × | GUEST48003 quits (~GUEST4800@124.123.104.52) (Remote host closed the connection) |
| 04:01:51 | → | GUEST48896 joins (~GUEST4889@124.123.104.52) |
| 04:04:05 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds) |
| 04:04:56 | → | shatriff_ joins (~vitaliish@176.52.219.10) |
| 04:07:41 | × | shatriff quits (~vitaliish@176.52.219.10) (Ping timeout: 256 seconds) |
| 04:09:24 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 04:09:35 | <texasmynsted> | I think that finding the token is less the issue. More of the issue is searching all the files. |
| 04:10:30 | <Axman6> | if you can search one file, and you can get all the file names, then you just traverse |
| 04:11:41 | → | thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
| 04:11:45 | × | ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Ping timeout: 240 seconds) |
| 04:12:13 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
| 04:12:25 | → | k199 joins (3e8b7dcd@62.139.125.205) |
| 04:13:28 | × | drbean quits (~drbean@TC210-63-209-23.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin1 - https://znc.in) |
| 04:13:42 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 256 seconds) |
| 04:14:05 | × | ddellaco1 quits (~dd@86.106.121.168) (Ping timeout: 240 seconds) |
| 04:15:41 | × | thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 04:16:09 | <sshine> | texasmynsted, https://gist.github.com/sshine/4e8673ad48b3f6098e4dbe097a9dfe5f |
| 04:16:45 | × | mi23523523 quits (~Mi1029384@82.131.36.5.cable.starman.ee) (Quit: Leaving) |
| 04:16:53 | <texasmynsted> | WOW! Thank you! |
| 04:17:08 | <texasmynsted> | Now I understand. :-) |
| 04:17:17 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds) |
| 04:17:22 | <justsomeguy> | That is very nice and easy to read, even for a noob like me. |
| 04:17:52 | <sshine> | it started as a one-liner so I could paste it on IRC. |
| 04:18:10 | <Axman6> | yuno bytestring |
| 04:18:24 | → | star_watt joins (7c7b6834@124.123.104.52) |
| 04:18:44 | <sshine> | Axman6, good point, thanks. |
| 04:19:20 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 04:19:28 | <pjb> | perhaps I would use isPublished instead, to avoid double-negatives… |
| 04:19:34 | → | coot joins (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) |
| 04:20:01 | × | k199 quits (3e8b7dcd@62.139.125.205) (Remote host closed the connection) |
| 04:20:21 | <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 |
| 04:20:37 | <texasmynsted> | LOL |
| 04:20:45 | <koz_> | isUnpublished=false is _definitely_ likely to lead to confusion. |
| 04:21:18 | <texasmynsted> | preventPublish: true |
| 04:21:30 | × | jud quits (~jud@unaffiliated/jud) (Ping timeout: 258 seconds) |
| 04:21:44 | ← | jcowan parts (sid325434@gateway/web/irccloud.com/x-evadozowlzlhtjmy) () |
| 04:21:49 | <sshine> | pjb, good idea :) except I don't know if "isUnpublished=true" is the same as "isPublished=false" :-D |
| 04:22:03 | <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 |
| 04:22:28 | <Axman6> | the way it checked that was to just grep for... that string... inside the file that was doing the update |
| 04:22:45 | <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. |
| 04:22:57 | <Axman6> | so you had ... grep COMPLETEFILE thefile... #COMPLETEFILE <EOF> |
| 04:23:12 | <Axman6> | so, if it downloaded enought o pass the grep line, it would pass the test |
| 04:23:24 | <koz_> | texasmynsted: notFitForHumanConsumption=true |
| 04:23:42 | <Axman6> | literally any other regex given to grep that matched would have made it ok |
| 04:25:43 | <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. |
| 04:25:44 | <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" |
| 04:25:49 | <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. |
| 04:26:01 | × | GUEST48896 quits (~GUEST4889@124.123.104.52) (Remote host closed the connection) |
| 04:26:03 | <Axman6> | pjb: yep, exactly |
| 04:26:23 | <sshine> | texasmynsted, (the only difference is "BS." and some import/overloading machinery) |
| 04:27:09 | <sshine> | pjb, [h][e][h][e]. |
| 04:27:33 | <pjb> | or even '\h\e\h\e' |
| 04:27:34 | <texasmynsted> | lol |
| 04:27:55 | <sshine> | TCL has a pretty decent regex implementation. |
| 04:28:37 | <sshine> | it's powerful yet not unreasonable. and the library functions around it are actually useful. unfortunately, in TCL, everything is a string. |
| 04:28:40 | <Axman6> | is Haskell89's type system turing complete? |
| 04:28:49 | <texasmynsted> | :-) |
| 04:28:51 | <c_wraith> | No |
| 04:29:32 | → | star0558 joins (~star0558@124.123.104.52) |
| 04:31:10 | <dsal> | I'm super happy to ~never use regex. |
| 04:31:51 | <Axman6> | nah they're great in text editors |
| 04:32:01 | <Axman6> | but should never be in code |
| 04:32:17 | <dibblego> | and text editors are not great |
| 04:32:38 | <texasmynsted> | I do not like regexp. I only use them when I must. |
| 04:32:42 | <sshine> | dsal, $you =~ m/never/ use regex? |
| 04:33:02 | <texasmynsted> | Thanks again sshine |
| 04:36:16 | <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. |
| 04:36:44 | <Axman6> | I've always wanted lenses over haskell courde to use in a text editor |
| 04:37:47 | <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 |
| 04:37:50 | <dibblego> | aka, an editor without the strings! |
| 04:37:53 | <sshine> | powertools plus an appropriately sized one. |
| 04:38:47 | <dsal> | A regex isn't an oversized powertool. It's the sawzall you use for everything because it's all you have. |
| 04:38:49 | <sshine> | s/(?<=ladder )/rather than / |
| 04:39:01 | <dsal> | My neighbor was trying to cut up a tree with his sawzall. Awful time he had. |
| 04:39:09 | × | jakob_ quits (~textual@p200300f49f1622009d826d3ed3c60d57.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…) |
| 04:39:09 | Axman6 | wants to know what a drill hammer is |
| 04:39:28 | → | jakob_ joins (~textual@p200300f49f1622009d826d3ed3c60d57.dip0.t-ipconnect.de) |
| 04:39:30 | <sshine> | Axman6, it's a small jackhammer for concrete walls and ceilings. |
| 04:39:44 | <MarcelineVQ> | hammer drill :> |
| 04:39:50 | <sshine> | Axman6, it punches and doesn't drill. |
| 04:40:16 | <sshine> | Axman6, a percussion drill does both, but it doesn't punch as hard. |
| 04:40:43 | <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. |
| 04:41:59 | <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 |
| 04:42:05 | <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). |
| 04:42:15 | <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. |
| 04:42:16 | → | notnatebtw joins (~nate@125.161.131.218) |
| 04:42:35 | <sshine> | in this scenario, Megaparsec is the percussion drill. |
| 04:43:17 | <sshine> | dsal, I'd use a percussion drill for that. haha, j/k. |
| 04:43:58 | <dsal> | Heh, I used a dremel to do that once, free hand. It technically worked. But that was really dumb. |
| 04:44:26 | × | jakob_ quits (~textual@p200300f49f1622009d826d3ed3c60d57.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 04:46:53 | × | star0558 quits (~star0558@124.123.104.52) (Remote host closed the connection) |
| 04:47:12 | → | star1616 joins (~star1616@124.123.104.52) |
| 04:47:49 | <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. |
| 04:48:08 | <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 |
| 04:48:11 | <sshine> | s/gained/gained from using regex-applicative in the first place/ |
| 04:48:14 | × | star1616 quits (~star1616@124.123.104.52) (Remote host closed the connection) |
| 04:48:32 | → | Codaraxis joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) |
| 04:49:11 | × | coot quits (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 04:49:12 | → | watt739 joins (~watt739@124.123.104.52) |
| 04:49:36 | <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. |
| 04:49:45 | → | coot joins (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) |
| 04:50:16 | → | stonebrige joins (~stonebrig@4e69b241.skybroadband.com) |
| 04:50:22 | <dsal> | sshine: That's kind of weird. It doesn't look like a regex language. |
| 04:50:55 | → | aarvar joins (~foewfoiew@c.24.56.239.179.static.broadstripe.net) |
| 04:51:19 | <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). |
| 04:51:45 | × | puffnfresh quits (~puffnfres@180-150-38-83.b49626.bne.nbn.aussiebb.net) (Read error: Network is unreachable) |
| 04:52:47 | <MarcelineVQ> | so literal :> slag bore mchine |
| 04:52:51 | <sshine> | dsal, the meat of the task is pretty much exactly the same in regex-applicative and megaparsec. |
| 04:53:07 | <sshine> | MarcelineVQ, haha yes, this is a good name. punch drill machine. |
| 04:53:09 | <dsal> | Yeah, both seem like fine ways to do parsing. |
| 04:53:39 | <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 |
| 04:55:28 | → | puffnfresh joins (~puffnfres@180-150-38-83.b49626.bne.nbn.aussiebb.net) |
| 04:57:54 | → | alp joins (~alp@2a01:e0a:58b:4920:c9f2:c45e:5046:e2e6) |
| 05:00:33 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 05:00:52 | × | texasmynsted quits (~texasmyns@185.247.70.76) (Remote host closed the connection) |
| 05:01:40 | → | texasmynsted joins (~texasmyns@185.247.70.76) |
| 05:05:14 | → | christo joins (~chris@81.96.113.213) |
| 05:05:32 | <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 |
| 05:05:48 | × | texasmynsted quits (~texasmyns@185.247.70.76) (Ping timeout: 244 seconds) |
| 05:06:01 | <sshine> | that last sentence missed a superlative. |
| 05:10:15 | × | christo quits (~chris@81.96.113.213) (Ping timeout: 265 seconds) |
| 05:12:25 | notnatebtw | is now known as hidedagger |
| 05:12:25 | × | solonarv quits (~solonarv@astrasbourg-653-1-263-62.w92-161.abo.wanadoo.fr) (Ping timeout: 260 seconds) |
| 05:13:12 | × | hidedagger quits (~nate@125.161.131.218) (Quit: WeeChat 2.9) |
| 05:15:00 | × | hyiltiz quits (~quassel@unaffiliated/hyiltiz) (Remote host closed the connection) |
| 05:15:20 | → | hidedagger joins (~nate@125.161.131.218) |
| 05:16:03 | × | hidedagger quits (~nate@125.161.131.218) (Client Quit) |
| 05:16:48 | × | star_watt quits (7c7b6834@124.123.104.52) (Remote host closed the connection) |
| 05:18:25 | × | zoran119 quits (~zoran119@124-169-22-52.dyn.iinet.net.au) (Quit: leaving) |
| 05:25:57 | × | xff0x quits (~fox@2001:1a81:522f:7b00:29b2:8682:67ea:c01f) (Ping timeout: 244 seconds) |
| 05:26:40 | × | irc_user quits (uid423822@gateway/web/irccloud.com/x-nqqmqoyedjtdxopn) (Quit: Connection closed for inactivity) |
| 05:26:52 | → | xff0x joins (~fox@2001:1a81:522f:7b00:d95:27ea:7e18:f05f) |
| 05:34:41 | → | DTZUZU joins (~DTZUZU@207.81.171.116) |
| 05:36:17 | × | acidjnk_new2 quits (~acidjnk@p200300d0c718f665213d210801ac68e4.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 05:37:00 | × | watt739 quits (~watt739@124.123.104.52) (Ping timeout: 256 seconds) |
| 05:37:10 | × | DTZUZU_ quits (~DTZUZU@207.81.171.87) (Ping timeout: 260 seconds) |
| 05:37:25 | × | justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 240 seconds) |
| 05:38:25 | × | chise quits (3b29a236@59.41.162.54) (Remote host closed the connection) |
| 05:40:36 | → | day_ joins (~Unknown@unaffiliated/day) |
| 05:44:13 | × | day quits (~Unknown@unaffiliated/day) (Ping timeout: 260 seconds) |
| 05:44:14 | day_ | is now known as day |
| 05:45:11 | → | Lycurgus joins (~niemand@98.4.97.110) |
| 05:46:07 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:48:52 | → | ten joins (~ten@1.136.105.204) |
| 05:49:38 | <ten> | /Help |
| 05:49:43 | × | ten quits (~ten@1.136.105.204) (Client Quit) |
| 05:50:36 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 05:55:39 | × | Lycurgus quits (~niemand@98.4.97.110) (Quit: Exeunt) |
| 05:56:07 | × | shatriff_ quits (~vitaliish@176.52.219.10) (Remote host closed the connection) |
| 05:56:29 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:00:01 | × | Guest74313 quits (~benj@195.206.169.184) () |
| 06:01:06 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving) |
| 06:02:40 | × | L29Ah quits (~L29Ah@unaffiliated/l29ah) (Ping timeout: 272 seconds) |
| 06:04:15 | → | hidedagger joins (~nate@125.161.131.218) |
| 06:04:24 | → | hyiltiz joins (~quassel@2601:14d:4100:112c:cff4:7114:bc84:3722) |
| 06:04:24 | × | hyiltiz quits (~quassel@2601:14d:4100:112c:cff4:7114:bc84:3722) (Changing host) |
| 06:04:24 | → | hyiltiz joins (~quassel@unaffiliated/hyiltiz) |
| 06:04:39 | → | L29Ah joins (~L29Ah@unaffiliated/l29ah) |
| 06:06:02 | × | jedws quits (~jedws@101.184.150.81) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 06:09:56 | → | dbmikus_ joins (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
| 06:10:47 | × | alp quits (~alp@2a01:e0a:58b:4920:c9f2:c45e:5046:e2e6) (Ping timeout: 272 seconds) |
| 06:14:07 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 246 seconds) |
| 06:14:33 | × | dbmikus_ quits (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds) |
| 06:15:10 | × | hidedagger quits (~nate@125.161.131.218) (Quit: WeeChat 2.9) |
| 06:15:21 | × | mmohammadi9812 quits (~mmohammad@2.178.132.235) (Ping timeout: 258 seconds) |
| 06:16:14 | → | hyiltiz_ joins (~quassel@82.118.227.47) |
| 06:16:49 | → | hidedagger joins (~nate@125.161.131.218) |
| 06:17:55 | × | hyiltiz quits (~quassel@unaffiliated/hyiltiz) (Quit: hyiltiz) |
| 06:22:10 | × | howdoi quits (uid224@gateway/web/irccloud.com/x-vhoynudvnfkkavxn) (Quit: Connection closed for inactivity) |
| 06:25:43 | × | Jeanne-Kamikaze quits (~Jeanne-Ka@68.235.43.150) (Quit: Leaving) |
| 06:29:06 | → | yinfeng joins (~yinfeng@2001:250:5002:8100::3:bd7b) |
| 06:36:25 | × | jespada quits (~jespada@90.254.245.49) (Ping timeout: 240 seconds) |
| 06:39:22 | → | jespada joins (~jespada@90.254.245.49) |
| 06:40:01 | hackage | shakebook 0.13.1.0 - Shake-based technical documentation generator; HTML & PDF https://hackage.haskell.org/package/shakebook-0.13.1.0 (locallycompact) |
| 06:46:58 | × | bgamari_ quits (~bgamari@72.65.102.83) (Ping timeout: 268 seconds) |
| 06:48:40 | → | thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
| 06:50:00 | hackage | gopro-plus 0.4.1.3 - GoPro Plus Client API. https://hackage.haskell.org/package/gopro-plus-0.4.1.3 (dustin) |
| 06:50:54 | × | softwarm quits (4408f588@ip68-8-245-136.sd.sd.cox.net) (Remote host closed the connection) |
| 06:52:45 | × | thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 06:53:49 | → | CodeAlways joins (uid272474@gateway/web/irccloud.com/x-ydthmisqrovakaks) |
| 06:57:30 | 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) |
| 07:08:01 | × | jess quits (jess@freenode/staff/jess) (Quit: Leaving) |
| 07:09:25 | × | elliott__ quits (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
| 07:11:49 | → | mmohammadi9812 joins (~mmohammad@5.113.30.246) |
| 07:15:13 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:17:14 | → | jedws joins (~jedws@101.184.150.81) |
| 07:18:18 | × | mmohammadi9812 quits (~mmohammad@5.113.30.246) (Read error: Connection reset by peer) |
| 07:19:53 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 07:22:54 | × | lockshaw quits (~lockshaw@165.22.163.71) (Quit: ZNC 1.7.2+deb3 - https://znc.in) |
| 07:23:17 | → | lockshaw joins (~lockshaw@165.22.163.71) |
| 07:25:29 | → | knupfer joins (~Thunderbi@200116b82c33ca00c94caacc2b768892.dip.versatel-1u1.de) |
| 07:25:45 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 07:28:31 | ← | aarvar parts (~foewfoiew@c.24.56.239.179.static.broadstripe.net) () |
| 07:34:05 | × | knupfer quits (~Thunderbi@200116b82c33ca00c94caacc2b768892.dip.versatel-1u1.de) (Ping timeout: 244 seconds) |
| 07:36:34 | × | coot quits (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 256 seconds) |
| 07:36:55 | → | scasc joins (~szabi@213142096120.public.telering.at) |
| 07:38:12 | <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). |
| 07:38:33 | × | plutoniix quits (~q@175.176.222.7) (Ping timeout: 260 seconds) |
| 07:38:53 | <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 :-) |
| 07:42:41 | <yushyin> | https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history |
| 07:42:56 | → | plutoniix joins (~q@175.176.222.7) |
| 07:44:05 | → | dhouthoo joins (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) |
| 07:45:41 | → | Axma50981 joins (~Axman6@pdpc/supporter/student/Axman6) |
| 07:45:47 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 07:47:53 | × | Axman6 quits (~Axman6@pdpc/supporter/student/Axman6) (Ping timeout: 260 seconds) |
| 07:48:28 | × | plutoniix quits (~q@175.176.222.7) (Ping timeout: 260 seconds) |
| 07:50:13 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 260 seconds) |
| 07:57:01 | → | coot joins (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) |
| 07:58:34 | × | MindlessDrone quits (~MindlessD@unaffiliated/mindlessdrone) (Ping timeout: 272 seconds) |
| 07:59:45 | → | plutoniix joins (~q@175.176.222.7) |
| 08:00:38 | → | DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
| 08:01:20 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 08:01:51 | → | danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
| 08:02:24 | → | PlasmaStrike joins (~mattplasm@45.83.89.28) |
| 08:04:23 | → | MindlessDrone joins (~MindlessD@unaffiliated/mindlessdrone) |
| 08:04:56 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection) |
| 08:05:10 | → | chele joins (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) |
| 08:07:16 | <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. |
| 08:07:34 | <dminuoso> | They are probably *overused*, but I think they have their place in code. |
| 08:07:46 | → | Sanchayan joins (~Sanchayan@223.226.118.59) |
| 08:08:10 | → | thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
| 08:08:20 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 08:10:50 | → | dbmikus_ joins (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
| 08:11:33 | → | knupfer joins (~Thunderbi@dynamic-046-114-148-101.46.114.pool.telefonica.de) |
| 08:11:43 | × | knupfer quits (~Thunderbi@dynamic-046-114-148-101.46.114.pool.telefonica.de) (Client Quit) |
| 08:11:52 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 08:12:03 | → | knupfer joins (~Thunderbi@dynamic-046-114-148-101.46.114.pool.telefonica.de) |
| 08:12:19 | × | thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 08:13:18 | → | christo joins (~chris@81.96.113.213) |
| 08:13:18 | × | knupfer quits (~Thunderbi@dynamic-046-114-148-101.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
| 08:13:44 | → | jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se) |
| 08:14:09 | → | hololeap_ joins (~hololeap@unaffiliated/hololeap) |
| 08:14:44 | → | danvet_ joins (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) |
| 08:14:54 | → | alp joins (~alp@2a01:e0a:58b:4920:b1ae:7aff:716a:2fef) |
| 08:14:55 | × | danvet_ quits (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) (Remote host closed the connection) |
| 08:15:13 | × | kav quits (~kari@dsl-hkibng42-56733f-225.dhcp.inet.fi) (Ping timeout: 246 seconds) |
| 08:15:51 | × | hololeap quits (~hololeap@unaffiliated/hololeap) (Ping timeout: 265 seconds) |
| 08:16:12 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 08:16:38 | <scasc> | yushyin: Thanks, I remembered having seen base versions tabulated somewhere. |
| 08:16:58 | <scasc> | That could be augmented with release dates for the GHC versions :-) |
| 08:17:01 | × | dbmikus_ quits (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 264 seconds) |
| 08:17:29 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 08:18:24 | × | Sgeo quits (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer) |
| 08:18:31 | × | yinfeng quits (~yinfeng@2001:250:5002:8100::3:bd7b) (Ping timeout: 244 seconds) |
| 08:19:39 | → | britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
| 08:20:34 | → | yinfeng joins (~yinfeng@122.96.106.57) |
| 08:20:45 | → | rotty joins (rotty@ghost.xx.vu) |
| 08:21:24 | × | nbloomf_ quits (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 08:22:02 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 08:22:02 | <[exa]> | dminuoso: they are great for user-specified grammar parts where you don't want a full compiler in your program |
| 08:22:05 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 08:22:54 | → | kav joins (~kari@dsl-hkibng42-56733f-225.dhcp.inet.fi) |
| 08:23:59 | <[exa]> | dminuoso: like, I'd really love a library now with a more transparent interface than regex-base |
| 08:24:19 | <dminuoso> | [exa]: pcre-heavy has a good interface |
| 08:24:31 | × | hidedagger quits (~nate@125.161.131.218) (Quit: WeeChat 2.9) |
| 08:24:45 | <[exa]> | will have a look, thanks |
| 08:25:21 | <[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) |
| 08:26:25 | → | jess joins (jess@freenode/staff/jess) |
| 08:26:52 | <[exa]> | ok pcre-heavy and pcre-light are cool |
| 08:27:05 | <[exa]> | is there something similar without external deps? I'm now on regex-tdfa |
| 08:28:56 | → | mimi_vx joins (~mimi@tulipan.habr.nat.praha12.net) |
| 08:29:34 | <dminuoso> | [exa]: Mmm, regex-applicative perhaps |
| 08:29:41 | <dminuoso> | (Which is also a library Im quite fond of) |
| 08:30:01 | <[exa]> | ok sounds good |
| 08:30:05 | <dminuoso> | It's a cross between parser combinators and regular expressions, but it gets away with pure haskell instead of QQs |
| 08:30:15 | <[exa]> | looks good |
| 08:31:01 | → | fraktor joins (~walt@129.93.191.18) |
| 08:31:12 | <[exa]> | palpatine voice: goooooood |
| 08:31:16 | <lortabac> | my personal problem with common regex implementations is the stringy syntax |
| 08:31:22 | <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? |
| 08:31:32 | <lortabac> | I wasn't aware of regex-applicative, it looks good |
| 08:31:40 | <[exa]> | fraktor: quite possibly yes, you'll get a decent redirect if not :] |
| 08:31:48 | <fraktor> | Fair enough. |
| 08:31:53 | → | borne joins (~fritjof@200116b8643b36005d0cb1433c5d4cbb.dip.versatel-1u1.de) |
| 08:32:28 | <[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 |
| 08:32:29 | → | kritzefitz joins (~kritzefit@fw-front.credativ.com) |
| 08:32:47 | <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. |
| 08:33:23 | → | hidedagger joins (~nate@125.161.131.218) |
| 08:34:35 | <[exa]> | fraktor: the objects have 1D size? |
| 08:34:43 | <fraktor> | For the purpose of this problem yes. |
| 08:35:31 | <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. |
| 08:35:33 | <[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? |
| 08:35:48 | <fraktor> | Exactly. But there may be multiple objects of the same size. |
| 08:35:49 | → | christo joins (~chris@81.96.113.213) |
| 08:36:06 | × | scasc quits (~szabi@213142096120.public.telering.at) (Quit: Leaving) |
| 08:36:23 | <[exa]> | this sounds like a knapsack but hopefully it's not that bad. :] |
| 08:36:43 | <lortabac> | fraktor: do you also want to minimize the number of bins you use? (by putting more than 1 object in a bin) |
| 08:38:26 | <[exa]> | imho not necessariy (unless shorter boards are proportionally more expensive than longer boards) |
| 08:38:33 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 08:38:47 | <fraktor> | All other things being equal, yeah, but I'd rather reduce waste than have fewer boards. |
| 08:39:02 | <fraktor> | And it's certainly not critical. |
| 08:39:10 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 08:39:54 | <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 |
| 08:40:50 | × | dmiles quits (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Read error: Connection reset by peer) |
| 08:40:54 | × | britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
| 08:40:56 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:41:33 | <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. |
| 08:41:51 | <fraktor> | The first packing has 2 units of waste, while the second packing only has 1. |
| 08:42:31 | <lortabac> | ok I understand now |
| 08:42:48 | → | dmiles joins (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) |
| 08:42:57 | <[exa]> | lortabac: that would generate a lot of waste |
| 08:43:26 | <[exa]> | fraktor: how many objects/bins do you expect? |
| 08:43:30 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 08:43:44 | <fraktor> | Bins, let's say 4, and objects, I'd say about 20. |
| 08:43:59 | <fraktor> | But I'd like something that scales efficiently if at all possible. |
| 08:44:06 | → | britva joins (~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) |
| 08:44:08 | × | Lord_of_Life quits (~Lord@46.217.217.162) (Changing host) |
| 08:44:08 | → | Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 08:44:17 | <[exa]> | well for now just enjoy the computers and go brute force :D |
| 08:44:47 | <lortabac> | :) |
| 08:45:21 | <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? |
| 08:46:32 | → | watt976 joins (~watt976@124.123.107.59) |
| 08:47:22 | <[exa]> | I'm starting to suspect there'd be a dynamic programming solution |
| 08:47:51 | <lortabac> | you can probably reframe the problem to be solvable with linear programming, by giving a sufficiently big (finite) number of bins |
| 08:48:34 | <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. |
| 08:48:50 | <[exa]> | that's going to just transfer the guesswork to the linear solver :] |
| 08:48:53 | <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. |
| 08:49:00 | → | temporary1233 joins (~szabi@213142096120.public.telering.at) |
| 08:50:01 | <[exa]> | ok technically, lets give it a bit of determinism |
| 08:50:14 | × | britva quits (~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) (Quit: This computer has gone to sleep) |
| 08:50:34 | → | britva joins (~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) |
| 08:51:12 | <[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" |
| 08:51:50 | × | watt976 quits (~watt976@124.123.107.59) (Remote host closed the connection) |
| 08:52:01 | <fraktor> | Are you saying that cutting [2, 1] out of a board is functionally equivalent to cutting out [1, 2]? I'd agree. |
| 08:52:19 | → | __monty__ joins (~toonn@unaffiliated/toonn) |
| 08:52:24 | → | watt332 joins (~watt332@124.123.107.59) |
| 08:52:31 | <[exa]> | then heuristic, 2] cut out the pieces that are most unwieldy first |
| 08:52:44 | <[exa]> | so that you don't have to generate a lots of waste towards the end of the search |
| 08:52:44 | → | PlasmaSt` joins (~mattplasm@45.83.89.28) |
| 08:52:55 | <[exa]> | 3] branch bound and hope |
| 08:54:06 | × | hidedagger quits (~nate@125.161.131.218) (Quit: WeeChat 2.9) |
| 08:54:28 | → | mmohammadi9812 joins (~mmohammad@5.113.30.246) |
| 08:54:34 | × | PlasmaStrike quits (~mattplasm@45.83.89.28) (Ping timeout: 260 seconds) |
| 08:54:36 | × | mmohammadi9812 quits (~mmohammad@5.113.30.246) (Client Quit) |
| 08:54:49 | Axma50981 | is now known as Axman6 |
| 08:54:56 | × | dmiles quits (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 272 seconds) |
| 08:55:04 | <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. |
| 08:55:10 | <[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 |
| 08:55:37 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 08:55:47 | <[exa]> | (modulo corner cases) |
| 08:56:06 | <tomsmeding> | total waste = sum_{b in used boards} length(b) - sum_{o in objects} length(o) |
| 08:56:19 | <tomsmeding> | so minimal waste <=> minimal total length of boards chosen |
| 08:57:22 | <fraktor> | tomsmeding: I don't think so. At least not in all cases. |
| 08:57:44 | <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. |
| 08:58:03 | <tomsmeding> | "minimal total length of boards chosen" |
| 08:58:32 | <fraktor> | Oh! I misread. I thought it was "minimal number of boards chosen." In that case, you're correct. |
| 08:58:53 | × | Amras quits (~Amras@unaffiliated/amras0000) (Ping timeout: 246 seconds) |
| 08:58:59 | <tomsmeding> | not sure if this observation helps in any way though :p |
| 08:59:23 | <fraktor> | It's either completely useless or the key to cracking the puzzle |
| 08:59:28 | <fraktor> | Not sure which |
| 08:59:58 | <tomsmeding> | it's fairly easy to formulate as an ILP problem |
| 09:00:02 | × | Sanchayan quits (~Sanchayan@223.226.118.59) (Quit: leaving) |
| 09:00:26 | ski | . o O ( "Inductive Logic Programming" ? ) |
| 09:00:33 | <tomsmeding> | integer linear programming :') |
| 09:00:37 | <tomsmeding> | yay acronyms |
| 09:00:41 | <ski> | ah |
| 09:00:56 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 09:00:57 | <fraktor> | Oh wow, that's hard though |
| 09:01:12 | <tomsmeding> | ILP problems are NP-complete in general so this proves nothing |
| 09:01:20 | <ski> | (why's it called "Linear Programming", btw ?) |
| 09:01:31 | <tomsmeding> | but ILP solvers are notoriously good at solving hard problems faster than expected |
| 09:01:43 | <tomsmeding> | ski: ILP = LP + branch-and-bound, where LP = linear programming |
| 09:02:10 | <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 |
| 09:02:12 | <fraktor> | I think it's called LP because the underlying systems have linear relationships to each other? |
| 09:02:30 | <tomsmeding> | (that first step is just solving an LP problem) |
| 09:03:02 | → | christo joins (~chris@81.96.113.213) |
| 09:03:09 | <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? |
| 09:03:21 | <[exa]> | ski: because it's so np-hard that you can encode programs into that :D |
| 09:03:44 | <tomsmeding> | oh _that_ was the question, yeah the name is atrocious |
| 09:04:13 | <fraktor> | tomsmeding: I've never used a linear programming library before, would you be willing to help me encode this into it? |
| 09:04:18 | <tomsmeding> | [exa]: because if you've proven that, expressing this as an ILP might be fairly optimal :p |
| 09:04:23 | <tomsmeding> | fraktor: sure |
| 09:04:25 | × | PlasmaSt` quits (~mattplasm@45.83.89.28) (Ping timeout: 264 seconds) |
| 09:04:27 | <[exa]> | tomsmeding: given some careful choice of board lengths I guess you can solve a good number of subset sum cases with that |
| 09:04:40 | <tomsmeding> | all, or a good number? |
| 09:04:50 | <ski> | fraktor : doesn't explain the "programming" part, though |
| 09:05:04 | <ski> | [exa] : isn't that just for the integer variety ? |
| 09:05:14 | <[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 |
| 09:05:21 | <lortabac> | ski: "programming" is not meant as computer programming, but more like "planning" |
| 09:05:44 | <tomsmeding> | except if you're sadistic and want an exactly optimal solution :p |
| 09:06:09 | <fraktor> | If nothing else I'll learn how to use an ILP solver. |
| 09:06:43 | <tomsmeding> | (I have to dig how it worked again too, give me a minute :p |
| 09:06:44 | <tomsmeding> | ) |
| 09:07:36 | ski | . o O ( "Why “dynamic programming”?" by Arcane Sentiment in 2010-04-23 <http://arcanesentiment.blogspot.com/2010/04/why-dynamic-programming.html> ) |
| 09:07:38 | × | rprije quits (~rprije@194-193-168-77.tpgi.com.au) (Ping timeout: 260 seconds) |
| 09:07:46 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 09:07:52 | → | Franciman joins (~francesco@host-79-36-167-172.retail.telecomitalia.it) |
| 09:08:31 | → | rprije joins (~rprije@124.148.131.132) |
| 09:10:25 | <tomsmeding> | fraktor: so the idea of an LP problem (let's start with that) is the following |
| 09:10:37 | <tomsmeding> | you define a number of real-valued variables, x1,...,xn |
| 09:10:51 | <tomsmeding> | and 1. give an optimisation function, which is a linear combination of those variables |
| 09:11:09 | <tomsmeding> | and 2. a list of linear constraints, which are of the form (linear combination of the variables) <= (real constant) |
| 09:11:31 | <tomsmeding> | then the LP solver gives you an assignment of the variables such that the target function is minimised |
| 09:11:37 | <tomsmeding> | (s/optimisation function/target function/) |
| 09:11:53 | <tomsmeding> | ILP solvers can additionally handle the restriction that certain variables may only be integer-valued |
| 09:12:28 | <fraktor> | I'm really sorry, but something came up and I gotta go |
| 09:12:35 | <tomsmeding> | np :) |
| 09:12:40 | <fraktor> | I'll definitely look into this though, thank you |
| 09:12:41 | × | fraktor quits (~walt@129.93.191.18) (Quit: WeeChat 2.8) |
| 09:13:03 | tomsmeding | might still code this up for reason of procrastination |
| 09:13:09 | <[exa]> | sounds like fedex delivered the boards! |
| 09:13:22 | <tomsmeding> | :D |
| 09:14:12 | <__monty__> | s/np/np-hard/ FTFY |
| 09:14:30 | <[exa]> | anyway the sum problems are cool from the hardness perspective |
| 09:14:53 | <[exa]> | https://en.wikipedia.org/wiki/3SUM <- most illustrative one I know of |
| 09:15:01 | × | zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving) |
| 09:15:49 | <tomsmeding> | ah the log bounds, O(n^2 / (log n / log log n)^(2/3)) lovely <3 |
| 09:16:28 | → | zaquest joins (~notzaques@5.128.210.178) |
| 09:16:52 | <ski> | this is an instance of CP (Constraint Programming) (of which CLP, Constraint Logic Programming, is a more nicely integrated form) |
| 09:17:48 | → | christo joins (~chris@81.96.113.213) |
| 09:18:15 | × | xff0x quits (~fox@2001:1a81:522f:7b00:d95:27ea:7e18:f05f) (Ping timeout: 272 seconds) |
| 09:18:41 | → | DavidEichmann joins (~david@43.240.198.146.dyn.plus.net) |
| 09:19:02 | → | xff0x joins (~fox@2001:1a81:522f:7b00:1cd6:2f35:f89:eebf) |
| 09:19:04 | → | ggole joins (~ggole@2001:8003:8119:7200:3462:7213:ea5b:f472) |
| 09:22:06 | → | slewis joins (~slewis@185.204.1.185) |
| 09:22:57 | → | avdb joins (~avdb@ip-83-134-202-8.dsl.scarlet.be) |
| 09:24:15 | → | raichoo joins (~raichoo@213.240.178.58) |
| 09:25:24 | <raichoo> | Hi everyone, we have rebooted Advent of Haskell 2020 and are currently collecting potential blog articles. www.adventofhaskell.com |
| 09:25:57 | × | TMA quits (tma@twin.jikos.cz) (Read error: Connection reset by peer) |
| 09:26:05 | <Axman6> | hooray! |
| 09:26:27 | <Axman6> | also I feel like that's a nick I haven't aseen for a very long time... |
| 09:26:34 | × | britva quits (~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) (Quit: This computer has gone to sleep) |
| 09:27:10 | <raichoo> | I've been MIA from twitter for kind of a long time and I'm not posting that much in here :D |
| 09:27:20 | <raichoo> | But glad someone remembers me nevertheless ^^ |
| 09:27:32 | → | dmiles joins (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) |
| 09:29:15 | <Axman6> | hmm, I could possibly make soething for this too |
| 09:29:26 | <Axman6> | something too. mauybe IRC + pub is a bad idea |
| 09:29:51 | → | thc202 joins (~thc202@unaffiliated/thc202) |
| 09:29:52 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 09:30:07 | → | britva joins (~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) |
| 09:31:30 | <raichoo> | Axman6: That would be cool :) Just drop me a mail, all the submissions to advent@antei.de go straight to me. |
| 09:31:58 | <merijn> | raichoo: Did you mail the Haskell Weekly News guy yet? |
| 09:32:12 | → | christo joins (~chris@81.96.113.213) |
| 09:33:36 | <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? |
| 09:34:03 | <merijn> | raichoo: Contact info is here: https://haskellweekly.news/ |
| 09:34:25 | <merijn> | I think it usually goes out on friday, so if you're fast it could still be added :) |
| 09:34:54 | <raichoo> | Whoop whoop, thanks for the pointer, will do that right now :D |
| 09:35:21 | → | fendor joins (~fendor@178.115.130.128.wireless.dyn.drei.com) |
| 09:42:01 | hackage | wai-extra 3.1.2 - Provides some basic WAI handlers and middleware. https://hackage.haskell.org/package/wai-extra-3.1.2 (MichaelSnoyman) |
| 09:42:44 | × | dmiles quits (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 244 seconds) |
| 09:45:05 | → | mdunnio joins (~mdunnio@208.59.170.5) |
| 09:45:19 | × | todda7 quits (~torstein@ppp-2-84-30-242.home.otenet.gr) (Quit: Konversation terminated!) |
| 09:45:37 | → | todda7 joins (~torstein@ppp-2-84-30-242.home.otenet.gr) |
| 09:45:40 | → | theDon joins (~td@94.134.91.129) |
| 09:46:20 | → | Gurkenglas__ joins (~Gurkengla@unaffiliated/gurkenglas) |
| 09:47:17 | → | bgamari joins (~bgamari@2001:470:e438::1) |
| 09:47:24 | × | hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-hpmiowuimqysffdt) (Quit: Connection closed for inactivity) |
| 09:48:29 | × | fendor quits (~fendor@178.115.130.128.wireless.dyn.drei.com) (Ping timeout: 258 seconds) |
| 09:49:25 | × | mdunnio quits (~mdunnio@208.59.170.5) (Ping timeout: 240 seconds) |
| 09:50:10 | → | mdunnio joins (~mdunnio@208.59.170.5) |
| 09:50:27 | → | fendor joins (~fendor@178.165.130.110.wireless.dyn.drei.com) |
| 09:52:10 | → | mmohammadi9812 joins (~mmohammad@188.210.113.223) |
| 09:53:46 | → | fendor_ joins (~fendor@078132052150.public.t-mobile.at) |
| 09:54:25 | × | mdunnio quits (~mdunnio@208.59.170.5) (Ping timeout: 240 seconds) |
| 09:55:41 | × | kish quits (~oracle@unaffiliated/oracle) (Remote host closed the connection) |
| 09:57:21 | → | kish joins (~oracle@unaffiliated/oracle) |
| 09:59:08 | → | fendor__ joins (~fendor@212095005240.public.telering.at) |
| 10:00:04 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 10:01:25 | × | fendor_ quits (~fendor@078132052150.public.t-mobile.at) (Ping timeout: 240 seconds) |
| 10:03:02 | → | solonarv joins (~solonarv@astrasbourg-653-1-263-62.w92-161.abo.wanadoo.fr) |
| 10:03:20 | × | britva quits (~britva@2a02:aa13:7240:2980:9117:32f5:aa09:6904) (Quit: This computer has gone to sleep) |
| 10:04:25 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 246 seconds) |
| 10:06:21 | → | dmiles joins (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) |
| 10:08:28 | → | darjeeling_ joins (~darjeelin@115.215.43.51) |
| 10:11:23 | → | TMA joins (tma@twin.jikos.cz) |
| 10:13:56 | × | guest115 quits (~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1)) |
| 10:18:25 | → | britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
| 10:18:57 | → | acidjnk_new2 joins (~acidjnk@p200300d0c718f6890d36626cfb994f1d.dip0.t-ipconnect.de) |
| 10:20:39 | → | m0rphism joins (~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) |
| 10:22:03 | → | ubert joins (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) |
| 10:23:51 | × | kritzefitz quits (~kritzefit@fw-front.credativ.com) (Remote host closed the connection) |
| 10:31:58 | <tomsmeding> | @tell fraktor https://tomsmeding.com/ss/get/tomsmeding/V5dE2W |
| 10:31:58 | <lambdabot> | Consider it noted. |
| 10:34:15 | × | alp quits (~alp@2a01:e0a:58b:4920:b1ae:7aff:716a:2fef) (Ping timeout: 272 seconds) |
| 10:36:16 | → | alp joins (~alp@2a01:e0a:58b:4920:6070:c578:85d0:a73a) |
| 10:36:44 | <[exa]> | tomsmeding: all go to board 1? |
| 10:36:49 | <[exa]> | (oh okay thats board type 1) |
| 10:37:09 | <tomsmeding> | zero-based indices :p |
| 10:37:10 | <tomsmeding> | but yes |
| 10:37:53 | <[exa]> | what's the ILP library btw? |
| 10:38:05 | <tomsmeding> | I'm using an external process, https://sourceforge.net/projects/lpsolve/ |
| 10:38:11 | <tomsmeding> | will put the code in a paste in a minute |
| 10:38:17 | <[exa]> | o good |
| 10:39:08 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 10:41:05 | → | christo joins (~chris@81.96.113.213) |
| 10:42:09 | × | temporary1233 quits (~szabi@213142096120.public.telering.at) (Ping timeout: 258 seconds) |
| 10:45:11 | → | akegalj joins (~akegalj@93-142-95-221.adsl.net.t-com.hr) |
| 10:45:30 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 10:45:49 | × | watt332 quits (~watt332@124.123.107.59) (Ping timeout: 264 seconds) |
| 10:48:08 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 10:48:44 | <tomsmeding> | @tell fraktor https://paste.tomsmeding.com/rT6TJbdr (also [exa]) |
| 10:48:44 | <lambdabot> | Consider it noted. |
| 10:49:17 | <tomsmeding> | lol I realise now that the output for a constant linear combination is borked but it works |
| 10:49:27 | <tomsmeding> | "<= + 1" |
| 10:49:40 | <tomsmeding> | it works thus it's fine |
| 10:49:50 | → | christo joins (~chris@81.96.113.213) |
| 10:50:04 | tomsmeding | wonders whether to amend the paste directly in the database |
| 10:50:49 | → | shatriff joins (~vitaliish@176.52.219.10) |
| 10:54:52 | × | meck quits (~meck@li1809-18.members.linode.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 10:56:07 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 10:56:34 | × | dmiles quits (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 246 seconds) |
| 10:59:16 | → | dmiles joins (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) |
| 11:00:34 | → | Guest_54 joins (0253f68a@bl22-246-138.dsl.telepac.pt) |
| 11:01:02 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9) |
| 11:01:15 | → | meck joins (~meck@li1809-18.members.linode.com) |
| 11:01:30 | 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) |
| 11:01:44 | × | Guest_54 quits (0253f68a@bl22-246-138.dsl.telepac.pt) (Remote host closed the connection) |
| 11:02:25 | × | shailangsa quits (~shailangs@host86-186-133-58.range86-186.btcentralplus.com) (Ping timeout: 240 seconds) |
| 11:05:13 | × | raichoo quits (~raichoo@213.240.178.58) (Quit: Lost terminal) |
| 11:05:41 | → | pera joins (~pera@unaffiliated/pera) |
| 11:11:40 | → | SirSaul joins (559113cc@204-19-145-85.ftth.glasoperator.nl) |
| 11:12:37 | <SirSaul> | Hello people, can someone help me with a problem regarding indentation or something like that. |
| 11:13:05 | <yushyin> | sure, ask away |
| 11:13:37 | <SirSaul> | I'm quite new to functional programming and following a tutorial on Xwindow https://wiki.haskell.org/X_window_programming_in_Haskell |
| 11:13:59 | <SirSaul> | Things were fine at first, but the latter pieces of code didn't work, even when I copied them 1:1 |
| 11:14:35 | <SirSaul> | main.hs:15:6: error: parse error on input ‘=’ Perhaps you need a 'let' in a 'do' block? |
| 11:14:47 | <SirSaul> | I assume it's something wrong with the way it's written |
| 11:15:28 | <SirSaul> | I have all the dependecies btw, the first pieces of code worked fine. |
| 11:15:41 | <tomjaguarpaw> | Perhaps paste your code on https://paste.tomsmeding.com/ |
| 11:15:42 | <yushyin> | SirSaul: can you paste your code? https://paste.tomsmeding.com/ |
| 11:16:05 | <SirSaul> | The code is in the tutorial link from the haskell website |
| 11:16:48 | <tomjaguarpaw> | Yes, but it's likely something in the indentation has gone wrong when you have posted that code into your editor |
| 11:17:02 | × | hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection) |
| 11:17:03 | <SirSaul> | I see |
| 11:17:05 | <SirSaul> | I will check |
| 11:17:19 | tomsmeding | expects tabs |
| 11:17:21 | → | Tops2 joins (~Tobias@dyndsl-095-033-088-103.ewe-ip-backbone.de) |
| 11:17:24 | → | hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 11:17:31 | <SirSaul> | https://paste.tomsmeding.com/csO4jTzn |
| 11:17:50 | → | christo joins (~chris@81.96.113.213) |
| 11:17:55 | <yushyin> | tomsmeding: ghc warns about tabs nowadays |
| 11:18:06 | → | fendor_ joins (~fendor@77.119.128.54.wireless.dyn.drei.com) |
| 11:18:07 | <tomsmeding> | SirSaul: that "scr = defaultScreenOfDisplay dpy" line in 'main' needs to be indented ;) |
| 11:18:14 | <tomsmeding> | yushyin: also without -Wall? |
| 11:18:37 | <SirSaul> | Alright, yea I don't really know. I work in vim so pretty basic haha |
| 11:18:48 | <SirSaul> | the syntax is quite new for me. |
| 11:18:57 | <SirSaul> | feels like coding 1101 again haha |
| 11:19:05 | <tomjaguarpaw> | It seems that there are a lot of indentation errors, for example in mkUnmanagedWindow |
| 11:19:28 | <SirSaul> | Yea it's probably because I copied it 1:1 from the web after i tried to write it by hand |
| 11:19:54 | <SirSaul> | does it matter tabs or spaces? or is either good as long as it is consistent? |
| 11:20:01 | <tomsmeding> | still, the spaces should've copied along |
| 11:20:04 | <tomsmeding> | spaces only in haskell |
| 11:20:09 | <SirSaul> | alright |
| 11:20:25 | × | fendor quits (~fendor@178.165.130.110.wireless.dyn.drei.com) (Ping timeout: 240 seconds) |
| 11:20:46 | <tomjaguarpaw> | Copying and pasting Haskell code is not easy. You have to make sure you copy the spaces exactly. |
| 11:21:18 | <SirSaul> | Yea, it's also hard to see properly as I'm not familiar yet. |
| 11:22:14 | <tomjaguarpaw> | Oh, those indentation errors do also appear on https://wiki.haskell.org/X_window_programming_in_Haskell |
| 11:22:20 | <tomjaguarpaw> | It may well be that the page is just wrong |
| 11:22:36 | <tomsmeding> | oh wow |
| 11:22:37 | <tomsmeding> | yes |
| 11:22:50 | <tomjaguarpaw> | It hasn't really been edited since 2010 so it could be well out of date and generally unhelpful |
| 11:22:52 | <SirSaul> | Yes, that why I came here |
| 11:22:59 | <SirSaul> | I assumed an error on the page |
| 11:23:07 | <yushyin> | tomsmeding: yes -Wtabs is on by default, even without -Wall |
| 11:23:13 | <SirSaul> | Actually was trying to someone who could maybe edit the wiki |
| 11:23:14 | <tomsmeding> | yushyin: 🎉 |
| 11:23:42 | <tomjaguarpaw> | If your goal is to learn Haskell I would recommend against the wiki. It's massively out of date. |
| 11:23:42 | × | liff quits (liff@kapsi.fi) (Ping timeout: 260 seconds) |
| 11:23:50 | <SirSaul> | Yea I'm actually looking for some not to hard, not to easy apps to try and make |
| 11:23:51 | <yushyin> | but it's fine to use tabs in haskell, if you really really want to, it's just easy to get wrong :D |
| 11:23:55 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 11:23:59 | → | liff joins (liff@kapsi.fi) |
| 11:24:04 | <SirSaul> | most haskell things I find are like things add 10 2, or hello world.. |
| 11:24:11 | <SirSaul> | but Im looking for something a bit more. |
| 11:24:22 | <tomjaguarpaw> | Hmm, I don't know of one personally. Maybe someone else can recommend something. |
| 11:24:58 | <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 |
| 11:24:59 | <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 |
| 11:25:03 | <SirSaul> | I know how that works. |
| 11:25:15 | × | hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection) |
| 11:25:19 | <tomjaguarpaw> | tomsmeding: The Wiki is just generally broken |
| 11:25:37 | → | hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 11:25:37 | × | fendor__ quits (~fendor@212095005240.public.telering.at) (Read error: Connection reset by peer) |
| 11:25:43 | <yushyin> | trying to solve AOC is always a nice way to learn a new language |
| 11:25:54 | <tomsmeding> | or project euler, if that's your thing |
| 11:26:34 | <SirSaul> | Well, my general idea is trying to write actual OS stuff in haskell |
| 11:26:34 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 11:26:47 | <SirSaul> | I've got the knowledge for that, just not for haskell at the moment haha |
| 11:27:05 | <SirSaul> | so im a noob and somewhat a pro at the same time. |
| 11:27:06 | → | fendor__ joins (~fendor@77.119.128.54.wireless.dyn.drei.com) |
| 11:27:17 | <tomjaguarpaw> | (I added a warning at the top of that page) |
| 11:28:03 | <SirSaul> | great for future coders :) |
| 11:28:17 | <tomjaguarpaw> | SirSaul: Did you make any progress with the code on that page at all? |
| 11:28:19 | <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 |
| 11:28:36 | <SirSaul> | Yea' I've got the window running from the first part |
| 11:28:53 | <yushyin> | I think Programming in Haskell by graham hutton is nice, if you already know about programming but not about haskell |
| 11:29:19 | <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! |
| 11:29:24 | <SirSaul> | but the latter part after the unfinished window doesn't seem to work, and I'm not yet finding the correct indentation |
| 11:30:03 | <SirSaul> | I will take a look at that revision int-e |
| 11:30:40 | <SirSaul> | Thanks people for your quick response and help. |
| 11:31:18 | → | invaser joins (~Thunderbi@31.148.23.125) |
| 11:31:25 | → | christo joins (~chris@81.96.113.213) |
| 11:32:24 | × | invaser quits (~Thunderbi@31.148.23.125) (Client Quit) |
| 11:33:46 | <tomjaguarpaw> | Feel free to come back and ask for more help if you run into more problems |
| 11:33:57 | <tomjaguarpaw> | Hope you find something that works for you! |
| 11:34:59 | × | rprije quits (~rprije@124.148.131.132) (Ping timeout: 265 seconds) |
| 11:35:00 | 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) |
| 11:35:05 | → | invaser joins (~Thunderbi@31.148.23.125) |
| 11:35:46 | × | christo quits (~chris@81.96.113.213) (Ping timeout: 246 seconds) |
| 11:36:19 | × | spamlessj quits (~spamlessj@2a01:4f8:141:1329::2) (Ping timeout: 272 seconds) |
| 11:37:41 | → | spamlessj joins (~spamlessj@2a01:4f8:141:1329::2) |
| 11:38:04 | <int-e> | I guess I'll just transplant the old code samples before the indentation edit of doom |
| 11:39:25 | × | Gurkenglas__ quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 240 seconds) |
| 11:40:01 | × | Stanley00 quits (~stanley00@unaffiliated/stanley00) (Remote host closed the connection) |
| 11:41:17 | → | LKoen joins (~LKoen@53.253.88.92.rev.sfr.net) |
| 11:41:22 | × | MarcelineVQ quits (~anja@198.254.202.72) (Ping timeout: 246 seconds) |
| 11:43:30 | × | SirSaul quits (559113cc@204-19-145-85.ftth.glasoperator.nl) (Remote host closed the connection) |
| 11:43:44 | × | alp quits (~alp@2a01:e0a:58b:4920:6070:c578:85d0:a73a) (Ping timeout: 246 seconds) |
| 11:43:46 | → | mdunnio_ joins (~mdunnio@208.59.170.5) |
| 11:45:04 | → | Aquazi joins (uid312403@gateway/web/irccloud.com/x-ghekqquifdegujeg) |
| 11:47:17 | → | alp joins (~alp@88.126.45.36) |
| 11:47:52 | <int-e> | Oh SirSaul left. |
| 11:48:38 | × | mdunnio_ quits (~mdunnio@208.59.170.5) (Ping timeout: 264 seconds) |
| 11:49:09 | <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) |
| 11:49:16 | <tomjaguarpaw> | Great, thanks |
| 11:52:33 | → | christo joins (~chris@81.96.113.213) |
| 11:59:53 | × | plutoniix quits (~q@175.176.222.7) (Quit: Leaving) |
| 12:00:01 | × | slewis quits (~slewis@185.204.1.185) () |
| 12:03:22 | <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? |
| 12:04:45 | <tomsmeding> | ( https://paste.tomsmeding.com/h5VYeItr ) |
| 12:09:19 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 12:09:37 | → | thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
| 12:10:14 | <dminuoso> | % :set -XGADTs |
| 12:10:15 | <yahb> | dminuoso: |
| 12:10:26 | <dminuoso> | % data G t where G1 :: T Int |
| 12:10:26 | <yahb> | dminuoso: ; <interactive>:82:22: error: Not in scope: type constructor or class `T' |
| 12:10:31 | <dminuoso> | % data G t where G1 :: G Int |
| 12:10:32 | <yahb> | dminuoso: |
| 12:10:37 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
| 12:10:42 | <dminuoso> | % f g = case g of G1 -> True |
| 12:10:42 | <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 |
| 12:10:55 | → | kuribastard joins (~user@ptr-25vy0i8ngykh0l4o8xc.18120a2.ip6.access.telenet.be) |
| 12:11:11 | <dminuoso> | that seems strange |
| 12:11:43 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 12:13:40 | <lortabac> | strangely, it compiles if you omit the argument type (with PartialTypeSignatures), but it doesn't if you omit the result |
| 12:14:07 | × | thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 12:14:25 | <lortabac> | in other words the problem is not 'G t', but 'Bool' |
| 12:15:51 | <ski> | % let f g = (case g of G1 -> True) :: Bool |
| 12:15:51 | <yahb> | ski: |
| 12:16:47 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 12:17:31 | hackage | th-lego 0.2.3 - Template Haskell construction utilities https://hackage.haskell.org/package/th-lego-0.2.3 (NikitaVolkov) |
| 12:18:52 | × | mmohammadi9812 quits (~mmohammad@188.210.113.223) (Ping timeout: 272 seconds) |
| 12:18:59 | → | fendor joins (~fendor@178.115.129.187.wireless.dyn.drei.com) |
| 12:18:59 | × | hpc quits (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 256 seconds) |
| 12:20:36 | <lortabac> | TBH I find it remarkable that GHC can at least preserve *some* type inference when using rank-n types, type families, GADTs etc. |
| 12:20:37 | × | fendor_ quits (~fendor@77.119.128.54.wireless.dyn.drei.com) (Ping timeout: 264 seconds) |
| 12:20:40 | × | fendor__ quits (~fendor@77.119.128.54.wireless.dyn.drei.com) (Ping timeout: 258 seconds) |
| 12:20:50 | → | hpc joins (~juzz@ip98-169-35-13.dc.dc.cox.net) |
| 12:21:11 | × | dhouthoo quits (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) (Read error: Connection reset by peer) |
| 12:21:37 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 12:24:01 | 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) |
| 12:24:25 | <tomsmeding> | yes the fact that the problem is the Bool surprised me too |
| 12:24:51 | <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 |
| 12:26:35 | × | britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
| 12:26:53 | <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!) |
| 12:27:00 | <tomsmeding> | s/argument/result/ |
| 12:27:09 | <lortabac> | 'f :: G Int -> _; f G1 = True' typechecks |
| 12:27:20 | <tomsmeding> | so it's the case? |
| 12:27:23 | <lortabac> | it looks like it needs at least one of the two |
| 12:27:48 | <lortabac> | yes I removed the case syntax here for brevity |
| 12:27:49 | × | dmiles quits (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 264 seconds) |
| 12:28:14 | <tomsmeding> | oh it works because you put 'G Int' |
| 12:28:20 | × | carlomagno quits (~cararell@148.87.23.11) (Ping timeout: 258 seconds) |
| 12:28:21 | <lortabac> | yes |
| 12:29:07 | → | mmohammadi9812 joins (~mmohammad@188.210.113.223) |
| 12:30:30 | hackage | morpheus-graphql-core 0.16.0 - Morpheus GraphQL Core https://hackage.haskell.org/package/morpheus-graphql-core-0.16.0 (nalchevanidze) |
| 12:31:31 | hackage | morpheus-graphql 0.16.0, morpheus-graphql-subscriptions 0.16.0, morpheus-graphql-client 0.16.0 (nalchevanidze) |
| 12:32:56 | × | Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 258 seconds) |
| 12:34:56 | → | Sanchayan joins (~Sanchayan@223.226.118.59) |
| 12:35:26 | × | berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds) |
| 12:36:01 | hackage | yaml-unscrambler 0.1 - Flexible declarative YAML parsing toolkit https://hackage.haskell.org/package/yaml-unscrambler-0.1 (NikitaVolkov) |
| 12:36:28 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 12:38:24 | → | Entertainment joins (~entertain@104.246.132.210) |
| 12:39:01 | 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) |
| 12:40:31 | hackage | domain-core 0.1 - Low-level API of "domain" https://hackage.haskell.org/package/domain-core-0.1 (NikitaVolkov) |
| 12:40:55 | → | asthasr joins (~asthasr@162.210.29.120) |
| 12:43:25 | × | bergsans quits (~bergsans@c80-217-8-29.bredband.comhem.se) (Remote host closed the connection) |
| 12:44:00 | hackage | yaml-unscrambler 0.1.0.1 - Flexible declarative YAML parsing toolkit https://hackage.haskell.org/package/yaml-unscrambler-0.1.0.1 (NikitaVolkov) |
| 12:50:10 | → | knupfer joins (~Thunderbi@200116b82c33ca00181e13fffead1b1e.dip.versatel-1u1.de) |
| 12:50:11 | × | knupfer quits (~Thunderbi@200116b82c33ca00181e13fffead1b1e.dip.versatel-1u1.de) (Client Quit) |
| 12:50:24 | → | knupfer joins (~Thunderbi@i59F7FF32.versanet.de) |
| 12:50:29 | → | Eason0210 joins (~user@101.85.10.81) |
| 12:55:51 | → | ZeroZiat joins (~ZeroZiat@192.30.89.67) |
| 12:57:08 | → | ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
| 13:05:59 | × | apoc quits (~apoc@bridge.mattzq.com) (Quit: WeeChat 2.8) |
| 13:06:00 | → | mdunnio joins (~mdunnio@208.59.170.5) |
| 13:12:02 | → | texasmynsted joins (~texasmyns@64.44.55.84) |
| 13:15:17 | → | britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
| 13:15:26 | × | mdunnio quits (~mdunnio@208.59.170.5) (Ping timeout: 256 seconds) |
| 13:15:56 | → | AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl) |
| 13:16:40 | → | geekosaur joins (82659a09@host154-009.vpn.uakron.edu) |
| 13:18:07 | → | apoc joins (~apoc@49.12.13.193) |
| 13:22:04 | → | FreeBirdLjj joins (~freebirdl@101.228.42.108) |
| 13:23:13 | → | jakob_ joins (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) |
| 13:25:38 | → | bgamari_ joins (~bgamari@72.65.102.116) |
| 13:25:56 | × | ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
| 13:26:17 | → | Alleria joins (~AllahuAkb@zrcout.mskcc.org) |
| 13:26:17 | × | bgamari quits (~bgamari@2001:470:e438::1) (Ping timeout: 246 seconds) |
| 13:26:40 | Alleria | is now known as Guest8524 |
| 13:30:48 | → | Deide joins (~Deide@217.155.19.23) |
| 13:32:26 | × | ZeroZiat quits (~ZeroZiat@192.30.89.67) (Remote host closed the connection) |
| 13:33:31 | 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) |
| 13:43:16 | → | obihann joins (~jhann@156.34.160.69) |
| 13:44:01 | × | yinfeng quits (~yinfeng@122.96.106.57) (Ping timeout: 264 seconds) |
| 13:44:52 | → | yinfeng joins (~yinfeng@58.212.52.57) |
| 13:46:47 | × | obihann quits (~jhann@156.34.160.69) (Client Quit) |
| 13:47:12 | → | obihann joins (~jhann@156.34.160.69) |
| 13:47:12 | × | obihann quits (~jhann@156.34.160.69) (Client Quit) |
| 13:47:27 | → | timCF joins (511495c6@198-149-20-81.sta.estpak.ee) |
| 13:47:39 | → | obihann joins (~jhann@156.34.160.69) |
| 13:47:50 | → | lucasb joins (uid333435@gateway/web/irccloud.com/x-sdppmllrnolsxyhi) |
| 13:49:52 | × | timCF quits (511495c6@198-149-20-81.sta.estpak.ee) (Remote host closed the connection) |
| 13:51:00 | hackage | domain 0.1 - Codegen helping you define domain models https://hackage.haskell.org/package/domain-0.1 (NikitaVolkov) |
| 13:53:37 | × | solonarv quits (~solonarv@astrasbourg-653-1-263-62.w92-161.abo.wanadoo.fr) (Ping timeout: 256 seconds) |
| 13:54:28 | × | Eason0210 quits (~user@101.85.10.81) (Quit: ERC (IRC client for Emacs 28.0.50)) |
| 14:02:32 | → | Schicko joins (nicotymatr@gateway/shell/matrix.org/x-tpbzfbweaijhyvxh) |
| 14:03:32 | × | jorj quits (~jorj@162.220.240.216) (Quit: .) |
| 14:03:51 | → | machinedgod joins (~machinedg@142.169.78.227) |
| 14:04:21 | → | MarcelineVQ joins (~anja@198.254.202.72) |
| 14:05:24 | → | ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
| 14:06:37 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) |
| 14:07:31 | → | twopoint718 joins (~cjw@fsf/member/twopoint718) |
| 14:07:51 | × | T0pH4t quits (~josh@c-73-53-48-224.hsd1.wa.comcast.net) (Quit: bye...) |
| 14:07:52 | → | hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net) |
| 14:10:27 | → | whatisRT joins (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) |
| 14:10:52 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) (Client Quit) |
| 14:11:46 | × | __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving) |
| 14:15:32 | → | ClaudiusMaximus joins (~claude@198.123.199.146.dyn.plus.net) |
| 14:15:40 | × | ClaudiusMaximus quits (~claude@198.123.199.146.dyn.plus.net) (Changing host) |
| 14:15:40 | → | ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus) |
| 14:17:44 | ← | Schicko parts (nicotymatr@gateway/shell/matrix.org/x-tpbzfbweaijhyvxh) ("User left") |
| 14:19:50 | × | alp quits (~alp@88.126.45.36) (Ping timeout: 264 seconds) |
| 14:20:30 | → | alp joins (~alp@88.126.45.36) |
| 14:22:53 | → | PacoV joins (~pcoves@16.194.31.93.rev.sfr.net) |
| 14:22:57 | <PacoV> | Hi there. |
| 14:24:34 | → | timCF joins (511495c6@198-149-20-81.sta.estpak.ee) |
| 14:24:49 | <PacoV> | I've written a static site generator with Hakyll that handles translations in templates thanks to a functionField. |
| 14:25:19 | <PacoV> | The logic is simple : it takes two strings (language and the string to translate). |
| 14:25:33 | <PacoV> | If a translation for the given language exists, it's returned. |
| 14:25:41 | <PacoV> | Else, it keepd the original string. |
| 14:26:10 | <PacoV> | My translations are in a map of maps (Map String (Map String Strin)). |
| 14:26:42 | <PacoV> | I now want to store my translations in a yaml file, not hardcoded in the haskell code. |
| 14:27:05 | <PacoV> | So, I'm looking for a way to parse that (Map String (Map String Strin)) from a yaml file. |
| 14:27:28 | <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 |
| 14:27:28 | <timCF> | which are very annoying to handle |
| 14:27:51 | <merijn> | timCF: The RTS doesn't use reference counting |
| 14:28:02 | <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. |
| 14:28:21 | <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) |
| 14:28:39 | <merijn> | timCF: So you have messed up your logic somewhere |
| 14:29:23 | <PacoV> | Maybe the simple form of my question could be : do you have any working example of reading a (Map ) |
| 14:29:27 | <merijn> | timCF: The runtime doesn't kill "both child and parent", because Haskell threads don't have such a thing as parent threads |
| 14:29:36 | <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? |
| 14:29:58 | <merijn> | timCF: However, if the main thread exits the program stops, even if there are other threads still running |
| 14:30:56 | <merijn> | timCF: You should probably tell us what you're doing and what you actually want, else we can only guess |
| 14:31:03 | <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 |
| 14:31:08 | → | Cotillion joins (~Cotillion@217.146.82.202) |
| 14:31:24 | <merijn> | Well, yes |
| 14:31:31 | <merijn> | That's because it is deadlocked |
| 14:31:46 | <merijn> | Unless other threads also use the same TChan |
| 14:33:16 | <timCF> | merijn I'm using `link` function from `Async` everywhere, to link parent and child processes, so I kinda have this category |
| 14:33:34 | <merijn> | Well, if you don't want you parent to get killed...don't use link? |
| 14:33:45 | <merijn> | Like...that's what link is for... |
| 14:33:45 | × | timCF quits (511495c6@198-149-20-81.sta.estpak.ee) (Remote host closed the connection) |
| 14:34:00 | hackage | goldplate 0.1.2 - A lightweight golden test runner https://hackage.haskell.org/package/goldplate-0.1.2 (JasperVanDerJeugt) |
| 14:38:17 | → | timCF joins (511495c6@198-149-20-81.sta.estpak.ee) |
| 14:39:27 | → | ystael joins (~ystael@209.6.50.55) |
| 14:40:52 | <PacoV> | Basically need to parse something like http://ix.io/2D7k as a (Map String (Map String String)). |
| 14:41:08 | → | cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) |
| 14:41:25 | × | geekosaur quits (82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection) |
| 14:42:36 | → | Ariakenom joins (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) |
| 14:47:00 | → | mdunnio joins (~mdunnio@208.59.170.5) |
| 14:47:24 | → | jollygood2 joins (~bc8165ab@217.29.117.252) |
| 14:47:31 | <jollygood2> | > splitOn [5] [1..10] |
| 14:47:33 | <lambdabot> | [[1,2,3,4],[6,7,8,9,10]] |
| 14:47:45 | <jollygood2> | is there something like this that will include separator in either list? |
| 14:49:02 | <ski> | separator ? |
| 14:49:16 | <ski> | hm |
| 14:49:18 | <jollygood2> | 5 in the example above |
| 14:50:04 | <int-e> | https://hackage.haskell.org/package/split-0.2.3.4/docs/Data-List-Split.html#v:onSublist |
| 14:50:54 | <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] |
| 14:51:30 | × | timCF quits (511495c6@198-149-20-81.sta.estpak.ee) (Remote host closed the connection) |
| 14:51:47 | <jollygood2> | and f 3 [1,3,4,3,5] => [[1,3],[4,3],[5]] |
| 14:52:49 | → | coot_ joins (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) |
| 14:53:39 | <ski> | > unfoldr (\xs0 -> guard (not (null xs0)) >> pure (let (ys,xs1) = break ('c' ==) xs0; (zs,xs2) = span ('c' ==) xs1 in (ys ++ zs,xs2))) "abacabadabacabaeabacabadabacabaf" |
| 14:53:42 | <lambdabot> | ["abac","abadabac","abaeabac","abadabac","abaf"] |
| 14:54:12 | → | pmikkelsen1 joins (~pmikkelse@vps1.pmikkelsen.com) |
| 14:54:13 | <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] |
| 14:54:15 | <lambdabot> | [[1,3],[4,3],[5]] |
| 14:54:36 | × | coot quits (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 256 seconds) |
| 14:54:37 | coot_ | is now known as coot |
| 14:56:29 | <jollygood2> | interesting |
| 14:56:48 | × | pmikkelsen1 quits (~pmikkelse@vps1.pmikkelsen.com) (Remote host closed the connection) |
| 14:57:17 | <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] |
| 14:57:19 | <lambdabot> | [[1,3],[4,3],[5]] |
| 14:57:22 | × | ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Read error: Connection reset by peer) |
| 15:00:02 | × | Cotillion quits (~Cotillion@217.146.82.202) () |
| 15:00:10 | → | kupi joins (uid212005@gateway/web/irccloud.com/x-fvjiylahrovnfgof) |
| 15:01:50 | × | alp quits (~alp@88.126.45.36) (Ping timeout: 260 seconds) |
| 15:01:52 | <jollygood2> | thanks for interesting solutions, but Data.List.Split can actually do this |
| 15:01:55 | <jollygood2> | > split (keepDelimsR $ whenElt (==3)) [1,3,4,3,5] |
| 15:01:58 | <lambdabot> | [[1,3],[4,3],[5]] |
| 15:02:20 | <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). |
| 15:02:26 | <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? |
| 15:04:12 | → | benjamingr__ joins (uid23465@gateway/web/irccloud.com/x-ifxghrbxkdgdxjip) |
| 15:04:38 | × | sh9 quits (~sh9@softbank060116136158.bbtec.net) (Ping timeout: 260 seconds) |
| 15:06:23 | × | troydm quits (~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) |
| 15:06:30 | 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) |
| 15:07:07 | → | troydm joins (~troydm@unaffiliated/troydm) |
| 15:07:30 | hackage | kubernetes-client 0.3.1.0 - Client library for Kubernetes https://hackage.haskell.org/package/kubernetes-client-0.3.1.0 (axeman) |
| 15:10:53 | → | dmiles joins (dmiles@c-73-67-179-188.hsd1.wa.comcast.net) |
| 15:11:48 | → | pmikkelsen joins (~pmikkelse@vps1.pmikkelsen.com) |
| 15:14:05 | × | pmikkelsen quits (~pmikkelse@vps1.pmikkelsen.com) (Read error: Connection reset by peer) |
| 15:16:24 | → | christo joins (~chris@81.96.113.213) |
| 15:16:33 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 15:16:54 | × | whatisRT quits (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) (Read error: Connection reset by peer) |
| 15:20:20 | → | carlomagno joins (~cararell@148.87.23.5) |
| 15:21:34 | <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',...) |
| 15:22:56 | <hololeap_> | is there any way to turn `IO [a]` into `LogicT IO a`? |
| 15:23:02 | hololeap_ | is now known as hololeap |
| 15:27:16 | <hololeap> | % import System.Directory |
| 15:27:16 | <yahb> | hololeap: |
| 15:27:23 | <hololeap> | % :t \f -> fmap (concat . transpose) . traverse listDirectory >=> mapM_ f |
| 15:27:23 | <yahb> | hololeap: (FilePath -> IO b) -> [FilePath] -> IO () |
| 15:27:33 | <ski> | @type let oneOf = foldr ((<|>) . pure) empty in (oneOf =<<) . lift :: IO [a] -> LogicT IO a |
| 15:27:34 | <lambdabot> | IO [a] -> LogicT IO a |
| 15:29:26 | <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 |
| 15:30:27 | <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"] |
| 15:30:34 | × | knupfer quits (~Thunderbi@i59F7FF32.versanet.de) (Quit: knupfer) |
| 15:31:23 | <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 |
| 15:31:33 | × | DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...) |
| 15:31:57 | × | conal quits (~conal@64.71.133.70) (Ping timeout: 258 seconds) |
| 15:31:59 | <hololeap> | i'm still pretty unfamiliar with LogicT, so i might be reaching for it when it isn't necessary |
| 15:33:25 | → | Amras joins (~Amras@unaffiliated/amras0000) |
| 15:34:31 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 15:36:32 | <ski> | akegalj : i agree that part of the power of `IO' (and other monads and idioms) is having effects be first-class values |
| 15:37:17 | <ski> | @quote world's.best |
| 15:37:17 | <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 |
| 15:37:45 | <ski> | @quote SPJ world's.best |
| 15:37:45 | <lambdabot> | SPJ says: Haskell is the world's best imperative language. |
| 15:38:00 | hackage | domain-optics 0.1 - Integration of domain with optics https://hackage.haskell.org/package/domain-optics-0.1 (NikitaVolkov) |
| 15:39:02 | <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 |
| 15:39:59 | × | toorevitimirp quits (~tooreviti@117.182.183.132) (Remote host closed the connection) |
| 15:40:23 | × | mmohammadi9812 quits (~mmohammad@188.210.113.223) (Ping timeout: 258 seconds) |
| 15:42:11 | <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 |
| 15:42:21 | → | Sgeo joins (~Sgeo@ool-18b982ad.dyn.optonline.net) |
| 15:42:56 | <akegalj> | ski: haha, I love quote thing :D Didn't know about that |
| 15:43:55 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 15:44:22 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 15:44:38 | <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) |
| 15:45:15 | → | thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
| 15:45:40 | × | mimi_vx quits (~mimi@tulipan.habr.nat.praha12.net) (Ping timeout: 246 seconds) |
| 15:46:08 | <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) |
| 15:46:48 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 15:47:32 | <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 |
| 15:48:49 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds) |
| 15:49:13 | <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) |
| 15:50:06 | <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 |
| 15:50:52 | <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) |
| 15:51:55 | <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 |
| 15:52:09 | × | berberman quits (~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in) |
| 15:52:21 | → | mmohammadi9812 joins (~mmohammad@188.210.99.150) |
| 15:52:39 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 15:52:52 | <ski> | btw, note that Java does track exceptions (in a fine-grained manner). exceptions are another kind of side-effect |
| 15:53:41 | <akegalj> | how does java track exceptions? |
| 15:53:45 | <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) |
| 15:53:57 | <ski> | `throws' clause attached to method signatures |
| 15:53:58 | <merijn> | ski: Which was a massive mistake >.> |
| 15:54:05 | <ski> | merijn : which ? |
| 15:54:13 | <merijn> | unchecked exceptions in Haskell |
| 15:54:54 | veverak | is now known as [[[]]] |
| 15:55:29 | → | wltjr1 joins (~wltjr@84.39.116.180) |
| 15:55:32 | <ski> | in Haskell, the `<$>' in e.g. `reverse <$> getLine' is comparable to the aforementioned syntactic salt |
| 15:55:48 | → | ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
| 15:57:00 | <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) |
| 15:57:18 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) |
| 15:58:37 | <akegalj> | ski: you are right, I forgot that java tracks exceptions https://docs.oracle.com/javase/tutorial/essential/exceptions/declaring.html |
| 15:58:49 | → | kaychaks joins (sid236345@gateway/web/irccloud.com/x-tofmstsbickuunjr) |
| 15:59:28 | <ski> | akegalj : still, interesting, thought-provoking, blag |
| 16:00:04 | <akegalj> | ski: yes, thanks for your input. It was interesting read |
| 16:00:06 | × | GuillaumeChrel[m quits (guillaumec@gateway/shell/matrix.org/x-yyvevfplzzioqnuc) (Quit: Idle for 30+ days) |
| 16:00:06 | × | tttom[m] quits (tttommatri@gateway/shell/matrix.org/x-odejmlhnpwjjtcrh) (Quit: Idle for 30+ days) |
| 16:00:06 | × | jiribenes1 quits (jbjiribene@gateway/shell/matrix.org/x-bgfmaawtdxevtslk) (Quit: Idle for 30+ days) |
| 16:00:06 | × | ethercrow[m] quits (ethercrowm@gateway/shell/matrix.org/x-fwdkmrqysffhdlhg) (Quit: Idle for 30+ days) |
| 16:00:06 | × | albestro[m] quits (albestroma@gateway/shell/matrix.org/x-qdbcqirfearydihj) (Quit: Idle for 30+ days) |
| 16:00:44 | → | Rudd0 joins (~Rudd0@185.189.115.103) |
| 16:01:32 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone) |
| 16:01:53 | <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 |
| 16:04:08 | × | thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 16:04:10 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 16:04:13 | <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) |
| 16:04:15 | → | thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
| 16:04:22 | × | twopoint718 quits (~cjw@fsf/member/twopoint718) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 16:04:50 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
| 16:06:07 | <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) |
| 16:07:21 | → | wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) |
| 16:08:12 | <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 |
| 16:10:11 | <akegalj> | goes to look at Mercury... |
| 16:10:45 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
| 16:11:25 | <akegalj> | ski: hm, thats interesting distinction between pure and semipure |
| 16:11:38 | <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>) |
| 16:12:02 | → | mimi_vx joins (~mimi@2a01:490:16:1026:9892:f269:767a:6ad7) |
| 16:13:55 | → | mimi1vx joins (~mimi@tulipan.habr.nat.praha12.net) |
| 16:14:01 | × | machinedgod quits (~machinedg@142.169.78.227) (Ping timeout: 246 seconds) |
| 16:15:13 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 16:15:30 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) |
| 16:16:10 | <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 |
| 16:16:12 | → | machinedgod joins (~machinedg@207.253.244.210) |
| 16:16:16 | → | hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-yyqyliwcbydyqmwb) |
| 16:16:53 | × | mimi_vx quits (~mimi@2a01:490:16:1026:9892:f269:767a:6ad7) (Ping timeout: 272 seconds) |
| 16:17:31 | 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) |
| 16:18:00 | <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? |
| 16:18:36 | <hololeap> | e.g. writing stdout and stderr to the same file, in the order that each meassage is produced |
| 16:18:47 | <hololeap> | s/message/line of text/ |
| 16:18:48 | × | ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Read error: Connection reset by peer) |
| 16:19:32 | → | u0_a298 joins (~user@47.206.148.226) |
| 16:19:41 | <merijn> | hololeap: That...is not a sensical question :) |
| 16:19:55 | × | ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
| 16:20:02 | <merijn> | hololeap: because conduit produces a sequential loop |
| 16:20:16 | <merijn> | hololeap: There is no "temporal order" |
| 16:20:32 | <hololeap> | ok, that's kind of what i was afraid of |
| 16:20:33 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 16:20:55 | <merijn> | hololeap: If you run the two conduits and dump them into a channel, then you can have another conduit reading from the channel |
| 16:21:41 | × | britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
| 16:21:52 | <merijn> | hololeap: What are the original streams? |
| 16:22:11 | → | justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311) |
| 16:22:24 | → | enva2712 joins (~enva2712@cpe-75-86-42-2.wi.res.rr.com) |
| 16:22:43 | → | twopoint718 joins (~cjw@fsf/member/twopoint718) |
| 16:22:49 | <hololeap> | the stdout and stderr streams shown here: https://hackage.haskell.org/package/conduit-extra-1.3.5/docs/Data-Conduit-Process.html#v:sourceProcessWithStreams |
| 16:22:58 | → | stef204 joins (~stef204@unaffiliated/stef-204/x-384198) |
| 16:23:23 | <merijn> | Yeah, you'll have to handle those in separate threads |
| 16:24:18 | <hololeap> | (yeah my original question was messed up) |
| 16:24:31 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:b093:9754:189c:f0eb) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 16:24:35 | <hololeap> | but, that's a good idea merijn, and i should be able to make it work |
| 16:27:15 | → | ahmr88 joins (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
| 16:27:38 | × | ahmr88 quits (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Client Quit) |
| 16:29:52 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 16:30:18 | → | u0_a298 joins (~user@47.206.148.226) |
| 16:32:43 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 16:32:57 | → | u0_a298 joins (~user@47.206.148.226) |
| 16:33:16 | × | todda7 quits (~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 256 seconds) |
| 16:35:24 | × | enva2712 quits (~enva2712@cpe-75-86-42-2.wi.res.rr.com) (Quit: leaving) |
| 16:37:45 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 16:38:04 | → | u0_a298 joins (~user@47.206.148.226) |
| 16:38:25 | × | borne quits (~fritjof@200116b8643b36005d0cb1433c5d4cbb.dip.versatel-1u1.de) (Ping timeout: 272 seconds) |
| 16:39:08 | → | borne joins (~fritjof@200116b8643b3600e0b7c534f6e7b66f.dip.versatel-1u1.de) |
| 16:39:33 | → | Chi1thangoo joins (~Chi1thang@87.112.60.168) |
| 16:41:39 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 16:42:09 | → | u0_a298 joins (~user@47.206.148.226) |
| 16:44:28 | × | ubert quits (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection) |
| 16:44:29 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 16:45:02 | → | u0_a298 joins (~user@47.206.148.226) |
| 16:47:10 | × | u0_a298 quits (~user@47.206.148.226) (Remote host closed the connection) |
| 16:47:28 | → | u0_a298 joins (~user@47.206.148.226) |
| 16:47:47 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) |
| 16:49:23 | × | Sanchayan quits (~Sanchayan@223.226.118.59) (Quit: leaving) |
| 16:50:21 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
| 16:50:50 | × | wroathe quits (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
| 16:51:45 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 16:51:53 | → | jff joins (~Thunderbi@a109-49-149-2.cpe.netcabo.pt) |
| 16:51:56 | → | alp joins (~alp@88.126.45.36) |
| 16:54:05 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 16:54:34 | → | u0_a298 joins (~user@47.206.148.226) |
| 16:56:40 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 16:57:17 | → | u0_a298 joins (~user@47.206.148.226) |
| 16:59:26 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 16:59:58 | → | u0_a298 joins (~user@47.206.148.226) |
| 17:02:05 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 17:02:32 | → | u0_a298 joins (~user@47.206.148.226) |
| 17:03:00 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 17:04:40 | × | thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 17:05:05 | × | jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection) |
| 17:05:17 | → | thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
| 17:06:02 | × | acidjnk_new2 quits (~acidjnk@p200300d0c718f6890d36626cfb994f1d.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 17:06:15 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 17:07:00 | × | FreeBirdLjj quits (~freebirdl@101.228.42.108) (Remote host closed the connection) |
| 17:07:35 | → | FreeBirdLjj joins (~freebirdl@101.228.42.108) |
| 17:10:14 | × | thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 17:11:48 | × | FreeBirdLjj quits (~freebirdl@101.228.42.108) (Ping timeout: 256 seconds) |
| 17:12:23 | × | avdb quits (~avdb@ip-83-134-202-8.dsl.scarlet.be) (Read error: Connection reset by peer) |
| 17:12:45 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 17:12:49 | → | avdb joins (~avdb@ip-83-134-202-8.dsl.scarlet.be) |
| 17:14:44 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:15:00 | hackage | hevm 0.42.0 - Ethereum virtual machine evaluator https://hackage.haskell.org/package/hevm-0.42.0 (MrChico) |
| 17:18:49 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 17:19:24 | × | shutdown_-h_now quits (~arjan@2001:1c06:2d0b:2312:955d:b3db:6b4c:c2ab) (Ping timeout: 240 seconds) |
| 17:25:36 | → | shutdown_-h_now joins (~arjan@2001:1c06:2d0b:2312:95b6:c7bf:d0d6:b6df) |
| 17:25:38 | → | justan0theruser joins (~justanoth@unaffiliated/justanotheruser) |
| 17:27:09 | × | Ariakenom quits (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) (Remote host closed the connection) |
| 17:27:31 | → | thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
| 17:27:38 | → | Ariakenom joins (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) |
| 17:27:44 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 244 seconds) |
| 17:28:03 | × | CodeAlways quits (uid272474@gateway/web/irccloud.com/x-ydthmisqrovakaks) (Quit: Connection closed for inactivity) |
| 17:30:58 | × | evanjs quits (~evanjs@075-129-188-019.res.spectrum.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 17:32:11 | → | Gurkenglas__ joins (~Gurkengla@unaffiliated/gurkenglas) |
| 17:33:10 | → | evanjs joins (~evanjs@075-129-188-019.res.spectrum.com) |
| 17:33:50 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
| 17:36:01 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 17:38:28 | × | thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 17:38:58 | → | thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
| 17:40:08 | × | Ariakenom quits (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) (Quit: Leaving) |
| 17:42:21 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 17:42:47 | → | u0_a298 joins (~user@47.206.148.226) |
| 17:43:18 | × | alp quits (~alp@88.126.45.36) (Ping timeout: 260 seconds) |
| 17:43:19 | → | Ariakenom joins (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) |
| 17:43:50 | × | thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 17:45:10 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 260 seconds) |
| 17:45:22 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 17:46:46 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:7cc2:21a2:16c3:f6f6) |
| 17:48:48 | × | roconnor quits (~roconnor@host-192.252-162-14.dyn.295.ca) (Ping timeout: 258 seconds) |
| 17:48:59 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 17:49:28 | × | nados quits (~dan@69-165-210-185.cable.teksavvy.com) (Ping timeout: 272 seconds) |
| 17:50:05 | × | Techcable quits (znc@irc.techcable.net) (Quit: ZNC - http://znc.in) |
| 17:50:54 | → | Techcable joins (znc@irc.techcable.net) |
| 17:53:42 | → | ransom joins (c4264035@gateway/vpn/protonvpn/c4264035) |
| 17:54:37 | → | roconnor joins (~roconnor@host-192.252-162-14.dyn.295.ca) |
| 17:56:49 | → | dbmikus_ joins (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
| 17:57:49 | × | kuribastard quits (~user@ptr-25vy0i8ngykh0l4o8xc.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
| 18:00:01 | × | wltjr1 quits (~wltjr@84.39.116.180) () |
| 18:01:15 | → | conal joins (~conal@64.71.133.70) |
| 18:04:04 | → | howdoi joins (uid224@gateway/web/irccloud.com/x-pkptafzrpfqhbpar) |
| 18:07:20 | × | justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) () |
| 18:10:06 | → | hidedagger joins (~nate@125.161.131.218) |
| 18:10:07 | → | shailangsa joins (~shailangs@host86-186-133-58.range86-186.btcentralplus.com) |
| 18:10:34 | → | solonarv joins (~solonarv@astrasbourg-653-1-263-62.w92-161.abo.wanadoo.fr) |
| 18:11:32 | → | knupfer joins (~Thunderbi@200116b82c33ca00a8fb0b764d84b823.dip.versatel-1u1.de) |
| 18:14:43 | → | christo joins (~chris@81.96.113.213) |
| 18:14:54 | × | chele quits (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
| 18:15:51 | × | DavidEichmann quits (~david@43.240.198.146.dyn.plus.net) (Remote host closed the connection) |
| 18:17:54 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 18:17:54 | × | conal quits (~conal@64.71.133.70) (Read error: Connection reset by peer) |
| 18:18:11 | → | u0_a298 joins (~user@47.206.148.226) |
| 18:18:19 | → | thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
| 18:21:37 | → | conal joins (~conal@64.71.133.70) |
| 18:21:46 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
| 18:23:54 | × | u0_a298 quits (~user@47.206.148.226) (Remote host closed the connection) |
| 18:24:15 | → | u0_a298 joins (~user@47.206.148.226) |
| 18:26:01 | hackage | prolude 0.0.0.6 - ITProTV's custom prelude https://hackage.haskell.org/package/prolude-0.0.0.6 (saramuse) |
| 18:26:01 | → | todda7 joins (~torstein@ppp-2-84-30-242.home.otenet.gr) |
| 18:26:14 | × | machinedgod quits (~machinedg@207.253.244.210) (Ping timeout: 260 seconds) |
| 18:26:38 | × | thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 18:26:44 | → | alp joins (~alp@2a01:e0a:58b:4920:d896:803c:c09a:1a05) |
| 18:28:04 | → | machinedgod joins (~machinedg@142.169.78.93) |
| 18:31:57 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 18:34:35 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 18:37:31 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 18:38:05 | → | u0_a298 joins (~user@47.206.148.226) |
| 18:39:23 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 18:41:12 | → | N3RGY joins (~N3RGY@65.141.87.122) |
| 18:41:41 | → | chaosmasttter joins (~chaosmast@p200300c4a7117c01e8fd3775638e9554.dip0.t-ipconnect.de) |
| 18:42:55 | <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 |
| 18:44:12 | <opqdonut> | usually one xors hashes together to combine them |
| 18:44:30 | <opqdonut> | googling turns up https://hackage.haskell.org/package/data-hash-0.2.0.1/docs/Data-Hash.html |
| 18:44:36 | <opqdonut> | with a combine :: Hash -> Hash -> Hash |
| 18:44:57 | <opqdonut> | I hope you don't need cryptographic hashing? |
| 18:45:58 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 18:47:01 | 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) |
| 18:47:19 | <tomjaguarpaw> | opqdonut: Indeed, no need for cryptographic |
| 18:47:48 | <tomjaguarpaw> | I was a little wary of that library since it hasn't been updated in 5 years. Maybe it's OK. |
| 18:48:00 | hackage | persistent 2.11.0.1 - Type-safe, multi-backend data serialization. https://hackage.haskell.org/package/persistent-2.11.0.1 (parsonsmatt) |
| 18:49:13 | × | akegalj quits (~akegalj@93-142-95-221.adsl.net.t-com.hr) (Quit: leaving) |
| 18:49:25 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Ping timeout: 264 seconds) |
| 18:49:43 | <tomjaguarpaw> | Hmm, combining by rotate and xor doesn't sound very safe |
| 18:50:16 | <tomjaguarpaw> | I would like 1 `combine` 2 not to collide with 0, for example |
| 18:50:39 | <tomjaguarpaw> | But maybe it it's post-hashing it's Ok |
| 18:51:08 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 18:51:13 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 18:52:22 | <sm[m]> | maralorn: https://shakebuild.com/faq#why-is-there-a-shake-executable is related |
| 18:52:44 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:54:25 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds) |
| 18:54:55 | → | untwisted joins (~untwisted@84.39.116.180) |
| 18:57:12 | → | thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
| 18:59:45 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 19:00:01 | → | u0_a298 joins (~user@47.206.148.226) |
| 19:00:17 | × | alp quits (~alp@2a01:e0a:58b:4920:d896:803c:c09a:1a05) (Ping timeout: 272 seconds) |
| 19:01:13 | <maralorn> | sm: Thank you. The reason was simply that I needed to call it Shakefile.hs with capital S. |
| 19:02:38 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 19:03:27 | × | berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds) |
| 19:03:29 | <maralorn> | I wish there were something like "shake watch" |
| 19:03:39 | → | berberman_ joins (~berberman@unaffiliated/berberman) |
| 19:03:42 | <maralorn> | * I wish there was something like "shake watch" |
| 19:04:14 | × | thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 19:05:44 | → | conal joins (~conal@64.71.133.70) |
| 19:07:22 | → | christo joins (~chris@81.96.113.213) |
| 19:08:39 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal) |
| 19:11:27 | <monochrom> | "were" is OK. Actually more proper IMO :) |
| 19:12:44 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 19:13:09 | × | N3RGY quits (~N3RGY@65.141.87.122) () |
| 19:14:56 | <tomsmeding> | yay subjunctive |
| 19:15:42 | <tomsmeding> | @quickcheck \i -> hash (i :: Int) == i |
| 19:15:42 | <lambdabot> | Unknown command, try @list |
| 19:15:49 | <tomsmeding> | @check \i -> hash (i :: Int) == i |
| 19:15:51 | <lambdabot> | error: |
| 19:15:51 | <lambdabot> | • Variable not in scope: hash :: Int -> Int • Perhaps you meant ‘has’ (impor... |
| 19:16:00 | <tomsmeding> | @check \i -> Data.Hashable.hash (i :: Int) == i |
| 19:16:02 | <lambdabot> | error: |
| 19:16:02 | <lambdabot> | Not in scope: ‘Data.Hashable.hash’ No module named ‘Data.Hashable’ is imported. |
| 19:16:27 | <tomsmeding> | okay fine, but tomjaguarpaw this succeeds locally, which explains kind of why combining that with an xor doesn't work :p |
| 19:16:56 | <sm[m]> | maralorn: I do ls FILES | entr SHAKECMD |
| 19:17:31 | <maralorn> | sm: I do, too. |
| 19:19:02 | <sm[m]> | you're right, it does seem like a feature that could be built in, I actually thought it was |
| 19:19:21 | → | nados joins (~dan@69-165-210-185.cable.teksavvy.com) |
| 19:20:46 | → | Tario joins (~Tario@198.252.153.28) |
| 19:21:11 | × | conal quits (~conal@64.71.133.70) (Ping timeout: 258 seconds) |
| 19:21:11 | <tomjaguarpaw> | opqdonut: FWIW Data.Hash also has the property that I am trying to avoid, specifically: |
| 19:21:14 | <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) |
| 19:21:17 | <tomjaguarpaw> | *Hash H> h 123 45657 |
| 19:21:20 | <tomjaguarpaw> | (Hash {asWord64 = 16277888606689116690},Hash {asWord64 = 16277888606689116690}) |
| 19:21:24 | <tomjaguarpaw> | x `combine` x `combine` y == y |
| 19:21:38 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 19:21:45 | <tomjaguarpaw> | I'm at a loss about how to avoid this. It seems to make compositional hashing of trees impossible. |
| 19:23:38 | × | jespada quits (~jespada@90.254.245.49) (Ping timeout: 260 seconds) |
| 19:24:44 | × | jfredett_ quits (~quassel@95.211.153.89) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
| 19:24:55 | → | conal joins (~conal@107.181.166.217) |
| 19:25:28 | → | jfredett joins (~quassel@95.211.153.89) |
| 19:25:42 | → | vicfred joins (~vicfred@unaffiliated/vicfred) |
| 19:25:54 | → | jespada joins (~jespada@90.254.245.49) |
| 19:26:18 | → | justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311) |
| 19:26:43 | <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)) |
| 19:26:44 | <tomjaguarpaw> | Python's hash has the property I desire. I'm not sure what the algorithm is though. |
| 19:26:44 | <lambdabot> | Defined. |
| 19:27:01 | <tomsmeding> | > wangHash 123 `xor` (wangHash 123 `xor` wangHash 45657) |
| 19:27:03 | <lambdabot> | 14571355508018 |
| 19:27:19 | <tomsmeding> | http://www.reedbeta.com/blog/quick-and-easy-gpu-random-numbers-in-d3d11/ |
| 19:27:19 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 19:27:25 | <tomjaguarpaw> | > wangHash 123 `xor` (wangHash 123 `xor` wangHash 123) |
| 19:27:27 | <lambdabot> | 38872050059 |
| 19:27:32 | <tomjaguarpaw> | > wangHash 123 |
| 19:27:34 | <lambdabot> | 38872050059 |
| 19:27:37 | <tomjaguarpaw> | Still not idea |
| 19:27:39 | <tomjaguarpaw> | l |
| 19:27:39 | <tomsmeding> | o |
| 19:28:25 | <tomsmeding> | well |
| 19:28:28 | <tomsmeding> | that's kind of expected |
| 19:28:39 | <tomsmeding> | @check \i -> i `xor` i == 0 |
| 19:28:39 | <tomjaguarpaw> | Yes, if xor is the combiner |
| 19:28:40 | <lambdabot> | +++ OK, passed 100 tests. |
| 19:28:50 | × | twopoint718 quits (~cjw@fsf/member/twopoint718) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 19:29:22 | <tomsmeding> | so let combine x y = hash (x `xor` permute y) |
| 19:29:29 | <tomsmeding> | merkle trees? |
| 19:29:35 | → | arampa joins (5e454e4c@94.69.78.76) |
| 19:29:48 | <tomjaguarpaw> | Well, I am basically trying to implement a merkle tree. |
| 19:29:55 | <tomjaguarpaw> | The question is what hash algorithm I should use. |
| 19:30:03 | <tomjaguarpaw> | They seem to use one called "tiger hash" |
| 19:30:34 | × | todda7 quits (~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 256 seconds) |
| 19:31:51 | <tomsmeding> | is this not basically asking how to construct a hash that takes arbitrary-length input from one that takes fixed-length input? |
| 19:32:39 | <tomjaguarpaw> | No, it's fixed length plus nesting |
| 19:32:53 | <tomjaguarpaw> | *arbitrary length plus arbitrary nesting |
| 19:33:10 | <tomjaguarpaw> | Well, the arbitrary length is a good start, but has other mitigations |
| 19:33:56 | <tomsmeding> | if you can hash two blocks of data into one block of data, you can trivially hash arbitrary-length data, right? |
| 19:34:17 | → | thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
| 19:34:32 | <tomsmeding> | from that perspective, being able to combine two hashes is ~equivalent to being able to handle arbitrary-length data |
| 19:35:00 | → | aarvar joins (~foewfoiew@c.24.56.239.179.static.broadstripe.net) |
| 19:35:03 | → | ransom_ joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 19:35:06 | ← | aarvar parts (~foewfoiew@c.24.56.239.179.static.broadstripe.net) () |
| 19:35:06 | <tomjaguarpaw> | I don't think it's so simple in the presence of the property x `combine` x `combine` y == y |
| 19:35:25 | × | jfredett quits (~quassel@95.211.153.89) (Ping timeout: 265 seconds) |
| 19:35:27 | <tomjaguarpaw> | The Data.Hashable [a] instance also tracks the length of the list for this reason |
| 19:35:29 | <tomsmeding> | well you also wouldn't want [x, x, y] to hash to the same as [y] |
| 19:35:37 | <tomsmeding> | right |
| 19:35:37 | <tomjaguarpaw> | Correct |
| 19:35:48 | <tomjaguarpaw> | So Data.Hashable lacks some desirable property |
| 19:36:10 | <int-e> | well, (x `combine` x) `combine` y would be kind of okay |
| 19:36:24 | <int-e> | with that particular definition |
| 19:36:45 | × | ransom quits (c4264035@gateway/vpn/protonvpn/c4264035) (Ping timeout: 240 seconds) |
| 19:37:37 | int-e | wonders how terrible combine x y = 3*x `xor` 5*y would be, for non-adverserial purposes of course. |
| 19:37:58 | <tomsmeding> | tomjaguarpaw: I see you say that Python's hash works for you; how do you define 'combine' there? |
| 19:38:27 | × | thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 19:39:05 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 19:39:06 | <tomsmeding> | I do believe that something of the form of 'combine x y = (x `rotateL` 15) `xor` (y `rotateR` 2)' is quite usual |
| 19:39:31 | <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’ |
| 19:39:31 | <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 |
| 19:39:31 | × | ggole quits (~ggole@2001:8003:8119:7200:3462:7213:ea5b:f472) (Quit: Leaving) |
| 19:39:32 | <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 |
| 19:39:48 | <int-e> | @where paste |
| 19:39:48 | <lambdabot> | Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com |
| 19:40:16 | <tomsmeding> | should that thing get a proper domain name |
| 19:40:27 | <arampa> | https://paste.tomsmeding.com/nmri084o |
| 19:40:57 | <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 |
| 19:41:00 | <int-e> | tomsmeding: what's improper about it :-P (I imagine it pings you quite a bit though) |
| 19:41:19 | <tomsmeding> | arampa: the function by itself looks fine; how are you using it to produce that error? |
| 19:41:45 | <arampa> | https://paste.tomsmeding.com/A37O6NQu |
| 19:41:48 | <Uniaika> | tomsmeding: 5€ if you manage to get it hosted by haskell.org :P |
| 19:41:58 | × | jakob_ quits (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…) |
| 19:42:02 | <tomsmeding> | Uniaika: life goals |
| 19:42:30 | <tomsmeding> | arampa: I assume that you give this definition in a particular instance of that class? |
| 19:42:33 | → | jakob_ joins (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) |
| 19:42:35 | <tomsmeding> | which one? :) |
| 19:42:44 | × | jakob_ quits (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Client Quit) |
| 19:42:45 | <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". |
| 19:43:12 | → | jakob_ joins (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) |
| 19:43:30 | × | jakob_ quits (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Client Quit) |
| 19:43:46 | <arampa> | https://paste.tomsmeding.com/YX1a14kM |
| 19:43:58 | <arampa> | this is how I'd use it on an empty list, for example |
| 19:44:02 | → | jakob_ joins (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) |
| 19:44:05 | <tomjaguarpaw> | tomsmeding: In Python I would do combine(x, y) == hash((x, y)) |
| 19:44:18 | × | jakob_ quits (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Client Quit) |
| 19:44:51 | <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) |
| 19:44:52 | → | jakob_ joins (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) |
| 19:45:04 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 246 seconds) |
| 19:45:05 | × | jakob_ quits (~textual@p200300f49f1622009dd67ec3b5219616.dip0.t-ipconnect.de) (Client Quit) |
| 19:45:33 | <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. |
| 19:45:54 | × | conal quits (~conal@107.181.166.217) (Quit: Computer has gone to sleep.) |
| 19:46:17 | <int-e> | encode [] :: <whatever your type name is> |
| 19:46:58 | <arampa> | encode [] :: Interval works fine |
| 19:47:22 | × | Franciman quits (~francesco@host-79-36-167-172.retail.telecomitalia.it) (Quit: Leaving) |
| 19:48:08 | <arampa> | but if I do this https://paste.tomsmeding.com/YCKBD5QM |
| 19:48:11 | <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 |
| 19:48:53 | <tomsmeding> | tomjaguarpaw: here's how python does tuple hashes as far as I can see: https://github.com/python/cpython/blob/f522a57ec77921ee2e60bd4ccda3c8daa5a43e95/Objects/tupleobject.c#L368 |
| 19:48:56 | <arampa> | and I run it this way, https://paste.tomsmeding.com/b4qkf9SN this is what happens |
| 19:48:59 | <int-e> | your `encode` is a member of a type class; it could have plenty of different implementations. |
| 19:49:13 | <int-e> | so you have to specify the type at the point where `encode` is used. |
| 19:49:58 | × | Tario quits (~Tario@198.252.153.28) (Ping timeout: 246 seconds) |
| 19:50:10 | <tomjaguarpaw> | tomsmeding: Thanks, yes, I may copy that |
| 19:50:54 | <arampa> | so, encode [] :: Interval would be enough for my purposes? I do not use this function in any other functions |
| 19:51:19 | <arampa> | or do you mean that I should define Interval in the type signature? |
| 19:51:23 | <arampa> | sorry I get a bit confused |
| 19:52:09 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 19:52:17 | <int-e> | arampa: encode [] :: Interval is sufficient. Annotating that `Empty` value is actually pointless; ghc will infer the type from the constructor. |
| 19:54:10 | <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. |
| 19:54:34 | <arampa> | okay I understand, thank you so much! |
| 19:55:10 | → | acidjnk_new2 joins (~acidjnk@p200300d0c718f6890d36626cfb994f1d.dip0.t-ipconnect.de) |
| 19:55:18 | → | twopoint718 joins (~cjw@fsf/member/twopoint718) |
| 19:56:08 | → | tswett joins (aee69d95@unaffiliated/tswett) |
| 19:56:22 | × | machinedgod quits (~machinedg@142.169.78.93) (Read error: Connection reset by peer) |
| 19:58:04 | → | alp joins (~alp@2a01:e0a:58b:4920:51b5:8281:3384:97c9) |
| 19:58:34 | → | machinedgod joins (~machinedg@207.253.244.210) |
| 19:59:01 | × | tswett quits (aee69d95@unaffiliated/tswett) (Remote host closed the connection) |
| 20:00:09 | <fendor> | finally, I found someone from university, doing the functional programming course |
| 20:00:18 | <fendor> | *from my |
| 20:00:42 | → | rprije joins (~rprije@124.148.131.132) |
| 20:01:01 | × | justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) () |
| 20:01:56 | × | jollygood2 quits (~bc8165ab@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout)) |
| 20:03:04 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 20:04:15 | × | justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds) |
| 20:05:37 | × | Rudd0 quits (~Rudd0@185.189.115.103) (Ping timeout: 264 seconds) |
| 20:06:33 | → | jacksonier joins (~jacksonie@10.52.classcom.pl) |
| 20:06:43 | → | britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
| 20:07:25 | × | kish quits (~oracle@unaffiliated/oracle) (Ping timeout: 240 seconds) |
| 20:08:41 | × | jacksonier quits (~jacksonie@10.52.classcom.pl) (Quit: Leaving...) |
| 20:10:17 | × | hyiltiz_ quits (~quassel@82.118.227.47) (Quit: hyiltiz_) |
| 20:11:23 | → | jacksonier joins (~jacksonie@10.52.classcom.pl) |
| 20:11:53 | → | hyiltiz joins (~quassel@unaffiliated/hyiltiz) |
| 20:13:22 | → | cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) |
| 20:14:46 | → | banner joins (~banner@116-255-17-160.ip4.superloop.com) |
| 20:15:49 | ← | jacksonier parts (~jacksonie@10.52.classcom.pl) () |
| 20:16:14 | × | invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 264 seconds) |
| 20:17:28 | → | JohnnyL joins (~john@unaffiliated/johnnyl) |
| 20:17:35 | <JohnnyL> | How stable is SDL for haskell? |
| 20:18:17 | × | banner quits (~banner@116-255-17-160.ip4.superloop.com) (Client Quit) |
| 20:18:18 | <dminuoso> | JohnnyL: There's sdl2 on hackage that has quite a few downloads. |
| 20:18:46 | <dminuoso> | It has a couple issues on github, but oh well - this is sdl after all. |
| 20:20:25 | <JohnnyL> | dminuoso: ok |
| 20:21:02 | → | theorbtwo joins (~theorb@cpc81822-swin19-2-0-cust3.3-1.cable.virginm.net) |
| 20:21:04 | <JohnnyL> | I assume that it all compiles into one big binary. |
| 20:23:18 | × | u0_a298 quits (~user@47.206.148.226) (Remote host closed the connection) |
| 20:23:31 | <dminuoso> | What do you mean? |
| 20:23:33 | → | u0_a298 joins (~user@47.206.148.226) |
| 20:24:08 | <koz_> | dminuoso: I think they are asking 'do I get static linking of my C deps'. |
| 20:24:25 | <dminuoso> | You can statically link anything you want. |
| 20:25:00 | → | banner joins (~banner@116-255-17-160.ip4.superloop.com) |
| 20:27:03 | × | alp quits (~alp@2a01:e0a:58b:4920:51b5:8281:3384:97c9) (Ping timeout: 272 seconds) |
| 20:27:03 | × | PacoV quits (~pcoves@16.194.31.93.rev.sfr.net) (Quit: leaving) |
| 20:27:03 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 20:27:29 | → | u0_a298 joins (~user@47.206.148.226) |
| 20:27:39 | <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 |
| 20:27:58 | <dminuoso> | (Since statically linking glibc is not officially supported, and likely leads to quirky bugs) |
| 20:27:58 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 20:28:34 | × | banner quits (~banner@116-255-17-160.ip4.superloop.com) (Remote host closed the connection) |
| 20:28:52 | <dminuoso> | (And you must provide these libraries as .a to GHC, which for some libraries like libpg can be a hassle) |
| 20:29:09 | → | invaser joins (~Thunderbi@31.148.23.125) |
| 20:29:50 | <bqv> | haskell itself is static by default, right? |
| 20:29:56 | → | mirrorbird joins (psutcliffe@gateway/vpn/mullvad/psutcliffe) |
| 20:30:43 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 20:31:32 | <sm[m]> | JohnnyL: sdl2 works great and doesn't change much, so I'd say pretty stable |
| 20:32:13 | → | banner joins (~banner@116-255-17-160.ip4.superloop.com) |
| 20:33:33 | × | banner quits (~banner@116-255-17-160.ip4.superloop.com) (Client Quit) |
| 20:35:17 | → | kamikaze_ joins (~kamikaze@59.103.111.71) |
| 20:36:35 | <JohnnyL> | It's not sdl2 I'm worried about. |
| 20:37:14 | × | knupfer quits (~Thunderbi@200116b82c33ca00a8fb0b764d84b823.dip.versatel-1u1.de) (Ping timeout: 264 seconds) |
| 20:38:07 | × | arampa quits (5e454e4c@94.69.78.76) (Remote host closed the connection) |
| 20:38:08 | × | fendor quits (~fendor@178.115.129.187.wireless.dyn.drei.com) (Remote host closed the connection) |
| 20:38:23 | × | thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 244 seconds) |
| 20:39:19 | <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) |
| 20:39:57 | <bqv> | in answer to myself: yes. yes it is |
| 20:41:08 | ← | kamikaze_ parts (~kamikaze@59.103.111.71) ("Leaving") |
| 20:42:42 | → | geekosaur joins (ac3a5323@172.58.83.35) |
| 20:43:32 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 20:44:18 | <lyxia> | matthew-: yes. you can treat _ like just an unused variable. |
| 20:44:57 | × | mirrorbird quits (psutcliffe@gateway/vpn/mullvad/psutcliffe) (Quit: Leaving) |
| 20:45:47 | × | AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving) |
| 20:46:01 | → | bennofs1 joins (~benno@dslb-094-222-083-101.094.222.pools.vodafone-ip.de) |
| 20:46:15 | × | bennofs1 quits (~benno@dslb-094-222-083-101.094.222.pools.vodafone-ip.de) (Client Quit) |
| 20:46:51 | → | knupfer joins (~Thunderbi@i59F7FF32.versanet.de) |
| 20:47:27 | × | coot quits (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 20:47:54 | → | jakob_ joins (~textual@p57b0eae0.dip0.t-ipconnect.de) |
| 20:49:57 | → | joaj joins (~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca) |
| 20:50:05 | <matthew-> | lyxia: thanks |
| 20:52:01 | × | Chai-T-Rex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Quit: Chai-T-Rex) |
| 20:52:36 | × | Aquazi quits (uid312403@gateway/web/irccloud.com/x-ghekqquifdegujeg) (Quit: Connection closed for inactivity) |
| 20:52:42 | → | ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex) |
| 20:54:45 | × | u0_a298 quits (~user@47.206.148.226) (Remote host closed the connection) |
| 20:54:48 | → | elliott_ joins (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) |
| 20:55:01 | → | u0_a298 joins (~user@47.206.148.226) |
| 20:55:30 | × | jakob_ quits (~textual@p57b0eae0.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…) |
| 20:56:02 | <dminuoso> | lyxia: Interestingly, it turns out that this is not quite true. |
| 20:56:17 | <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 :) |
| 20:56:28 | <dminuoso> | But that's probably a bug |
| 20:56:48 | <dminuoso> | I found an elaborate situation, where annotationg with `_` leads GHC To infer a different type than if not annotated at all. |
| 20:56:59 | <merijn> | JohnnyL: And by default all the Haskell stuff is already linked statically, so C libraries are all you really need to handle |
| 20:57:44 | × | avdb quits (~avdb@ip-83-134-202-8.dsl.scarlet.be) (Quit: avdb) |
| 20:58:05 | <bqv> | it's like i'm on mute... |
| 20:58:29 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection) |
| 20:58:57 | <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 ;) |
| 20:59:18 | × | Gurkenglas__ quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds) |
| 20:59:29 | × | kupi quits (uid212005@gateway/web/irccloud.com/x-fvjiylahrovnfgof) (Quit: Connection closed for inactivity) |
| 21:00:01 | hackage | protocol-buffers 2.4.17 - Parse Google Protocol Buffer specifications https://hackage.haskell.org/package/protocol-buffers-2.4.17 (TvH) |
| 21:00:02 | × | untwisted quits (~untwisted@84.39.116.180) () |
| 21:01:00 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection) |
| 21:01:01 | hackage | protocol-buffers-descriptor 2.4.17, hprotoc 2.4.17 (TvH): https://qbin.io/chevy-ago-djgz |
| 21:01:48 | × | britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
| 21:03:35 | × | ransom_ quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 21:03:36 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 21:04:20 | × | asthasr quits (~asthasr@162.210.29.120) (Quit: asthasr) |
| 21:04:25 | × | danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds) |
| 21:05:29 | → | britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
| 21:05:34 | × | britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Client Quit) |
| 21:07:09 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 21:08:01 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 21:10:15 | → | todda7 joins (~torstein@ppp-2-84-30-242.home.otenet.gr) |
| 21:10:16 | × | u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer) |
| 21:10:42 | → | u0_a298 joins (~user@47.206.148.226) |
| 21:10:59 | → | jakob_ joins (~textual@p200300f49f162200708c4f4194f529b6.dip0.t-ipconnect.de) |
| 21:12:34 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 21:13:29 | → | britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
| 21:13:49 | → | catchme joins (uid355354@gateway/web/irccloud.com/x-wmqwbwgtbuzhjsjg) |
| 21:15:22 | → | alp joins (~alp@2a01:e0a:58b:4920:b090:7fae:5afc:83b5) |
| 21:19:00 | → | ransom joins (~c4264035@undergraduate-jvossen-9690.mines.edu) |
| 21:19:48 | × | jakob_ quits (~textual@p200300f49f162200708c4f4194f529b6.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…) |
| 21:21:27 | → | jakob_ joins (~textual@p200300f49f162200ac46a31c3038c656.dip0.t-ipconnect.de) |
| 21:21:46 | → | mathepauker joins (~mathepauk@s91904426.blix.com) |
| 21:24:45 | × | geekosaur quits (ac3a5323@172.58.83.35) (Remote host closed the connection) |
| 21:27:03 | × | jakob_ quits (~textual@p200300f49f162200ac46a31c3038c656.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…) |
| 21:27:22 | × | invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 256 seconds) |
| 21:27:53 | → | jbox joins (~atlas@unaffiliated/jbox) |
| 21:27:55 | × | ransom quits (~c4264035@undergraduate-jvossen-9690.mines.edu) (Quit: Textual IRC Client: www.textualapp.com) |
| 21:34:01 | hackage | compdoc 0.2.0.0 - Parse a Pandoc to a composite value. https://hackage.haskell.org/package/compdoc-0.2.0.0 (locallycompact) |
| 21:34:12 | × | mdunnio quits (~mdunnio@208.59.170.5) (Remote host closed the connection) |
| 21:34:21 | × | chaosmasttter quits (~chaosmast@p200300c4a7117c01e8fd3775638e9554.dip0.t-ipconnect.de) (Quit: WeeChat 2.9) |
| 21:34:42 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Ping timeout: 244 seconds) |
| 21:34:47 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 21:35:03 | × | todda7 quits (~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 260 seconds) |
| 21:35:31 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 2.9) |
| 21:37:25 | → | jakob_ joins (~textual@p200300f49f162200657391ee70880d24.dip0.t-ipconnect.de) |
| 21:39:18 | → | thir joins (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
| 21:43:55 | → | todda7 joins (~torstein@ppp-2-84-30-242.home.otenet.gr) |
| 21:44:20 | → | mdunnio joins (~mdunnio@208.59.170.5) |
| 21:44:26 | × | thir quits (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 21:45:14 | → | grepcake joins (~artyom@77.234.203.49) |
| 21:45:57 | → | christo joins (~chris@81.96.113.213) |
| 21:47:52 | × | shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection) |
| 21:48:39 | <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 |
| 21:49:23 | <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? |
| 21:51:14 | <merijn> | Not any ways that I'd recommend |
| 21:53:02 | <dminuoso> | grepcake: There is an alternate option, but that's still in a language proposal |
| 21:53:28 | <grepcake> | dminuoso: out of curiosity, what is it? |
| 21:53:28 | <dminuoso> | (And Im not sure whether you could actually bind that one there) |
| 21:53:55 | <grepcake> | merijn: is doing things like this a bad practice in general? |
| 21:54:09 | <grepcake> | Should I pass Dict on the value level instead? |
| 21:54:41 | <dminuoso> | grepcake: https://github.com/ghc-proposals/ghc-proposals/blob/type-applications-in-patterns/proposals/type-applications-in-patterns.rst |
| 21:54:50 | <dminuoso> | grepcake: Dict is the only other option that I can see, yes. |
| 21:55:55 | × | tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection) |
| 21:56:25 | <solonarv> | ah, I was thinking about typeapps in patterns but couldn't remember if they were already in the language |
| 21:56:36 | <grepcake> | dminuoso: thanks, pretty interesting. examples seem to imply that it would be possible to bind param in my case |
| 21:56:48 | → | tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64) |
| 21:56:53 | → | conal joins (~conal@107.181.166.217) |
| 21:57:00 | [[[]]] | is now known as vevercak |
| 21:57:03 | <dminuoso> | grepcake: right, Im just not 100% confident about interaction with GADTs and constriants |
| 21:57:10 | → | nut joins (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 21:57:22 | <dminuoso> | (but the `constraints` library is definitely an option) |
| 21:57:51 | <grepcake> | Yep, appparently I'll stick with it |
| 21:57:56 | <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 |
| 21:58:11 | <dminuoso> | (*GADTs) |
| 21:58:37 | <dminuoso> | Just something to be aware of, I dont know your code whether its useful to you. |
| 21:58:53 | × | conal quits (~conal@107.181.166.217) (Client Quit) |
| 21:59:24 | <dminuoso> | Cale described it best as Pi for constraints. |
| 22:00:31 | × | knupfer quits (~Thunderbi@i59F7FF32.versanet.de) (Ping timeout: 246 seconds) |
| 22:01:34 | × | u0_a298 quits (~user@47.206.148.226) (Ping timeout: 246 seconds) |
| 22:01:34 | <grepcake> | dminuoso: I'll definitely look into it, thanks! |
| 22:02:19 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:04:20 | → | Rudd0 joins (~Rudd0@185.189.115.98) |
| 22:05:23 | × | todda7 quits (~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 260 seconds) |
| 22:07:25 | × | hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 240 seconds) |
| 22:07:52 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
| 22:09:52 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 22:10:38 | → | todda7 joins (~torstein@ppp-2-84-30-242.home.otenet.gr) |
| 22:13:27 | × | jbox quits (~atlas@unaffiliated/jbox) (Ping timeout: 272 seconds) |
| 22:13:34 | × | grepcake quits (~artyom@77.234.203.49) (Quit: Konversation terminated!) |
| 22:17:28 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 22:19:35 | → | ensyde joins (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
| 22:21:07 | → | justanotheruser joins (~justanoth@unaffiliated/justanotheruser) |
| 22:21:22 | × | twopoint718 quits (~cjw@fsf/member/twopoint718) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 22:21:26 | <bqv> | folks, a question |
| 22:22:33 | <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? |
| 22:22:53 | → | dbmikus__ joins (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
| 22:23:02 | <bqv> | i.e composing a function to that function regardless of arity |
| 22:23:06 | × | dbmikus_ quits (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Read error: Connection reset by peer) |
| 22:24:08 | <Ariakenom> | well i can call id |
| 22:24:11 | <Ariakenom> | :t id |
| 22:24:13 | <lambdabot> | a -> a |
| 22:24:14 | <Ariakenom> | 3 times |
| 22:24:20 | <Ariakenom> | > id id id 1 |
| 22:24:23 | <lambdabot> | 1 |
| 22:24:38 | <Ariakenom> | not 3 times. I meant with 3 arguments |
| 22:24:57 | <bqv> | of course, but id is a special case |
| 22:25:10 | <bqv> | it's possible to detect arity through type magic, but it won't work with id-like types |
| 22:25:21 | <bqv> | so i wonder if the rest is possible with that qualification too |
| 22:25:28 | <glguy> | It's not particularly special, no. functions don't have arity in general |
| 22:25:46 | <bqv> | ok say the result is an IO type |
| 22:25:46 | <glguy> | they always take one argument |
| 22:25:52 | <bqv> | does that help? |
| 22:26:17 | <bqv> | can't type-recursion use that as an terminating case? |
| 22:26:25 | <glguy> | If you restrict yourself to types of a form like that then you can do it with a typeclass |
| 22:26:52 | <glguy> | class Thing a; instance Thing b => Thing (a -> b); instance Thing (IO a) |
| 22:28:08 | <bqv> | neato |
| 22:28:10 | <bqv> | yeah, ok |
| 22:29:17 | → | fendor joins (~fendor@178.115.129.187.wireless.dyn.drei.com) |
| 22:29:21 | × | britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
| 22:30:16 | × | todda7 quits (~torstein@ppp-2-84-30-242.home.otenet.gr) (Quit: Konversation terminated!) |
| 22:30:31 | → | todda7 joins (~torstein@ppp-2-84-30-242.home.otenet.gr) |
| 22:32:32 | <merijn> | glguy: Sure they do |
| 22:32:40 | <merijn> | glguy: Functions have arity 1 :p |
| 22:33:01 | → | twopoint718 joins (~cjw@fsf/member/twopoint718) |
| 22:34:29 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 22:34:46 | → | Tario joins (~Tario@201.192.165.173) |
| 22:34:48 | → | erisco joins (~erisco@d24-57-249-233.home.cgocable.net) |
| 22:36:36 | × | Ariakenom quits (~Ariakenom@h-82-196-111-76.NA.cust.bahnhof.se) (Read error: Connection reset by peer) |
| 22:36:54 | <JohnnyL> | merijn: :) |
| 22:37:46 | × | todda7 quits (~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 260 seconds) |
| 22:39:18 | → | dwt joins (~dwt@c-98-200-58-177.hsd1.tx.comcast.net) |
| 22:39:45 | → | britva joins (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
| 22:40:17 | → | Gurkenglas__ joins (~Gurkengla@unaffiliated/gurkenglas) |
| 22:40:33 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 22:40:44 | × | britva quits (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Client Quit) |
| 22:45:06 | × | sagax quits (~sagax_nb@213.138.71.146) (Remote host closed the connection) |
| 22:47:23 | × | Foritus quits (~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net) (Quit: ლ(ಠ益ಠლ) .:. <Ashley> my porn is hidden in a folder called "BBC Micro Emulator") |
| 22:51:00 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 22:51:48 | → | conal joins (~conal@107.181.166.217) |
| 22:53:35 | → | Foritus joins (~buggery@cpc91334-watf11-2-0-cust153.15-2.cable.virginm.net) |
| 22:56:05 | × | conal quits (~conal@107.181.166.217) (Ping timeout: 240 seconds) |
| 22:56:26 | → | shatriff joins (~vitaliish@176.52.219.10) |
| 22:57:13 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 22:58:12 | → | jbox joins (~atlas@unaffiliated/jbox) |
| 23:02:30 | hackage | commonmark 0.1.1.1 - Pure Haskell commonmark parser. https://hackage.haskell.org/package/commonmark-0.1.1.1 (JohnMacFarlane) |
| 23:03:30 | hackage | commonmark-extensions 0.2.0.3 - Pure Haskell commonmark parser. https://hackage.haskell.org/package/commonmark-extensions-0.2.0.3 (JohnMacFarlane) |
| 23:04:42 | × | texasmynsted quits (~texasmyns@64.44.55.84) (Remote host closed the connection) |
| 23:05:16 | → | texasmynsted joins (~texasmyns@64.44.55.84) |
| 23:05:41 | → | jcowan joins (sid325434@gateway/web/irccloud.com/x-evadozowlzlhtjmy) |
| 23:06:23 | <jcowan> | What is it about multi-parameter typeclasses that excluded them from Haskell 98? Do they make the type system unverifiable in some way, or was it just for lack of use cases at that time? |
| 23:08:12 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 23:08:22 | <Rembane> | IIRC there wasn't a lack of use cases, they show up in a paper before 1998. |
| 23:09:28 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
| 23:10:42 | <jcowan> | Ah, here it is. "Naive use of MPTCs may result in ambiguity, so functional dependencies were developed as a method of resolving that ambiguity, declaring that some subset of the parameters is sufficient to determine the values of the others." --from the wiki |
| 23:10:48 | × | texasmynsted quits (~texasmyns@64.44.55.84) (Ping timeout: 258 seconds) |
| 23:10:59 | → | wroathe joins (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) |
| 23:12:06 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 23:18:05 | × | nut quits (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 258 seconds) |
| 23:20:46 | × | mceier quits (~mceier@89-68-132-187.dynamic.chello.pl) (Ping timeout: 258 seconds) |
| 23:21:22 | → | codygman joins (~codygman@47-184-107-46.dlls.tx.frontiernet.net) |
| 23:23:26 | × | jbox quits (~atlas@unaffiliated/jbox) (Read error: Connection reset by peer) |
| 23:24:24 | → | jbox joins (~atlas@unaffiliated/jbox) |
| 23:30:02 | → | conal joins (~conal@107.181.166.217) |
| 23:30:28 | × | jff quits (~Thunderbi@a109-49-149-2.cpe.netcabo.pt) (Ping timeout: 246 seconds) |
| 23:31:53 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 23:32:30 | × | twopoint718 quits (~cjw@fsf/member/twopoint718) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 23:34:38 | → | texasmynsted joins (~texasmyns@64.44.55.84) |
| 23:34:50 | × | agrif quits (~agrif@overviewer/dev/agrif) (Killed (e (worth a try))) |
| 23:35:17 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
| 23:35:22 | → | agrif joins (agrif@rakeri.net) |
| 23:35:22 | × | agrif quits (agrif@rakeri.net) (Changing host) |
| 23:35:22 | → | agrif joins (agrif@overviewer/dev/agrif) |
| 23:35:29 | → | texasmyn_ joins (~texasmyns@64.44.55.84) |
| 23:36:42 | → | mceier joins (~mceier@89-68-132-187.dynamic.chello.pl) |
| 23:37:08 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 23:39:20 | × | texasmynsted quits (~texasmyns@64.44.55.84) (Ping timeout: 256 seconds) |
| 23:40:09 | × | gabiruh quits (~gabiruh@vps19177.publiccloud.com.br) (Quit: ZNC 1.7.5 - https://znc.in) |
| 23:40:26 | → | gabiruh joins (~gabiruh@vps19177.publiccloud.com.br) |
| 23:41:00 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 23:42:32 | × | fendor quits (~fendor@178.115.129.187.wireless.dyn.drei.com) (Remote host closed the connection) |
| 23:43:10 | × | conal quits (~conal@107.181.166.217) (Quit: Computer has gone to sleep.) |
| 23:43:33 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
| 23:44:35 | → | conal joins (~conal@107.181.166.217) |
| 23:46:34 | × | agrif quits (agrif@overviewer/dev/agrif) (Quit: shorah b'shemtee) |
| 23:46:56 | → | agrif joins (~agrif@rakeri.net) |
| 23:46:56 | × | agrif quits (~agrif@rakeri.net) (Changing host) |
| 23:46:56 | → | agrif joins (~agrif@overviewer/dev/agrif) |
| 23:47:30 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 23:49:55 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:49:56 | × | jbox quits (~atlas@unaffiliated/jbox) (Read error: Connection reset by peer) |
| 23:50:25 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 23:50:36 | → | jbox joins (~atlas@unaffiliated/jbox) |
| 23:50:44 | × | Tops2 quits (~Tobias@dyndsl-095-033-088-103.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 23:51:04 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
| 23:52:29 | → | son0p joins (~son0p@181.136.122.143) |
| 23:53:08 | × | borne quits (~fritjof@200116b8643b3600e0b7c534f6e7b66f.dip.versatel-1u1.de) (Ping timeout: 246 seconds) |
| 23:57:40 | → | borne joins (~fritjof@200116b8643b36005d0cb1433c5d4cbb.dip.versatel-1u1.de) |
| 23:57:43 | → | neobit joins (~neobit@159.65.243.9) |
All times are in UTC on 2020-11-05.