2022/02/10

2022-02-10 00:01:14 +0100zincy(~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 256 seconds)
2022-02-10 00:02:07 +0100ober_(~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 256 seconds)
2022-02-10 00:04:27 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b)
2022-02-10 00:06:21 +0100foul_owl(~kerry@71.212.148.11) (Ping timeout: 250 seconds)
2022-02-10 00:06:35 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Quit: Konversation terminated!)
2022-02-10 00:08:57 +0100Pickchea(~private@user/pickchea) (Ping timeout: 240 seconds)
2022-02-10 00:13:36 +0100slim(uid300876@id-300876.lymington.irccloud.com)
2022-02-10 00:13:37 +0100lechner(~lechner@debian/lechner) (Ping timeout: 240 seconds)
2022-02-10 00:14:46 +0100domcornloan(~mike@user/feetwind) (Quit: WeeChat 3.1)
2022-02-10 00:14:50 +0100deadmarshal(~deadmarsh@95.38.117.25) (Ping timeout: 256 seconds)
2022-02-10 00:15:09 +0100feetwind(~mike@user/feetwind)
2022-02-10 00:22:05 +0100foul_owl(~kerry@94.140.8.52)
2022-02-10 00:23:57 +0100lottaquestions(~nick@2607:fa49:5041:a200:4100:dd4:ee5e:72a7) (Ping timeout: 240 seconds)
2022-02-10 00:24:57 +0100mvk(~mvk@2607:fea8:5cdc:bf00::5483) (Ping timeout: 240 seconds)
2022-02-10 00:25:04 +0100paddymahoney(~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
2022-02-10 00:25:20 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-02-10 00:25:24 +0100mvk(~mvk@2607:fea8:5cdc:bf00::5483)
2022-02-10 00:32:39 +0100ardell(~ardell@user/ardell) (Quit: Konversation terminated!)
2022-02-10 00:38:43 +0100ober__(~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Quit: Leaving)
2022-02-10 00:40:09 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b) (Ping timeout: 250 seconds)
2022-02-10 00:43:49 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b)
2022-02-10 00:47:57 +0100alp(~alp@user/alp) (Ping timeout: 250 seconds)
2022-02-10 00:48:21 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b) (Ping timeout: 256 seconds)
2022-02-10 00:49:17 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b)
2022-02-10 00:50:04 +0100machinedgod(~machinedg@24.105.81.50)
2022-02-10 00:50:21 +0100little_mac(~little_ma@2601:410:4300:3ce0:89bd:bcbb:df15:8e9a)
2022-02-10 00:52:04 +0100Shiranai(~Shiranai@190.237.13.188)
2022-02-10 00:52:40 +0100lechner(~lechner@debian/lechner)
2022-02-10 00:53:22 +0100 <Shiranai> hello, any natural ways to make an `m [m a]` into an `[m a]`? Here `m` is a monad but I could strengthen that assumption if needed
2022-02-10 00:53:38 +0100 <dminuoso> Shiranai: What would you expect that to do?
2022-02-10 00:53:54 +0100 <dminuoso> And no, in general that transformation is impossible
2022-02-10 00:53:57 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b) (Ping timeout: 240 seconds)
2022-02-10 00:54:14 +0100 <dminuoso> Well what you can do is
2022-02-10 00:54:19 +0100 <dminuoso> % :t sequence
2022-02-10 00:54:20 +0100 <yahb> dminuoso: (Traversable t, Monad m) => t (m a) -> m (t a)
2022-02-10 00:54:25 +0100 <dminuoso> % :t join
2022-02-10 00:54:26 +0100 <yahb> dminuoso: Monad m => m (m a) -> m a
2022-02-10 00:54:36 +0100 <dminuoso> % :t join . sequence
2022-02-10 00:54:36 +0100 <yahb> dminuoso: (Monad m, Traversable m) => m (m a) -> m a
2022-02-10 00:54:59 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b)
2022-02-10 00:55:07 +0100 <dminuoso> % :t join . fmap sequence
2022-02-10 00:55:08 +0100 <yahb> dminuoso: (Monad m, Traversable t) => m (t (m a)) -> m (t a)
2022-02-10 00:55:20 +0100 <dminuoso> Shiranai: Whether that does what you want it to do, Im not sure.
2022-02-10 00:55:29 +0100 <shapr> :t join
2022-02-10 00:55:30 +0100 <lambdabot> Monad m => m (m a) -> m a
2022-02-10 00:55:32 +0100 <dminuoso> So let me revoke my previous statement abuot "this is impossible"
2022-02-10 00:55:47 +0100 <EvanR> I can't wait to hear what Shiranai's operation is supposed to do xD
2022-02-10 00:56:27 +0100 <EvanR> so we bifurcate between coming up with a solution and clearing up misconceptions about monads
2022-02-10 00:56:49 +0100 <EvanR> or something else
2022-02-10 00:57:08 +0100 <Shiranai> sorry for disappointing you guys but I have no idea what that's supposed to do haha, I'm solving some exercises and that signature came up
2022-02-10 00:57:15 +0100 <EvanR> oof
2022-02-10 00:57:21 +0100shapris sad
2022-02-10 00:57:32 +0100 <monochrom> That can be a very XYZABC problem.
2022-02-10 00:58:16 +0100 <Shiranai> I was implementing monad for `data ListT m a = ConsT (m a) (ListT m a) | NilT` (I'm aware this is not the standard definition)
2022-02-10 00:59:26 +0100 <Shiranai> also thanks, dminuoso, that's probably what I needed
2022-02-10 00:59:56 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b) (Ping timeout: 245 seconds)
2022-02-10 01:00:35 +0100 <awpr> I don't think that can be a Monad. that has the whole list structure outside of `m`, and there's no way to figure out ahead of time what that list structure should be for the result of a `>>=`
2022-02-10 01:01:19 +0100 <dminuoso> If that's what you really want, I think you should have used a `traverse` before.
2022-02-10 01:04:26 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-02-10 01:09:53 +0100cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2022-02-10 01:12:43 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b)
2022-02-10 01:13:02 +0100cheater(~Username@user/cheater)
2022-02-10 01:13:07 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-02-10 01:16:05 +0100k8yun(~k8yun@user/k8yun)
2022-02-10 01:16:50 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-02-10 01:16:59 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b) (Ping timeout: 250 seconds)
2022-02-10 01:19:02 +0100 <lyxia> aka the list non-monad-transformer
2022-02-10 01:22:35 +0100`2jt(~jtomas@130.red-88-22-46.staticip.rima-tde.net) (Ping timeout: 256 seconds)
2022-02-10 01:28:37 +0100 <monochrom> Decepticon :)
2022-02-10 01:29:15 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com) (Remote host closed the connection)
2022-02-10 01:31:45 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com)
2022-02-10 01:33:17 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-02-10 01:34:23 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-10 01:34:23 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-10 01:34:23 +0100wroathe(~wroathe@user/wroathe)
2022-02-10 01:39:36 +0100capo_greco(~textual@60-241-161-167.static.tpgi.com.au)
2022-02-10 01:40:20 +0100 <capo_greco> hi Haskell community!
2022-02-10 01:40:37 +0100 <capo_greco> I have a beginner question
2022-02-10 01:40:39 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2022-02-10 01:41:34 +0100 <geekosaur> ask, please
2022-02-10 01:41:56 +0100 <capo_greco> I have GHC installed here on a 2020 M1 MacBook Pro running macOS Monteray
2022-02-10 01:42:17 +0100 <capo_greco> however, when trying to run `stack build`
2022-02-10 01:42:37 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
2022-02-10 01:42:39 +0100 <capo_greco> stack simply returns `I don't know how to install GHC for (OSX,AArch64), please install manually`
2022-02-10 01:43:03 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-10 01:43:37 +0100DNH(~DNH@2a02:8108:1100:16d8:adf2:7fd4:5ba2:8512) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-10 01:43:43 +0100 <capo_greco> I have the `config.yaml` open
2022-02-10 01:44:22 +0100 <capo_greco> but I am not sure how to link the system version of ghc (which works)
2022-02-10 01:44:31 +0100 <capo_greco> or if that is what I should be trying to do
2022-02-10 01:44:45 +0100 <geekosaur> you have to passstack --system-ghc, iirc
2022-02-10 01:45:05 +0100 <geekosaur> I don't know ifthere's a way to configure that as default in config.yaml
2022-02-10 01:45:30 +0100 <capo_greco> I already tried using this flag - gives the same result unfortunately
2022-02-10 01:46:39 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b)
2022-02-10 01:46:59 +0100 <geekosaur> it shouldn't be trying to install ghc in that case, hm
2022-02-10 01:47:59 +0100 <capo_greco> I'm using this syntax: `stack build --system-ghc`
2022-02-10 01:48:10 +0100 <geekosaur> looks like config.yaml entry is "system-ghc: true"
2022-02-10 01:48:40 +0100 <geekosaur> I'm not a stack user so I can't provide much more help, I'm afraid
2022-02-10 01:49:13 +0100cynomys(~cynomys@user/cynomys) (Ping timeout: 256 seconds)
2022-02-10 01:49:21 +0100 <capo_greco> allgood - thank you geekosaur
2022-02-10 01:51:01 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
2022-02-10 01:51:07 +0100chenqisu1(~chenqisu1@183.217.200.249)
2022-02-10 01:51:37 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b) (Ping timeout: 240 seconds)
2022-02-10 01:52:00 +0100 <capo_greco> ok! so setting `skip-ghc-check: true` in the config.yaml got it to compile something
2022-02-10 01:53:03 +0100ec(~ec@gateway/tor-sasl/ec)
2022-02-10 01:53:21 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-02-10 01:55:58 +0100cynomys(~cynomys@user/cynomys)
2022-02-10 01:57:29 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 256 seconds)
2022-02-10 01:59:25 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b)
2022-02-10 02:03:39 +0100vicfred(~vicfred@user/vicfred)
2022-02-10 02:08:19 +0100 <EvanR> is the main thread a bound thread
2022-02-10 02:08:47 +0100 <monochrom> Yes.
2022-02-10 02:09:08 +0100 <EvanR> funky
2022-02-10 02:09:37 +0100dsrt^(~dsrt@128-092-160-106.biz.spectrum.com) (Remote host closed the connection)
2022-02-10 02:12:08 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-10 02:15:22 +0100aplainze1akind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2022-02-10 02:15:32 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2022-02-10 02:16:13 +0100denbrahe(~denbrahe@2001:470:69fc:105::19c0) (Ping timeout: 240 seconds)
2022-02-10 02:16:13 +0100siraben(~siraben@user/siraben) (Ping timeout: 240 seconds)
2022-02-10 02:16:37 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com) (Remote host closed the connection)
2022-02-10 02:16:41 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 02:17:27 +0100denbrahe(~denbrahe@2001:470:69fc:105::19c0)
2022-02-10 02:18:15 +0100siraben(~siraben@user/siraben)
2022-02-10 02:18:54 +0100 <Axman6> EvanR: you might even say, kinky
2022-02-10 02:19:25 +0100 <EvanR> 🤦
2022-02-10 02:19:28 +0100 <Inst[m]> i'm surprised more people don't make jokes based on the fact that Haskell do notation relies on binds
2022-02-10 02:20:59 +0100 <jackdk> I am glad they don't
2022-02-10 02:22:21 +0100infinity0(~infinity0@occupy.ecodis.net) (Remote host closed the connection)
2022-02-10 02:23:16 +0100infinity0(~infinity0@occupy.ecodis.net)
2022-02-10 02:34:33 +0100cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2022-02-10 02:35:06 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com)
2022-02-10 02:37:15 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds)
2022-02-10 02:42:25 +0100 <geekosaur> and discipline
2022-02-10 02:43:37 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
2022-02-10 02:43:56 +0100capo_greco(~textual@60-241-161-167.static.tpgi.com.au) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-10 02:44:06 +0100EvanR(~EvanR@user/evanr) (Quit: Leaving)
2022-02-10 02:44:39 +0100 <sshine> and monads
2022-02-10 02:46:40 +0100 <sshine> there's a DNS server called Unbound that is an alternative to BIND.
2022-02-10 02:47:31 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com) (Remote host closed the connection)
2022-02-10 02:47:44 +0100EvanR(~EvanR@user/evanr)
2022-02-10 02:48:35 +0100capo_greco(~textual@60-241-161-167.static.tpgi.com.au)
2022-02-10 02:49:05 +0100jinsun(~quassel@user/jinsun) (Read error: Connection reset by peer)
2022-02-10 02:49:23 +0100 <EvanR> that was annoying. After a bunch of refactoring, glfw began to return NULL when creating a window, no other error message. Revert the code, same behavior. Go back to previous commits known to work, same behavior. Reboot the computer, it agrees to create windows again
2022-02-10 02:49:36 +0100 <EvanR> cosmic ray hit a linker cache or something
2022-02-10 02:51:06 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 02:51:19 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 02:53:34 +0100 <monochrom> https://ro-che.info/ccc/1
2022-02-10 02:54:57 +0100 <jackdk> what is the best sha1 lib in common use?
2022-02-10 02:56:33 +0100 <Unicorn_Princess> how soon do you figure ghc will switch to https://github.com/Kindelia/HVM and do away with GC pauses forever?
2022-02-10 02:56:40 +0100 <sshine> jackdk, cryptohash-sha1?
2022-02-10 02:56:47 +0100 <EvanR> ...
2022-02-10 02:56:53 +0100 <Unicorn_Princess> or do i overestimate how magical HVM is
2022-02-10 02:56:56 +0100 <Axman6> Unicorn_Princess: never?
2022-02-10 02:57:02 +0100 <Unicorn_Princess> ; ;
2022-02-10 02:57:03 +0100 <Axman6> yes, very much so, you need to read the author's comments
2022-02-10 02:57:22 +0100vysn(~vysn@user/vysn)
2022-02-10 02:57:23 +0100 <jackdk> sshine: that may be best option. wasn't sure if it was well-maintained
2022-02-10 02:57:33 +0100 <Unicorn_Princess> Axman6, which comments?
2022-02-10 02:57:36 +0100 <Axman6> it can only handle pure code basically, all the primops would need to be implemented and handled correctly - and concurrencvy changes things a lot
2022-02-10 02:57:45 +0100 <Axman6> on Reddit, lobste.rs etc.
2022-02-10 02:57:47 +0100sektor|3(~kvirc@94.155.193.66) (Ping timeout: 256 seconds)
2022-02-10 02:57:50 +0100 <sshine> jackdk, Uploaded by phadej at 2021-11-13 -- I'd say it is.
2022-02-10 02:57:54 +0100 <Unicorn_Princess> awww
2022-02-10 02:58:03 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
2022-02-10 02:58:13 +0100 <Inst> @monochrom your comic is bad and you should feel bad
2022-02-10 02:58:13 +0100 <lambdabot> Unknown command, try @list
2022-02-10 02:58:29 +0100 <jackdk> sshine: tyvm
2022-02-10 02:58:42 +0100 <Axman6> jackdk: #haskell-cryptography might have some more advice - the libsodium library that's being written at the moment will include SHA1
2022-02-10 02:59:06 +0100 <Axman6> Personally I would use cryptonite, because I'm quite used to it
2022-02-10 02:59:15 +0100 <jackdk> Axman6: I need to make a decision today-ish, because a kind soul is PRing AWS SSO support into amazonka
2022-02-10 02:59:32 +0100Shiranai(~Shiranai@190.237.13.188) (Quit: Connection closed)
2022-02-10 02:59:36 +0100 <jackdk> cryptonite is inside the event horizon of the foundation/basement black hole
2022-02-10 03:00:08 +0100 <Axman6> ah yes, ignore that then
2022-02-10 03:02:25 +0100 <Axman6> I've asked in the other channel for you, just in case there is a better suggestion
2022-02-10 03:03:40 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) (Remote host closed the connection)
2022-02-10 03:05:02 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2022-02-10 03:08:33 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:08:42 +0100 <jackdk> appreciate it
2022-02-10 03:08:47 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:08:55 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:09:09 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:09:17 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:09:31 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:09:38 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:09:53 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:09:59 +0100k8yun_(~k8yun@user/k8yun)
2022-02-10 03:10:00 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:10:13 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:10:21 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:10:36 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:10:43 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:10:57 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:11:04 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:11:18 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:11:26 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:11:37 +0100k8yun_(~k8yun@user/k8yun) (Remote host closed the connection)
2022-02-10 03:11:40 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:11:47 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:12:01 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:12:09 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:12:23 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:12:28 +0100 <monochrom> I have this wild conjecture that if there is channel traffic, lavaman's connection is stable.
2022-02-10 03:12:30 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:12:45 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:12:53 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:12:54 +0100 <Inst> conjecture disproven
2022-02-10 03:12:57 +0100califax-(~califax@user/califx)
2022-02-10 03:13:07 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:13:11 +0100 <EvanR> coincidentally the colors for lavaman leaving and joining are orange and yellow
2022-02-10 03:13:14 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:13:20 +0100 <EvanR> for me
2022-02-10 03:13:23 +0100 <Inst> ah, a fellow hexchat / xchat user
2022-02-10 03:13:28 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:13:36 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:13:39 +0100k8yun(~k8yun@user/k8yun) (Ping timeout: 256 seconds)
2022-02-10 03:13:50 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:13:57 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:14:06 +0100 <EvanR> someone call liquid nitrogen man
2022-02-10 03:14:11 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:14:16 +0100 <monochrom> haha
2022-02-10 03:14:19 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:14:27 +0100capo_greco(~textual@60-241-161-167.static.tpgi.com.au) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-10 03:14:33 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:14:40 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:14:54 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:15:02 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:15:15 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:15:23 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:15:37 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:15:45 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:16:00 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:16:07 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:16:10 +0100fjmorazan(~quassel@user/fjmorazan) (Quit: fjmorazan)
2022-02-10 03:16:19 +0100 <Inst> tbh i wonder if lava's system is on mobile
2022-02-10 03:16:21 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:16:28 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:16:41 +0100fjmorazan(~quassel@user/fjmorazan)
2022-02-10 03:16:42 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:16:50 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:17:00 +0100 <Axman6> all the glirc gang sees is "lavaman+x"
2022-02-10 03:17:04 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:17:11 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:17:16 +0100 <Axman6> but with more colours
2022-02-10 03:17:25 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:17:31 +0100 <Inst> axman6: you have ops, right?
2022-02-10 03:17:33 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:17:33 +0100califax(~califax@user/califx) (Ping timeout: 276 seconds)
2022-02-10 03:17:34 +0100califax-califax
2022-02-10 03:17:35 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com)
2022-02-10 03:17:48 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:17:48 +0100 <Axman6> I had ops once, for unknown reasons
2022-02-10 03:17:55 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:17:59 +0100 <Inst> well, it doesn't matter, the first thing you'd do is to ban me
2022-02-10 03:18:08 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:18:16 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:18:31 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:18:38 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:18:53 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:19:00 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:19:15 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:19:22 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:19:40 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:19:47 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:20:00 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:20:04 +0100 <Axman6> purpletest
2022-02-10 03:20:06 +0100 <Axman6> hmm
2022-02-10 03:20:08 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:20:15 +0100 <Axman6> @where ops
2022-02-10 03:20:16 +0100 <lambdabot> byorgey Cale conal copumpkin dcoutts dibblego dolio edwardk geekosaur glguy jmcarthur johnw mniip monochrom quicksilver shachaf shapr ski
2022-02-10 03:20:23 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:20:26 +0100 <Axman6> RE: lavaman
2022-02-10 03:20:30 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:20:43 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:20:49 +0100ChanServ+o monochrom
2022-02-10 03:20:51 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:21:05 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 03:21:08 +0100monochrom+b *!*@98.38.249.169
2022-02-10 03:21:12 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 03:21:45 +0100 <Inst> thanks
2022-02-10 03:22:10 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-02-10 03:22:43 +0100jiribenes(~jiribenes@rosa.jiribenes.com) (Remote host closed the connection)
2022-02-10 03:24:15 +0100 <monochrom> Axman6: It is possible that if you say "/msg chanserv op #haskell" you will be op again.
2022-02-10 03:24:43 +0100ryanbooker(uid4340@id-4340.hampstead.irccloud.com)
2022-02-10 03:24:47 +0100 <monochrom> But normally we de-op ourselves when there is nothing.
2022-02-10 03:24:48 +0100 <Axman6> "ChanServ: You are not authorized to perform this operation." and probably rightfully so =)
2022-02-10 03:24:53 +0100monochrom-o monochrom
2022-02-10 03:24:58 +0100 <monochrom> Hrm OK
2022-02-10 03:26:02 +0100desklamp[m](~desklampm@2001:470:69fc:105::77b8)
2022-02-10 03:28:38 +0100ChanServ+o Axman6
2022-02-10 03:29:44 +0100ChanServ+o monochrom
2022-02-10 03:31:11 +0100monochrom-b+b-o *!*@98.38.249.169 *!*@98.38.249.169$##fix-your-connection monochrom
2022-02-10 03:31:20 +0100k8yun(~k8yun@user/k8yun)
2022-02-10 03:32:55 +0100 <Inst> can i troll for 5 minutes?
2022-02-10 03:33:30 +0100 <Inst> what's the difference between an expression-based and a statement-based language?
2022-02-10 03:33:35 +0100 <Inst> and is one more "advanced" than the other?
2022-02-10 03:37:49 +0100 <Inst> i'm going over K&R right now and wondering if anyone ever tried to write a "Haskell: The Programming Language" book
2022-02-10 03:38:37 +0100 <Axman6> Oh my
2022-02-10 03:39:36 +0100 <Axman6> Inst: my very naive understanding is that expressions can freely be substituted, while statements have side effects, so you can't just substitute things willi-nilly
2022-02-10 03:39:55 +0100 <Inst> but an IO action can be an expression
2022-02-10 03:40:00 +0100 <ephemient> expressions in C have side effects too
2022-02-10 03:40:18 +0100 <Inst> and yeah, statement-based languages also have expressions
2022-02-10 03:41:14 +0100 <ephemient> honestly I think it's a pretty pointless distinction: a "statement" can be treated as an "expression" with a unitary type
2022-02-10 03:41:39 +0100 <Axman6> IO actions are pure and can be freely sumstituted - foo (someIO x) (someIO x) will be the same as let y = someIO x in foo y y
2022-02-10 03:41:41 +0100 <ephemient> I mean, not exactly, in C's grammer, but in GCC ({ }) can wrap any statement into an expression, so…
2022-02-10 03:41:56 +0100 <sm> to me "statement" implies an evaluation order (sequential), while "expression" doesn't
2022-02-10 03:42:24 +0100 <Inst> i guess, i was supposed to have a unit where you had a simple hello world + (with getLine) program in do notation
2022-02-10 03:42:32 +0100 <Inst> then unveil it into the underlying binds
2022-02-10 03:42:38 +0100 <Inst> one of the questions asked is: why is this necessary?
2022-02-10 03:42:45 +0100 <Inst> the provision answer I had was that Haskell is an expression-based language
2022-02-10 03:42:52 +0100anon12176673(~anon12176@host-92-19-99-147.as13285.net)
2022-02-10 03:43:03 +0100anon12176673(~anon12176@host-92-19-99-147.as13285.net) (Remote host closed the connection)
2022-02-10 03:43:04 +0100 <ephemient> expressions not having side effects is not the case in other (strict) functional programming languages, you do rely on expression side-effects and can sequence expressions
2022-02-10 03:43:24 +0100 <Inst> the compiler works by evaluating expressions and transforming them into imperative code, as opposed to executing statements
2022-02-10 03:43:35 +0100 <Inst> i hope you're not going to object that this is "not even wrong"
2022-02-10 03:43:50 +0100 <sm> (and yes, "expression" carries more of an expectation of few/no side effects)
2022-02-10 03:43:55 +0100anon12176673(~anon12176@host-92-19-99-147.as13285.net)
2022-02-10 03:44:13 +0100 <Inst> expressions have side effects in special cases
2022-02-10 03:44:13 +0100anon12176673(~anon12176@host-92-19-99-147.as13285.net) (Remote host closed the connection)
2022-02-10 03:44:19 +0100 <Inst> statements have side effects as part of their definition
2022-02-10 03:44:22 +0100 <Inst> is that a correct guess?
2022-02-10 03:44:37 +0100 <ephemient> the SML family is expression-based but uses (a;b;c) to sequence expressions a,b,c
2022-02-10 03:44:44 +0100 <sm> you could have side-effect free statements.
2022-02-10 03:44:52 +0100anon12176673(~anon12176@host-92-19-99-147.as13285.net)
2022-02-10 03:45:11 +0100 <Inst> #define in C as an example?
2022-02-10 03:45:21 +0100 <EvanR> how many expressions could nest on the head of a pin
2022-02-10 03:45:57 +0100 <EvanR> go to the BNF of expression / statement language mobile
2022-02-10 03:46:43 +0100 <ephemient> yeah to me the difference is purely up to the particular language's grammar
2022-02-10 03:47:12 +0100 <ephemient> C permits any expression to be used as a statement; Java does not
2022-02-10 03:47:26 +0100 <EvanR> often you will see the notion of an expression having a value (which may be another expression, possibly in another language), while the value of a statement is usually not a thing. And when it is I think of them also as expressions
2022-02-10 03:47:54 +0100 <EvanR> as in ruby
2022-02-10 03:48:27 +0100 <EvanR> whose statements have values and are basically messed up expressions
2022-02-10 03:48:33 +0100awprhas a piece of paper on his desk containing a "term language" for linear logic, wherein there are statements as distinct from expressions
2022-02-10 03:48:51 +0100desklamp[m](~desklampm@2001:470:69fc:105::77b8) ()
2022-02-10 03:49:58 +0100anon12176673(~anon12176@host-92-19-99-147.as13285.net) (Remote host closed the connection)
2022-02-10 03:49:59 +0100 <sm> to me "statements" means "sequential, likely effectful", and "expressions" means "tree-structured, likely non-effectful"
2022-02-10 03:50:37 +0100anon41255431(~anon41255@host-92-19-99-147.as13285.net)
2022-02-10 03:50:42 +0100 <EvanR> when statements have no value, then naturally... the point is effects xD
2022-02-10 03:50:43 +0100 <awpr> https://homepages.inf.ed.ac.uk/wadler/papers/dual/dual.pdf has the same kind of term/statement setup, but for a more traditional computational model
2022-02-10 03:50:50 +0100anon41255431(~anon41255@host-92-19-99-147.as13285.net) (Remote host closed the connection)
2022-02-10 03:51:10 +0100 <EvanR> when expressions have no effects, the point is valuation
2022-02-10 03:51:39 +0100 <EvanR> i.e. intended semantics
2022-02-10 03:52:16 +0100anon41255431(~anon41255@host-92-19-99-147.as13285.net)
2022-02-10 03:52:31 +0100 <monochrom> when statements have no effects, the point is identity :)
2022-02-10 03:52:57 +0100ChanServ+o litharge
2022-02-10 03:52:58 +0100litharge-bo *!*@98.38.249.169$##fix-your-connection litharge
2022-02-10 03:53:09 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c)
2022-02-10 03:53:14 +0100 <EvanR> State monad plays both sides of the field
2022-02-10 03:53:20 +0100 <EvanR> evalState, execState
2022-02-10 03:54:09 +0100 <EvanR> "values" of type State s a are expressions but also statements
2022-02-10 03:54:21 +0100 <awpr> the dual calculus notion of statements has neither a value nor side effects (but of course it's a very different concept from "statements" in imperative language)
2022-02-10 03:54:38 +0100 <anon41255431> Does anyone know where I can find recursion problems to practice using Haskell?
2022-02-10 03:55:27 +0100 <monochrom> Perhaps "99 haskell problems"
2022-02-10 03:55:33 +0100anon41255431(~anon41255@host-92-19-99-147.as13285.net) (Remote host closed the connection)
2022-02-10 03:55:40 +0100 <Axman6> there's a lot to be learned by implementing as many of the list functions using foldr IMO
2022-02-10 03:55:45 +0100 <monochrom> https://wiki.haskell.org/H-99:_Ninety-Nine_Haskell_Problems
2022-02-10 03:57:01 +0100 <monochrom> Equivalently Haskell doesn't have loops so every problem that exceeds O(1)-time is a recursion problem. :)
2022-02-10 03:57:08 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2022-02-10 03:57:20 +0100anon41255431(~anon41255@host-92-19-99-147.as13285.net)
2022-02-10 03:57:28 +0100anon41255431(~anon41255@host-92-19-99-147.as13285.net) (Remote host closed the connection)
2022-02-10 03:58:19 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-02-10 04:00:27 +0100shailangsa(~shailangs@host217-39-45-199.range217-39.btcentralplus.com)
2022-02-10 04:02:02 +0100xff0x(~xff0x@2001:1a81:5384:400:77b6:98fb:61ba:7d90) (Ping timeout: 240 seconds)
2022-02-10 04:02:23 +0100lottaquestions(~nick@2607:fa49:5041:a200:b92:1a0:165b:5914)
2022-02-10 04:02:59 +0100 <EvanR> so expressions and statements are like link vs ganon. They keep appearing together but how they look depends on which sequel / language it is
2022-02-10 04:03:34 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
2022-02-10 04:03:54 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-02-10 04:04:01 +0100xff0x(~xff0x@2001:1a81:53bc:500:22c0:5bd7:c089:bc66)
2022-02-10 04:06:00 +0100emf_(~emf@2620:10d:c090:400::5:c6d7) (Ping timeout: 250 seconds)
2022-02-10 04:07:06 +0100 <Inst> is this any good?
2022-02-10 04:07:07 +0100 <Inst> https://wiki.haskell.org/99_questions/1_to_10
2022-02-10 04:08:44 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-10 04:12:40 +0100razetime(~quassel@49.207.198.36)
2022-02-10 04:13:26 +0100alMalsam1(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-02-10 04:13:56 +0100little_mac(~little_ma@2601:410:4300:3ce0:89bd:bcbb:df15:8e9a) (Remote host closed the connection)
2022-02-10 04:14:58 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
2022-02-10 04:21:16 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-02-10 04:26:43 +0100mbuf(~Shakthi@110.225.224.158)
2022-02-10 04:29:50 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 256 seconds)
2022-02-10 04:34:27 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-10 04:36:33 +0100capo_greco(~textual@60-241-161-167.static.tpgi.com.au)
2022-02-10 04:37:17 +0100foul_owl(~kerry@94.140.8.52) (Ping timeout: 256 seconds)
2022-02-10 04:39:59 +0100sleblanc(~sleblanc@user/sleblanc) (Quit: Leaving)
2022-02-10 04:40:02 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-10 04:40:02 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-10 04:40:02 +0100wroathe(~wroathe@user/wroathe)
2022-02-10 04:41:28 +0100nebu(~user@user/wavion)
2022-02-10 04:41:48 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2022-02-10 04:42:37 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-10 04:43:02 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-02-10 04:43:16 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com) (Remote host closed the connection)
2022-02-10 04:44:17 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-02-10 04:45:08 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-10 04:45:27 +0100td_(~td@94.134.91.16) (Ping timeout: 256 seconds)
2022-02-10 04:46:25 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 04:47:22 +0100td_(~td@94.134.91.205)
2022-02-10 04:48:51 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com)
2022-02-10 04:52:21 +0100anon12176673(~anon12176@host-92-19-99-147.as13285.net)
2022-02-10 04:53:01 +0100foul_owl(~kerry@94.140.8.25)
2022-02-10 04:57:40 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-02-10 04:59:25 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-02-10 05:00:15 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com) (Remote host closed the connection)
2022-02-10 05:00:16 +0100burnsidesLlama(~burnsides@dhcp168-051.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-10 05:00:16 +0100yauhsien(~yauhsien@61-231-45-223.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
2022-02-10 05:00:45 +0100yauhsien(~yauhsien@61-231-45-223.dynamic-ip.hinet.net)
2022-02-10 05:01:51 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 05:04:58 +0100anon12176673(~anon12176@host-92-19-99-147.as13285.net) (Remote host closed the connection)
2022-02-10 05:05:21 +0100dajoer(~david@user/gvx)
2022-02-10 05:05:21 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-10 05:05:44 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com)
2022-02-10 05:10:37 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
2022-02-10 05:11:36 +0100jinsun(~quassel@user/jinsun)
2022-02-10 05:12:39 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-02-10 05:12:58 +0100Jing(~hedgehog@240e:390:7c53:a7e1:e8ea:b48d:a0c7:7ddc)
2022-02-10 05:13:51 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com) (Remote host closed the connection)
2022-02-10 05:15:15 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com)
2022-02-10 05:15:38 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-10 05:23:12 +0100seer(~delicacie@2601:6c4:4080:3f80:8d94:ce47:541:9d0d)
2022-02-10 05:23:14 +0100seerInst
2022-02-10 05:25:18 +0100 <Inst> https://pastebin.com/4xnKg7N6
2022-02-10 05:25:24 +0100 <Inst> is this worth uploading into hackage?
2022-02-10 05:25:29 +0100 <Inst> obv it needs cabal files
2022-02-10 05:25:31 +0100 <Inst> and haddock
2022-02-10 05:26:24 +0100 <EvanR> and make sure to use the most valuable name you can think of
2022-02-10 05:26:43 +0100 <Inst> that everyone will get pissed off that i'm now squatting their name?
2022-02-10 05:27:46 +0100 <EvanR> probably fine Ed K has probably uploaded anything worth using to the most valuable names already
2022-02-10 05:27:59 +0100 <EvanR> anything else is trash
2022-02-10 05:28:27 +0100 <jackdk> many those operator names are already in use
2022-02-10 05:28:51 +0100 <Inst> https://hoogle.haskell.org/?hoogle=%3D%40&scope=set%3Astackage
2022-02-10 05:28:58 +0100 <Inst> https://hoogle.haskell.org/?hoogle=%3D%40%7C&scope=set%3Astackage
2022-02-10 05:29:10 +0100 <Inst> https://hoogle.haskell.org/?hoogle=%7C%3D%40
2022-02-10 05:29:33 +0100 <Inst> https://hoogle.haskell.org/?hoogle=%40%3D%40
2022-02-10 05:29:43 +0100 <Inst> are those operator names actually in use? :(
2022-02-10 05:30:27 +0100deadmarshal(~deadmarsh@95.38.117.25)
2022-02-10 05:31:40 +0100 <EvanR> you might be interested in the !@$# operator
2022-02-10 05:32:06 +0100 <EvanR> so your code looks like it's cursing
2022-02-10 05:32:27 +0100 <Inst> i'm deadly serious, it seems to be a simple addition that a noob can make to hackage
2022-02-10 05:32:39 +0100 <Axman6> lens loves to take a big chunk out of the operator space, make sure you don't conflict with it because I love lens
2022-02-10 05:33:04 +0100 <Inst> the way I understand Haskell culture is that most Haskellers hate Haskell and instead of being a troll like sandakarwhatever, they just build a lib or language extension
2022-02-10 05:33:20 +0100 <Inst> which is still trolling, because they're contributing to the problem of making Haskell unteachable / unlearnable
2022-02-10 05:33:27 +0100 <EvanR> > let (∈) = elem in 'o' ∈ "hello world"
2022-02-10 05:33:28 +0100 <lambdabot> True
2022-02-10 05:33:34 +0100 <EvanR> use this
2022-02-10 05:34:02 +0100 <EvanR> actually, just use `elem`
2022-02-10 05:34:22 +0100 <EvanR> (:∈ might be good to use for advance type level shenanigans)
2022-02-10 05:34:46 +0100 <Inst> i'm too lazy to type `elem`
2022-02-10 05:35:00 +0100 <EvanR> well, code is read much more often than it is written
2022-02-10 05:35:07 +0100 <EvanR> keep that in mind
2022-02-10 05:35:41 +0100 <Inst> oh well, i'll clean it up, learn cabal, and see if Hackage will let me upload 0.1 of OrPat.ElemOrPatternsOperators
2022-02-10 05:35:58 +0100cheater(~Username@user/cheater)
2022-02-10 05:36:13 +0100 <monochrom> How is elem unteachable or unlearnable. This is BS.
2022-02-10 05:36:35 +0100 <Inst> elem isn't
2022-02-10 05:36:50 +0100 <EvanR> more useful to me as a pattern-ish thing than elem would be a pattern of the form
2022-02-10 05:37:13 +0100 <EvanR> prev ++ MyNeedle ++ rest
2022-02-10 05:37:14 +0100 <Inst> if people like it, maybe it could one day get added to data.foldables
2022-02-10 05:37:22 +0100 <EvanR> then you can also manipulate the prev and rest
2022-02-10 05:37:43 +0100 <Inst> *foldable
2022-02-10 05:37:44 +0100 <EvanR> (if prev is backwards, you have a zipper)
2022-02-10 05:38:06 +0100 <dsal> Please don't take inspiration from npm.
2022-02-10 05:38:41 +0100 <EvanR> yeah single line definitions of elem aren't the sort of thing people install packages for
2022-02-10 05:38:50 +0100 <EvanR> it's easier to just type that line
2022-02-10 05:41:33 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
2022-02-10 05:42:52 +0100skidoesn't really see what the point of the operations in the paste are
2022-02-10 05:43:41 +0100 <Inst> hopefully, get someone to stuff it into foldable eventually
2022-02-10 05:43:49 +0100 <Inst> so the next time someone asks about or patterns
2022-02-10 05:43:49 +0100 <ski> (the last operation is an overlap / non-disjointness check. it might perhaps be useful to give a name. but i'd probably not pick an infix operator for it, just an alphanumeric name)
2022-02-10 05:43:56 +0100 <dsal> elem is already in Foldable
2022-02-10 05:44:01 +0100 <Inst> i know
2022-02-10 05:44:14 +0100 <ski> the paste doesn't seem to have anything to do with disjunctive patterns
2022-02-10 05:44:38 +0100 <ski> (btw, that call to `foldr' could be replaced by an `any')
2022-02-10 05:44:41 +0100ryanbooker(uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-02-10 05:44:49 +0100 <Inst> but map has <$> attached to it, even if <$> is the exact same length as map
2022-02-10 05:44:59 +0100 <ski> you mean `fmap'
2022-02-10 05:45:32 +0100 <Axman6> <$> exists mostly for use with Applicative code
2022-02-10 05:45:39 +0100 <ski> ^
2022-02-10 05:45:40 +0100 <dsal> Just about every Haskell program uses fmap, typically infix.
2022-02-10 05:45:50 +0100skioften uses `fmap', infix
2022-02-10 05:45:58 +0100 <ski> foo `fmap` bar
2022-02-10 05:46:19 +0100 <monochrom> fmap is used much more often than elem, and <$> was chosen because there is a good analogy with existing $
2022-02-10 05:46:26 +0100 <Axman6> I have literally never done that... I just pretend that <$> is liftA1 and Functors are really Applicatives
2022-02-10 05:46:53 +0100 <ski> i guess it's a habit since before the invention of `Applicative'
2022-02-10 05:47:21 +0100 <Inst> i'm sorry for trolling
2022-02-10 05:47:41 +0100 <monochrom> And yeah eventually an infix operator was desired because fmap was much nicer being used infix in those contexts.
2022-02-10 05:48:06 +0100 <ski> you weren't trolling, that i could see, but merely attempting to get to grips with what's a worthwhile thing to add as a community contribution
2022-02-10 05:48:14 +0100 <dsal> The neat thing about `elem` as a section infix is it works both ways.
2022-02-10 05:48:21 +0100 <Inst> i actually import Data.Bool most of the time to get access to bool
2022-02-10 05:48:39 +0100 <Axman6> catamorph ALL THE THINGS!
2022-02-10 05:48:56 +0100 <EvanR> it's catamorphin' time.
2022-02-10 05:51:17 +0100 <dsal> Is that the 80s cartoon where the cat people turned into a giant robot?
2022-02-10 05:53:19 +0100 <Inst> https://en.wikipedia.org/wiki/Catamorphism
2022-02-10 05:53:53 +0100 <Inst> I think that was swat kats or something
2022-02-10 05:54:56 +0100 <Inst> my specific use case is that whenever i'm programming in some other language
2022-02-10 05:55:28 +0100 <Inst> i get pissed off that i have to type a == x || a == y || ...
2022-02-10 05:56:10 +0100 <Inst> i mean, multiple assignments have been here since c, why do i have to do explicit or and retyping?
2022-02-10 05:56:12 +0100 <Axman6> Maybe python's for you
2022-02-10 05:56:23 +0100 <EvanR> DRY
2022-02-10 05:56:51 +0100 <Axman6> so dry
2022-02-10 05:57:02 +0100 <EvanR> your code should look like compression output
2022-02-10 05:57:08 +0100 <monochrom> APL
2022-02-10 05:57:09 +0100 <ski> a `elem` [x,y,...] -- what's wrong with this ?
2022-02-10 05:57:21 +0100 <c_wraith> what does multiple assignments have to do with multiple equality tests?
2022-02-10 05:57:24 +0100 <Inst> it doesn't explicitly indicate the intent
2022-02-10 05:57:37 +0100 <ski> (and what does this have to do with "multiple assignments", whatever you mean by that here ?)
2022-02-10 05:57:38 +0100 <Axman6> % (=@|) :: (Foldable t, Eq a) => a -> t a -> Bool; (=@|) = elem; 1 =@ (1,2,3)
2022-02-10 05:57:38 +0100 <yahb> Axman6: ; <interactive>:13:66: error:; * Variable not in scope: (=@) :: t0 -> (a0, b0, c0) -> DecsQ; * Perhaps you meant one of these: `==' (imported from Prelude), `<@' (imported from Control.Comonad.Store), `=@|' (line 13)
2022-02-10 05:57:48 +0100 <Axman6> % (=@|) :: (Foldable t, Eq a) => a -> t a -> Bool; (=@|) = elem; 1 =@| (1,2,3)
2022-02-10 05:57:48 +0100 <yahb> Axman6: ; <interactive>:14:66: error:; GHC stage restriction:; `=@|' is used in a top-level splice, quasi-quote, or annotation,; and must be imported, not defined locally
2022-02-10 05:57:52 +0100 <EvanR> what's the intent?
2022-02-10 05:57:56 +0100 <Axman6> % (=@|) :: (Foldable t, Eq a) => a -> t a -> Bool; (=@|) = elem;
2022-02-10 05:57:57 +0100 <yahb> Axman6:
2022-02-10 05:58:06 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds)
2022-02-10 05:58:07 +0100 <Axman6> % 1 =@| (1,2,3)
2022-02-10 05:58:07 +0100 <yahb> Axman6: ; <interactive>:16:3: error:; * No instance for (Foldable ((,,) Integer Integer)) arising from a use of `=@|'; * In the expression: 1 =@| (1, 2, 3); In an equation for `it': it = 1 =@| (1, 2, 3)
2022-02-10 05:58:28 +0100 <dsal> % 1 =@| (1,2)
2022-02-10 05:58:28 +0100 <yahb> dsal: False
2022-02-10 05:58:31 +0100 <Axman6> Do we only have Foldable for (,)???
2022-02-10 05:58:32 +0100 <Inst> % (=@|) = elem
2022-02-10 05:58:32 +0100 <yahb> Inst:
2022-02-10 05:58:40 +0100 <dsal> @Axman6 Yeah, it's generally confusing.
2022-02-10 05:58:40 +0100 <lambdabot> Unknown command, try @list
2022-02-10 05:58:50 +0100 <dsal> damnit. You're showing up as an @ so I noobed.
2022-02-10 05:58:57 +0100 <Inst> 2 =@| [2,3,4]
2022-02-10 05:59:02 +0100 <Inst> % 2 =@| [2,3,4]
2022-02-10 05:59:02 +0100 <yahb> Inst: True
2022-02-10 05:59:03 +0100 <EvanR> clearly only (a,a,a) is foldable
2022-02-10 05:59:04 +0100 <Axman6> such a noob
2022-02-10 05:59:07 +0100 <ski> how does it not explicitly indicate the intent (and if it doesn't, how does `=@|' fare any better, on that front) ?
2022-02-10 06:00:03 +0100 <Inst> % 2 =@| [1,3,4]
2022-02-10 06:00:03 +0100 <yahb> Inst: False
2022-02-10 06:00:14 +0100 <Inst> % :r
2022-02-10 06:00:14 +0100 <yahb> Inst: Ok, no modules loaded.
2022-02-10 06:01:11 +0100 <Inst> checking that a is an element of list is not obviously equivalent to wanting to do multiple equivalence checks under or conditions
2022-02-10 06:01:55 +0100 <Inst> when i asked first whether Haskell had or patterns
2022-02-10 06:02:03 +0100 <Inst> it took a bit of time before someone offered the obvious elem solution
2022-02-10 06:02:19 +0100 <c_wraith> they do different things
2022-02-10 06:02:23 +0100 <dsal> Just about anyone who sees "x `elem` ys" will know what it means. Nobody who sees "x =@| ys" will have any idea what the code is doing.
2022-02-10 06:02:24 +0100 <c_wraith> patterns can bind values
2022-02-10 06:02:26 +0100 <EvanR> in this case, the fact that it's easier to read AND write an `elem` makes it a no brainer
2022-02-10 06:02:28 +0100 <monochrom> I'm not surprised.
2022-02-10 06:02:43 +0100 <EvanR> moving on
2022-02-10 06:02:56 +0100 <monochrom> Someone in a math channel asked "how to solve equations".
2022-02-10 06:03:14 +0100 <ski> EvanR : i guess the problem with `prev ++ MyNeedle ++ rest' is that it's ambiguous, unless at least one of `prev' and `rest' are already bound
2022-02-10 06:03:17 +0100 <dsal> "hello, I just heard of math"
2022-02-10 06:03:30 +0100 <monochrom> It took a long time for the audience to find out they just meant linear equations in one variable, like "3x - 5 = 7".
2022-02-10 06:03:34 +0100 <EvanR> yeah I didn't think it would literally work
2022-02-10 06:03:38 +0100 <ski> (oh, and itym s/MyNeedle/[MyNeedle]/)
2022-02-10 06:03:54 +0100 <Inst> so, um, is bool a bad idea?
2022-02-10 06:03:54 +0100 <EvanR> that too...
2022-02-10 06:04:21 +0100 <dsal> bool isn't 100% a bad idea, but it rarely makes things clearer.
2022-02-10 06:04:32 +0100 <Inst> i mean everyone in this channel knows what bool, the function, not the type, is, right?
2022-02-10 06:04:47 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-02-10 06:04:52 +0100 <dsal> Yeah, you mentioned using `bool` earlier.
2022-02-10 06:04:53 +0100 <EvanR> I use if then else
2022-02-10 06:04:58 +0100 <ski> if there's a reasonable pattern-matching solution, then that's probably better than using a `Bool'ean condition
2022-02-10 06:04:58 +0100 <dsal> Though `Bool` is also a bad idea a lot of the time.
2022-02-10 06:05:02 +0100 <EvanR> or pattern matching
2022-02-10 06:05:18 +0100 <monochrom> bool is a good idea that turns out to not matter.
2022-02-10 06:06:07 +0100 <monochrom> Maybe a Scheme person would use bool to write foldr but we have something even better.
2022-02-10 06:06:48 +0100 <Inst> just, if there's a simple split, i don't see the point of using case of
2022-02-10 06:07:13 +0100 <monochrom> And then even when boolean tests are important, we have guards.
2022-02-10 06:07:30 +0100 <Inst> iirc guards can't be freely deployed, right?
2022-02-10 06:07:36 +0100 <Inst> only in case expressions and function definitions
2022-02-10 06:07:44 +0100 <Inst> they're syntax, not functions
2022-02-10 06:08:32 +0100 <dsal> This is an abstract concern. You should use the thing that's best in the situation.
2022-02-10 06:08:44 +0100 <Inst> let x | condition 1 = y; x | condition 2 = z in
2022-02-10 06:08:48 +0100 <dsal> `bool` is *sometimes* the best, but pretty rarely so.
2022-02-10 06:08:53 +0100modnar(~modnar@shell.sonic.net) (Quit: No Ping reply in 180 seconds.)
2022-02-10 06:09:59 +0100 <Inst> bleh, sorry for trolling you with my shit
2022-02-10 06:10:39 +0100 <ski> Inst : guards attach to pattern-matching, yes
2022-02-10 06:10:39 +0100modnar(~modnar@shell.sonic.net)
2022-02-10 06:11:22 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 06:12:41 +0100 <EvanR> the mystic barrier imprisoning lavaman for minuteslennia is weakening
2022-02-10 06:12:55 +0100 <Inst> lavaman, did you fix your connection yet?
2022-02-10 06:13:51 +0100 <Inst> basically, on FP discord, someone told me: "never use if then else, use case of"
2022-02-10 06:14:06 +0100 <Inst> i responded: if then else is simple in cases where if then else makes sense
2022-02-10 06:14:13 +0100 <Inst> is applicable, i mean
2022-02-10 06:14:17 +0100 <Inst> then someone told me to use bool instead
2022-02-10 06:14:19 +0100 <dolio> That advice doesn't make much sense.
2022-02-10 06:15:22 +0100 <monochrom> Not sure whether I should say "this is why I don't read FP discord" or "data shows that people misinterpret statements".
2022-02-10 06:15:58 +0100 <c_wraith> I don't like if/then/else except for one-liners. But that's not the same as "don't use it".
2022-02-10 06:16:07 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-10 06:16:32 +0100 <dolio> Pretty much all "never use X" advice isn't any good.
2022-02-10 06:17:19 +0100 <ski> "never use \"never use X\" advice" ?
2022-02-10 06:17:52 +0100 <EvanR> "remember that giant red button I told you to never use?"
2022-02-10 06:18:25 +0100 <ephemient> https://gitlab.haskell.org/ghc/ghc/-/issues/19477 says that ifThenElse becomes unusable with {-# LANGUAGE LinearTypes, RebindableSyntax #-}, in which case you can only use case ... of { True -> ...; False -> ... } but I imagine that shouldn't affect *that* many people at the moment
2022-02-10 06:18:29 +0100 <monochrom> I never shave people who never shave themselves.
2022-02-10 06:19:54 +0100 <ski> "never use ..." can be problematic, if you're not properly told *why* whatever thing that is mentioned is considered to be better left avoided
2022-02-10 06:20:13 +0100 <Inst> because case of is more powerful, using pattern matching
2022-02-10 06:20:38 +0100 <ski> using a more general version that covers something, isn't always a good idea
2022-02-10 06:20:40 +0100 <monochrom> For Bool there is no power to speak of, really.
2022-02-10 06:20:52 +0100 <monochrom> For Maybe a, [a], etc., now we're talking.
2022-02-10 06:20:54 +0100 <dolio> It's not more powerful to do case analysis on a boolean, though. So in that scenario it's just senseless adherence to dogma.
2022-02-10 06:21:15 +0100 <Inst> on the other hand, you can profitable jettison if then else from the language
2022-02-10 06:21:22 +0100 <Inst> since it desugars to case of anyways
2022-02-10 06:21:37 +0100 <Inst> case boolean of; True -> k; _ -> l
2022-02-10 06:21:55 +0100 <EvanR> even lisp has syntactic sugar
2022-02-10 06:22:02 +0100 <EvanR> everyone loves syntactic sugar
2022-02-10 06:22:31 +0100 <monochrom> I like desugared grape juice more than I like grape juice. :)
2022-02-10 06:22:33 +0100 <Inst> i mean, there's like, 5 different ways to do a conditional in the base language
2022-02-10 06:22:40 +0100 <dolio> So?
2022-02-10 06:22:42 +0100 <Inst> and 8-10 different ways once you consider extensions and libs?
2022-02-10 06:22:46 +0100skitends to prefer to err on the side of explaining why something should (generally) be avoided, but then, often, go on to give them the rope with which they could hang themselves with
2022-02-10 06:22:58 +0100 <ski> the point is to be able to make an informed decision
2022-02-10 06:23:20 +0100 <dolio> Having lots of ways to do something isn't automatically a bad thing.
2022-02-10 06:23:53 +0100 <EvanR> esp at the level if then else... who cares
2022-02-10 06:24:06 +0100 <EvanR> the stakes are at an all time low
2022-02-10 06:24:20 +0100 <Inst> dolio: the challenge is that it makes the language harder to learn
2022-02-10 06:24:28 +0100 <Inst> and the variety of styles in Haskell makes it harder to read
2022-02-10 06:24:33 +0100 <Inst> like, I still can't read lib code
2022-02-10 06:24:39 +0100 <EvanR> even pattern matching () is more interesting thanks to laziness or strictness issues
2022-02-10 06:24:44 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-02-10 06:25:21 +0100 <ski> some additional ways to do things (like the paste above), doesn't really add anything meaningful
2022-02-10 06:25:26 +0100 <ski> others do
2022-02-10 06:26:12 +0100 <Inst> bool compared to if then else at least is a function that can be partially applied
2022-02-10 06:26:13 +0100 <ski> i guess it's a matter of discernment to be able to tell which is which
2022-02-10 06:26:34 +0100 <Inst> the paste above is more (hey guys, guess what? You get to save 3 keystrokes on elem)
2022-02-10 06:26:35 +0100 <dolio> That is essentially the only reason to use bool.
2022-02-10 06:26:47 +0100 <ski> yes. but being able to partially apply isn't always something that's useful, in a given context
2022-02-10 06:27:23 +0100 <Inst> bool = 4-10 keystrokes, if then else is also 10 keystrokes
2022-02-10 06:27:27 +0100modnar(~modnar@shell.sonic.net) (Quit: No Ping reply in 180 seconds.)
2022-02-10 06:27:38 +0100 <Inst> drawback: bool code is hard to read
2022-02-10 06:27:40 +0100 <EvanR> the number of saved keystrokes involved, added up over time, likely doesn't rival this discussion
2022-02-10 06:27:43 +0100 <ski> "save 3 keystrokes" is about (a very low-level of) efficiency of writing. generally it's more useful to worry about efficiency of reading
2022-02-10 06:27:45 +0100 <dolio> I wasn't counting bad reasons.
2022-02-10 06:28:12 +0100 <monochrom> https://learnyouahaskell.github.io/
2022-02-10 06:29:02 +0100 <monochrom> Some kind of "LYAH is dead. Long live LYAH, this time literally"
2022-02-10 06:29:17 +0100modnar(~modnar@shell.sonic.net)
2022-02-10 06:29:42 +0100 <Inst> pretty good
2022-02-10 06:30:03 +0100 <Inst> since i hate haskellbook, maybe people can actually fix lyah
2022-02-10 06:33:01 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com) (Ping timeout: 240 seconds)
2022-02-10 06:40:32 +0100 <neverwas> Gee, I hope they manage to preserve the style of the prose
2022-02-10 06:40:42 +0100 <neverwas> or even just go with annotations or something if it's not too jarring/distracting
2022-02-10 06:40:48 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-10 06:40:48 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-10 06:40:48 +0100wroathe(~wroathe@user/wroathe)
2022-02-10 06:41:03 +0100lechner(~lechner@debian/lechner) (Ping timeout: 256 seconds)
2022-02-10 06:43:20 +0100lechner(~lechner@debian/lechner)
2022-02-10 06:44:12 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-10 06:45:35 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-10 06:55:59 +0100k8yun_(~k8yun@user/k8yun)
2022-02-10 06:59:45 +0100k8yun(~k8yun@user/k8yun) (Ping timeout: 256 seconds)
2022-02-10 07:02:00 +0100meer(~delicacie@2601:6c4:4080:3f80:5c6a:e4b3:e4cd:1bc3)
2022-02-10 07:04:17 +0100lechner(~lechner@debian/lechner) (Ping timeout: 240 seconds)
2022-02-10 07:04:37 +0100Inst(~delicacie@2601:6c4:4080:3f80:8d94:ce47:541:9d0d) (Ping timeout: 240 seconds)
2022-02-10 07:06:35 +0100meerInst
2022-02-10 07:07:27 +0100Jing(~hedgehog@240e:390:7c53:a7e1:e8ea:b48d:a0c7:7ddc) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-10 07:11:28 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-02-10 07:12:54 +0100capo_greco(~textual@60-241-161-167.static.tpgi.com.au) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-10 07:13:21 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-10 07:14:08 +0100cigsende1(~cigsender@50-240-234-101-static.hfc.comcastbusiness.net)
2022-02-10 07:15:17 +0100haskell_(~haskell@65-102-32-32.ptld.qwest.net)
2022-02-10 07:15:37 +0100haskell_(~haskell@65-102-32-32.ptld.qwest.net) (Remote host closed the connection)
2022-02-10 07:16:46 +0100cigsende1(~cigsender@50-240-234-101-static.hfc.comcastbusiness.net) (Read error: Connection reset by peer)
2022-02-10 07:17:38 +0100cigsender(~cigsender@74.124.58.162) (Read error: Connection reset by peer)
2022-02-10 07:18:10 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2022-02-10 07:19:07 +0100cigsender(~cigsender@74.124.58.162)
2022-02-10 07:21:28 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-02-10 07:24:15 +0100`2jt(~jtomas@130.red-88-22-46.staticip.rima-tde.net)
2022-02-10 07:24:53 +0100_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-02-10 07:32:18 +0100drdo(~drdo@roach0.drdo.eu) (Quit: Ping timeout (120 seconds))
2022-02-10 07:33:24 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-02-10 07:33:38 +0100drdo(~drdo@roach0.drdo.eu)
2022-02-10 07:35:01 +0100nebu(~user@user/wavion) (Ping timeout: 240 seconds)
2022-02-10 07:35:36 +0100capo_greco(~textual@60-241-161-167.static.tpgi.com.au)
2022-02-10 07:37:05 +0100ardell(~ardell@user/ardell)
2022-02-10 07:40:33 +0100cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2022-02-10 07:45:12 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-02-10 07:47:14 +0100cheater(~Username@user/cheater)
2022-02-10 07:54:32 +0100 <EvanR> wait, LYAH was lost and is being reconstructed from scratch?
2022-02-10 07:54:57 +0100 <Inst> the site went down for a couple of days
2022-02-10 07:56:28 +0100f-a(f2a@f2a.jujube.ircnow.org) ()
2022-02-10 07:57:01 +0100`2jt(~jtomas@130.red-88-22-46.staticip.rima-tde.net) (Ping timeout: 240 seconds)
2022-02-10 07:58:17 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-02-10 07:59:37 +0100foul_owl(~kerry@94.140.8.25) (Ping timeout: 240 seconds)
2022-02-10 08:00:56 +0100lechner(~lechner@debian/lechner)
2022-02-10 08:02:45 +0100capo_greco(~textual@60-241-161-167.static.tpgi.com.au) (Quit: Textual IRC Client: www.textualapp.com)
2022-02-10 08:03:32 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds)
2022-02-10 08:03:47 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-02-10 08:05:17 +0100wei2912(~wei2912@138.75.71.147)
2022-02-10 08:08:23 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2022-02-10 08:11:08 +0100thevishy(~Nishant@2405:201:f005:c007:6cf1:7245:a05f:ea21)
2022-02-10 08:14:10 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-02-10 08:15:06 +0100foul_owl(~kerry@71.212.148.11)
2022-02-10 08:17:52 +0100jakalx(~jakalx@base.jakalx.net)
2022-02-10 08:26:08 +0100michalz(~michalz@185.246.204.87)
2022-02-10 08:26:27 +0100shriekingnoise(~shrieking@201.231.16.156) (Quit: Quit)
2022-02-10 08:28:03 +0100cigsende1(~cigsender@50-240-234-101-static.hfc.comcastbusiness.net)
2022-02-10 08:28:16 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:f0ed:5941:868e:9ada)
2022-02-10 08:29:22 +0100zer0bitz(~zer0bitz@2001:2003:f74d:b800:a89e:b347:cccb:c7e5) (Read error: Connection reset by peer)
2022-02-10 08:29:28 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-02-10 08:29:39 +0100zer0bitz(~zer0bitz@2001:2003:f74d:b800:3c9b:6dce:e374:3130)
2022-02-10 08:31:17 +0100cigsender(~cigsender@74.124.58.162) (Ping timeout: 240 seconds)
2022-02-10 08:31:17 +0100cigsende1(~cigsender@50-240-234-101-static.hfc.comcastbusiness.net) (Read error: Connection reset by peer)
2022-02-10 08:33:03 +0100cigsender(~cigsender@74.124.58.162)
2022-02-10 08:35:43 +0100mc47(~mc47@xmonad/TheMC47)
2022-02-10 08:38:15 +0100 <Inst> this f- bi-
2022-02-10 08:38:44 +0100k8yun_(~k8yun@user/k8yun) (Quit: Leaving)
2022-02-10 08:38:51 +0100 <Inst> she took a business chinese class that's like oriented at B2-C1 learners, or is intended for students with around 1000 hours of instructions under her belt
2022-02-10 08:38:59 +0100 <Inst> so now i have to try to bail her out
2022-02-10 08:40:24 +0100 <sshine> Inst, 你是中国老师吗?
2022-02-10 08:40:50 +0100 <sshine> s/中国/汉语/
2022-02-10 08:41:21 +0100 <Inst> 不是,问题就是我们可以算是对象,然后虽然我汉语水平不太高,我的看能不能救他。
2022-02-10 08:43:22 +0100VanceIsM7[m](~vanceism7@2001:470:69fc:105::3ad)
2022-02-10 08:43:34 +0100 <Inst> 按照汉办的方式来算,我的水平基本上是五到六级,课本是五到六级,但是她的水平想二到三级差不多
2022-02-10 08:44:44 +0100gehmehgeh(~user@user/gehmehgeh)
2022-02-10 08:45:23 +0100max22-(~maxime@2a01cb0883359800593582f16039b0e0.ipv6.abo.wanadoo.fr)
2022-02-10 08:47:19 +0100 <sshine> Inst, 也许你可以把她的课换成别的课。
2022-02-10 08:47:53 +0100 <Inst[m]> 我已经告诉他了
2022-02-10 08:48:09 +0100 <Inst[m]> 她就回答,她太疯了。
2022-02-10 08:48:15 +0100capo_greco(~textual@60-241-161-167.static.tpgi.com.au)
2022-02-10 08:48:17 +0100lechner(~lechner@debian/lechner) (Ping timeout: 240 seconds)
2022-02-10 08:49:26 +0100 <dminuoso> Inst: So what about this example https://gist.github.com/dminuoso/abdea620d60a501d89347b7586b06646#file-f-hs-L12-L14
2022-02-10 08:49:27 +0100 <Inst[m]> 已经太晚了。也许是我的错误,我没有仔细分析那本课本儿,因该早点告诉她退出来。
2022-02-10 08:49:41 +0100 <dminuoso> Is this a "poor usage of if-then-else"? Is there some other, more sensible, approach?
2022-02-10 08:49:58 +0100 <Inst> i mean if you're talking about intelligibility
2022-02-10 08:50:03 +0100 <Inst> i like if then else, tbh
2022-02-10 08:50:10 +0100 <Inst> i guess i'm recognizing its advantages
2022-02-10 08:50:24 +0100 <dminuoso> No concretely, imagine what you would have to do to make it go away here
2022-02-10 08:50:29 +0100 <dminuoso> We can offload this into a helper function, sure.
2022-02-10 08:50:54 +0100 <Inst> or you could just use bool
2022-02-10 08:51:00 +0100 <Inst> and sacrifice readability
2022-02-10 08:51:10 +0100 <Inst> since people generally don't know what the hell bool is, and you'd have to import it
2022-02-10 08:51:24 +0100 <Inst> could also just do case of
2022-02-10 08:51:34 +0100 <dminuoso> `hashPolicy :: Set IfTag -> HashPolicy` and carve that out. But there comes a point at which you might wonder what the point of that is.
2022-02-10 08:51:45 +0100 <Inst> true -> BalanceXor
2022-02-10 08:51:49 +0100fef(~thedawn@user/thedawn)
2022-02-10 08:51:52 +0100 <Inst> _ -> HpLayer34
2022-02-10 08:52:05 +0100 <Inst> that's the style the guy on FP discord wanted me to use, or at least personally preferred
2022-02-10 08:52:10 +0100 <Inst> would have been comparably readable to ifthenelse
2022-02-10 08:52:15 +0100Akiva(~Akiva@user/Akiva)
2022-02-10 08:52:33 +0100capo_greco(~textual@60-241-161-167.static.tpgi.com.au) (Client Quit)
2022-02-10 08:52:49 +0100 <dminuoso> Im not sure I see any real advantage - arguably it creates more noise.
2022-02-10 08:53:16 +0100 <dminuoso> The only idiomatic way to make if-then-else go away is by writing the above `hashPolicy` helper function
2022-02-10 08:53:44 +0100 <Inst> i mean i was guessing the FP discorders know what they were doing
2022-02-10 08:54:06 +0100 <Inst> in my view, very few people actually "know" haskell, but a lot of people know a little bit of it, or even a lot
2022-02-10 08:55:17 +0100 <dminuoso> We all have our views on how to write software in a given language. In recent years, when blogging has become ubiquitous, everybody is suddenly an expert, and advice often comes in the form of "never <...>" or "always <...>"
2022-02-10 08:55:30 +0100 <Inst> xyz considered harmful
2022-02-10 08:55:44 +0100 <dminuoso> That's quite the clickbait I learned to avoid.
2022-02-10 08:55:44 +0100 <Inst> with haskell, simply because there's so many ways to express an idea, i'm surprised there's no hard style guides here
2022-02-10 08:56:40 +0100cosimone(~user@93-47-228-191.ip115.fastwebnet.it)
2022-02-10 08:57:15 +0100 <EvanR> proof by FP discord
2022-02-10 08:57:18 +0100 <EvanR> QED
2022-02-10 08:57:25 +0100 <EvanR> #haskell is chopped liver
2022-02-10 08:59:13 +0100 <sshine> Inst, Haskell being the hotpot of lazy FP, 'no hard style guides' goes hand in hand with many other expressions of diversity that make practical use difficult.
2022-02-10 08:59:37 +0100 <Inst> btw, are there any good guides to writing software design docs?
2022-02-10 08:59:48 +0100 <EvanR> we have many hard style guides in case you are serious
2022-02-10 08:59:55 +0100 <EvanR> they are so hard I ignore them
2022-02-10 09:00:01 +0100 <dminuoso> So I find that guides on "how to do something well" more often than not fall really short.
2022-02-10 09:00:07 +0100 <sshine> Inst, I know of ADRs: https://adr.github.io/
2022-02-10 09:00:31 +0100 <dminuoso> I think they arise from the false premise that you just have to follow some rigid guidelines, and then your product becomes good.
2022-02-10 09:01:10 +0100 <sshine> Inst, I like them because I can confine the fluff into an RFC-like Markdown and commit it to version control; kinda raises the bar for who should be doing architecture decisions.
2022-02-10 09:01:12 +0100 <dminuoso> Software style is a way of communicating with not just the compiler but with other developers, so understanding that communication process is the key to knowing "do I express this with XYZ or some other way"
2022-02-10 09:01:24 +0100 <dminuoso> And that's ultimately why code formatting tools fall so incredibly short
2022-02-10 09:01:36 +0100 <dminuoso> They dont know at all what the author is trying to convey
2022-02-10 09:02:21 +0100 <dminuoso> Or linters even
2022-02-10 09:03:07 +0100 <EvanR> guides are more valuable if you can just churn them out and charge admission (or get ad revenue)
2022-02-10 09:03:10 +0100 <sshine> Inst, but I haven't tried to design software with intelligent colleagues, so I don't know of their practical value. the architect behind what I'm making now is so mathy only one guy gets 80% of it at the moment. no reason to document it yet.
2022-02-10 09:03:13 +0100 <ski> hlint commonly gives advice that can be questioned
2022-02-10 09:03:26 +0100 <sshine> s/architect/architecture/
2022-02-10 09:03:44 +0100 <sshine> ski, hlint advice can be modified, so you could argue it's a defaults thing. :)
2022-02-10 09:03:50 +0100 <EvanR> see how prima strategy guides are gone? way too difficult to produce
2022-02-10 09:04:04 +0100 <EvanR> now we have a 9000 page ad-filled web page
2022-02-10 09:04:15 +0100 <EvanR> (with barely any info)
2022-02-10 09:04:53 +0100 <EvanR> also many programming blogs are from companies that require you to write a blog at any cost
2022-02-10 09:05:34 +0100 <sshine> Inst, thanks for the Discord link, that's an immensely valuable resource.
2022-02-10 09:06:10 +0100cfricke(~cfricke@user/cfricke)
2022-02-10 09:08:29 +0100 <sshine> Inst, case <bool> of ... seems kinda not useful. generally pattern matching makes a lot of sense because it's more extensible. but there isn't going to be a third option to Bool any time soon. :P
2022-02-10 09:08:30 +0100mikoto-chan(~mikoto-ch@84.199.144.235)
2022-02-10 09:09:43 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-10 09:09:59 +0100 <EvanR> it ensures you get all the cases
2022-02-10 09:10:20 +0100 <EvanR> i.e. if then else
2022-02-10 09:11:59 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-10 09:14:08 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5)
2022-02-10 09:17:43 +0100alp(~alp@user/alp)
2022-02-10 09:19:06 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com)
2022-02-10 09:20:26 +0100drdo(~drdo@roach0.drdo.eu) (Quit: Ping timeout (120 seconds))
2022-02-10 09:24:21 +0100drdo(~drdo@roach0.drdo.eu)
2022-02-10 09:26:26 +0100cosimone(~user@93-47-228-191.ip115.fastwebnet.it) (Read error: Connection reset by peer)
2022-02-10 09:29:18 +0100chele(~chele@user/chele)
2022-02-10 09:31:00 +0100comerijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-10 09:31:18 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2022-02-10 09:33:34 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-10 09:33:36 +0100Ariakenom(~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se)
2022-02-10 09:36:27 +0100sektor|2(~kvirc@87.227.175.182)
2022-02-10 09:38:23 +0100`2jt(~jtomas@130.red-88-22-46.staticip.rima-tde.net)
2022-02-10 09:38:43 +0100hololeap(~hololeap@user/hololeap)
2022-02-10 09:41:05 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2022-02-10 09:42:27 +0100cosimone(~user@93-47-228-191.ip115.fastwebnet.it)
2022-02-10 09:44:05 +0100comerijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-10 09:49:00 +0100machinedgod(~machinedg@24.105.81.50)
2022-02-10 09:49:12 +0100wrengr(~wrengr@99.34.197.35.bc.googleusercontent.com) (Remote host closed the connection)
2022-02-10 09:51:01 +0100cfricke(~cfricke@user/cfricke)
2022-02-10 09:55:50 +0100Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Remote host closed the connection)
2022-02-10 09:56:34 +0100xff0x(~xff0x@2001:1a81:53bc:500:22c0:5bd7:c089:bc66) (Ping timeout: 250 seconds)
2022-02-10 09:57:13 +0100ubert(~Thunderbi@p200300ecdf0994184cc217ea87d4c264.dip0.t-ipconnect.de)
2022-02-10 09:57:18 +0100Cale(~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com)
2022-02-10 09:57:44 +0100xff0x(~xff0x@2001:1a81:53bc:500:bc1a:eecf:3ef6:1dbe)
2022-02-10 09:59:16 +0100MajorBiscuit(~MajorBisc@wlan-145-94-218-48.wlan.tudelft.nl)
2022-02-10 10:00:26 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-10 10:11:25 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-10 10:11:25 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-10 10:11:25 +0100wroathe(~wroathe@user/wroathe)
2022-02-10 10:12:45 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 10:13:15 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) (Remote host closed the connection)
2022-02-10 10:15:17 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-10 10:16:26 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-10 10:16:38 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2022-02-10 10:17:12 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-10 10:17:44 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-02-10 10:18:56 +0100zaquest(~notzaques@5.130.79.72)
2022-02-10 10:19:28 +0100foul_owl(~kerry@71.212.148.11) (Ping timeout: 256 seconds)
2022-02-10 10:19:28 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-10 10:19:36 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-10 10:23:16 +0100chenqisu1(~chenqisu1@183.217.200.249) (Quit: Leaving)
2022-02-10 10:24:43 +0100xsperry(~xs@user/xsperry) (Ping timeout: 250 seconds)
2022-02-10 10:26:15 +0100chenqisu1(~chenqisu1@183.217.200.249)
2022-02-10 10:30:21 +0100chele(~chele@user/chele) (Ping timeout: 250 seconds)
2022-02-10 10:32:50 +0100xsperry(~xs@user/xsperry)
2022-02-10 10:34:08 +0100dschrempf(~dominik@mobiledyn-62-240-134-109.mrsn.at)
2022-02-10 10:34:21 +0100foul_owl(~kerry@94.140.8.194)
2022-02-10 10:34:33 +0100sektor|3(~kvirc@94.155.193.66)
2022-02-10 10:34:56 +0100sektor|4(~kvirc@94.155.193.66)
2022-02-10 10:35:01 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-02-10 10:36:37 +0100sektor|2(~kvirc@87.227.175.182) (Ping timeout: 240 seconds)
2022-02-10 10:37:08 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 10:38:37 +0100sektor|3(~kvirc@94.155.193.66) (Ping timeout: 240 seconds)
2022-02-10 10:45:15 +0100AlexisTP(~AlexisTP@92.57.44.63)
2022-02-10 10:47:38 +0100cosimone(~user@93-47-228-191.ip115.fastwebnet.it) (Remote host closed the connection)
2022-02-10 10:48:42 +0100tzh_(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-02-10 10:49:48 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2022-02-10 10:56:34 +0100ubert1(~Thunderbi@2a02:8109:9880:303c:3eb6:2526:d971:8214)
2022-02-10 10:57:41 +0100ardell(~ardell@user/ardell) (Quit: Konversation terminated!)
2022-02-10 10:58:33 +0100ardell(~ardell@user/ardell)
2022-02-10 10:59:29 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-02-10 11:00:29 +0100ardell(~ardell@user/ardell) (Client Quit)
2022-02-10 11:00:33 +0100__monty__(~toonn@user/toonn)
2022-02-10 11:00:58 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 260 seconds)
2022-02-10 11:01:06 +0100grgz(~grgz@grgz.me)
2022-02-10 11:03:43 +0100mastarija(~mastarija@2a05:4f46:e04:6000:15fe:cab1:6fd:b807)
2022-02-10 11:05:07 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-02-10 11:06:13 +0100foul_owl(~kerry@94.140.8.194) (Ping timeout: 240 seconds)
2022-02-10 11:06:49 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 256 seconds)
2022-02-10 11:13:38 +0100drdo(~drdo@roach0.drdo.eu) (Quit: Ping timeout (120 seconds))
2022-02-10 11:13:50 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c)
2022-02-10 11:15:49 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-02-10 11:17:36 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 250 seconds)
2022-02-10 11:17:38 +0100drdo(~drdo@roach0.drdo.eu)
2022-02-10 11:18:16 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) (Ping timeout: 245 seconds)
2022-02-10 11:19:13 +0100nschoe(~quassel@178.251.84.79)
2022-02-10 11:19:14 +0100motherfsck(~motherfsc@user/motherfsck)
2022-02-10 11:20:09 +0100foul_owl(~kerry@71.212.133.174)
2022-02-10 11:21:34 +0100cfricke(~cfricke@user/cfricke)
2022-02-10 11:26:25 +0100m5zs7k(aquares@web10.mydevil.net) (Ping timeout: 256 seconds)
2022-02-10 11:27:28 +0100m5zs7k(aquares@web10.mydevil.net)
2022-02-10 11:32:30 +0100Kaipi(~Kaiepi@156.34.47.253)
2022-02-10 11:32:56 +0100xstill-8(xstill@fimu/xstill)
2022-02-10 11:33:21 +0100lep-(~lep@94.31.89.203)
2022-02-10 11:34:35 +0100dobblego(~dibblego@122-199-1-30.ip4.superloop.com)
2022-02-10 11:34:35 +0100dobblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2022-02-10 11:34:35 +0100dobblego(~dibblego@haskell/developer/dibblego)
2022-02-10 11:34:55 +0100nschoe_(~quassel@178.251.84.79)
2022-02-10 11:35:04 +0100turlando_(~turlando@93-42-250-112.ip89.fastwebnet.it)
2022-02-10 11:35:05 +0100hgolden_(~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
2022-02-10 11:35:34 +0100ft_(~ft@shell.chaostreff-dortmund.de)
2022-02-10 11:35:35 +0100[exa]_(exa@srv3.blesmrt.net)
2022-02-10 11:35:40 +0100Vq_(~vq@90-227-195-41-no77.tbcn.telia.com)
2022-02-10 11:36:12 +0100fryguybo1(~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
2022-02-10 11:36:13 +0100janus__(janus@anubis.0x90.dk)
2022-02-10 11:36:20 +0100ayako(~bnq@66-37-19-52.phx.onelemur.com)
2022-02-10 11:36:23 +0100Maxdaman1us(~Maxdamant@user/maxdamantus)
2022-02-10 11:36:24 +0100pooryori1k(~pooryoric@87-119-174-173.tll.elisa.ee)
2022-02-10 11:36:28 +0100xdej_(~xdej@quatramaran.salle-s.org)
2022-02-10 11:36:41 +0100mikoto-c1(~mikoto-ch@84.199.144.235)
2022-02-10 11:36:41 +0100abrar_(~abrar@static-108-2-152-54.phlapa.fios.verizon.net)
2022-02-10 11:36:44 +0100sudden(~cat@h-98-128-128-173.A351.priv.bahnhof.se)
2022-02-10 11:36:53 +0100wei2912_(~wei2912@138.75.71.147)
2022-02-10 11:36:55 +0100dhouthoo_(~dhouthoo@178-117-36-167.access.telenet.be)
2022-02-10 11:36:57 +0100marquis_1ndras(~marquis_a@124.170.163.166)
2022-02-10 11:37:08 +0100suddenGuest3567
2022-02-10 11:38:16 +0100infinity0_(~infinity0@occupy.ecodis.net)
2022-02-10 11:38:16 +0100infinity0(~infinity0@occupy.ecodis.net) (Killed (tantalum.libera.chat (Nickname regained by services)))
2022-02-10 11:38:16 +0100infinity0_infinity0
2022-02-10 11:40:40 +0100TheCoffeMaker_(~TheCoffeM@200.126.129.149)
2022-02-10 11:41:02 +0100nschoe(~quassel@178.251.84.79) (*.net *.split)
2022-02-10 11:41:02 +0100foul_owl(~kerry@71.212.133.174) (*.net *.split)
2022-02-10 11:41:02 +0100drdo(~drdo@roach0.drdo.eu) (*.net *.split)
2022-02-10 11:41:02 +0100mikoto-chan(~mikoto-ch@84.199.144.235) (*.net *.split)
2022-02-10 11:41:02 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (*.net *.split)
2022-02-10 11:41:02 +0100wei2912(~wei2912@138.75.71.147) (*.net *.split)
2022-02-10 11:41:02 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (*.net *.split)
2022-02-10 11:41:02 +0100aforemny(~aforemny@static.248.158.34.188.clients.your-server.de) (*.net *.split)
2022-02-10 11:41:02 +0100ishutin(~ishutin@193-110-63-21.cable-modem.hdsnet.hu) (*.net *.split)
2022-02-10 11:41:02 +0100hgolden(~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (*.net *.split)
2022-02-10 11:41:02 +0100superbil(~superbil@1-34-176-171.hinet-ip.hinet.net) (*.net *.split)
2022-02-10 11:41:02 +0100bliminse(~bliminse@host86-158-241-239.range86-158.btcentralplus.com) (*.net *.split)
2022-02-10 11:41:02 +0100elkcl(~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (*.net *.split)
2022-02-10 11:41:02 +0100Kaiepi(~Kaiepi@156.34.47.253) (*.net *.split)
2022-02-10 11:41:03 +0100Vq(~vq@90-227-195-41-no77.tbcn.telia.com) (*.net *.split)
2022-02-10 11:41:03 +0100pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee) (*.net *.split)
2022-02-10 11:41:03 +0100dibblego(~dibblego@haskell/developer/dibblego) (*.net *.split)
2022-02-10 11:41:03 +0100thebnq(~bnq@66-37-19-52.phx.onelemur.com) (*.net *.split)
2022-02-10 11:41:03 +0100[exa](~exa@user/exa/x-3587197) (*.net *.split)
2022-02-10 11:41:03 +0100Philonous(~Philonous@user/philonous) (*.net *.split)
2022-02-10 11:41:03 +0100turlando(~turlando@user/turlando) (*.net *.split)
2022-02-10 11:41:03 +0100shachaf(~shachaf@user/shachaf) (*.net *.split)
2022-02-10 11:41:03 +0100maerwald(~maerwald@user/maerwald) (*.net *.split)
2022-02-10 11:41:03 +0100Guest6340(~cat@h-98-128-128-173.A351.priv.bahnhof.se) (*.net *.split)
2022-02-10 11:41:03 +0100xdej(~xdej@quatramaran.salle-s.org) (*.net *.split)
2022-02-10 11:41:03 +0100red-snail(~snail@static.151.210.203.116.clients.your-server.de) (*.net *.split)
2022-02-10 11:41:03 +0100Hafydd(~Hafydd@user/hafydd) (*.net *.split)
2022-02-10 11:41:03 +0100aria(sid380617@lymington.irccloud.com) (*.net *.split)
2022-02-10 11:41:03 +0100TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (*.net *.split)
2022-02-10 11:41:03 +0100ncopa(~ncopa@alpine/developer/ncopa) (*.net *.split)
2022-02-10 11:41:03 +0100lep(~lep@94.31.89.203) (*.net *.split)
2022-02-10 11:41:03 +0100ft(~ft@shell.chaostreff-dortmund.de) (*.net *.split)
2022-02-10 11:41:03 +0100janus(janus@anubis.0x90.dk) (*.net *.split)
2022-02-10 11:41:03 +0100russruss(~russruss@my.russellmcc.com) (*.net *.split)
2022-02-10 11:41:03 +0100tv(~tv@user/tv) (*.net *.split)
2022-02-10 11:41:03 +0100robertm(~robertm@lattice.rojoma.com) (*.net *.split)
2022-02-10 11:41:03 +0100swistak(~swistak@185.21.216.141) (*.net *.split)
2022-02-10 11:41:03 +0100wz1000(~zubin@static.11.113.47.78.clients.your-server.de) (*.net *.split)
2022-02-10 11:41:03 +0100marquis_andras(~marquis_a@124.170.163.166) (*.net *.split)
2022-02-10 11:41:03 +0100justGhost(~justache@user/justache) (*.net *.split)
2022-02-10 11:41:03 +0100Maxdamantus(~Maxdamant@user/maxdamantus) (*.net *.split)
2022-02-10 11:41:03 +0100stvc(~stvc@192.241.166.39) (*.net *.split)
2022-02-10 11:41:03 +0100cls(~cls@chalk.lubutu.com) (*.net *.split)
2022-02-10 11:41:03 +0100cross_(~cross@spitfire.i.gajendra.net) (*.net *.split)
2022-02-10 11:41:03 +0100skewerr(spoonm@inaba.spoonm.org) (*.net *.split)
2022-02-10 11:41:03 +0100drewr(~drew@user/drewr) (*.net *.split)
2022-02-10 11:41:03 +0100fryguybob(~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (*.net *.split)
2022-02-10 11:41:03 +0100haskl(~haskl@user/haskl) (*.net *.split)
2022-02-10 11:41:03 +0100xstill-(xstill@fimu/xstill) (*.net *.split)
2022-02-10 11:41:03 +0100xsarnik(xsarnik@lounge.fi.muni.cz) (*.net *.split)
2022-02-10 11:41:03 +0100abrar(~abrar@static-108-2-152-54.phlapa.fios.verizon.net) (*.net *.split)
2022-02-10 11:41:03 +0100kmein(~weechat@user/kmein) (*.net *.split)
2022-02-10 11:41:03 +0100c_wraith(~c_wraith@adjoint.us) (*.net *.split)
2022-02-10 11:41:03 +0100statusfailed(~statusfai@statusfailed.com) (*.net *.split)
2022-02-10 11:41:03 +0100canta(~canta@user/canta) (*.net *.split)
2022-02-10 11:41:03 +0100dminuoso(~dminuoso@user/dminuoso) (*.net *.split)
2022-02-10 11:41:03 +0100juri_(~juri@178.63.35.222) (*.net *.split)
2022-02-10 11:41:03 +0100tolt(~weechat-h@li219-154.members.linode.com) (*.net *.split)
2022-02-10 11:41:03 +0100mmaruseacph2(~mihai@198.199.100.72) (*.net *.split)
2022-02-10 11:41:03 +0100meejah(~meejah@rutas.meejah.ca) (*.net *.split)
2022-02-10 11:41:03 +0100andjjj23_(~irc@107.170.228.47) (*.net *.split)
2022-02-10 11:41:03 +0100neverwas(jpneverwas@swissbox.unperson.link) (*.net *.split)
2022-02-10 11:41:03 +0100n3t(n3t@user/n3t) (*.net *.split)
2022-02-10 11:41:03 +0100loonycyborg(~loonycybo@wesnoth/developer/loonycyborg) (*.net *.split)
2022-02-10 11:41:03 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (*.net *.split)
2022-02-10 11:41:03 +0100carter(sid14827@helmsley.irccloud.com) (*.net *.split)
2022-02-10 11:41:03 +0100TMA(~tma@twin.jikos.cz) (*.net *.split)
2022-02-10 11:41:03 +0100hubvu_(sid495858@tinside.irccloud.com) (*.net *.split)
2022-02-10 11:41:03 +0100jtmar(~james@jtmar.me) (*.net *.split)
2022-02-10 11:41:03 +0100kawpuh(~kawpuh@66.42.81.80) (*.net *.split)
2022-02-10 11:41:06 +0100xstill-8xstill-
2022-02-10 11:41:09 +0100ft_ft
2022-02-10 11:41:09 +0100dobblegodibblego
2022-02-10 11:41:26 +0100sektor|2(~kvirc@87.227.175.182)
2022-02-10 11:41:57 +0100elkcl(~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru)
2022-02-10 11:42:12 +0100xsarnik(xsarnik@lounge.fi.muni.cz)
2022-02-10 11:44:13 +0100AlexisTP(~AlexisTP@92.57.44.63) (Ping timeout: 256 seconds)
2022-02-10 11:44:40 +0100Maxdaman1usMaxdamantus
2022-02-10 11:45:31 +0100sektor|4(~kvirc@94.155.193.66) (Ping timeout: 250 seconds)
2022-02-10 11:46:12 +0100drdo(~drdo@roach0.drdo.eu)
2022-02-10 11:46:12 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
2022-02-10 11:46:12 +0100aforemny(~aforemny@static.248.158.34.188.clients.your-server.de)
2022-02-10 11:46:12 +0100ishutin(~ishutin@193-110-63-21.cable-modem.hdsnet.hu)
2022-02-10 11:46:12 +0100bliminse(~bliminse@host86-158-241-239.range86-158.btcentralplus.com)
2022-02-10 11:46:12 +0100Philonous(~Philonous@user/philonous)
2022-02-10 11:46:12 +0100shachaf(~shachaf@user/shachaf)
2022-02-10 11:46:12 +0100maerwald(~maerwald@user/maerwald)
2022-02-10 11:46:12 +0100red-snail(~snail@static.151.210.203.116.clients.your-server.de)
2022-02-10 11:46:12 +0100aria(sid380617@lymington.irccloud.com)
2022-02-10 11:46:12 +0100ncopa(~ncopa@alpine/developer/ncopa)
2022-02-10 11:46:12 +0100russruss(~russruss@my.russellmcc.com)
2022-02-10 11:46:12 +0100robertm(~robertm@lattice.rojoma.com)
2022-02-10 11:46:12 +0100swistak(~swistak@185.21.216.141)
2022-02-10 11:46:12 +0100wz1000(~zubin@static.11.113.47.78.clients.your-server.de)
2022-02-10 11:46:12 +0100justGhost(~justache@user/justache)
2022-02-10 11:46:12 +0100stvc(~stvc@192.241.166.39)
2022-02-10 11:46:12 +0100cls(~cls@chalk.lubutu.com)
2022-02-10 11:46:12 +0100cross_(~cross@spitfire.i.gajendra.net)
2022-02-10 11:46:12 +0100skewerr(spoonm@inaba.spoonm.org)
2022-02-10 11:46:12 +0100haskl(~haskl@user/haskl)
2022-02-10 11:46:12 +0100kmein(~weechat@user/kmein)
2022-02-10 11:46:12 +0100c_wraith(~c_wraith@adjoint.us)
2022-02-10 11:46:12 +0100statusfailed(~statusfai@statusfailed.com)
2022-02-10 11:46:12 +0100canta(~canta@user/canta)
2022-02-10 11:46:12 +0100dminuoso(~dminuoso@user/dminuoso)
2022-02-10 11:46:12 +0100juri_(~juri@178.63.35.222)
2022-02-10 11:46:12 +0100tolt(~weechat-h@li219-154.members.linode.com)
2022-02-10 11:46:12 +0100mmaruseacph2(~mihai@198.199.100.72)
2022-02-10 11:46:12 +0100meejah(~meejah@rutas.meejah.ca)
2022-02-10 11:46:12 +0100andjjj23_(~irc@107.170.228.47)
2022-02-10 11:46:12 +0100neverwas(jpneverwas@swissbox.unperson.link)
2022-02-10 11:46:12 +0100n3t(n3t@user/n3t)
2022-02-10 11:46:12 +0100loonycyborg(~loonycybo@wesnoth/developer/loonycyborg)
2022-02-10 11:46:12 +0100ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
2022-02-10 11:46:12 +0100carter(sid14827@helmsley.irccloud.com)
2022-02-10 11:46:12 +0100TMA(~tma@twin.jikos.cz)
2022-02-10 11:46:12 +0100hubvu_(sid495858@tinside.irccloud.com)
2022-02-10 11:46:12 +0100jtmar(~james@jtmar.me)
2022-02-10 11:46:12 +0100kawpuh(~kawpuh@66.42.81.80)
2022-02-10 11:46:14 +0100d34df00d(~d34df00d@2600:1700:8c60:3a10::48) (Excess Flood)
2022-02-10 11:46:39 +0100sektor|3(~kvirc@94.155.193.66)
2022-02-10 11:47:35 +0100lep-lep
2022-02-10 11:47:37 +0100superbil(~superbil@1-34-176-171.hinet-ip.hinet.net)
2022-02-10 11:48:08 +0100tv(~tv@user/tv)
2022-02-10 11:48:17 +0100Hafydd(~Hafydd@user/hafydd)
2022-02-10 11:48:28 +0100drewr(~drew@user/drewr)
2022-02-10 11:48:54 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection)
2022-02-10 11:49:07 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net)
2022-02-10 11:49:24 +0100foul_owl(~kerry@71.212.133.174)
2022-02-10 11:50:05 +0100sektor|2(~kvirc@87.227.175.182) (Ping timeout: 252 seconds)
2022-02-10 11:56:10 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net)
2022-02-10 11:58:23 +0100yauhsien(~yauhsien@61-231-45-223.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-10 11:58:57 +0100yauhsien(~yauhsien@61-231-45-223.dynamic-ip.hinet.net)
2022-02-10 11:59:01 +0100yauhsien(~yauhsien@61-231-45-223.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-10 11:59:59 +0100mmhat(~mmh@55d4d1e3.access.ecotel.net)
2022-02-10 12:00:37 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
2022-02-10 12:01:38 +0100 <Andrew> (
2022-02-10 12:01:45 +0100 <Andrew> Er sry, misconfigured client
2022-02-10 12:03:29 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-02-10 12:04:57 +0100mvk(~mvk@2607:fea8:5cdc:bf00::5483) (Ping timeout: 240 seconds)
2022-02-10 12:06:17 +0100pooryori1kyoric
2022-02-10 12:06:20 +0100yoricpooryorick
2022-02-10 12:10:17 +0100td_(~td@94.134.91.205) (Ping timeout: 256 seconds)
2022-02-10 12:11:46 +0100td_(~td@94.134.91.3)
2022-02-10 12:12:57 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 240 seconds)
2022-02-10 12:14:40 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 12:15:12 +0100chele(~chele@user/chele)
2022-02-10 12:16:31 +0100dschrempf(~dominik@mobiledyn-62-240-134-109.mrsn.at) (Ping timeout: 250 seconds)
2022-02-10 12:19:08 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2022-02-10 12:20:01 +0100mmhat(~mmh@55d4d1e3.access.ecotel.net) (Quit: WeeChat 3.4)
2022-02-10 12:22:36 +0100xkuru(~xkuru@user/xkuru)
2022-02-10 12:25:09 +0100cosimone(~user@93-47-228-191.ip115.fastwebnet.it)
2022-02-10 12:25:34 +0100jalil(~jalil@2a01:e0a:277:4100:4b34:f28b:c1d1:3941)
2022-02-10 12:28:53 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-02-10 12:31:11 +0100Jing(~hedgehog@240e:390:7c53:a7e1:3c97:bf3a:3e4c:7eb2)
2022-02-10 12:31:42 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-10 12:34:42 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-10 12:36:02 +0100Unhammer(~Unhammer@user/unhammer) (Ping timeout: 250 seconds)
2022-02-10 12:37:29 +0100cynomys(~cynomys@user/cynomys) (Ping timeout: 256 seconds)
2022-02-10 12:38:56 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-02-10 12:40:21 +0100Guest|10(~Guest|10@138-38-206-67.eduroam.bath.ac.uk)
2022-02-10 12:40:48 +0100Guest|10(~Guest|10@138-38-206-67.eduroam.bath.ac.uk) (Client Quit)
2022-02-10 12:47:49 +0100ubert1(~Thunderbi@2a02:8109:9880:303c:3eb6:2526:d971:8214) (Ping timeout: 240 seconds)
2022-02-10 12:51:00 +0100Unhammer(~Unhammer@user/unhammer)
2022-02-10 12:51:26 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-02-10 12:54:06 +0100fef(~thedawn@user/thedawn) (Ping timeout: 276 seconds)
2022-02-10 12:54:27 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-02-10 12:56:12 +0100phma(~phma@2001:5b0:211f:d758:6f18:ab28:6bcc:58fd) (Read error: Connection reset by peer)
2022-02-10 12:56:15 +0100Putonlalla(~sapekiis@it-cyan.it.jyu.fi) (Quit: Leaving.)
2022-02-10 12:57:11 +0100foul_owl(~kerry@71.212.133.174) (Ping timeout: 252 seconds)
2022-02-10 12:57:54 +0100phma(~phma@host-67-44-209-72.hnremote.net)
2022-02-10 12:59:43 +0100 <ProfSimm> In Haskell when I define a function for input 0 and then input any int, it'll first match 0. Doesn't this make order of execution significant.
2022-02-10 13:00:42 +0100 <sshine> ProfSimm, yes
2022-02-10 13:00:54 +0100 <Franciman> only the order of the definitions matters, yes
2022-02-10 13:01:13 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-10 13:01:15 +0100 <ProfSimm> Well the order of the definitions defines the order of matching
2022-02-10 13:01:26 +0100 <Franciman> yes
2022-02-10 13:01:28 +0100 <dminuoso> ProfSimm: No, the order of execution is still not specified.
2022-02-10 13:01:36 +0100lep(~lep@94.31.89.203) ()
2022-02-10 13:01:39 +0100 <Franciman> oh
2022-02-10 13:01:46 +0100 <ProfSimm> dminuoso: it's kinda specified semantically.
2022-02-10 13:01:47 +0100 <dminuoso> ProfSimm: It's rather, it behaves as it if you cant tell the difference
2022-02-10 13:01:58 +0100 <ProfSimm> Well that's "specified" in my book :)
2022-02-10 13:02:08 +0100 <Franciman> what book is it, ProfSimm ?
2022-02-10 13:02:09 +0100 <dminuoso> No, an implementation is still free to say execute other branches in parallel
2022-02-10 13:02:45 +0100 <Franciman> dminuoso: how is the output determined?
2022-02-10 13:03:42 +0100 <dminuoso> That's for the implementation left to decide. It's a similar reason why `seq` doesn't have an inherent ordering
2022-02-10 13:03:54 +0100DNH(~DNH@2a02:8108:1100:16d8:adf2:7fd4:5ba2:8512)
2022-02-10 13:04:08 +0100 <dminuoso> i.e. (seq x b) does not evaluate x before b, it just ensures x is evaluaetd.
2022-02-10 13:04:21 +0100 <dminuoso> (GHC brings pseq which gives you that guarantee)
2022-02-10 13:04:43 +0100 <Franciman> so if i define «f :: Int -> Int» as follows «f 1 = 2; f 2 = 4»
2022-02-10 13:04:57 +0100 <Franciman> i can't know whether f 2 evaluates to 2 or 4 ?
2022-02-10 13:05:01 +0100xff0x(~xff0x@2001:1a81:53bc:500:bc1a:eecf:3ef6:1dbe) (Ping timeout: 240 seconds)
2022-02-10 13:05:05 +0100 <dminuoso> And in fact the fact that seq doenst impose an ordering is subtly detectable
2022-02-10 13:06:06 +0100xff0x(~xff0x@2001:1a81:53bc:500:d58f:5284:91ba:f00d)
2022-02-10 13:06:09 +0100 <dminuoso> Franciman: No rather, if you have `f 1 = <cheap-expr>; f x = <expensive-expr>`, you have no semantic guarantee the implementation wont waste exaluating <expensive-expr> speculatively
2022-02-10 13:06:25 +0100 <Franciman> ah ok, this is more acceptable
2022-02-10 13:06:25 +0100 <dminuoso> As long as `f 1` gives you the result of <cheap-expr> back
2022-02-10 13:09:13 +0100 <dminuoso> The point is really to separate between the semantics of the language and the underlying execution model
2022-02-10 13:10:23 +0100 <dminuoso> See [3.17.2 Informal Semantics of Pattern Matching](https://www.haskell.org/onlinereport/haskell2010/haskellch3.html)
2022-02-10 13:10:41 +0100 <dminuoso> And 3.17.3 Formal Semantics of Pattern Matching
2022-02-10 13:11:01 +0100 <dminuoso> The formal semantics are described just as a list of identity laws
2022-02-10 13:11:01 +0100 <Profpatsch> conduit question: I have a Conduit x (a, b) m (), and a Conduit b b' m ()
2022-02-10 13:11:13 +0100 <Profpatsch> Can I only map the second conduit over the second part of the tuple somehow?
2022-02-10 13:11:29 +0100 <Profpatsch> aka turn it into a Conduit (a, b) (a, b') m () ?
2022-02-10 13:13:09 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-10 13:13:11 +0100 <dminuoso> Profpatsch: Mmm, Im tempted to say you cant without a Monoid constraint on a
2022-02-10 13:13:58 +0100 <dminuoso> Consider what happens if that second conduit awaits some
2022-02-10 13:14:12 +0100 <dminuoso> Do you discard some of the fst elements? do you mappend them together?
2022-02-10 13:14:23 +0100 <Profpatsch> dminuoso: okay, was expecting something like that
2022-02-10 13:14:40 +0100 <Profpatsch> dminuoso: My X to this Y is that I have a stream of Lines, and I want to give each one a line number
2022-02-10 13:14:51 +0100 <Profpatsch> but then afterwards I do a bunch of things to these lines
2022-02-10 13:15:05 +0100 <Profpatsch> granted, if I stare hard enough maybe it’s just mapping
2022-02-10 13:15:40 +0100 <Profpatsch> But yeah, makes intuitive sense that it’s not viable cause every Conduit can produce 0..n elements
2022-02-10 13:15:59 +0100 <Profpatsch> I feel like I taught myself that when I wrote that code
2022-02-10 13:16:01 +0100 <Profpatsch> but then forgot again
2022-02-10 13:17:26 +0100 <dminuoso> Profpatsch: Does the second thing have to be a conduit? Or can it just be a kleisli arrow?
2022-02-10 13:17:49 +0100 <dminuoso> Profpatsch: And no, its not about the production of elements, its rather about the consumption of them.
2022-02-10 13:18:02 +0100 <dminuoso> or I guess the production is problematic too
2022-02-10 13:18:32 +0100 <dminuoso> the conduit could await multiple elements but produce only one, or await one element but produce multiple ones
2022-02-10 13:19:22 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 250 seconds)
2022-02-10 13:20:51 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 250 seconds)
2022-02-10 13:21:34 +0100Vq_Vq
2022-02-10 13:22:49 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 13:23:57 +0100cfricke(~cfricke@user/cfricke) (Ping timeout: 256 seconds)
2022-02-10 13:24:11 +0100 <ProfSimm> Does Haskell have a way to show people "this function overload will never run because a previous one shadows it"
2022-02-10 13:24:45 +0100fef(~thedawn@user/thedawn)
2022-02-10 13:25:16 +0100 <dminuoso> ProfSimm: Enable -Wname-shadowing
2022-02-10 13:25:20 +0100 <dminuoso> Or better yet -Wall -Wcompat
2022-02-10 13:25:57 +0100Ariakenom(~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se) (Ping timeout: 240 seconds)
2022-02-10 13:27:24 +0100mei(~mei@user/mei)
2022-02-10 13:27:32 +0100 <ProfSimm> Can I read arguments like a stream of arbitrary size.
2022-02-10 13:28:04 +0100 <ski> ProfSimm : it's not overloading
2022-02-10 13:29:28 +0100notzmv(~zmv@user/notzmv)
2022-02-10 13:29:56 +0100 <ski> arguments ?
2022-02-10 13:30:50 +0100AlexisTP(~AlexisTP@92.57.44.63)
2022-02-10 13:32:48 +0100 <ProfSimm> ski: sorry?
2022-02-10 13:33:11 +0100 <ski> i dunno what you mean
2022-02-10 13:33:26 +0100 <ski> also, all Haskell functions take exactly one argument
2022-02-10 13:38:26 +0100drdo(~drdo@roach0.drdo.eu) (Quit: Ping timeout (120 seconds))
2022-02-10 13:40:37 +0100[exa]_(exa@srv3.blesmrt.net) (Ping timeout: 240 seconds)
2022-02-10 13:40:47 +0100drdo(~drdo@roach0.drdo.eu)
2022-02-10 13:41:01 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Remote host closed the connection)
2022-02-10 13:41:12 +0100[exa](exa@srv3.blesmrt.net)
2022-02-10 13:41:31 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 13:43:38 +0100 <opqdonut> ProfSimm: there's a warning for unreachable pattern matches
2022-02-10 13:44:14 +0100 <opqdonut> enabled by -Woverlapping-patterns
2022-02-10 13:44:17 +0100 <opqdonut> perhaps that's what you mean?
2022-02-10 13:44:43 +0100Ariakenom(~Ariakenom@2001:9b1:efe:9d00:a4bb:8490:782e:5c48)
2022-02-10 13:44:57 +0100Andrewlikes having ghc aliased to ghc -Wall
2022-02-10 13:45:40 +0100jgeerds_(~jgeerds@55d4a547.access.ecotel.net)
2022-02-10 13:46:02 +0100mikoto-c1(~mikoto-ch@84.199.144.235) (Quit: mikoto-c1)
2022-02-10 13:47:06 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-02-10 13:47:18 +0100sektor|2(~kvirc@87.227.175.182)
2022-02-10 13:48:30 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 260 seconds)
2022-02-10 13:48:37 +0100chenqisu1(~chenqisu1@183.217.200.249) (Ping timeout: 240 seconds)
2022-02-10 13:48:40 +0100 <ProfSimm> opqdonut: yes thanks, is there a reason this is an option
2022-02-10 13:48:42 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2022-02-10 13:50:21 +0100sektor|3(~kvirc@94.155.193.66) (Ping timeout: 256 seconds)
2022-02-10 13:50:26 +0100ec(~ec@gateway/tor-sasl/ec)
2022-02-10 13:50:27 +0100 <Profpatsch> dminuoso: yeah, in Conduits pretty much anything can happen
2022-02-10 13:50:30 +0100bliminse(~bliminse@host86-158-241-239.range86-158.btcentralplus.com) (Quit: leaving)
2022-02-10 13:50:46 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 245 seconds)
2022-02-10 13:50:54 +0100monaaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 13:54:49 +0100Ariakenom_(~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se)
2022-02-10 13:57:34 +0100bliminse(~bliminse@host86-158-241-239.range86-158.btcentralplus.com)
2022-02-10 13:57:43 +0100 <opqdonut> ProfSimm: I guess it's just programming tradition that many useful warnings are disabled by default. As Andrew said, many people like to run with -Wall, i.e. all warnings turned on
2022-02-10 13:58:22 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:f0ed:5941:868e:9ada) (Quit: WeeChat 2.8)
2022-02-10 13:58:23 +0100 <Andrew> Bad traditions, again
2022-02-10 13:58:41 +0100Ariakenom(~Ariakenom@2001:9b1:efe:9d00:a4bb:8490:782e:5c48) (Ping timeout: 245 seconds)
2022-02-10 13:58:45 +0100 <Andrew> Haskell is better in this regards for at least enforcing type problems in compile time.
2022-02-10 13:58:54 +0100 <opqdonut> I guess Rust has lots of warnings enabled by default? And lots of things like unreachable code are errors instead of warnings?
2022-02-10 13:59:17 +0100 <Ariakenom_> -Wall also never means all
2022-02-10 13:59:24 +0100 <ProfSimm> Interesting tradition, to have a language detect problems and you ignore that.
2022-02-10 13:59:31 +0100Andrewsuddenly notices No manual entry for ghc
2022-02-10 13:59:42 +0100 <Andrew> Yup
2022-02-10 13:59:58 +0100 <opqdonut> Ariakenom_: yeah, that too
2022-02-10 14:00:41 +0100 <Andrew> -Weverything?
2022-02-10 14:01:24 +0100 <opqdonut> ProfSimm: I guess the real answer here is that 1) you can't make overlapping patterns an error, because that would break backwards compatibility. code that used to compile might not compile any more. 2) you can't turn on the warning by default, because some build systems treat warnings as errors, and again, you might fail somebody's build
2022-02-10 14:01:41 +0100alp(~alp@user/alp) (Ping timeout: 256 seconds)
2022-02-10 14:01:46 +0100 <opqdonut> those are arguably bad reasons, but I think they're the reasons
2022-02-10 14:02:03 +0100 <Andrew> (BadReason "Break backwards compatibility")
2022-02-10 14:02:06 +0100 <Andrew> Yeah
2022-02-10 14:02:18 +0100 <Andrew> It's like keeping old bugs because they'll break compatibility
2022-02-10 14:02:31 +0100 <Andrew> I like how Python just stays with those issues, but not until the next major breaking release
2022-02-10 14:02:40 +0100 <ProfSimm> The solution is to compile despite errors :P
2022-02-10 14:02:44 +0100 <Andrew> Having breaking releases once in a while sounds helpful
2022-02-10 14:02:45 +0100 <ProfSimm> But always show errors
2022-02-10 14:02:54 +0100 <Andrew> ProfSimm: Then they're warnings
2022-02-10 14:03:13 +0100 <Andrew> Or just roll out new standards, and give compilers a flag for each standard
2022-02-10 14:03:16 +0100 <Andrew> * option, whatever
2022-02-10 14:03:17 +0100 <ProfSimm> Andrew: "some systems treat warnings as errors"
2022-02-10 14:03:39 +0100 <Andrew> I like my compiler output to be clean
2022-02-10 14:09:53 +0100sektor|3(~kvirc@94.155.193.66)
2022-02-10 14:11:40 +0100slack1256(~slack1256@191.126.227.64)
2022-02-10 14:11:51 +0100vysn(~vysn@user/vysn) (Quit: WeeChat 3.4)
2022-02-10 14:12:22 +0100 <ProfSimm> Can I pass the same input to N functions simultaneously.
2022-02-10 14:13:42 +0100sektor|2(~kvirc@87.227.175.182) (Ping timeout: 260 seconds)
2022-02-10 14:14:48 +0100 <Ariakenom_> you can just map
2022-02-10 14:15:22 +0100 <sshine> ProfSimm, what do you mean by simultaneously?
2022-02-10 14:15:50 +0100wei2912_(~wei2912@138.75.71.147) (Remote host closed the connection)
2022-02-10 14:16:56 +0100 <sshine> ProfSimm, f x `par` g x `par` h x?
2022-02-10 14:18:14 +0100alp(~alp@user/alp)
2022-02-10 14:23:00 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2022-02-10 14:24:06 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-02-10 14:25:03 +0100 <Andrew> Map, but feels reversed
2022-02-10 14:25:16 +0100 <Andrew> ProfSimm: I expect that you want to store the output in a list?
2022-02-10 14:30:04 +0100 <ProfSimm> Andrew: yeah it's kinda like a reverse map
2022-02-10 14:30:13 +0100Graham31415(~Graham314@213.237.82.193)
2022-02-10 14:30:29 +0100 <Andrew> Yeh, if he's using functions, i expect him to want the output somewhere, probably a list
2022-02-10 14:31:22 +0100 <ProfSimm> technically like a normal map if we pass to map a function that applies the same arguments
2022-02-10 14:35:01 +0100yhsiveht(~Nishant@2405:201:f005:c007:51b9:2550:9b70:b031)
2022-02-10 14:35:02 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-10 14:35:37 +0100thevishy(~Nishant@2405:201:f005:c007:6cf1:7245:a05f:ea21) (Ping timeout: 240 seconds)
2022-02-10 14:36:42 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-10 14:36:56 +0100 <Ariakenom_> ProfSimm exactly. "map ($argument)" if you wanna be terse
2022-02-10 14:38:04 +0100 <Graham31415> When using RIO's logger functions, is there a simple way to print out strings intermixed with computed values? e.g. `main = runSimpleApp $ let x = 5 in logInfo $ "Hello, " ++ (show x)` doesn't type check. Getting this to output something seems to require two conversions, e.g. `main = runSimpleApp $ let x = 5 in logInfo $ display $ pack $ "Hello, "
2022-02-10 14:38:05 +0100 <Graham31415> <> (show x)`. This seems quite tortuous. Am I missing something obvious?
2022-02-10 14:39:05 +0100max22-(~maxime@2a01cb0883359800593582f16039b0e0.ipv6.abo.wanadoo.fr) (Ping timeout: 256 seconds)
2022-02-10 14:40:50 +0100 <lyxia> "Hello, " <> display x with OverloadedStrings
2022-02-10 14:41:27 +0100 <dminuoso> libffi.so.8 => /nix/store/dpikrpi38md4fyw8aakdcbylywwb0nsc-libffi-3.4.2/lib/libffi.so.8 (0x00007fbbe8d72000)
2022-02-10 14:41:37 +0100monaaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Remote host closed the connection)
2022-02-10 14:41:44 +0100 <dminuoso> So I've done a major nixos update, updated cabal and ghc as well. Now this thing appears in my resulting builds
2022-02-10 14:41:53 +0100 <Ariakenom_> you can also replace show with something that gives you Text from 5
2022-02-10 14:41:56 +0100 <dminuoso> Where could this come from?
2022-02-10 14:42:01 +0100monaaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 14:42:02 +0100 <Graham31415> lyxia, oh, that's much nicer. Thanks!
2022-02-10 14:43:12 +0100 <dminuoso> Oh. GHC always links against libffi
2022-02-10 14:43:27 +0100 <Ariakenom_> oh that something is display :p
2022-02-10 14:44:42 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
2022-02-10 14:44:56 +0100 <Graham31415> lyxia: follow up Q. How does one identify the specific `<>` being used in this expression? Like, does one hunt down the type of "Hello ", or the type of `display x`? And then hunt through the instances and then look for the `<>` function?
2022-02-10 14:45:43 +0100 <geekosaur> % :info <>
2022-02-10 14:45:44 +0100 <yahb> geekosaur: type Semigroup :: * -> Constraint; class Semigroup a where; (<>) :: a -> a -> a; ...; -- Defined in `GHC.Base'; infixr 6 <>
2022-02-10 14:46:30 +0100 <geekosaur> ghci can do much of that hunting for you,and what it can't hoogle can
2022-02-10 14:47:19 +0100 <Graham31415> Ok, thanks. I guess I'm just missing the insight to think in albegraic terms here...
2022-02-10 14:50:04 +0100 <EvanR> <> is one of the operators defined by default so it's good to know
2022-02-10 14:50:39 +0100 <EvanR> you could say it's in a hypothetical table of "haskell operators" with their relative precedences (which we usually don't see)
2022-02-10 14:50:50 +0100 <EvanR> (because haskell lets you define whatever operator)
2022-02-10 14:51:16 +0100 <EvanR> (but there's only a handful available without importing anything so such a table could make sense ish)
2022-02-10 14:51:47 +0100 <geekosaur> there'seven one in the haskell report
2022-02-10 14:52:01 +0100 <geekosaur> (for precedences)
2022-02-10 14:52:03 +0100 <Graham31415> And we can see that "something" composes (via <>) with `display x` because of OverloadedStrings? I would have to know that one of the Display instances matches one of the things that OverloadedStrings works with?
2022-02-10 14:52:08 +0100 <EvanR> does it have <>? xD
2022-02-10 14:52:20 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-02-10 14:52:21 +0100 <geekosaur> no, <> is post-2010
2022-02-10 14:52:43 +0100cosimone(~user@93-47-228-191.ip115.fastwebnet.it) (Remote host closed the connection)
2022-02-10 14:54:53 +0100 <EvanR> Graham31415, pack makes me think you are dealing with Text
2022-02-10 14:55:06 +0100 <EvanR> yes OverloadedStrings means "something" is potentially a Text
2022-02-10 14:55:16 +0100jakalx(~jakalx@base.jakalx.net)
2022-02-10 14:55:30 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-10 14:55:31 +0100cosimone(~user@93-47-228-191.ip115.fastwebnet.it)
2022-02-10 14:55:47 +0100 <EvanR> and <> is the goto way to ++ two Texteses
2022-02-10 14:55:47 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com)
2022-02-10 14:56:07 +0100 <lyxia> Graham31415: remember that Utf8Builder, like virtually all text-like types, is a monoid
2022-02-10 14:56:10 +0100 <Graham31415> EvanR I do want to read from files using RIO too, for which I guess I'll be using `readFileUtf8`  and getting `Text` in return.
2022-02-10 14:56:11 +0100 <akhesacaro> be careful with OverloadedStrings
2022-02-10 14:57:12 +0100 <lyxia> so the problem naturally breaks down into 'how to convert "Hello "' and 'how to convert x'
2022-02-10 14:57:26 +0100AlexisTP(~AlexisTP@92.57.44.63) (Remote host closed the connection)
2022-02-10 14:57:54 +0100 <geekosaur> akhesacaro, why do you say that? It's no worse than numbers
2022-02-10 14:58:50 +0100 <Graham31415> right, i get that they need to be converted to some common thing. I'm just too noob to know what my options are.
2022-02-10 14:59:51 +0100fryguybo1(~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (Quit: leaving)
2022-02-10 15:00:10 +0100 <EvanR> Text is not a bad idea if it's already in play and you can't decide
2022-02-10 15:00:27 +0100fryguybob(~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
2022-02-10 15:00:58 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2022-02-10 15:01:29 +0100 <Graham31415> So, is there only one candiate for converting to common types, such that the compiler can't make the wrong assumption? In ambiguous cases, will the compiler just pick one (out of multiple candidates), or will the compiler bail out and ask for some more type info?
2022-02-10 15:01:38 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-02-10 15:01:56 +0100 <geekosaur> if the compiler can't boil it down to exactly one type, it will report an ambiguous type error
2022-02-10 15:02:07 +0100 <Graham31415> cool
2022-02-10 15:02:12 +0100 <geekosaur> there's a defaulting mechanism you can use to help it choose in some cases
2022-02-10 15:02:45 +0100 <EvanR> cool and also uncool, ambiguous types means valuable programmer attention required xD
2022-02-10 15:02:57 +0100 <EvanR> but at least it won't do something random like javascript
2022-02-10 15:03:54 +0100 <geekosaur> that's where defaulting can come in handy
2022-02-10 15:04:18 +0100 <Graham31415> I'm getting the sense that I'll need to memorise a large part of the ecosystem in order to be even slightly productive. :(
2022-02-10 15:05:07 +0100 <dminuoso> You dont.
2022-02-10 15:05:14 +0100 <EvanR> in the sense of memorizing language to speak languages
2022-02-10 15:05:22 +0100 <cigsender> :q
2022-02-10 15:05:32 +0100cigsender(~cigsender@74.124.58.162) (Quit: leaving)
2022-02-10 15:05:38 +0100 <EvanR> more like picking up enough to figure out where the bathroom is xD
2022-02-10 15:06:27 +0100 <Andrew> exit
2022-02-10 15:07:08 +0100 <geekosaur> Graham31415, generally you'll find that things like use of Text will be specified ahead of time; even if you're picking up a random package poff of hackage you can inspect its dependencies
2022-02-10 15:07:21 +0100 <geekosaur> there's only a few packages where you need to care about things like this
2022-02-10 15:09:12 +0100 <Graham31415> On a related note: is there a `read` function that operates on Text, or should I accept that the Text needs to be `unpack`ed first?
2022-02-10 15:10:19 +0100 <EvanR> or do you want a proper parser
2022-02-10 15:11:12 +0100 <EvanR> another topic that likely "comes up pretty fast and soon"
2022-02-10 15:11:38 +0100noctux(~noctux@user/noctux) (Remote host closed the connection)
2022-02-10 15:11:46 +0100 <Graham31415> i'm just doing dumb stuff for now. Reading some files under /proc/ and summarising some fields.
2022-02-10 15:12:05 +0100 <EvanR> any reason it requires Text? xD
2022-02-10 15:12:15 +0100 <EvanR> if it's dumb, might as well be real dumb
2022-02-10 15:12:22 +0100slac25096(~slack1256@186.11.3.215)
2022-02-10 15:12:43 +0100 <EvanR> the String IO functions also work with unicode
2022-02-10 15:12:46 +0100 <Graham31415> i'm sure it doesn't, but i don't know what the best practices here are, and RIO claims to be best practices
2022-02-10 15:12:52 +0100 <EvanR> RIO?
2022-02-10 15:13:03 +0100razetime(~quassel@49.207.198.36) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-02-10 15:13:10 +0100 <Graham31415> https://www.fpcomplete.com/haskell/library/rio/
2022-02-10 15:13:31 +0100Putonlalla(~sapekiis@it-cyan.it.jyu.fi)
2022-02-10 15:13:31 +0100 <byorgey> I think RIO is one of the alternative Preludes
2022-02-10 15:13:39 +0100 <byorgey> https://hackage.haskell.org/package/rio
2022-02-10 15:14:38 +0100slack1256(~slack1256@191.126.227.64) (Ping timeout: 250 seconds)
2022-02-10 15:14:39 +0100 <byorgey> Graham31415: I don't think there's a version of 'read' that operates on Text, but you can easily define your own readT = read . unpack
2022-02-10 15:14:43 +0100 <sshine> Graham31415, https://hackage.haskell.org/package/text-2.0/docs/Data-Text-Read.html
2022-02-10 15:15:19 +0100 <sshine> byorgey, -^
2022-02-10 15:16:24 +0100 <byorgey> sshine: interesting. That's more limited than 'read', but it looks nice when you need to read some numbers. I didn't know that existed.
2022-02-10 15:16:46 +0100 <sshine> on the other hand, there isn't a tshow :: Show a => a -> Text besides 'pack . show'
2022-02-10 15:17:42 +0100 <EvanR> I'm not sure I'd file any alt prelude under best practices, except maybe when "best practice" is some reality distortion speak from higher up
2022-02-10 15:18:52 +0100noctux(~noctux@user/noctux)
2022-02-10 15:19:06 +0100 <sshine> I guess if there were an alternative prelude that was definitely a best practice, it'd substitute Prelude. :)
2022-02-10 15:19:57 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-10 15:19:57 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-10 15:19:57 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-10 15:19:57 +0100wroathe(~wroathe@user/wroathe)
2022-02-10 15:20:09 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-10 15:20:48 +0100 <sshine> Graham31415, when you make an open-source library, depending on RIO can be pretty heavy because what if they use another alternative prelude? then depending on your tiny library suddenly results in two alternative preludes plus all of their transitive dependencies.
2022-02-10 15:21:38 +0100 <sshine> Graham31415, when you make an app, then you can factor out all the stuff you might like to include in other apps into lightweight libraries, and for your app, since you don't expect that it'll become a library in itself, it can depend on something heavy that makes you happy, e.g. better defaults.
2022-02-10 15:21:40 +0100 <lyxia> or you can not care and let it be other's people's problem
2022-02-10 15:21:49 +0100 <EvanR> it's fine if you're dr strange and used to patching together multiverses while trying to get work done
2022-02-10 15:22:19 +0100 <Graham31415> those are some nice points
2022-02-10 15:22:48 +0100 <sshine> Graham31415, incidentally, people promoting RIO are app developers.
2022-02-10 15:22:56 +0100 <Graham31415> sure
2022-02-10 15:23:33 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net)
2022-02-10 15:23:35 +0100jalil(~jalil@2a01:e0a:277:4100:4b34:f28b:c1d1:3941) (Quit: jalil)
2022-02-10 15:23:43 +0100jalil(~jalil@2a01:e0a:277:4100:f726:20ac:8c7a:b279)
2022-02-10 15:23:45 +0100 <Graham31415> i'm learning Haskell as an intellectual curiousity, not as a CS researcher nor as an app developer
2022-02-10 15:24:12 +0100 <Ariakenom_> haskell is a great curiosity
2022-02-10 15:24:21 +0100 <Graham31415> But I'd rather start by learning a consistent subset of the ecosystem.
2022-02-10 15:24:30 +0100 <lyxia> it definitely kills cats
2022-02-10 15:24:45 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net) (Remote host closed the connection)
2022-02-10 15:24:46 +0100 <EvanR> the normal prelude is consistent
2022-02-10 15:25:08 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net)
2022-02-10 15:25:17 +0100 <Graham31415> Ok, no problem. You've convinced me to use the base Prelude.
2022-02-10 15:25:32 +0100 <Graham31415> (at least until I understand the trade offs)
2022-02-10 15:25:51 +0100 <EvanR> or not, you can surely parse /proc files however you want
2022-02-10 15:26:20 +0100 <Graham31415> Yeah, I could use a shell script and I'd have been done in 90 seconds.
2022-02-10 15:27:44 +0100 <EvanR> ah yes, a stringly typed language xD
2022-02-10 15:30:16 +0100 <EvanR> see also shelly for haskell shell stuff
2022-02-10 15:30:25 +0100Ranhir(~Ranhir@157.97.53.139) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/)
2022-02-10 15:30:43 +0100Pickchea(~private@user/pickchea)
2022-02-10 15:30:43 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2022-02-10 15:31:48 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net)
2022-02-10 15:32:20 +0100max22-(~maxime@2a01cb08833598000823846d04004043.ipv6.abo.wanadoo.fr)
2022-02-10 15:35:52 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com) (Ping timeout: 250 seconds)
2022-02-10 15:37:01 +0100nschoe_(~quassel@178.251.84.79) (Ping timeout: 240 seconds)
2022-02-10 15:38:35 +0100cosimone(~user@93-47-228-191.ip115.fastwebnet.it) (Quit: ERC (IRC client for Emacs 27.1))
2022-02-10 15:38:37 +0100cfricke(~cfricke@user/cfricke)
2022-02-10 15:39:46 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-02-10 15:39:47 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-02-10 15:39:52 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net) (Remote host closed the connection)
2022-02-10 15:39:53 +0100 <geekosaur> /proc is more or less designed for shell script parsing
2022-02-10 15:40:07 +0100 <geekosaur> or perl/python/etc.
2022-02-10 15:40:09 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net)
2022-02-10 15:40:33 +0100Ranhir(~Ranhir@157.97.53.139)
2022-02-10 15:48:42 +0100nschoe(~quassel@178.251.84.79)
2022-02-10 15:49:32 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-02-10 15:51:28 +0100zer0bitz(~zer0bitz@2001:2003:f74d:b800:3c9b:6dce:e374:3130) (Read error: Connection reset by peer)
2022-02-10 15:51:39 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-02-10 15:51:51 +0100Sgeo(~Sgeo@user/sgeo)
2022-02-10 15:51:52 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-02-10 15:53:14 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-10 15:55:42 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-10 15:55:42 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-10 15:55:42 +0100wroathe(~wroathe@user/wroathe)
2022-02-10 15:56:05 +0100slack1256(~slack1256@191.125.227.88)
2022-02-10 15:57:37 +0100mikoto-chan(~mikoto-ch@213.177.151.239)
2022-02-10 15:58:05 +0100slac25096(~slack1256@186.11.3.215) (Ping timeout: 256 seconds)
2022-02-10 15:58:25 +0100janus__janus
2022-02-10 15:59:17 +0100shriekingnoise(~shrieking@201.231.16.156)
2022-02-10 16:00:28 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-10 16:00:39 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2022-02-10 16:00:43 +0100yauhsien_(~yauhsien@61-231-45-223.dynamic-ip.hinet.net)
2022-02-10 16:00:46 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-10 16:02:23 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41)
2022-02-10 16:03:30 +0100 <anon66200164> I need to write a function that gives the sum of cubes of 1, 2,...n but I'm having trouble thinking about how to do this recursively here is what I've got so far https://paste.tomsmeding.com/GskJKzVU any help would be appreciated
2022-02-10 16:04:57 +0100yauhsien_(~yauhsien@61-231-45-223.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-02-10 16:05:21 +0100 <ski> can you express `cubed 3' in terms of `cubed 2' ?
2022-02-10 16:06:34 +0100 <geekosaur> they basically show you in the "self-similarity" section
2022-02-10 16:06:37 +0100cross_cross
2022-02-10 16:06:44 +0100 <anon66200164> n*n*n + (n-1)^3
2022-02-10 16:07:25 +0100 <anon66200164> I wrote the self similiarity part, I was just following what my lecturer was saying, divide and conquer approach
2022-02-10 16:08:22 +0100 <anon66200164> this perhaps cubes n>0 = (n*n*n) + cubes(n-1)
2022-02-10 16:09:37 +0100 <ski> that has a syntax error
2022-02-10 16:10:10 +0100 <EvanR> otoh the idea seems semi solid
2022-02-10 16:12:52 +0100 <janus> anon66200164: do you know how to fix the syntax?
2022-02-10 16:12:58 +0100 <anon66200164> so I tried this https://paste.tomsmeding.com/sQXju3NR and got *** Exception: stack overflow
2022-02-10 16:13:10 +0100 <anon66200164> janus: nope
2022-02-10 16:13:33 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-02-10 16:13:39 +0100 <ski> what is the purpose of the `cubes n>0' there ?
2022-02-10 16:14:03 +0100 <janus> the guard will be evaluated unconditionally. and the guard recurses...
2022-02-10 16:14:06 +0100 <anon66200164> so that when the base case is reached it stays above 1
2022-02-10 16:14:32 +0100 <ski> btw, note that `cubes n>0' is parsed as `(cubes n)>0'
2022-02-10 16:14:47 +0100 <anon66200164> oh
2022-02-10 16:14:47 +0100 <janus> % :info (>)
2022-02-10 16:14:48 +0100 <yahb> janus: type Ord :: * -> Constraint; class Eq a => Ord a where; ...; (>) :: a -> a -> Bool; ...; -- Defined in `GHC.Classes'; infix 4 >
2022-02-10 16:14:55 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-10 16:15:19 +0100 <ski> so, you have a recursive call to `cubes', with the same parameter, `n', and then you're checking if the result of this is positive
2022-02-10 16:16:19 +0100 <ski> janus : well, conditionally, namely if the actual parameter doesn't match `1' ..
2022-02-10 16:18:12 +0100 <anon66200164> oh wait
2022-02-10 16:18:54 +0100 <anon66200164> | n>0 = n*n*n ... and n>0 is the condition
2022-02-10 16:19:35 +0100 <ski> hm ?
2022-02-10 16:19:50 +0100 <janus> i think it seems sensible to remove the recursion from the guard
2022-02-10 16:20:08 +0100vysn(~vysn@user/vysn)
2022-02-10 16:20:46 +0100 <anon66200164> https://paste.tomsmeding.com/bOjUcPAj
2022-02-10 16:21:02 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-02-10 16:21:14 +0100 <anon66200164> cubes (n>0) didn't return a Bool right?
2022-02-10 16:21:37 +0100 <ski> `cubes n>0' is a `Bool', though
2022-02-10 16:21:50 +0100 <ski> `cubes (n>0)' is a type error
2022-02-10 16:22:19 +0100 <anon66200164> I don't think I understand the type error
2022-02-10 16:23:07 +0100 <ski> `n' is an `Integer'. `n>0' is a `Bool'. so, `cubes (n>0)' tries to pass a `Bool' as argument to `cubes'. but `cubes' accepts an `Integer' as input, not a `Bool'
2022-02-10 16:23:41 +0100 <EvanR> my god it's full of quotes xD
2022-02-10 16:23:44 +0100slac40329(~slack1256@186.11.3.215)
2022-02-10 16:23:54 +0100 <anon66200164> ohhh
2022-02-10 16:23:59 +0100 <anon66200164> I see it I think
2022-02-10 16:24:06 +0100 <ski> @remember EvanR my god it's full of quotes xD
2022-02-10 16:24:06 +0100 <lambdabot> Done.
2022-02-10 16:24:11 +0100 <ski> there, i quoted you :)
2022-02-10 16:24:47 +0100 <anon66200164> cubes (n-1) is where the type error occurs?
2022-02-10 16:24:52 +0100 <EvanR> when lambdabot is assimilated into the metaverse that'll come back to haunt me
2022-02-10 16:25:03 +0100 <ski> anon66200164 : no. that one is fine. no type error there
2022-02-10 16:26:25 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-02-10 16:26:25 +0100 <ski> anon66200164 : anyway, your last paste (which i missed at first) doesn't have any type error
2022-02-10 16:26:33 +0100slack1256(~slack1256@191.125.227.88) (Ping timeout: 268 seconds)
2022-02-10 16:27:09 +0100 <anon66200164> I need to find more recursion problems to practice
2022-02-10 16:27:19 +0100 <ski> anon66200164 : btw, why test for `n>0', when you have `1' as base case ?
2022-02-10 16:27:38 +0100 <ski> (also, one pair of brackets in that code is redundant)
2022-02-10 16:27:56 +0100 <anon66200164> n*n*n?
2022-02-10 16:27:58 +0100 <ski> (and you could write `n^3', if you wanted to)
2022-02-10 16:27:59 +0100 <ski> yes
2022-02-10 16:28:07 +0100 <anon66200164> fair point
2022-02-10 16:28:46 +0100 <anon66200164> won't 1 be the lowest if n>0?
2022-02-10 16:28:58 +0100 <anon66200164> so that will meet my base case
2022-02-10 16:29:32 +0100 <ski> `n>0' is only tested if the base case match, i.e. matching the argument against `1', *fails*
2022-02-10 16:29:53 +0100 <ski> there's no need for the base case to overlap with the recursive case
2022-02-10 16:32:03 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-02-10 16:32:14 +0100 <anon66200164> should the base case be 0?
2022-02-10 16:32:35 +0100 <ski> is `cubes 0' sensible ? if it is, what should its value be ?
2022-02-10 16:32:51 +0100 <anon66200164> 0
2022-02-10 16:32:55 +0100 <anon66200164> cubes 0 = 0
2022-02-10 16:33:36 +0100 <ski> if you have that as base case, will the value of `cubes n' for `n' greater than `0' keep the same as before ?
2022-02-10 16:33:57 +0100 <EvanR> just an idea, way back at the beginning of this task, you could have written a short table of what the answers should be for each input 0, 1, 2, 3... just to check against
2022-02-10 16:34:12 +0100 <EvanR> a golden table sort of
2022-02-10 16:34:18 +0100 <anon66200164> https://paste.tomsmeding.com/LkfYYZZd
2022-02-10 16:34:19 +0100 <ski> they already did (except for `0')
2022-02-10 16:34:25 +0100 <EvanR> ah, then put zero xD
2022-02-10 16:34:41 +0100 <EvanR> join the first millenium
2022-02-10 16:34:52 +0100 <EvanR> millennium
2022-02-10 16:35:00 +0100 <EvanR> mmillenniumm
2022-02-10 16:35:09 +0100 <anon66200164> where the base case is zero, it still works
2022-02-10 16:35:13 +0100 <ski> good
2022-02-10 16:35:27 +0100 <anon66200164> I'm a bit slow, sorry
2022-02-10 16:35:55 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com)
2022-02-10 16:35:57 +0100 <anon66200164> A programme that goes through and shows each step of the evaluation would be useful i.e. =>
2022-02-10 16:36:11 +0100 <ski> (it is also possible to sensibly extend this to work for negative integers .. but unless you wish to try thinking about that, this is probably a good place to decide you're satisfied with `cubes')
2022-02-10 16:36:23 +0100 <ski> well, you can easily do that, by hand
2022-02-10 16:36:40 +0100 <ski> cubes 4
2022-02-10 16:36:57 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds)
2022-02-10 16:36:58 +0100 <ski> = 4*4*4 + cubes (4-1)
2022-02-10 16:37:02 +0100 <ski> = 4*4*4 + cubes 3
2022-02-10 16:37:10 +0100 <ski> = 4*4*4 + 3*3*3 + cubes (3-1)
2022-02-10 16:37:13 +0100 <ski> = 4*4*4 + 3*3*3 + cubes 2
2022-02-10 16:37:13 +0100 <anon66200164> a different task but the evaluation I typed by hand https://paste.tomsmeding.com/HfTHWBmi
2022-02-10 16:37:23 +0100 <ski> = 4*4*4 + 3*3*3 + 2*2*2 + cubes (2-1)
2022-02-10 16:37:28 +0100 <ski> = 4*4*4 + 3*3*3 + 2*2*2 + cubes 1
2022-02-10 16:37:36 +0100 <ski> = 4*4*4 + 3*3*3 + 2*2*2 + 1*1*1 + cubes (1-1)
2022-02-10 16:37:39 +0100 <ski> = 4*4*4 + 3*3*3 + 2*2*2 + 1*1*1 + cubes 0
2022-02-10 16:37:41 +0100 <ski> = 4*4*4 + 3*3*3 + 2*2*2 + 1*1*1 + 0
2022-02-10 16:37:51 +0100 <ski> .. and then you start performing multiplications and additions ..
2022-02-10 16:38:08 +0100 <anon66200164> yup
2022-02-10 16:38:35 +0100 <anon66200164> ski: that helps me see it happening if that makes sense
2022-02-10 16:39:03 +0100 <ski> yes .. when starting out with recursion, hand-tracing through a couple of examples like this can help
2022-02-10 16:39:23 +0100 <ski> (after a while, you start to get a feel for this, and need to see a trace less)
2022-02-10 16:39:58 +0100waleee(~waleee@h-98-128-229-110.NA.cust.bahnhof.se)
2022-02-10 16:40:29 +0100skiwould suggest writing `=' (equals, is equal to), rather than (`=>', presumably reduces/simplifies (to))
2022-02-10 16:41:09 +0100 <anon66200164> ok, I only got half the solution
2022-02-10 16:41:24 +0100 <ski> (hm, and your evaluation/reduction trace is somewhat confusingly written, in that paste)
2022-02-10 16:41:25 +0100slac40329(~slack1256@186.11.3.215) (Ping timeout: 240 seconds)
2022-02-10 16:41:26 +0100phma(~phma@host-67-44-209-72.hnremote.net) (Read error: Connection reset by peer)
2022-02-10 16:41:39 +0100 <ski> half ?
2022-02-10 16:41:44 +0100 <anon66200164> yh it's a bit rough
2022-02-10 16:42:00 +0100 <anon66200164> ski: negative integers going towards zero
2022-02-10 16:42:10 +0100 <ski> ah, right, the negatives
2022-02-10 16:42:21 +0100 <anon66200164> | otherwise = n^3 + cubes (n+1)
2022-02-10 16:42:52 +0100 <ski> what should `cubes (-1)' be ?
2022-02-10 16:43:10 +0100 <anon66200164> cubes 0 = 0
2022-02-10 16:43:28 +0100 <anon66200164> oh
2022-02-10 16:43:30 +0100 <anon66200164> umm
2022-02-10 16:43:45 +0100 <anon66200164> -1
2022-02-10 16:43:47 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com) (Remote host closed the connection)
2022-02-10 16:43:50 +0100 <ski> no
2022-02-10 16:44:01 +0100 <anon66200164> f
2022-02-10 16:44:03 +0100 <ski> what should `cubes n - cubes (n-1)' be ?
2022-02-10 16:45:03 +0100 <anon66200164> for n = ??
2022-02-10 16:45:09 +0100 <ski> for any `n'
2022-02-10 16:45:51 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 16:45:59 +0100 <ski> what is the addition from `cubes 2' to `cubes 3' ?
2022-02-10 16:46:03 +0100 <ski> what is the addition from `cubes 1' to `cubes 2' ?
2022-02-10 16:46:07 +0100 <ski> what is the addition from `cubes 0' to `cubes 1' ?
2022-02-10 16:46:42 +0100 <anon66200164> n=2: = (2)^3 + cubes 1, = 8 + 1
2022-02-10 16:47:03 +0100 <anon66200164> ski: I'm sorry, I don't understand
2022-02-10 16:47:25 +0100 <ski> well, you answered one of those three questions. can you answer the other two ?
2022-02-10 16:47:49 +0100 <ski> well .. ok
2022-02-10 16:47:56 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 16:47:57 +0100 <anon66200164> I'm just typing it out
2022-02-10 16:48:04 +0100 <ski> the answer was actually not right
2022-02-10 16:48:11 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 16:48:18 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 16:48:32 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 16:48:40 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 16:48:54 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 16:48:57 +0100 <anon66200164> n=3: = 3^3 + cubes 2, = 9 + 2^3 + cubes 1, = 27 + 8 + 1, =36
2022-02-10 16:49:02 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 16:49:16 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 16:49:17 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 250 seconds)
2022-02-10 16:49:19 +0100 <ski> yes, that's the first question
2022-02-10 16:49:20 +0100 <anon66200164> n=0, fail
2022-02-10 16:49:23 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 16:49:38 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 16:49:39 +0100 <anon66200164> n=0, = 0
2022-02-10 16:49:39 +0100 <ski> cubes 3 = 3^3 + cubes 2
2022-02-10 16:49:43 +0100 <ski> so
2022-02-10 16:49:45 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 16:49:53 +0100 <ski> cubes 3 - cubes 2 = 3^3
2022-02-10 16:49:59 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 16:50:04 +0100 <ski> next question is :
2022-02-10 16:50:06 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 16:50:08 +0100Graham31415(~Graham314@213.237.82.193) (Quit: Client closed)
2022-02-10 16:50:12 +0100 <ski> cubes 2 = 2^3 + cubes 1
2022-02-10 16:50:13 +0100 <ski> so
2022-02-10 16:50:21 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 16:50:27 +0100 <ski> cubes 2 - cubes 1 = 2^3
2022-02-10 16:50:28 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 16:50:42 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 16:50:49 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 16:50:56 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds)
2022-02-10 16:51:05 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 16:51:12 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 16:51:13 +0100ChanServ+o geekosaur
2022-02-10 16:51:19 +0100ChanServ+q lavaman!~lavaman@98.38.249.169$##fix-your-connection
2022-02-10 16:51:28 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 16:51:36 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 16:51:44 +0100 <geekosaur> I think you wanted ban, not quiet
2022-02-10 16:51:50 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 16:51:57 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 16:52:05 +0100xdej_xdej
2022-02-10 16:52:13 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 16:52:15 +0100geekosaur+b lavaman!~lavaman@98.38.249.169$##fix-your-connection
2022-02-10 16:52:20 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 16:52:24 +0100ChanServ-q lavaman!~lavaman@98.38.249.169$##fix-your-connection
2022-02-10 16:52:45 +0100geekosaur-o geekosaur
2022-02-10 16:52:46 +0100 <ski> mm, better. ty
2022-02-10 16:53:02 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Quit: Konversation terminated!)
2022-02-10 16:53:23 +0100 <ski> anon66200164 : anyway, last of those three questions :
2022-02-10 16:53:32 +0100 <ski> cubes 1 = 1^3 + cubes 0
2022-02-10 16:53:34 +0100 <ski> so
2022-02-10 16:53:45 +0100 <ski> cubes 1 - cubes 0 = 1^3
2022-02-10 16:53:58 +0100 <ski> anon66200164 : do you follow that ?
2022-02-10 16:54:04 +0100 <anon66200164> Yes
2022-02-10 16:54:10 +0100 <ski> so, to summarize :
2022-02-10 16:54:10 +0100 <anon66200164> one question though
2022-02-10 16:54:19 +0100 <ski> yes ?
2022-02-10 16:54:37 +0100 <anon66200164> cubes 0 = 0 but n>0 is false
2022-02-10 16:54:49 +0100 <ski> what about it ?
2022-02-10 16:55:08 +0100 <janus> you had two heads
2022-02-10 16:55:10 +0100 <anon66200164> what does it evaluate to when it's false if I don't have an otherwise case
2022-02-10 16:55:21 +0100 <anon66200164> janus: I barely have 1 head
2022-02-10 16:56:19 +0100 <ski> anon66200164 : in that case, you'll get a failure to compute an answer. your function will be undefined in that case. a partial function
2022-02-10 16:56:39 +0100 <ski> anyway :
2022-02-10 16:56:45 +0100 <ski> cubes 3 - cubes 2 = 3^3
2022-02-10 16:56:46 +0100 <ski> cubes 2 - cubes 1 = 2^3
2022-02-10 16:56:51 +0100 <ski> cubes 1 - cubes 0 = 1^3
2022-02-10 16:57:06 +0100 <ski> so .. what is `cubes n - cubes (n-1)' ?
2022-02-10 16:57:47 +0100 <janus> in this paste there are two lines that have 'cubes ... = ...'. are those not heads? https://paste.tomsmeding.com/bOjUcPAj or have i messed up the terminology?
2022-02-10 16:58:20 +0100 <ski> nothing wrong with having two defining equations like that, janus
2022-02-10 16:58:50 +0100 <geekosaur> it's shorthand for having one definition that immediately does a case
2022-02-10 16:58:53 +0100 <janus> ski: but the 'cubes ...' part, is that not a 'function head'?
2022-02-10 16:58:54 +0100 <anon66200164> ski: I don't know :(
2022-02-10 16:58:55 +0100 <geekosaur> likewise with guards
2022-02-10 16:59:04 +0100 <anon66200164> fml!!!!!
2022-02-10 16:59:11 +0100vysn(~vysn@user/vysn) (Ping timeout: 252 seconds)
2022-02-10 16:59:19 +0100 <janus> what what would you call it? left hand sides?
2022-02-10 16:59:53 +0100 <ski> janus : i'd probably call them "definienda" .. but i guess "function head" is also okay. or left-hand side
2022-02-10 17:00:21 +0100 <janus> i was just surprised because searching for 'function head' gives me completely misleading results
2022-02-10 17:00:37 +0100 <janus> dunno where to find a good reference for this
2022-02-10 17:00:58 +0100jao(~jao@211.68.17.95.dynamic.jazztel.es)
2022-02-10 17:01:04 +0100 <ski> ("definienda" being plural of "definiendum", "that which is/was to be defined". "definiens" (plural "definientia", or "body", or right-hand side, being "that which it is defined as / to be")
2022-02-10 17:01:12 +0100 <ski> anon66200164 : "fml" ?
2022-02-10 17:02:01 +0100 <janus> it means 'somebody have intercourse with my life'. it's bad language
2022-02-10 17:02:18 +0100 <anon66200164> https://www.merriam-webster.com/words-at-play/what-does-fml-mean as in, I don't understand and am to stupid to answer the question
2022-02-10 17:02:19 +0100 <ski> oh
2022-02-10 17:02:41 +0100 <ski> anon66200164 : can you spot the pattern, in those three equalities, just above ?
2022-02-10 17:02:44 +0100geekosaurlooks at the pattern and gets the answer
2022-02-10 17:02:48 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
2022-02-10 17:02:56 +0100 <anon66200164> 0^0
2022-02-10 17:02:59 +0100 <anon66200164> 0^3
2022-02-10 17:03:28 +0100 <janus> > 0^0
2022-02-10 17:03:30 +0100 <lambdabot> 1
2022-02-10 17:03:35 +0100 <polyphem> anon66200164: for "any" n
2022-02-10 17:03:46 +0100 <ski> let's take it one step at a time
2022-02-10 17:03:49 +0100 <anon66200164> n^£
2022-02-10 17:03:56 +0100 <anon66200164> n^3
2022-02-10 17:04:22 +0100 <ski> yes, `cubes n - cubes (n-1) = n^3' does look like a sensible extrapolation from those three cases
2022-02-10 17:04:35 +0100 <anon66200164> cubes n - cubes (n-1) =n^3
2022-02-10 17:04:44 +0100 <ski> for `n = 3', or `n = 2', or `n = 1', it does specialize to those three equalities
2022-02-10 17:05:21 +0100 <ski> now, this equality is only known to hold for positive values of `n' (because `cubes n' is not defined for negative `n', yet)
2022-02-10 17:06:19 +0100 <ski> however, when given a choice of how to define `cubes n', for negative `n', it does make sense to let `cubes n - cubes (n-1)' keep being `n^3', just as it was for positive `n', wouldn't you say ?
2022-02-10 17:06:43 +0100 <ski> (as opposed to `cubes n - cubes (n-1)' suddenly being something else than `n^3', for non-positive `n')
2022-02-10 17:07:21 +0100 <anon66200164> I think I get it
2022-02-10 17:07:21 +0100ChanServ+o litharge
2022-02-10 17:07:22 +0100litharge-bo lavaman!~lavaman@98.38.249.169$##fix-your-connection litharge
2022-02-10 17:07:24 +0100 <ski> this suggests that the sensible thing to try, is to insist that `cubes n - cubes (n-1) = n^3' is true for all integers `n', not just the positive integers `n'
2022-02-10 17:07:50 +0100 <ski> and then, if we accept this, we can use this to our advantage, to figure out what `cubes (-1)' ought to be !
2022-02-10 17:07:51 +0100 <EvanR> lavaman gets an assist from rockman
2022-02-10 17:08:06 +0100 <ski> (and `cubes (-2)' and `cubes (-3)' and so on ..)
2022-02-10 17:08:31 +0100 <ski> anon66200164 : so .. each time, as you go "backwards", you subtract a cube
2022-02-10 17:10:20 +0100 <anon66200164> Yeah
2022-02-10 17:10:36 +0100 <anon66200164> I think I understand, I just need some time to process it
2022-02-10 17:10:51 +0100 <ski> yea, there's no hurry
2022-02-10 17:11:01 +0100 <anon66200164> I'm saving a screen shot of this convo, I hope that's alright
2022-02-10 17:11:13 +0100 <ski> should be fine
2022-02-10 17:11:30 +0100jgeerds_(~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 260 seconds)
2022-02-10 17:11:32 +0100 <ski> (or you could perhaps copy the text to a text file)
2022-02-10 17:12:06 +0100Batzy(~quassel@user/batzy)
2022-02-10 17:12:09 +0100nsilv-phone(~nsilv-pho@37.160.46.122)
2022-02-10 17:12:18 +0100 <Batzy> hi everyone i have a quick question
2022-02-10 17:12:18 +0100 <janus> anon66200164: look, you're on tv: https://ircbrowse.tomsmeding.com/browse/lchaskell?events_page=4262
2022-02-10 17:12:44 +0100nsilv-phone(~nsilv-pho@37.160.46.122) (Client Quit)
2022-02-10 17:13:01 +0100 <janus> Batzy: please ask your quick question
2022-02-10 17:13:02 +0100 <Batzy> im wondering if i should choose haskell for a project i am working on. but i want to know if haskell has a library to deal with matrices and also to do things like modular matrix multiplication and inverses etc
2022-02-10 17:14:03 +0100 <janus> @package hmatrix
2022-02-10 17:14:03 +0100 <lambdabot> https://hackage.haskell.org/package/hmatrix
2022-02-10 17:14:33 +0100 <Batzy> janus: not to beat a dead horse, but it can do modular matrix arithmetic you say?
2022-02-10 17:15:25 +0100 <janus> Batzy: looks like yes: https://hackage.haskell.org/package/hmatrix-0.20.2/docs/Numeric-LinearAlgebra-Data.html#t:Mod
2022-02-10 17:15:33 +0100 <Batzy> thanks guys
2022-02-10 17:15:51 +0100 <Batzy> im wondering if haskell can do what i need to do faster than "functional python'
2022-02-10 17:16:07 +0100 <janus> Batzy: that Mod can then be used as a Numeric: https://hackage.haskell.org/package/hmatrix-0.20.2/docs/Numeric-LinearAlgebra.html#t:Numeric
2022-02-10 17:16:08 +0100 <Batzy> i did what im trying to do in a very OOP way, and it's clearly introducing some slowness
2022-02-10 17:16:13 +0100jackson99(~bc8147f2@cerf.good1.com)
2022-02-10 17:16:39 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-02-10 17:16:46 +0100 <Batzy> janus: essentially i am recusrively generating matrix products like XXYYXXXY
2022-02-10 17:16:52 +0100 <Batzy> recursively*
2022-02-10 17:16:59 +0100 <Batzy> i tried doing this in a tree structure in python
2022-02-10 17:17:00 +0100dajoer(~david@user/gvx) (Quit: leaving)
2022-02-10 17:17:10 +0100 <janus> but to get the inverse you'd need it to be a Field...
2022-02-10 17:17:17 +0100 <Batzy> it works fine, but takesl ike 4 hours when sage takes 8 minutes
2022-02-10 17:18:29 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c)
2022-02-10 17:18:43 +0100 <janus> well now you're asking about python ;) i think you need to use these linear algebra libraries to get really good performance
2022-02-10 17:18:57 +0100 <Batzy> yes in python i was using numpy and sympy
2022-02-10 17:18:59 +0100 <janus> as you can see from the hackage page, hmatrix can link with OpenBLAS
2022-02-10 17:19:11 +0100 <Batzy> openblas doesnt do modular arithmetic i am pretty sure
2022-02-10 17:19:41 +0100 <janus> i don't know the details of this, so i will stop talking now :O
2022-02-10 17:19:59 +0100 <Batzy> yeah my first idea was to use somethign that linked to openblas
2022-02-10 17:20:16 +0100 <Batzy> but i couldnt find anything about openblas supporting modular multiplications and stuff
2022-02-10 17:20:40 +0100 <Batzy> i think i know someone who would know actually
2022-02-10 17:22:32 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) (Ping timeout: 240 seconds)
2022-02-10 17:23:07 +0100 <Batzy> janus: thanks
2022-02-10 17:23:13 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 17:23:24 +0100 <anon66200164> would it be possible to solve this using recursion? sumPairs [] = 0 -- e.g. sumPairs [(1,2), (3,4)] =10
2022-02-10 17:24:03 +0100 <anon66200164> janus: I am not famous anymore
2022-02-10 17:24:06 +0100 <ski> anon66200164 : yes
2022-02-10 17:25:30 +0100xff0x(~xff0x@2001:1a81:53bc:500:d58f:5284:91ba:f00d) (Ping timeout: 250 seconds)
2022-02-10 17:25:36 +0100 <jackson99> anon you can also solve it with sum + map
2022-02-10 17:25:50 +0100 <anon66200164> I only have basic tools atm
2022-02-10 17:26:01 +0100 <janus> jackson99: prelude sum won't work on pairs
2022-02-10 17:26:02 +0100 <anon66200164> sumPair(x:xs) maybe
2022-02-10 17:26:19 +0100 <anon66200164> sumPairs :: [(Integer, Integer)] -> Integer
2022-02-10 17:26:24 +0100 <jackson99> janus, which is why you'd use map first
2022-02-10 17:26:45 +0100 <ski> anon66200164 : it would follow the basic same pattern as `myLength'
2022-02-10 17:27:44 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c)
2022-02-10 17:27:57 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-10 17:28:07 +0100skiidly wonders whether anon66200164 decided to set `cubes n', for negative `n', aside, atm
2022-02-10 17:28:20 +0100 <jackson99> > (sum . map (uncurry (+))) [(1,2), (3,4)]
2022-02-10 17:28:22 +0100 <lambdabot> 10
2022-02-10 17:29:33 +0100 <anon66200164> sumPairs :: [(Integer] -> Integer sumPairs [] = 0 sumPair (x:y:zs) = (x+y) + sumPairs zs
2022-02-10 17:29:41 +0100 <anon66200164> but I get a parse error
2022-02-10 17:30:05 +0100 <janus> unmatched paren in '[(Integer]'
2022-02-10 17:30:40 +0100 <jackson99> x:y:zs would typecheck if you had a list of numbers, but you have a list of tuples that contain numbers
2022-02-10 17:30:46 +0100 <c_wraith> also, that type seems wrong. as it stands, it's "sum of an even-length list", not a sum of pairs
2022-02-10 17:32:14 +0100 <ski> s/tuples/pairs/, to be specific
2022-02-10 17:32:39 +0100yhsiveht(~Nishant@2405:201:f005:c007:51b9:2550:9b70:b031) (Quit: Leaving)
2022-02-10 17:33:06 +0100 <anon66200164> how would I use tuples here?
2022-02-10 17:33:16 +0100 <anon66200164> I haven't come across them yet
2022-02-10 17:33:19 +0100 <ski> > (1,2) -- this is a pair
2022-02-10 17:33:20 +0100 <lambdabot> (1,2)
2022-02-10 17:33:46 +0100 <ski> > let swapPair (x,y) = (y,x) in swapPair (1,2)
2022-02-10 17:33:48 +0100 <lambdabot> (2,1)
2022-02-10 17:34:59 +0100Pickchea(~private@user/pickchea) (Ping timeout: 256 seconds)
2022-02-10 17:35:00 +0100 <janus> a pair is a tuple with two elements. your exercise involves pairs, but because pairs are tuples, it also involves tuples.
2022-02-10 17:35:19 +0100 <ski> > (1,2) : [(2,3),(3,4)] -- this is a list of pairs
2022-02-10 17:35:20 +0100 <lambdabot> [(1,2),(2,3),(3,4)]
2022-02-10 17:35:53 +0100xff0x(~xff0x@2001:1a81:53bc:500:d58f:5284:91ba:f00d)
2022-02-10 17:37:30 +0100 <anon66200164> *** Exception: assessment.hs:7:1-15: Non-exhaustive patterns in function sumPairs?
2022-02-10 17:37:41 +0100 <ski> <c_wraith> also, that type seems wrong. as it stands, it's "sum of an even-length list", not a sum of pairs
2022-02-10 17:38:11 +0100 <ski> perhaps show your code ?
2022-02-10 17:39:22 +0100 <anon66200164> https://paste.tomsmeding.com/Wo7W9hCO
2022-02-10 17:39:47 +0100 <ski> yes, c_wraith's comment is relevant here
2022-02-10 17:40:12 +0100 <ski> also, you've defined two functions, `sumPair' and `sumPairs' .. did you intend to only define one ?
2022-02-10 17:41:34 +0100 <ski> (also, it's possible best here to not ask the implementation for what it thinks the type signature should be, but rather for you yourself to spell out what you think the type signature should be. if you want to, after your definition works, you could remove (or comment out) the type signature, and ask for what the implementation infers it could be)
2022-02-10 17:42:58 +0100 <anon66200164> I will be back soon, I need to go to a seminar
2022-02-10 17:43:28 +0100 <anon66200164> I'll keep this window open, hopefully it doesn't close
2022-02-10 17:43:34 +0100skiglances around nervously
2022-02-10 17:43:48 +0100 <janus> anon66200164: save this link: https://ircbrowse.tomsmeding.com/browse/lchaskell?events_page=4263
2022-02-10 17:44:10 +0100 <anon66200164> janus: saved
2022-02-10 17:45:26 +0100 <jackson99> it is a bit annoying having to temporarily add Show a constraint in entire call chain when using Debug.traceShow, but I suppose there's no way around it?
2022-02-10 17:46:57 +0100nschoe(~quassel@178.251.84.79) (Ping timeout: 240 seconds)
2022-02-10 17:47:49 +0100 <monochrom> w00t it's Haskell Weekly News day again!
2022-02-10 17:49:10 +0100shaprdances cheerfully
2022-02-10 17:49:34 +0100 <Hecate> jackson99: I don't think so, no
2022-02-10 17:49:42 +0100 <Hecate> maybe with Heap inspection? :p
2022-02-10 17:49:59 +0100 <shapr> experience report: haskell-language-server 1.6.1 no longer crashes on the work codebase with its 639126 lines of Haskell (counting non-blank lines only).
2022-02-10 17:50:02 +0100 <shapr> I can code much faster!
2022-02-10 17:50:05 +0100skimisread "Compiler Engineer at Mercury" as "Compiler Engineer for Mercury"
2022-02-10 17:50:32 +0100 <janus> couldn't you make a Debug typeclass that would normally contain no methods. but when debugging, you'd make it such that it requires Show
2022-02-10 17:50:49 +0100 <janus> then you'd only have to change two places instead of the whole call chain
2022-02-10 17:50:51 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net) (Ping timeout: 256 seconds)
2022-02-10 17:51:35 +0100 <ski> you'd still need to add `Debug' wherever you might want to debug
2022-02-10 17:51:48 +0100 <ski> i guess you could as well use CPP ?
2022-02-10 17:52:26 +0100 <janus> right, you'd add Debug everywhere ;) but haskell wouldn't need to actually pass a dictionary if there are no methods, right
2022-02-10 17:53:28 +0100 <janus> CPP to hide/add Show constraints on the whole call chain would be more verbose than a permanent Debug constraint
2022-02-10 17:54:15 +0100 <ski> i dunno if GHC would optimize away an empty instance dictionary
2022-02-10 17:55:04 +0100 <Franciman> one thing i'd like to think about more is comments attached to syntax
2022-02-10 17:55:11 +0100 <Franciman> you can use then to add debug messages that don't clutter your code
2022-02-10 17:55:17 +0100 <Franciman> so you don't have to clutter code with Debug.trace
2022-02-10 17:55:42 +0100 <Franciman> but you can just add and remove special comments, which usually also look visually different thanks to syntax coloring
2022-02-10 17:55:49 +0100 <Franciman> and you can disable them all at once if you wish
2022-02-10 17:55:55 +0100 <ski> is that like attributes, like they have in some languages ?
2022-02-10 17:56:03 +0100 <Franciman> yes, a limited form
2022-02-10 17:57:12 +0100monaaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
2022-02-10 17:57:19 +0100 <Franciman> one usually looks for the line at which code is written, so you can attach comments to the next line of program. But is this still useful for a functional, declarative language?
2022-02-10 17:57:25 +0100monaaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 17:58:16 +0100 <oak-> I'm trying to use servant-client in frontend with GHCJS. Any suggestions which library I should use? servant-client-ghcjs isn't available in Hackage for some reason, but I'm not sure is that the way to go
2022-02-10 17:58:21 +0100 <EvanR> jackson99, at least when the thing being showed is monomorphic you don't need a constraint. Where it gets real ugly is HasCallStack xD
2022-02-10 17:58:36 +0100 <EvanR> then there's no way around it
2022-02-10 17:58:41 +0100 <Hecate> oak-: you're stuck on an older version of GHC if you go the GHCJS road
2022-02-10 17:58:49 +0100 <Hecate> did you try generating Axios bindings first?
2022-02-10 17:58:51 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 18:01:09 +0100 <oak-> Are you saying using GHCJS altogether for creating web frontend (I planned using Reflex-DOM) would be the "GHCJS road"? Or just using the servant-client-ghcjs? :P
2022-02-10 18:01:53 +0100 <oak-> I planned on using Reflex-Dom, but I could of course consider another options as well
2022-02-10 18:02:15 +0100mvk(~mvk@2607:fea8:5cdc:bf00::f276)
2022-02-10 18:03:32 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2022-02-10 18:04:04 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-02-10 18:04:13 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-10 18:04:16 +0100 <vaibhavsagar[m]> oak: I don't believe there's a GHCJS 9.0 or 9.2
2022-02-10 18:05:02 +0100 <janus> but servant-client works for 8.10
2022-02-10 18:05:57 +0100shailangsa(~shailangs@host217-39-45-199.range217-39.btcentralplus.com) (Remote host closed the connection)
2022-02-10 18:06:18 +0100 <vaibhavsagar[m]> I remember having issues when I tried to use `servant-client-ghcjs`, and back in the day I helped with https://github.com/haskell-servant/servant-jsaddle which was our solution to this problem
2022-02-10 18:06:19 +0100 <oak-> I don't have problem using GHCJS 8.10.7, but I'm wondering which package provides the servant-client functionality, should I use servant-client-ghcjs?
2022-02-10 18:06:26 +0100 <vaibhavsagar[m]> (we also used reflex-dom)
2022-02-10 18:09:52 +0100monaaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Quit: WeeChat 3.4)
2022-02-10 18:10:09 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 18:15:33 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-02-10 18:16:32 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 18:17:31 +0100polyphem_(~rod@2a02:810d:840:8754:f9b2:95ef:efe9:3c0f)
2022-02-10 18:19:31 +0100polyphem(~rod@2a02:810d:840:8754:e075:74dd:6e37:209d) (Ping timeout: 245 seconds)
2022-02-10 18:20:35 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
2022-02-10 18:21:23 +0100alp(~alp@user/alp) (Ping timeout: 250 seconds)
2022-02-10 18:25:32 +0100mbuf(~Shakthi@110.225.224.158) (Quit: Leaving)
2022-02-10 18:31:02 +0100Jing(~hedgehog@240e:390:7c53:a7e1:3c97:bf3a:3e4c:7eb2) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-10 18:32:18 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) (Remote host closed the connection)
2022-02-10 18:32:40 +0100alp(~alp@user/alp)
2022-02-10 18:32:51 +0100burnsidesLlama(~burnsides@dhcp168-022.wadham.ox.ac.uk)
2022-02-10 18:34:03 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-10 18:35:06 +0100chele(~chele@user/chele) (Remote host closed the connection)
2022-02-10 18:35:06 +0100 <Batzy> janus: now for a slightly more annoying question. If im recursively generating matrix products for say 4 matrices and doing operations like A*B*C*D*D*D*D*D, would you expect haskell with hmatrix to be able to do it much faster than python with numpy?
2022-02-10 18:35:34 +0100 <Batzy> i need to recursively generate matrix products of a certain length (call it n)
2022-02-10 18:36:05 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c)
2022-02-10 18:36:17 +0100 <Batzy> i dont know haskell so i just want to see if it'll even be worth it to learn to do this or if the speed is probably comparable
2022-02-10 18:36:40 +0100Everything(~Everythin@37.115.210.35)
2022-02-10 18:37:10 +0100 <EvanR> haskell is cool but it's not exactly a numerics crunching environment. On hmatrix, aiui it's an FFI binding to BLAS
2022-02-10 18:37:47 +0100 <Batzy> EvanR: what do you classify as a numerics crunching environment
2022-02-10 18:37:49 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 18:38:03 +0100phma(~phma@host-67-44-209-72.hnremote.net)
2022-02-10 18:38:19 +0100 <EvanR> fortran, matlab, julia, stuff like that
2022-02-10 18:38:51 +0100 <EvanR> if python is number crunching I guess there's hope for us
2022-02-10 18:39:08 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-02-10 18:40:24 +0100econo(uid147250@user/econo)
2022-02-10 18:42:10 +0100 <Batzy> EvanR: the thing is i want a recursive tree structure too. The issue is i actually made these trees in python and it was sloooooooooooooooooooooooooooooooooooooooooooooow
2022-02-10 18:42:18 +0100 <Batzy> i guess julia and so on can do that
2022-02-10 18:42:24 +0100 <Batzy> and still be faster
2022-02-10 18:42:41 +0100 <Batzy> and i hear it looks pythony
2022-02-10 18:42:43 +0100 <EvanR> identify why it was slow
2022-02-10 18:42:53 +0100 <Batzy> EvanR: artifacts of the object orientation
2022-02-10 18:43:21 +0100 <EvanR> 🤔
2022-02-10 18:43:27 +0100 <Batzy> i could strip it down, but then it would be very close to the functional implementation anyways, and still a tad more memory inefficient
2022-02-10 18:43:51 +0100 <Batzy> the fact is i dont really *need* like a class attribute, i was just leaning on them as a crutch during my prototyping
2022-02-10 18:43:59 +0100 <Batzy> attributes*
2022-02-10 18:44:05 +0100 <Batzy> so im sort of convinced i want to do it functionally anyways
2022-02-10 18:45:20 +0100 <EvanR> haskell also has packages to do your computations on the GPU. I think accelerate is one
2022-02-10 18:45:40 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 18:45:53 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 18:46:01 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 18:46:07 +0100 <Batzy> EvanR: i can't tell if you're trying to sell me on haskell or a number crunching environment
2022-02-10 18:46:15 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 18:46:23 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 18:46:31 +0100 <Batzy> julia seems promising though
2022-02-10 18:46:33 +0100 <EvanR> disclaimer, no one is paying me commission on any of this
2022-02-10 18:46:38 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 18:46:40 +0100 <Batzy> haha
2022-02-10 18:46:45 +0100 <Batzy> good, because you suck at it
2022-02-10 18:46:45 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 18:46:57 +0100 <Batzy> worst haskell salesman ever
2022-02-10 18:46:59 +0100 <EvanR> haskell is good for other reasons
2022-02-10 18:47:00 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 18:47:08 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 18:47:19 +0100 <Batzy> EvanR: ok when would you tell someone "you definitely want to use haskell for this"
2022-02-10 18:47:23 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 18:47:27 +0100 <EvanR> advent of code xD
2022-02-10 18:47:30 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 18:47:45 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 18:47:47 +0100 <Batzy> what else for normal life
2022-02-10 18:47:53 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 18:47:53 +0100 <EvanR> my friend used elixir to do the first few then burned out
2022-02-10 18:48:02 +0100shailangsa(~shailangs@host217-39-45-199.range217-39.btcentralplus.com)
2022-02-10 18:48:08 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 18:48:15 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 18:48:19 +0100 <EvanR> haskell is a general purpose language so, use it for general purpose stuff
2022-02-10 18:48:29 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 18:48:30 +0100 <EvanR> I'm doing opengl graphics right now
2022-02-10 18:48:36 +0100 <Batzy> i see
2022-02-10 18:48:37 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 18:48:52 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 18:48:54 +0100 <Batzy> well ive always wanted to learn haskell, it's too neat.
2022-02-10 18:48:55 +0100ChanServ+o ski
2022-02-10 18:48:58 +0100ski+b-o lavaman!~lavaman@98.38.249.169$##fix-your-connection ski
2022-02-10 18:48:59 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 18:49:02 +0100 <Batzy> but i think your julia suggestion is a really good one
2022-02-10 18:49:10 +0100 <EvanR> last I used julia it was pretty cool
2022-02-10 18:49:17 +0100 <EvanR> not idea about performance though
2022-02-10 18:49:42 +0100 <c_wraith> Julia produces very fast code when it understands what you're doing. So it's great for the sorts of stuff it was designed for.
2022-02-10 18:49:51 +0100machinedgod(~machinedg@24.105.81.50) (Remote host closed the connection)
2022-02-10 18:49:57 +0100 <Batzy> c_wraith: did you see what i am trying to do
2022-02-10 18:50:10 +0100 <wavemode> the two main things to make sure of when writing number crunching code in haskell tend to be, making sure the numbers stay unboxed and making sure you aren't building up unnecessary thunks
2022-02-10 18:50:27 +0100 <Batzy> "numbers stay unboxed"
2022-02-10 18:50:28 +0100 <Batzy> ?
2022-02-10 18:50:50 +0100machinedgod(~machinedg@24.105.81.50)
2022-02-10 18:51:25 +0100 <EvanR> unboxed arrays of numbers
2022-02-10 18:51:50 +0100 <EvanR> normally arrays contain pointer to values which can slow things down
2022-02-10 18:51:56 +0100 <wavemode> basically, making sure the compiler is emitting code such that you're just adding numbers, not first having to dereference pointers to the numbers
2022-02-10 18:51:59 +0100 <EvanR> you want them unboxed
2022-02-10 18:52:02 +0100Joe[m](~jsricemat@2001:470:69fc:105::1:b4ce)
2022-02-10 18:52:51 +0100 <wavemode> https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/primitives.html
2022-02-10 18:54:05 +0100Akiva(~Akiva@user/Akiva)
2022-02-10 18:54:19 +0100MajorBiscuit(~MajorBisc@wlan-145-94-218-48.wlan.tudelft.nl) (Ping timeout: 256 seconds)
2022-02-10 18:54:34 +0100 <EvanR> in case of hmatrix though, you hopefully don't write the number crunching code, but outsource it to the big guns
2022-02-10 18:55:00 +0100 <oak-> I did few tests, neither of servant-jsaddle or servant-client-ghcjs were usable "out-of-the-box". I was able to patch servant-client-ghcjs so that it builds with other parts of servant being from version 0.19. Now it's time for more tests
2022-02-10 18:55:11 +0100emf(~emf@2620:10d:c090:400::5:21fc)
2022-02-10 18:55:35 +0100 <wavemode> granted, many times the compiler can optimize code using boxed types to use unboxed instead... though trying to make SURE that happens can be somewhat tricky
2022-02-10 18:57:11 +0100 <Batzy> EvanR: i would really just like to write A*B mod something
2022-02-10 18:57:24 +0100 <Batzy> and have the outsourcer do that quickly
2022-02-10 18:58:45 +0100zincy(~zincy@2a00:23c8:970c:4801:68f0:cbbd:5b77:19e4)
2022-02-10 18:59:24 +0100fef(~thedawn@user/thedawn) (Ping timeout: 276 seconds)
2022-02-10 18:59:47 +0100 <EvanR> enjoy https://hackage.haskell.org/package/hmatrix-0.20.2/docs/Numeric-LinearAlgebra.html
2022-02-10 19:00:48 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5)
2022-02-10 19:03:24 +0100abhixec(~abhinav@c-67-169-139-16.hsd1.ca.comcast.net)
2022-02-10 19:03:53 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-02-10 19:04:54 +0100cfricke(~cfricke@user/cfricke) (Ping timeout: 260 seconds)
2022-02-10 19:05:20 +0100 <sm> how do you preserve newlines in the `footer` (or `footerDoc`) of an optparse-applicative parser ?
2022-02-10 19:05:53 +0100unyu(~pyon@user/pyon) (Quit: brb)
2022-02-10 19:07:41 +0100unyu(~pyon@user/pyon)
2022-02-10 19:09:36 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) (Remote host closed the connection)
2022-02-10 19:11:11 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-02-10 19:15:11 +0100vicfred(~vicfred@user/vicfred)
2022-02-10 19:15:16 +0100 <Unicorn_Princess> well that was quick. i follow https://cabal.readthedocs.io/en/latest/getting-started.html and started with "cabal init myfirstapp -n", and get an error that 'init' doesn't take any extra arguments. i guess the guide is out of date? i gathered that init now uses the directory it's ran is as the project name
2022-02-10 19:18:57 +0100polyphem_polyphem
2022-02-10 19:19:59 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-02-10 19:20:23 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-02-10 19:22:04 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 19:24:22 +0100nattiestnate(~nate@2001:448a:4063:1cc8:3706:7ea7:62f5:aeaf)
2022-02-10 19:25:37 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 240 seconds)
2022-02-10 19:26:17 +0100lottaquestions(~nick@2607:fa49:5041:a200:b92:1a0:165b:5914) (Ping timeout: 240 seconds)
2022-02-10 19:26:29 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net)
2022-02-10 19:27:24 +0100 <anon66200164> I have an assessment tomorrow, hopefully I can cover tuples this even and do a few questions before it
2022-02-10 19:27:43 +0100Vajb(~Vajb@2001:999:274:c862:3b86:e1e1:5bff:355e)
2022-02-10 19:29:40 +0100tiferrei(~tiferrei@user/tiferrei) (Remote host closed the connection)
2022-02-10 19:29:57 +0100 <polyphem> Unicorn_Princess: cabal init -n -o nyfirstapp
2022-02-10 19:30:14 +0100 <polyphem> Unicorn_Princess: cabal init -n -p myfirstapp
2022-02-10 19:32:01 +0100 <Unicorn_Princess> what does -o/p do?
2022-02-10 19:32:02 +0100Vajb(~Vajb@2001:999:274:c862:3b86:e1e1:5bff:355e) (Ping timeout: 250 seconds)
2022-02-10 19:32:21 +0100nebu(~user@user/wavion)
2022-02-10 19:32:24 +0100Everything(~Everythin@37.115.210.35) (Quit: leaving)
2022-02-10 19:32:45 +0100 <Unicorn_Princess> (in any case i just manually made a directory and did cabal init in.. it)
2022-02-10 19:32:46 +0100mei(~mei@user/mei) (Quit: mei)
2022-02-10 19:33:04 +0100 <polyphem> Unicorn_Princess: ignore first line, cabal init --help
2022-02-10 19:33:35 +0100lottaquestions(~nick@2607:fa49:5041:a200:c170:ec30:68fa:bc68)
2022-02-10 19:34:18 +0100 <polyphem> Unicorn_Princess: -p is for your package name , yea you should create and enter a directory
2022-02-10 19:34:27 +0100tiferrei(~tiferrei@user/tiferrei)
2022-02-10 19:36:49 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-02-10 19:38:08 +0100abhixec(~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds)
2022-02-10 19:38:33 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 19:38:39 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-02-10 19:39:19 +0100 <monochrom> https://blog.plover.com/meta/job.html This gets interesting. The venerable Mark Dominus wants a Haskell job, too!
2022-02-10 19:39:28 +0100DNH(~DNH@2a02:8108:1100:16d8:adf2:7fd4:5ba2:8512) (Quit: Textual IRC Client: www.textualapp.com)
2022-02-10 19:39:46 +0100jgeerds_(~jgeerds@55d4a547.access.ecotel.net)
2022-02-10 19:42:09 +0100DNH(~DNH@2a02:8108:1100:16d8:95db:50d7:7eec:328d)
2022-02-10 19:44:55 +0100monaaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 19:45:36 +0100ChanServ+o litharge
2022-02-10 19:45:37 +0100litharge-bo lavaman!~lavaman@98.38.249.169$##fix-your-connection litharge
2022-02-10 19:45:50 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Remote host closed the connection)
2022-02-10 19:47:43 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c)
2022-02-10 19:48:58 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net) (Remote host closed the connection)
2022-02-10 19:49:14 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net)
2022-02-10 19:50:10 +0100monaaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds)
2022-02-10 19:51:16 +0100monaaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 19:52:54 +0100cynomys(~cynomys@user/cynomys)
2022-02-10 19:54:13 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 19:54:21 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 19:54:29 +0100bristermitten(~bristermi@2a00:8b40:8beb:0:de76:3286:3969:f4aa)
2022-02-10 19:54:35 +0100[exa](exa@srv3.blesmrt.net) (Changing host)
2022-02-10 19:54:35 +0100[exa](exa@user/exa/x-3587197)
2022-02-10 19:54:35 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 19:54:37 +0100lottaquestions(~nick@2607:fa49:5041:a200:c170:ec30:68fa:bc68) (Ping timeout: 240 seconds)
2022-02-10 19:54:43 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 19:54:58 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 19:55:06 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 19:55:20 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 19:55:28 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 19:55:42 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 19:55:49 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 19:56:04 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 19:56:11 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 19:56:28 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 19:56:34 +0100 <bristermitten> Hi all, I'm trying to write an indentation-sensitive parser / lexer with Alex / Happy, but I'm encountering some issues. The majority of the resources & examples that I've found seem to be quite outdated, and I'm struggling to adapt them.
2022-02-10 19:56:35 +0100 <bristermitten> I've found the most luck with this example: https://github.com/jmoy/alexhappy/blob/master/whitespace/Lexer.x but it still doesn't seem to compile. I get a bunch of errors: https://paste.tomsmeding.com/fTZhuGeT
2022-02-10 19:56:36 +0100 <bristermitten> https://paste.tomsmeding.com/yn3JWSrh Here is my currently Lexer.x
2022-02-10 19:56:36 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 19:56:36 +0100 <bristermitten> Could I get some support please? Thanks!
2022-02-10 19:56:37 +0100slack1256(~slack1256@186.11.0.215)
2022-02-10 19:56:38 +0100ChanServ+o litharge
2022-02-10 19:56:39 +0100litharge+b *!*@98.38.249.169
2022-02-10 19:56:49 +0100litharge-o litharge
2022-02-10 19:57:16 +0100 <slack1256> Is `nubOrd` defined somewhere in the core libraries? It doesn't seem to be on `base`.
2022-02-10 19:57:19 +0100ChanServ+o litharge
2022-02-10 19:57:20 +0100litharge-bo *!*@98.38.249.169 litharge
2022-02-10 19:57:28 +0100kayvank(~user@52-119-115-185.PUBLIC.monkeybrains.net)
2022-02-10 19:57:34 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 19:57:41 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 19:57:55 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 19:58:02 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 19:58:17 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 19:58:25 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-10 19:58:33 +0100ChanServ+o litharge
2022-02-10 19:58:34 +0100litharge+b *!*@98.38.249.169$##fix-your-connection
2022-02-10 19:58:44 +0100litharge-o litharge
2022-02-10 19:59:07 +0100whound(~dust@2409:4071:4d8d:7b21:2586:8c37:2856:667a)
2022-02-10 20:00:52 +0100 <monochrom> It's in containers
2022-02-10 20:01:24 +0100 <monochrom> Since it uses Data.Set at the back.
2022-02-10 20:01:57 +0100Inst(~delicacie@2601:6c4:4080:3f80:5c6a:e4b3:e4cd:1bc3) (Ping timeout: 240 seconds)
2022-02-10 20:03:14 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 250 seconds)
2022-02-10 20:03:18 +0100michalz(~michalz@185.246.204.87) (Read error: No route to host)
2022-02-10 20:04:58 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
2022-02-10 20:05:12 +0100michalz(~michalz@185.246.204.75)
2022-02-10 20:05:17 +0100unyu(~pyon@user/pyon) (Quit: WeeChat 3.4)
2022-02-10 20:05:50 +0100zincy(~zincy@2a00:23c8:970c:4801:68f0:cbbd:5b77:19e4) (Remote host closed the connection)
2022-02-10 20:06:11 +0100 <slack1256> Oh it is on `Data.Containers.ListUtils`, awesome!
2022-02-10 20:06:16 +0100 <slack1256> Thanks monochrom.
2022-02-10 20:07:29 +0100alp(~alp@user/alp) (Remote host closed the connection)
2022-02-10 20:07:54 +0100alp(~alp@user/alp)
2022-02-10 20:07:54 +0100cynomys(~cynomys@user/cynomys) (Ping timeout: 260 seconds)
2022-02-10 20:10:04 +0100lottaquestions(~nick@2607:fa49:5041:a200:833f:e9c7:6325:4206)
2022-02-10 20:11:18 +0100vysn(~vysn@user/vysn)
2022-02-10 20:18:34 +0100ChanServ+o litharge
2022-02-10 20:18:35 +0100litharge-bo *!*@98.38.249.169$##fix-your-connection litharge
2022-02-10 20:18:39 +0100 <reactormonk[m]> Is there a Maybe version of succ somewhere?
2022-02-10 20:20:11 +0100 <ski> probably requires `Bounded' and `Eq'
2022-02-10 20:21:32 +0100 <anon66200164> could someone else how a tuple works I can't seem to get fst (1,2) to work on ghci?
2022-02-10 20:21:46 +0100 <ski> > fst (1,2)
2022-02-10 20:21:47 +0100 <geekosaur> what goes wrong?
2022-02-10 20:21:47 +0100 <lambdabot> 1
2022-02-10 20:22:06 +0100 <polyphem> reactormonk[m]: succMay in the safe package
2022-02-10 20:22:16 +0100 <ski> do you have any particular interactor query, or code snippet, you'd like to show ?
2022-02-10 20:22:20 +0100 <reactormonk[m]> thx
2022-02-10 20:22:27 +0100 <ski> @hoogle succMay
2022-02-10 20:22:27 +0100 <lambdabot> Safe succMay :: (Enum a, Eq a, Bounded a) => a -> Maybe a
2022-02-10 20:22:27 +0100 <lambdabot> Intro succMay :: (Enum a, Eq a, Bounded a) => a -> Maybe a
2022-02-10 20:22:40 +0100 <anon66200164> this error https://paste.tomsmeding.com/JKbIjqxK
2022-02-10 20:23:04 +0100 <ski> anon66200164 : you defined your own `fst' ?
2022-02-10 20:23:23 +0100 <ski> (or used a `fst' defined for you by your lecturer, or something)
2022-02-10 20:23:36 +0100 <anon66200164> define it like this fst :: (a, b) -> a fst (x, _) = x
2022-02-10 20:23:56 +0100 <ski> why not use the standard `fst' ?
2022-02-10 20:24:10 +0100 <anon66200164> neither one seems to work in any case
2022-02-10 20:24:27 +0100 <ski> if you really want to use that one, try saying `Main.fst' instead .. or add `import Prelude hiding (fst)' to the top of your source file (under `module' if you have any)
2022-02-10 20:24:30 +0100 <anon66200164> https://paste.tomsmeding.com/sngl2RXv
2022-02-10 20:24:44 +0100 <anon66200164> Alright
2022-02-10 20:25:09 +0100 <ski> but i'd suggest just using the standard `fst', instead of having your own definition of it
2022-02-10 20:25:21 +0100 <monochrom> Name clash is a thing.
2022-02-10 20:25:44 +0100 <wavemode> the error means exactly what it says, if you define something with the same name as something else in scope the compiler doesn't know which one you're referring to. disambiguate with ModuleName.symbol
2022-02-10 20:25:57 +0100 <anon66200164> so it works when I use the terminal but it doesn't work when I use it in the vs code terminal
2022-02-10 20:26:18 +0100 <anon66200164> weird
2022-02-10 20:26:19 +0100 <monochrom> In C, I wouldn't name my own function "printf".
2022-02-10 20:26:31 +0100 <monochrom> In Unix, I wouldn't name my own shell script "test".
2022-02-10 20:26:48 +0100 <monochrom> All classical examples of name clashes.
2022-02-10 20:26:55 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-10 20:28:06 +0100 <monochrom> You are already blessed that the computer actually lays out "you have a name clash".
2022-02-10 20:28:28 +0100 <ski> a/use the terminal/use the interactor/
2022-02-10 20:28:30 +0100 <monochrom> Because the alternative would be the computer automatically chooses the one you don't mean.
2022-02-10 20:28:32 +0100lechner(~lechner@debian/lechner)
2022-02-10 20:28:59 +0100skigrins
2022-02-10 20:29:07 +0100 <anon66200164> ski: got it
2022-02-10 20:29:14 +0100unyu(~pyon@user/pyon)
2022-02-10 20:29:38 +0100max22-(~maxime@2a01cb08833598000823846d04004043.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2022-02-10 20:29:39 +0100cynomys(~cynomys@user/cynomys)
2022-02-10 20:29:56 +0100 <ski> anon66200164 : so, did you manage to write `g :: (a,b) -> (b,a)' ?
2022-02-10 20:30:06 +0100 <ski> .. using `fst' and `snd'
2022-02-10 20:31:47 +0100 <anon66200164> After I restarted vs code, it worked, idk what was wrong the first time
2022-02-10 20:31:56 +0100 <anon66200164> I should be able to solve the sumPair exercise now
2022-02-10 20:32:37 +0100 <anon66200164> i.e. sumPairs [(1,2), (3,4)] =10
2022-02-10 20:33:19 +0100 <ski> sounds reasonable
2022-02-10 20:33:30 +0100 <ski> were you required to solve that, using `fst' and `snd' ?
2022-02-10 20:34:58 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-10 20:37:19 +0100 <anon66200164> it wasn't required to only use that, but I didn't want to use anything that hasn't been mentioned in lectures
2022-02-10 20:37:25 +0100 <anon66200164> so no map
2022-02-10 20:38:13 +0100 <monochrom> You can use pattern matching with a pattern like "(x,y)". You can use fst and snd. You should do both.
2022-02-10 20:38:44 +0100 <anon66200164> Yeah, I will try to solve the same problem in multiple ways
2022-02-10 20:39:10 +0100whound(~dust@2409:4071:4d8d:7b21:2586:8c37:2856:667a) (Quit: Konversation terminated!)
2022-02-10 20:39:11 +0100jgeerds_(~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 250 seconds)
2022-02-10 20:39:28 +0100nschoe(~quassel@2a01:e0a:8e:a190:3031:10e7:f93f:b88c)
2022-02-10 20:39:48 +0100k8yun(~k8yun@user/k8yun)
2022-02-10 20:42:37 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-02-10 20:44:15 +0100bristermitten(~bristermi@2a00:8b40:8beb:0:de76:3286:3969:f4aa) (Quit: Client closed)
2022-02-10 20:44:29 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41)
2022-02-10 20:45:04 +0100 <anon66200164> I know I'm working on this now but my assessment2 is being released tomorrow and my lecturer has just it will basically involve building wordle using haskell
2022-02-10 20:45:27 +0100 <anon66200164> has anyone done that here?
2022-02-10 20:45:59 +0100mastarija(~mastarija@2a05:4f46:e04:6000:15fe:cab1:6fd:b807) (Quit: Leaving)
2022-02-10 20:46:10 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-10 20:46:19 +0100 <janus> yes, i have seen people doing wordle in haskell, i think e.g. sshine did
2022-02-10 20:46:20 +0100 <dsal> anon66200164: There's a video series from a well-known haskeller and a blog post from at least one other.
2022-02-10 20:46:28 +0100 <monochrom> I think no but maybe people on the haskell subreddit have.
2022-02-10 20:46:42 +0100 <anon66200164> should be fun
2022-02-10 20:46:52 +0100 <anon66200164> I haven't actually played wordle lol
2022-02-10 20:46:53 +0100 <dsal> It's the only way I'd get interested in the game in the first place. :)
2022-02-10 20:47:13 +0100 <monochrom> Back in the days of Suduko everyone here was doing that.
2022-02-10 20:47:16 +0100 <dsal> 3Blue1Brown did a pretty neat video describing some information theory around it.
2022-02-10 20:47:24 +0100max22-(~maxime@2a01cb088335980064335dca1fbb49a4.ipv6.abo.wanadoo.fr)
2022-02-10 20:47:38 +0100 <monochrom> But that's also when #haskell was the major discussion platform and reddit didn't exist.
2022-02-10 20:47:47 +0100 <dsal> I didn't do suduko or wordle. AoC is my favorite game, but it's seasonal
2022-02-10 20:47:53 +0100 <anon66200164> dsal: fair enough, I'm enjoying my functional programming module, it's mostly because the lecturer is really good, but still, it's a pleasant change from java
2022-02-10 20:48:23 +0100 <dsal> I somehow read that as "lava" which sounds terribly painful so it didn't seem off to me.
2022-02-10 20:48:49 +0100 <monochrom> Our own https://reasonablypolymorphic.com/blog/wordle/index.html probably covers similar information theory.
2022-02-10 20:48:56 +0100 <geekosaur> is there much of a difference?
2022-02-10 20:49:38 +0100 <ski> i accidentally invented a scheme to do (possibly left-nested) goal implications, in logic programming, last time i looked at Sudoku
2022-02-10 20:50:38 +0100 <dsal> I was working with some xml junk in the 90s and ended up making something like a language that I used to express property tests. I called it Extensible Markup Lisp
2022-02-10 20:50:52 +0100skiidly wonders whether there's any Sudoku implementation in Lava
2022-02-10 20:51:02 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
2022-02-10 20:51:18 +0100slac67097(~slack1256@191.126.227.64)
2022-02-10 20:52:02 +0100nschoe(~quassel@2a01:e0a:8e:a190:3031:10e7:f93f:b88c) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-02-10 20:52:20 +0100phma(~phma@host-67-44-209-72.hnremote.net) (Read error: Connection reset by peer)
2022-02-10 20:53:03 +0100jao(~jao@211.68.17.95.dynamic.jazztel.es) (Ping timeout: 250 seconds)
2022-02-10 20:53:17 +0100slack1256(~slack1256@186.11.0.215) (Ping timeout: 240 seconds)
2022-02-10 20:53:30 +0100zincy(~zincy@2a00:23c8:970c:4801:68f0:cbbd:5b77:19e4)
2022-02-10 20:54:22 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-10 20:54:31 +0100jakalx(~jakalx@base.jakalx.net) (Disconnected: Replaced by new connection)
2022-02-10 20:54:31 +0100jakalx(~jakalx@base.jakalx.net)
2022-02-10 20:54:45 +0100phma(phma@2001:5b0:210d:6718:cad1:39ac:d8eb:ddb1)
2022-02-10 20:56:49 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 20:56:54 +0100monaaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds)
2022-02-10 20:57:42 +0100califax(~califax@user/califx) (Remote host closed the connection)
2022-02-10 20:58:54 +0100califax(~califax@user/califx)
2022-02-10 21:03:18 +0100jalil(~jalil@2a01:e0a:277:4100:f726:20ac:8c7a:b279) (Quit: jalil)
2022-02-10 21:04:25 +0100x_kuru(~xkuru@user/xkuru)
2022-02-10 21:05:13 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 256 seconds)
2022-02-10 21:06:49 +0100juhp(~juhp@128.106.188.82)
2022-02-10 21:07:07 +0100xkuru(~xkuru@user/xkuru) (Ping timeout: 250 seconds)
2022-02-10 21:07:17 +0100briandaed(~root@109.95.143.81.r.toneticgroup.pl)
2022-02-10 21:08:37 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-02-10 21:14:09 +0100michalz(~michalz@185.246.204.75) (Remote host closed the connection)
2022-02-10 21:15:51 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Remote host closed the connection)
2022-02-10 21:16:15 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 21:18:18 +0100 <anon66200164> why do I get a variable not in scope error here? sumPairs :: [(a, b)] -> Integer sumPairs [(_, _)] = 0
2022-02-10 21:18:35 +0100 <anon66200164> shouldn't it always give me 0
2022-02-10 21:18:46 +0100 <dminuoso> anon66200164: take a closer look at the error message.
2022-02-10 21:19:02 +0100 <dminuoso> @where paste
2022-02-10 21:19:02 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
2022-02-10 21:19:08 +0100 <dminuoso> Can you share the entirety of the error message?
2022-02-10 21:19:14 +0100 <dminuoso> Perhaps we can help you decipher it yourself
2022-02-10 21:19:46 +0100mstksg(~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 260 seconds)
2022-02-10 21:20:08 +0100 <anon66200164> https://paste.tomsmeding.com/SI1Hvfr8
2022-02-10 21:20:26 +0100 <anon66200164> I was trying to test out if it works, so it's not solved yet
2022-02-10 21:20:32 +0100 <dminuoso> Variable not in scope: sumPairs :: [(a0, b0)] -> t
2022-02-10 21:20:40 +0100 <anon66200164> what does that mean?
2022-02-10 21:20:46 +0100 <dminuoso> That just means you are using `sumPairs`, which is a variable
2022-02-10 21:20:51 +0100 <dminuoso> But to GHC, that variable is not in scope
2022-02-10 21:20:56 +0100 <dminuoso> That is, it doesn't know what this
2022-02-10 21:21:12 +0100 <dminuoso> i.e. this happens if sumPairs is either not defined or imported
2022-02-10 21:21:21 +0100mstksg(~jle`@cpe-23-240-75-236.socal.res.rr.com)
2022-02-10 21:21:35 +0100 <geekosaur> did you enter this into ghci?
2022-02-10 21:22:01 +0100 <ski> did you save your file ?
2022-02-10 21:22:20 +0100 <anon66200164> I did save the file
2022-02-10 21:22:34 +0100 <ski> and you're loading the correct file into the interactor ?
2022-02-10 21:22:44 +0100 <anon66200164> I https://paste.tomsmeding.com/EvhiXAR7
2022-02-10 21:23:08 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-02-10 21:23:45 +0100 <ski> that's just the same error that `sumPairs' isn't in scope (isn't defined/bound)
2022-02-10 21:24:58 +0100 <anon66200164> ski: it was a :l issue :/ my bad
2022-02-10 21:25:07 +0100phma(phma@2001:5b0:210d:6718:cad1:39ac:d8eb:ddb1) (Read error: Connection reset by peer)
2022-02-10 21:25:33 +0100 <anon66200164> sumPairs :: [(Integer , Integer )] -> Integer sumPairs [(_,_)] = 0 always returns 0
2022-02-10 21:25:40 +0100 <ski> no worry, happens to the best of us
2022-02-10 21:25:41 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 21:26:00 +0100 <ski> well, sure. you've defined it that way
2022-02-10 21:26:00 +0100phma(~phma@host-67-44-208-245.hnremote.net)
2022-02-10 21:26:04 +0100 <monochrom> Ah but what about [] and [(0,0), (0,0)]
2022-02-10 21:26:15 +0100 <ski> (in the cases it computes an answer at all :)
2022-02-10 21:26:49 +0100 <anon66200164> I get an exception
2022-02-10 21:27:16 +0100 <anon66200164> how do I make it so it takes multiple tuples in any lengthh list
2022-02-10 21:27:25 +0100 <monochrom> Recursion.
2022-02-10 21:28:35 +0100 <anon66200164> so for this question, thinking so far https://paste.tomsmeding.com/oBubMuV7
2022-02-10 21:29:23 +0100 <monochrom> Yes, like that.
2022-02-10 21:29:32 +0100 <monochrom> But it's [] not [()]
2022-02-10 21:29:45 +0100 <ski> the base case is defined to take a singleton (with an empty tuple), not an empty list (of pairs)
2022-02-10 21:29:56 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2022-02-10 21:30:20 +0100 <monochrom> You probably haven't truly embraced the fact that, for example, if the type is [Int], then the value can be [] without even having any relevance to Int.
2022-02-10 21:30:51 +0100tiferrei(~tiferrei@user/tiferrei) (Ping timeout: 276 seconds)
2022-02-10 21:30:52 +0100tiferrei2000(~tiferrei@user/tiferrei)
2022-02-10 21:31:13 +0100 <ski> for lists, a good starting point is to have the empty list as a base case .. unless you already know that you want another base case (or more base cases, in addition)
2022-02-10 21:31:29 +0100 <anon66200164> sumPairs ((a, b) : xs) = fst x + snd x would this work?
2022-02-10 21:31:44 +0100 <monochrom> What about the numbers in xs?
2022-02-10 21:31:49 +0100 <ski> what is `x' ?
2022-02-10 21:31:53 +0100 <anon66200164> I still need to deal with that
2022-02-10 21:32:03 +0100 <anon66200164> ski: it's the pair (a, b)
2022-02-10 21:32:09 +0100 <ski> no, it isn't
2022-02-10 21:32:14 +0100 <anon66200164> f
2022-02-10 21:32:18 +0100 <anon66200164> ok umm
2022-02-10 21:32:19 +0100 <ski> you have to say so, if you want it to be that
2022-02-10 21:32:26 +0100 <ski> sumPairs (x : xs) = fst x + snd x
2022-02-10 21:32:28 +0100 <ski> or
2022-02-10 21:32:33 +0100 <ski> sumPairs (x@(a,b) : xs) = fst x + snd x
2022-02-10 21:32:53 +0100 <anon66200164> I haven't seen the second version are those equivalent?
2022-02-10 21:32:57 +0100 <ski> (the latter both names the pair `x', as well as naming the two components `a' and `b')
2022-02-10 21:33:31 +0100dhouthoo_(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4)
2022-02-10 21:33:32 +0100 <ski> (occasionally, it's useful to both give a name to something, as well as to some of its parts)
2022-02-10 21:33:34 +0100 <anon66200164> monochrom: what did you mean the type being [Int]?
2022-02-10 21:33:57 +0100 <monochrom> [Int] is a type. You know that?
2022-02-10 21:34:03 +0100 <anon66200164> Yeah
2022-02-10 21:34:09 +0100 <ski> monochrom's is talking about the empty list `[]', that it can be of any list type `[T]', for any type `T'
2022-02-10 21:34:21 +0100 <anon66200164> but I already said sumPairs has type sumPairs :: [(Integer , Integer )] -> Integer
2022-02-10 21:34:27 +0100 <anon66200164> ohh
2022-02-10 21:34:29 +0100 <ski> in case it's the empty list, it contains no element of type `T' at all
2022-02-10 21:35:26 +0100 <monochrom> So [] is a value of type [(Integer , Integer )] without any relevance to Integer or (Foo,Bar) business.
2022-02-10 21:35:48 +0100 <monochrom> The empty list doesn't need to contain an "empty tuple" for emptiness.
2022-02-10 21:36:57 +0100 <anon66200164> https://paste.tomsmeding.com/OPmiA8gn
2022-02-10 21:37:15 +0100 <monochrom> Yes like that.
2022-02-10 21:37:22 +0100 <monochrom> Now you understand recursion.
2022-02-10 21:37:38 +0100lavaman(~lavaman@98.38.249.169)
2022-02-10 21:37:46 +0100 <anon66200164> monochrom: I'm getting there, I need to solve 7 more practise exercises and then do a mock test before 9am tomorrow
2022-02-10 21:38:02 +0100 <ski> anon66200164 : now do it, using `(a,b)' in place of `x'
2022-02-10 21:38:15 +0100 <ski> (then compare the two solutions)
2022-02-10 21:38:23 +0100 <monochrom> If you like "sumPairs ((a,b) : xs) = ..." then it's "a + b + sumPairs xs"
2022-02-10 21:39:05 +0100 <monochrom> "sumPairs ((a, b) : xs) = fst x + snd x" was not making up your mind whether you want to use patterns or fst and snd.
2022-02-10 21:39:11 +0100 <anon66200164> ski: ok
2022-02-10 21:39:59 +0100 <anon66200164> I get an error
2022-02-10 21:40:57 +0100 <anon66200164> nvm it works also
2022-02-10 21:41:08 +0100ski. o O ( "We get signal." )
2022-02-10 21:41:37 +0100 <ski> anon66200164 : which of the two is the clearer one, in your mind ? or are they about the same ?
2022-02-10 21:41:48 +0100 <monochrom> "sigma > 4.999999...."
2022-02-10 21:42:31 +0100 <anon66200164> sumPairs (x : xs) = fst x + snd x + sumPairs xs becuase I have used this pattern before to solve a Length of list problem using recursion
2022-02-10 21:42:47 +0100 <ski> ok
2022-02-10 21:42:54 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2022-02-10 21:43:22 +0100 <anon66200164> I didn't think it was actually possible to do it using sumPairs ((a,b) : xs) = (a + b) + sumPairs xs becuase I didn't think it would evaluate (a+b) like it did
2022-02-10 21:43:41 +0100 <ski> it's good to have options
2022-02-10 21:43:46 +0100 <anon66200164> yh
2022-02-10 21:44:02 +0100 <ski> (those brackets around the addition are not necessary, btw)
2022-02-10 21:44:38 +0100 <anon66200164> I thought it just made it clearer ¯\_(ツ)_/¯
2022-02-10 21:44:53 +0100 <anon66200164> good stuff
2022-02-10 21:45:18 +0100Ariakenom_(~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: Leaving)
2022-02-10 21:48:16 +0100wavemode(~wavemode@2601:241:0:fc90:2892:d0:a7ec:bc11) (Quit: Client closed)
2022-02-10 21:48:29 +0100 <EvanR> emptyTuple = fix (\(x,y) -> (y,x))
2022-02-10 21:48:57 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds)
2022-02-10 21:49:31 +0100Inst(~delicacie@2601:6c4:4080:3f80:f0fd:e448:c8d2:7c01)
2022-02-10 21:51:35 +0100wavemode(~wavemode@2601:241:0:fc90:12bc:6a75:8601:ea04)
2022-02-10 21:55:03 +0100 <anon66200164> https://paste.tomsmeding.com/bfPNgz7f
2022-02-10 21:55:25 +0100 <monochrom> Yeah.
2022-02-10 21:55:40 +0100 <ski> s/theSum/total/ ?
2022-02-10 21:55:57 +0100 <monochrom> Oh haha.
2022-02-10 21:56:07 +0100 <anon66200164> theSum of all the items in the list
2022-02-10 21:56:21 +0100 <anon66200164> if the elements are Integers
2022-02-10 21:56:32 +0100 <monochrom> But what name does the teacher wants you to use?
2022-02-10 21:56:53 +0100 <anon66200164> oh lol
2022-02-10 21:57:07 +0100 <EvanR> cache invalidation and naming stuff
2022-02-10 21:57:39 +0100 <monochrom> "invalidation" is so negative.
2022-02-10 21:57:48 +0100 <EvanR> cache unparsing
2022-02-10 21:57:59 +0100 <monochrom> People should talk more about "cache validation". >:)
2022-02-10 21:58:00 +0100 <anon66200164> tbf these are not marked, it's just personal exercises
2022-02-10 21:58:21 +0100 <ski> @where pdv
2022-02-10 21:58:21 +0100 <lambdabot> "Parse, don't validate" by lexi-lambda in 2019-11-05 at <https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/>
2022-02-10 21:58:22 +0100 <anon66200164> extra questions to practice for the real thing
2022-02-10 22:01:41 +0100`2jt(~jtomas@130.red-88-22-46.staticip.rima-tde.net) (Remote host closed the connection)
2022-02-10 22:01:48 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
2022-02-10 22:01:48 +0100 <EvanR> cache effectiveness. 0 is "as if no cache exists". positive means cache works and provides a benefit. negative (the typical case) means performance was worse and or results are just wrong because caching scheme is broken
2022-02-10 22:01:51 +0100 <anon66200164> this is incorrect, I need to put each doubles value back into its position in the list https://paste.tomsmeding.com/JRRD3HwU
2022-02-10 22:02:04 +0100`2jt(~jtomas@130.red-88-22-46.staticip.rima-tde.net)
2022-02-10 22:02:07 +0100 <EvanR> in which case zero is almost positive by comparison
2022-02-10 22:02:10 +0100Pickchea(~private@user/pickchea)
2022-02-10 22:02:54 +0100 <ski> > 3*2 : [4,2,0] -- anon66200164
2022-02-10 22:02:55 +0100 <lambdabot> [6,4,2,0]
2022-02-10 22:04:03 +0100 <anon66200164> cons
2022-02-10 22:05:01 +0100 <EvanR> cons is also negative, why can't we build list out of pros
2022-02-10 22:05:11 +0100ski. o O ( "CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A." by Henry G. Baker in 1994 at <https://plover.com/~mjd/misc/hbaker-archive/CheneyMTA.html> )
2022-02-10 22:05:36 +0100 <ski> would pros build lists of negative length ?
2022-02-10 22:06:19 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-02-10 22:07:05 +0100 <anon66200164> doubles (x : xs) = x*2 : [] + doubles xs
2022-02-10 22:07:36 +0100 <anon66200164> but it will reverse the list
2022-02-10 22:08:02 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-02-10 22:08:48 +0100mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 268 seconds)
2022-02-10 22:10:17 +0100ravella(~ravella@user/ryanavella) (Ping timeout: 240 seconds)
2022-02-10 22:10:34 +0100 <anon66200164> should I use tail
2022-02-10 22:10:47 +0100neurocyte0917090(~neurocyte@user/neurocyte)
2022-02-10 22:11:40 +0100 <wavemode> `[] ++ doubles xs` is equivalent to `doubles xs`
2022-02-10 22:12:05 +0100nebu(~user@user/wavion) (Ping timeout: 256 seconds)
2022-02-10 22:13:31 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-02-10 22:13:46 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-02-10 22:14:37 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net) (Remote host closed the connection)
2022-02-10 22:14:55 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net)
2022-02-10 22:17:17 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-02-10 22:18:02 +0100slac67097(~slack1256@191.126.227.64) (Remote host closed the connection)
2022-02-10 22:18:53 +0100 <anon66200164> "Do not use any functions in the standard library (Prelude) other than arithmetic and boolean operations." does this mean I can't use fst?
2022-02-10 22:19:01 +0100cynomys(~cynomys@user/cynomys) (Quit: Lost terminal)
2022-02-10 22:19:33 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 22:19:34 +0100 <geekosaur> in most cases you want pattern matching instead
2022-02-10 22:20:29 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net) (Remote host closed the connection)
2022-02-10 22:20:46 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net)
2022-02-10 22:20:57 +0100 <anon66200164> geekosaur: ok
2022-02-10 22:21:43 +0100 <janus> anon66200164: it also means you can't use the list constructor (:) or the concatenator (++)
2022-02-10 22:22:02 +0100 <wavemode> yeah I assume by functions they mean functions that aren't data constructors lol
2022-02-10 22:22:07 +0100 <anon66200164> that's quite odd since we used them in lectures
2022-02-10 22:32:12 +0100 <EvanR> "do not use any odd functions in the standard library, i.e. f(x) = -f(x)
2022-02-10 22:32:33 +0100 <EvanR> ... doh
2022-02-10 22:42:10 +0100jgeerds_(~jgeerds@55d4a547.access.ecotel.net)
2022-02-10 22:44:00 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com)
2022-02-10 22:45:14 +0100stef204(~stef204@user/stef204)
2022-02-10 22:45:28 +0100dsrt^(~dsrt@128-092-160-106.biz.spectrum.com)
2022-02-10 22:47:22 +0100 <ephemient> isn't an odd function one that satisfies f(-x) = -f(x)?
2022-02-10 22:47:55 +0100jackson99(~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout))
2022-02-10 22:49:12 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Quit: WeeChat 2.2-dev)
2022-02-10 22:49:28 +0100 <EvanR> yeah
2022-02-10 22:52:58 +0100stef204(~stef204@user/stef204) (Quit: WeeChat 3.4)
2022-02-10 22:56:36 +0100 <monochrom> Hence "doh" :)
2022-02-10 22:57:09 +0100 <monochrom> Theorem: If f(x) = -f(x), then f is both even and odd. >:)
2022-02-10 22:57:12 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-02-10 23:00:36 +0100zincy(~zincy@2a00:23c8:970c:4801:68f0:cbbd:5b77:19e4) (Remote host closed the connection)
2022-02-10 23:01:51 +0100Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.)
2022-02-10 23:02:38 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 250 seconds)
2022-02-10 23:03:04 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 268 seconds)
2022-02-10 23:03:12 +0100 <EvanR> > -(minBound :: Int)
2022-02-10 23:03:13 +0100 <lambdabot> -9223372036854775808
2022-02-10 23:04:36 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-10 23:04:39 +0100 <Inst> do you know anything about the haskell doc.pdf thing?
2022-02-10 23:04:45 +0100 <Inst> the one the berkeley philo prof made?
2022-02-10 23:05:31 +0100cynomys(~cynomys@user/cynomys)
2022-02-10 23:05:44 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-10 23:07:15 +0100 <ephemient> > -minBound == minBound
2022-02-10 23:07:16 +0100 <lambdabot> error:
2022-02-10 23:07:16 +0100 <lambdabot> • Ambiguous type variable ‘a0’ arising from a use of syntactic negation
2022-02-10 23:07:16 +0100 <lambdabot> prevents the constraint ‘(Num a0)’ from being solved.
2022-02-10 23:07:18 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net) (Remote host closed the connection)
2022-02-10 23:07:35 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net)
2022-02-10 23:07:54 +0100 <ephemient> > -minBound == (minBound :: Int)
2022-02-10 23:07:55 +0100 <lambdabot> True
2022-02-10 23:08:27 +0100zincy(~zincy@2a00:23c8:970c:4801:68f0:cbbd:5b77:19e4)
2022-02-10 23:08:37 +0100 <ephemient> leading to the very fun
2022-02-10 23:08:37 +0100 <ephemient> > abs (minBound :: Int) < 0
2022-02-10 23:08:38 +0100 <lambdabot> True
2022-02-10 23:09:01 +0100alp(~alp@user/alp) (Ping timeout: 240 seconds)
2022-02-10 23:09:43 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
2022-02-10 23:09:52 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2022-02-10 23:10:00 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-02-10 23:11:56 +0100foul_owl(~kerry@174-21-76-71.tukw.qwest.net)
2022-02-10 23:12:58 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-02-10 23:13:15 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-02-10 23:15:17 +0100pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 240 seconds)
2022-02-10 23:15:30 +0100pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee)
2022-02-10 23:15:46 +0100jackson99(~bc8147f2@83.167.180.121)
2022-02-10 23:15:55 +0100 <byorgey> Inst: I assume you're talking about https://pandoc.org/ ?
2022-02-10 23:17:51 +0100 <Inst> pandoc, yes, can it convert an excel spreadsheet to a txt or something i can simply parse to check for duplicates
2022-02-10 23:18:09 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-02-10 23:18:28 +0100 <ski> anon66200164 : "but it will reverse the list" -- no
2022-02-10 23:22:20 +0100sektor|2(~kvirc@87.227.175.182)
2022-02-10 23:23:51 +0100wavemode(~wavemode@2601:241:0:fc90:12bc:6a75:8601:ea04) (Quit: Client closed)
2022-02-10 23:25:17 +0100sektor|3(~kvirc@94.155.193.66) (Ping timeout: 252 seconds)
2022-02-10 23:25:20 +0100wavemode(~wavemode@2601:241:0:fc90:12bc:6a75:8601:ea04)
2022-02-10 23:26:07 +0100 <byorgey> Inst: no, pandoc cannot convert excel spreadsheets to text. Fortunately, excel can do that.
2022-02-10 23:26:44 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-02-10 23:28:02 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-02-10 23:29:54 +0100jackson99(~bc8147f2@83.167.180.121) (Quit: CGI:IRC)
2022-02-10 23:32:23 +0100zincy(~zincy@2a00:23c8:970c:4801:68f0:cbbd:5b77:19e4) (Remote host closed the connection)
2022-02-10 23:32:26 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-02-10 23:32:45 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-02-10 23:33:42 +0100jackson99(~bc8147f2@cerf.good1.com)
2022-02-10 23:35:19 +0100 <EvanR> so a pair of Storables isn't Storable by default, so here I am noodling about how to implement Storable for two Word8s...
2022-02-10 23:35:43 +0100 <EvanR> ok that's a Word16 but still
2022-02-10 23:36:32 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: closed)
2022-02-10 23:37:06 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net) (Ping timeout: 256 seconds)
2022-02-10 23:38:37 +0100anon66200164(~anon66200@host-92-19-99-147.as13285.net)
2022-02-10 23:39:30 +0100abhixec(~abhinav@c-67-169-139-16.hsd1.ca.comcast.net)
2022-02-10 23:39:42 +0100 <anon66200164> ski: I don't understand how it would work
2022-02-10 23:39:55 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-10 23:40:42 +0100 <monochrom> Oh, heh. Here:
2022-02-10 23:41:00 +0100max22-(~maxime@2a01cb088335980064335dca1fbb49a4.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2022-02-10 23:41:16 +0100 <monochrom> doubles (x : y : []) = x*2 : doubles (y : []) = x*2 : y*2 : doubles [] = ... you get the point.
2022-02-10 23:41:40 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-02-10 23:42:43 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-02-10 23:42:59 +0100 <anon66200164> but https://paste.tomsmeding.com/o0AjqHhe
2022-02-10 23:43:24 +0100 <monochrom> Clearly, doubles [] = []
2022-02-10 23:46:00 +0100wavemode(~wavemode@2601:241:0:fc90:12bc:6a75:8601:ea04) (Quit: Client closed)
2022-02-10 23:46:22 +0100abhixec(~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection)
2022-02-10 23:46:40 +0100 <anon66200164> monochrom: sorry, could you explain why?
2022-02-10 23:47:05 +0100 <EvanR> 200% of nothing is still nothing:tm:
2022-02-10 23:47:43 +0100 <monochrom> There are many ways of understanding it, but none is "intuitive". This is the limitation of "intuition".
2022-02-10 23:48:16 +0100 <monochrom> 1. You have to produce a list. But you have no good numbers to put in that list. May as well leave it empty.
2022-02-10 23:49:21 +0100 <monochrom> 2. Someone asks me to double every number in a list. Oh but there is no number in the input list. So there is no number in the output list either. IOW output length = input length, oh but input length = 0.
2022-02-10 23:50:08 +0100 <ephemient> 3. you want doubles [x] = [x*2]; the only way to make that work is with doubles [] = []
2022-02-10 23:50:17 +0100 <monochrom> 3. doubles [] = [] is the only correct base case that can make the induction case work.
2022-02-10 23:50:30 +0100 <monochrom> Yeah, that. :)
2022-02-10 23:52:00 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Quit: ERC (IRC client for Emacs 27.1))
2022-02-10 23:52:34 +0100 <jackson99> anon66200164 because doubles returns a list of Integer, not Integer
2022-02-10 23:53:12 +0100 <anon66200164> thank you all for your help
2022-02-10 23:53:31 +0100 <EvanR> haskell, where your questions are answered in astounding dolby 5.1
2022-02-10 23:53:49 +0100deadmarshal(~deadmarsh@95.38.117.25) (Ping timeout: 240 seconds)
2022-02-10 23:54:55 +0100 <jackson99> > map (*2) [1..10)
2022-02-10 23:54:56 +0100 <lambdabot> <hint>:1:16: error: parse error on input ‘)’
2022-02-10 23:55:02 +0100 <jackson99> > map (*2) [1..]
2022-02-10 23:55:04 +0100 <lambdabot> [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,5...
2022-02-10 23:55:14 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-02-10 23:55:36 +0100 <jackson99> that's your function, doubles = map (*2)
2022-02-10 23:55:54 +0100 <jackson99> it is usually nicer to use combinators than manual recursion
2022-02-10 23:56:07 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-02-10 23:56:15 +0100 <EvanR> the exercise was to not use "standard library functions"
2022-02-10 23:56:22 +0100 <monochrom> jackson99, this one is a homework where the student learns writing manual recursion.
2022-02-10 23:56:22 +0100 <anon66200164> yh
2022-02-10 23:56:44 +0100 <anon66200164> I think I'm screwed for tomorrow but we shall see
2022-02-10 23:56:55 +0100 <anon66200164> gn all
2022-02-10 23:57:41 +0100 <monochrom> And probably at a level not ready for higher-order functions either, so not even writing one's own mymap.
2022-02-10 23:59:04 +0100 <jackson99> those excercises seem questionable. I've seen two or three of them, requiring user to implement map from scratch every time
2022-02-10 23:59:17 +0100Inst(~delicacie@2601:6c4:4080:3f80:f0fd:e448:c8d2:7c01) (Ping timeout: 240 seconds)
2022-02-10 23:59:52 +0100 <EvanR> also known as javascript before a certain date