Home freenode/#haskell: Logs Calendar

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.