2022-05-06 00:18:44 +0200 <apache2> thanks geekosaur I'll try that
2022-05-06 00:19:00 +0200zeenk(~zeenk@2a02:2f04:a004:9b00:1efc:c1cf:378d:8b3d) (Quit: Konversation terminated!)
2022-05-06 00:19:13 +0200liz_(~liz@host109-151-128-120.range109-151.btcentralplus.com) (Quit: Lost terminal)
2022-05-06 00:22:02 +0200Tuplanolla(~Tuplanoll@91-159-68-39.elisa-laajakaista.fi) (Quit: Leaving.)
2022-05-06 00:27:43 +0200Guest|99(~Guest|99@217-121-250-5.cable.dynamic.v4.ziggo.nl)
2022-05-06 00:27:51 +0200 <seydar> my program has been deviating from the test program because apparently... they are receiving different input
2022-05-06 00:28:33 +0200 <seydar> i need a drink
2022-05-06 00:29:04 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2022-05-06 00:29:14 +0200 <hpc> there's a liquid haskell joke in there somewhere
2022-05-06 00:29:51 +0200 <monochrom> :)
2022-05-06 00:30:01 +0200 <monochrom> Liquor Haskell
2022-05-06 00:30:55 +0200 <hpc> monochrom: haskell needs dependent types to be a real "proof" assistant
2022-05-06 00:32:19 +0200Guest|99(~Guest|99@217-121-250-5.cable.dynamic.v4.ziggo.nl) ()
2022-05-06 00:32:43 +0200 <monochrom> "Liquor Haskell combines dependent typing, dependent refinement typing, dependent predicate subtyping, and dependent linear typing."
2022-05-06 00:33:10 +0200 <apache2> :)
2022-05-06 00:33:21 +0200 <monochrom> "Computer science has just become a bit too technical. Let's go for a drink." -- Jay Misra
2022-05-06 00:33:22 +0200 <maerwald[m]> Since when is Haskell trying to become a proof assistant?
2022-05-06 00:33:42 +0200 <apache2> since it became alcoholic?
2022-05-06 00:33:56 +0200 <maerwald[m]> That sounds right
2022-05-06 00:33:59 +0200 <maerwald[m]> Cheers
2022-05-06 00:34:28 +0200 <monochrom> No no no, not proof assistant. 100-proof assistant.
2022-05-06 00:34:29 +0200 <apache2> isn't that a big pun on liquor/dependent (addicted)/proof(as in strong alcohol) etc?
2022-05-06 00:34:46 +0200 <hpc> yep
2022-05-06 00:34:50 +0200jargon(~jargon@174-22-206-112.phnx.qwest.net)
2022-05-06 00:34:59 +0200 <hpc> these aren't your usual internet puns
2022-05-06 00:35:06 +0200 <hpc> these are {-# LANGUAGE RecordPuns #-}
2022-05-06 00:35:29 +0200 <hpc> i mean, NamedFieldPuns
2022-05-06 00:35:52 +0200 <maerwald[m]> Isn't that just syntax cocaine?
2022-05-06 00:36:33 +0200 <monochrom> desugared grape juice
2022-05-06 00:37:08 +0200 <hpc> maerwald[m]: haskell is inspired by methamatics? :P
2022-05-06 00:37:11 +0200 <monochrom> and desugared malt etc
2022-05-06 00:38:03 +0200 <monochrom> In reality, you cannot do equational reasoning. In meth, you can.
2022-05-06 00:39:03 +0200 <hpc> meth: not even epsilon
2022-05-06 00:40:57 +0200Polo(~Polo@user/polo) (Quit: Textual IRC Client: www.textualapp.com)
2022-05-06 00:44:34 +0200teo(~teo@user/teo) ()
2022-05-06 00:51:00 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 276 seconds)
2022-05-06 00:54:03 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-05-06 00:57:04 +0200hololeap_(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-05-06 01:00:17 +0200hololeap_(~hololeap@user/hololeap)
2022-05-06 01:00:20 +0200xaotuk(~sasha@net224-32-245-109.mbb.telenor.rs) (Ping timeout: 260 seconds)
2022-05-06 01:00:52 +0200acidjnk(~acidjnk@p200300d0c7068b43f1a15e75027d04fd.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2022-05-06 01:01:10 +0200stackdroid18(14094@user/stackdroid) (Quit: hasta la vista... tchau!)
2022-05-06 01:07:05 +0200eraziel(~eraziel@modemcable169.17-58-74.mc.videotron.ca) (Quit: Client closed)
2022-05-06 01:08:35 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-05-06 01:10:04 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 240 seconds)
2022-05-06 01:10:04 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2022-05-06 01:10:39 +0200malinoskj290645(~malinoskj@c-68-33-26-115.hsd1.md.comcast.net)
2022-05-06 01:11:34 +0200malinoskj290645(~malinoskj@c-68-33-26-115.hsd1.md.comcast.net) (Client Quit)
2022-05-06 01:11:40 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
2022-05-06 01:11:54 +0200chomwitt(~chomwitt@2a02:587:dc19:d600:6d5a:79e9:ac14:c3a8) (Ping timeout: 252 seconds)
2022-05-06 01:11:55 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-05-06 01:11:57 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-05-06 01:12:53 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2022-05-06 01:14:45 +0200machinedgod(~machinedg@24.105.81.50)
2022-05-06 01:20:16 +0200 <seydar> WOW i had another list comprehension that failed to grok inner- vs outer-loop variables
2022-05-06 01:20:20 +0200 <seydar> so... my bad
2022-05-06 01:32:36 +0200lagooned(~lagooned@108-208-149-42.lightspeed.hstntx.sbcglobal.net)
2022-05-06 01:34:46 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-05-06 01:41:03 +0200alp_(~alp@user/alp) (Ping timeout: 252 seconds)
2022-05-06 01:43:17 +0200vicfred(~vicfred@user/vicfred)
2022-05-06 01:47:59 +0200 <seydar> this project is showing me just how poorly i know haskell and just how poorly i can read
2022-05-06 01:49:56 +0200jgeerds(~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 248 seconds)
2022-05-06 01:54:05 +0200 <seydar> i'm having (Integral Double) troubles again: https://paste.tomsmeding.com/TgdvpoGl
2022-05-06 01:54:22 +0200 <seydar> what does it mean when it says "no instance of (Integral Double)"?
2022-05-06 01:55:47 +0200 <seydar> ah. as soon as I removed the `::Double` and the `round`, my problem went away
2022-05-06 01:55:54 +0200 <seydar> which leads me to believe that:
2022-05-06 01:55:56 +0200 <seydar> :t floor
2022-05-06 01:55:57 +0200 <lambdabot> (RealFrac a, Integral b) => a -> b
2022-05-06 01:56:20 +0200 <seydar> okay that doesn't mean much to me, but it feels like `floor` is already making it an Int
2022-05-06 01:57:58 +0200 <monochrom> But what does "limit 0 18" expect?
2022-05-06 01:59:37 +0200jao(~jao@211.68.17.95.dynamic.jazztel.es) (Remote host closed the connection)
2022-05-06 02:01:31 +0200 <seydar> please don't be mad... but i couldn't come up with a type signature to work, so i got rid of the signature and just let the compiler figure it out for me
2022-05-06 02:01:32 +0200 <EvanR> no instance of Integral Double means Double has no Integral instance, which maps to "you can't do long division with Double"
2022-05-06 02:01:57 +0200 <EvanR> "unless you implement the instance yourself"
2022-05-06 02:02:02 +0200 <monochrom> Then what is the type sig the compiler figured out?
2022-05-06 02:02:29 +0200 <monochrom> I am mad but I don't have remote desktop access.
2022-05-06 02:03:48 +0200 <EvanR> best to double check the compiler arrived at the same conclusion as you-at-your-best
2022-05-06 02:06:39 +0200 <sm> seydar: again, excellent haskell dev technique, no problem with that!
2022-05-06 02:06:43 +0200gurkenglas(~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
2022-05-06 02:07:00 +0200 <sm> vs code will insert that for you if you like
2022-05-06 02:07:19 +0200 <EvanR> oh man, I should learn vs code
2022-05-06 02:08:20 +0200 <seydar> limit :: Ord a => a -> a -> a -> a
2022-05-06 02:08:33 +0200 <seydar> (limit low high value -> result)
2022-05-06 02:09:06 +0200 <EvanR> so basically a clamp
2022-05-06 02:10:10 +0200 <monochrom> So you are saying "limit 0 18 (floor foo) :: Double". Therefore a=Double. Therefore floor foo :: Double. Therefore you are asking floor to return Double not Int.
2022-05-06 02:10:49 +0200 <EvanR> floor is funny in that it can't turn a Double into a Double :(
2022-05-06 02:10:53 +0200 <EvanR> unlike math.h
2022-05-06 02:12:48 +0200 <monochrom> C's floor probably is designed to just map to a machine instruction, and most machine's floor instruction is probably double->double, and C does not aspire to think about it.
2022-05-06 02:13:50 +0200 <monochrom> Although, both ways are inconvenient half of the time.
2022-05-06 02:14:43 +0200 <dons> morning all. happy friday
2022-05-06 02:14:54 +0200 <monochrom> double->int has the up side of using types to tell you "no fractional part". double->double has the up side of using types to tell you "the answer always fits in the range".
2022-05-06 02:16:23 +0200 <monochrom> However, in Haskell, you're supposed to do Double->Integer therefore there is no out-of-range UB problem.
2022-05-06 02:17:06 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2022-05-06 02:17:17 +0200 <EvanR> but my premature optimizations
2022-05-06 02:18:15 +0200 <EvanR> when you really do want Double->Double, premature or not, it's annoying
2022-05-06 02:18:32 +0200 <monochrom> This is why we need dependent predicate subtyping of Liquor Haskell to prove that your output fits in 4 bits therefore you are allowed Double-Nibble.
2022-05-06 02:18:51 +0200 <monochrom> And dependent linear typing to prove that destructive update is OK too.
2022-05-06 02:19:42 +0200mmhat(~mmh@2001:4090:a246:806c:ee08:6bff:fe09:5315) (Quit: WeeChat 3.5)
2022-05-06 02:19:47 +0200xff0x(~xff0x@om126167084162.29.openmobile.ne.jp)
2022-05-06 02:19:57 +0200 <monochrom> We are doing EGA 16-colour image processing, therefore 4 bits are enough, right? >:)