2022-01-19 00:00:14 +0100 | notzmv | (~zmv@user/notzmv) |
2022-01-19 00:04:19 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-19 00:04:44 +0100 | wombat875 | (~neilfulwi@pool-72-89-24-154.nycmny.fios.verizon.net) (Quit: WeeChat 2.2-dev) |
2022-01-19 00:06:02 +0100 | Henson | (~kvirc@107-179-133-201.cpe.teksavvy.com) (Ping timeout: 268 seconds) |
2022-01-19 00:06:22 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) |
2022-01-19 00:09:04 +0100 | alp | (~alp@user/alp) |
2022-01-19 00:10:37 +0100 | ksqsf | (~user@134.209.106.31) |
2022-01-19 00:11:35 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2022-01-19 00:13:37 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2022-01-19 00:15:39 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 256 seconds) |
2022-01-19 00:17:41 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-19 00:17:45 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 268 seconds) |
2022-01-19 00:19:17 +0100 | _FlawLess_ | (~user@2a01:e0a:a4:7098::10) (Ping timeout: 240 seconds) |
2022-01-19 00:26:27 +0100 | unyu | (~pyon@user/pyon) (Quit: Reboot.) |
2022-01-19 00:27:43 +0100 | burnsidesLlama | (~burnsides@dhcp168-015.wadham.ox.ac.uk) |
2022-01-19 00:28:48 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-01-19 00:30:43 +0100 | shapr | (~user@2601:7c0:c37c:46d0:9d97:8334:355a:b331) |
2022-01-19 00:32:51 +0100 | wmacmil | (~wmacmil@83-233-165-97.cust.bredband2.com) |
2022-01-19 00:33:57 +0100 | cosimone | (~user@93-47-230-83.ip115.fastwebnet.it) (Ping timeout: 256 seconds) |
2022-01-19 00:36:06 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) (Quit: Leaving.) |
2022-01-19 00:36:47 +0100 | ksqsf | (~user@134.209.106.31) |
2022-01-19 00:40:08 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4) |
2022-01-19 00:41:32 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 240 seconds) |
2022-01-19 00:43:51 +0100 | laslmtduuuk^ | (~laslmtduu@wsip-98-188-242-61.mc.at.cox.net) |
2022-01-19 00:44:21 +0100 | max22- | (~maxime@2a01cb0883359800e30a3abeb76df7a4.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2022-01-19 00:44:56 +0100 | Zugul | (~Zugul@52.173.255.131) (Remote host closed the connection) |
2022-01-19 00:45:21 +0100 | deadmarshal | (~deadmarsh@95.38.228.70) |
2022-01-19 00:45:50 +0100 | newsham | (~newsham@2603-800c-2d00-e994-c564-1d76-1f18-c3ec.res6.spectrum.com) (Quit: Client closed) |
2022-01-19 00:47:47 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:edf9:3833:cff9:92b3) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-19 00:48:15 +0100 | mmhat | (~mmh@55d4d6e9.access.ecotel.net) (Quit: WeeChat 3.4) |
2022-01-19 00:49:49 +0100 | deadmarshal | (~deadmarsh@95.38.228.70) (Ping timeout: 256 seconds) |
2022-01-19 00:53:39 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-01-19 00:54:12 +0100 | ksqsf | (~user@134.209.106.31) |
2022-01-19 00:57:19 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-01-19 01:01:59 +0100 | Henson | (~kvirc@107-179-133-201.cpe.teksavvy.com) |
2022-01-19 01:04:11 +0100 | shapr | (~user@2601:7c0:c37c:46d0:9d97:8334:355a:b331) (Remote host closed the connection) |
2022-01-19 01:04:24 +0100 | shapr | (~user@2601:7c0:c37c:46d0:9d97:8334:355a:b331) |
2022-01-19 01:05:14 +0100 | Sindai | (~Sindai@2a01cb0583e8cd008d228a3c88136061.ipv6.abo.wanadoo.fr) (Quit: Client closed) |
2022-01-19 01:06:03 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Read error: Connection reset by peer) |
2022-01-19 01:06:20 +0100 | mjs2600 | (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) |
2022-01-19 01:06:28 +0100 | Feuermagier | (~Feuermagi@user/feuermagier) (Ping timeout: 250 seconds) |
2022-01-19 01:07:02 +0100 | jkaye | (~jkaye@2601:281:200:1958:2b64:9a7d:6899:8349) (Ping timeout: 240 seconds) |
2022-01-19 01:07:11 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4) |
2022-01-19 01:07:16 +0100 | <qhong> | Q: given (Typeable a, Typeable b) in a function signature, how can I call a function requiring a->b to be Typeable in its body? |
2022-01-19 01:07:19 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-01-19 01:08:02 +0100 | <EvanR> | well there is a support function in Data.Dynamic called dynApply :: Dynamic -> Dynamic -> Maybe Dynamic |
2022-01-19 01:08:09 +0100 | <EvanR> | Dynamic is basically a wrapped Typeable |
2022-01-19 01:09:25 +0100 | <jackdk> | I don't understand the question, I'm sorry |
2022-01-19 01:09:33 +0100 | <EvanR> | actually me neither sorry |
2022-01-19 01:10:28 +0100 | <Axman6> | yeah, qhong can you give an example of what's not working? |
2022-01-19 01:10:56 +0100 | qwedfg | (~qwedfg@user/qwedfg) (Quit: ZNC - https://znc.in) |
2022-01-19 01:11:24 +0100 | <qhong> | so I have a library function with type f :: (Typeable a => Bool -> IO (Every a)) |
2022-01-19 01:11:55 +0100 | <qhong> | I want to use it as (f True :: IO (Every (a -> b))) |
2022-01-19 01:12:23 +0100 | <qhong> | I declared type variable a and b to be Typeable, but GHC don't buy that a->b is Typeable |
2022-01-19 01:12:47 +0100 | <Axman6> | You probably also need a Typeable (a -> b) constraint? |
2022-01-19 01:12:48 +0100 | qwedfg | (~qwedfg@user/qwedfg) |
2022-01-19 01:12:49 +0100 | <jackdk> | what is Every? |
2022-01-19 01:13:46 +0100 | <qhong> | jackdk: it's just a newtype alias, prob not relevant |
2022-01-19 01:14:04 +0100 | <qhong> | Axman6: Let me try. Seems that need to turn on some extension |
2022-01-19 01:14:29 +0100 | <Axman6> | I just follow whatever advice GHC gives me and turn on extensions until it stops complaining >_> |
2022-01-19 01:14:53 +0100 | <jackdk> | probably FlexibleContexts at a guess |
2022-01-19 01:15:20 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-01-19 01:15:31 +0100 | <EvanR> | {-# LANGUAGE WhateverYouWantDamn! #-} |
2022-01-19 01:15:31 +0100 | <Axman6> | with that constraint you might only need Typeable (a -> b) and can leave out the other two |
2022-01-19 01:15:39 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-01-19 01:15:49 +0100 | <qhong> | jackdk: Yes! |
2022-01-19 01:15:50 +0100 | <Axman6> | EvanR: It's spelled {-# LANGUAGE DeferredTypeErrors #-} |
2022-01-19 01:16:20 +0100 | <EvanR> | no that's to stop the programmer from complaining |
2022-01-19 01:16:21 +0100 | <qhong> | Axman6: weird, it still says "Could not deduce (Typeable a1)" |
2022-01-19 01:16:31 +0100 | <Axman6> | huh, well add it back then :) |
2022-01-19 01:16:32 +0100 | cyphase | (~cyphase@user/cyphase) (Ping timeout: 240 seconds) |
2022-01-19 01:16:39 +0100 | <geekosaur> | that sounds like a different problem |
2022-01-19 01:16:56 +0100 | <Axman6> | I would've thought that (Typeable a, Typeable b) => Typeable (a -> b) was a thing |
2022-01-19 01:17:01 +0100 | <jackdk> | @where paste -- any chance you could share some code? |
2022-01-19 01:17:01 +0100 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
2022-01-19 01:17:07 +0100 | <geekosaur> | usually means you have either missed some connection between types, or you tried to reuse a type from the function signature |
2022-01-19 01:17:17 +0100 | shapr | (~user@2601:7c0:c37c:46d0:9d97:8334:355a:b331) (Remote host closed the connection) |
2022-01-19 01:17:37 +0100 | <geekosaur> | (the types in the signature do *not* scope over the function) |
2022-01-19 01:17:39 +0100 | <EvanR> | Axman6, might overlap, since function types (of some sort) is already Typeable |
2022-01-19 01:18:17 +0100 | <qhong> | geekosaur: Ah. so I can't use type variables in the type signature of a function? |
2022-01-19 01:19:03 +0100 | <geekosaur> | yiou can use them there, yyou just can't reference them in the body by default |
2022-01-19 01:19:25 +0100 | jgeerds | (~jgeerds@55d4090e.access.ecotel.net) (Ping timeout: 268 seconds) |
2022-01-19 01:19:32 +0100 | <geekosaur> | you need the ScopedTypeVariables extension *and* "declare" a;; the type variables with an explicit "forall" |
2022-01-19 01:19:46 +0100 | <qhong> | geekosaur: I see. Thanks! |
2022-01-19 01:19:52 +0100 | <geekosaur> | I agree with jackdk, please show code |
2022-01-19 01:20:40 +0100 | shapr | (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) |
2022-01-19 01:20:49 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-19 01:21:22 +0100 | <qhong> | geekosaur: it's working now after added forall. thanks a lot! |
2022-01-19 01:21:34 +0100 | cyphase | (~cyphase@user/cyphase) |
2022-01-19 01:21:48 +0100 | <Axman6> | I got bitten by that in a job interview (for the job I'm doing now, so not such a big deal =) |
2022-01-19 01:23:05 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-01-19 01:23:07 +0100 | wmacmil | (~wmacmil@83-233-165-97.cust.bredband2.com) (Ping timeout: 268 seconds) |
2022-01-19 01:25:02 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2022-01-19 01:25:27 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-01-19 01:26:40 +0100 | <EvanR> | the ScopeTypeVariables "ritual" should be in the FAQ |
2022-01-19 01:26:54 +0100 | <EvanR> | Scoped |
2022-01-19 01:27:04 +0100 | <EvanR> | also there should be an FAQ |
2022-01-19 01:27:10 +0100 | shapr | (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) (Remote host closed the connection) |
2022-01-19 01:27:23 +0100 | shapr | (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) |
2022-01-19 01:27:30 +0100 | <Axman6> | 360NoScopeTypeVaariables |
2022-01-19 01:27:43 +0100 | <jackdk> | Vaariables? |
2022-01-19 01:27:47 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
2022-01-19 01:28:13 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-19 01:28:13 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-19 01:28:13 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-19 01:29:05 +0100 | laslmtduuuk^ | (~laslmtduu@wsip-98-188-242-61.mc.at.cox.net) (Remote host closed the connection) |
2022-01-19 01:29:14 +0100 | <Axman6> | like normal variables but even more 1337 |
2022-01-19 01:29:51 +0100 | <Axman6> | On a completely unrelated note, I found out the other day that PPC has both sub-normal and super-normal floating point numbers |
2022-01-19 01:33:09 +0100 | <EvanR> | ah, super-normals... |
2022-01-19 01:34:14 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-01-19 01:34:14 +0100 | <EvanR> | I'm starting to realize why I never understood the extreme ends of floating point |
2022-01-19 01:34:36 +0100 | <Henson> | is there a way I can get Haskell to redo a computation it's already done? Say I'm benchmarking something and want to use the same inputs over and over again 1 million times just to see how long it takes. I'm under the impression that Haskell will not evaluate a function with the exact same arguments twice, right? Or is that not correct? |
2022-01-19 01:34:55 +0100 | <EvanR> | compute it in a function that takes a () |
2022-01-19 01:34:59 +0100 | <EvanR> | scheme style |
2022-01-19 01:35:01 +0100 | <Axman6> | trying to figure out what they are, came across this code - the definition of fastfloor is making me cry: https://opensource.apple.com/source/Libm/Libm-315/Source/PowerPC/fpmacros.c.auto.html |
2022-01-19 01:35:31 +0100 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2022-01-19 01:35:32 +0100 | <Henson> | EvanR: can you elaborate on that or give me a simple example? I'm not sure I understand. |
2022-01-19 01:35:34 +0100 | <Axman6> | Henson: you've just described exactly what criterion will do for you, but also give you pretty reports |
2022-01-19 01:35:36 +0100 | <EvanR> | haskell will evaluate a function with the exact same arguments twice, unless you saved the result to some variable and use that |
2022-01-19 01:35:50 +0100 | <EvanR> | or optimizations happen |
2022-01-19 01:35:56 +0100 | <Axman6> | @hackage criterion |
2022-01-19 01:35:56 +0100 | <lambdabot> | https://hackage.haskell.org/package/criterion |
2022-01-19 01:36:04 +0100 | Henson | loads |
2022-01-19 01:36:20 +0100 | <EvanR> | let f () = 2^1000 :: Integer in (f (), f ()) |
2022-01-19 01:36:36 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) (Remote host closed the connection) |
2022-01-19 01:36:37 +0100 | <ephemient> | Axman6, https://en.wikipedia.org/wiki/Long_double "On some PowerPC systems, long double is implemented as a double-double arithmetic, where a long double value is regarded as the exact sum of two double-precision values" TIL, that's weird and I had no idea |
2022-01-19 01:37:18 +0100 | <Axman6> | huh, interesting, that's just compensated arithmetic - see edwardk's compensated package |
2022-01-19 01:38:08 +0100 | <Axman6> | also, I think I've realised why the alignment is so weird in that fpmacros file above - it's aligned to show which FP units should be running in parallel on the CPU |
2022-01-19 01:38:13 +0100 | <Axman6> | (a guess) |
2022-01-19 01:38:17 +0100 | <EvanR> | my example may not work because of Common Subexpression Elimination |
2022-01-19 01:38:52 +0100 | <EvanR> | but you can try things to get that optimization to fail, anyway, a test suite is probably better |
2022-01-19 01:38:59 +0100 | <Axman6> | does GHC actually do CSE? I thought it didn't because it can change the laziness of functions considerably |
2022-01-19 01:39:13 +0100 | <EvanR> | yeah it does sometimes! |
2022-01-19 01:39:22 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) |
2022-01-19 01:40:00 +0100 | <monochrom> | I once saw it happen to a very simple toy example. |
2022-01-19 01:40:08 +0100 | <ephemient> | it's not clear to me from the wiki whether that's just a software thing or if double-double is in ppc hardware |
2022-01-19 01:41:03 +0100 | <monochrom> | But usually it is very easy to discourage GHC from doing CSE. |
2022-01-19 01:41:47 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2022-01-19 01:43:45 +0100 | <monochrom> | BTW fpmacros.c contains misalignments too, look at where it uses tabs. :) |
2022-01-19 01:44:36 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-19 01:44:36 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep) |
2022-01-19 01:44:47 +0100 | <Axman6> | yeah it's definitely kinda gross |
2022-01-19 01:45:05 +0100 | <Axman6> | Apple: We'll do open source, but we won't like it, and we'll make your eyes bleed |
2022-01-19 01:45:11 +0100 | jackson99 | (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout)) |
2022-01-19 01:47:19 +0100 | <ephemient> | bad code indentation was present in Apple's goto fail; too |
2022-01-19 01:48:43 +0100 | <Axman6> | you know you're having fun when you -funroll-all-loops |
2022-01-19 01:50:52 +0100 | shapr | (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) (Remote host closed the connection) |
2022-01-19 01:51:05 +0100 | shapr | (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) |
2022-01-19 01:53:43 +0100 | unyu | (~pyon@user/pyon) |
2022-01-19 01:54:04 +0100 | shapr | (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) (Remote host closed the connection) |
2022-01-19 01:54:17 +0100 | shapr | (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) |
2022-01-19 01:54:23 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) (Remote host closed the connection) |
2022-01-19 01:54:56 +0100 | <Henson> | Axman6: thanks for the pointer to Criterion |
2022-01-19 01:55:41 +0100 | <Axman6> | if you use it, getting the output as HTML is very useful, definitely easier to read than the command line output |
2022-01-19 01:58:16 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 268 seconds) |
2022-01-19 01:59:44 +0100 | <Henson> | EvanR: so a function that takes an () will get computed no matter how many times you call it, unless you save the output? Is there a way, in pure code, that I can get something to be evaluated many times even though the output isn't important. If I were to use a map or a fold, the results would somehow have to be used, otherwise the code would never be called. Would I use "evaluate" in IO? |
2022-01-19 02:00:12 +0100 | <EvanR> | you foldl seq over the results |
2022-01-19 02:00:25 +0100 | <EvanR> | and evaluate the result somehow, maybe with evaluate in IO |
2022-01-19 02:01:14 +0100 | <EvanR> | > foldl seq () [(),(),(),(),()] |
2022-01-19 02:01:16 +0100 | <lambdabot> | () |
2022-01-19 02:01:23 +0100 | <EvanR> | > foldl seq () [(),(),(),error "bomb",()] |
2022-01-19 02:01:25 +0100 | <lambdabot> | *Exception: bomb |
2022-01-19 02:01:42 +0100 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-01-19 02:02:32 +0100 | <EvanR> | > foldl seq () [(),(),let expensive = last [1..10000000] in expensive,(),()] |
2022-01-19 02:02:33 +0100 | <lambdabot> | error: |
2022-01-19 02:02:33 +0100 | <lambdabot> | • No instance for (Num ()) arising from a use of ‘expensive’ |
2022-01-19 02:02:33 +0100 | <lambdabot> | • In the expression: expensive |
2022-01-19 02:02:56 +0100 | califax | (~califax@user/califx) |
2022-01-19 02:02:57 +0100 | <EvanR> | > foldl seq 0 [1,1,let expensive = last [1..10000000] in expensive,1,1] |
2022-01-19 02:02:59 +0100 | <lambdabot> | 1 |
2022-01-19 02:03:15 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) |
2022-01-19 02:03:28 +0100 | <Henson> | haha |
2022-01-19 02:03:50 +0100 | <EvanR> | > foldl seq 0 [1,1,let expensive = last [1..10000000000] in expensive,1,1] |
2022-01-19 02:03:56 +0100 | <lambdabot> | mueval-core: Time limit exceeded |
2022-01-19 02:03:59 +0100 | <EvanR> | k |
2022-01-19 02:05:21 +0100 | <EvanR> | and you probably want foldl' if it's a long list |
2022-01-19 02:06:02 +0100 | waleee-cl | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds) |
2022-01-19 02:06:50 +0100 | <Henson> | EvanR: so like foldl' seq 0 $ replicate numIterations functionToTest |
2022-01-19 02:06:55 +0100 | <albet70> | can liftIO lift a series IO actions? liftIO $ do { ... }? |
2022-01-19 02:07:03 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-01-19 02:07:20 +0100 | <EvanR> | > foldl' seq 0 [] |
2022-01-19 02:07:20 +0100 | <Henson> | EvanR: maybe with an "evaluate $" in front of everything? |
2022-01-19 02:07:21 +0100 | <lambdabot> | 0 |
2022-01-19 02:07:34 +0100 | <monochrom> | albet70: Yes. |
2022-01-19 02:07:42 +0100 | <EvanR> | > foldl' seq 0 (replicate 1000 1) |
2022-01-19 02:07:43 +0100 | <lambdabot> | 1 |
2022-01-19 02:07:44 +0100 | <albet70> | ok |
2022-01-19 02:07:48 +0100 | <EvanR> | Henson, sounds right |
2022-01-19 02:08:11 +0100 | <EvanR> | if the results are all numbers |
2022-01-19 02:08:27 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) (Quit: Leaving) |
2022-01-19 02:08:34 +0100 | <EvanR> | if they are non-flat data, seq might not be a good indicator of "cost" |
2022-01-19 02:08:53 +0100 | <Henson> | EvanR: right, if the results were all tuples of numbers, then the seq wouldn't work properly, it would only evaluate to (_,_) and not evaluate the contents, right? |
2022-01-19 02:09:00 +0100 | <EvanR> | right |
2022-01-19 02:09:12 +0100 | <monochrom> | IIRC criterion has a function for re-computing a thing n times. |
2022-01-19 02:09:40 +0100 | <monochrom> | If this is also the nth time you hear "criterion", well, let this be the (n+1)th time. |
2022-01-19 02:09:41 +0100 | <Henson> | EvanR: so I'd just have to wrap it in a function that would add the tuple contents together into a single number. Or would that not be sufficient? |
2022-01-19 02:09:49 +0100 | <monochrom> | Let this be an omen. |
2022-01-19 02:10:02 +0100 | <EvanR> | a strict tuple would solve it |
2022-01-19 02:10:18 +0100 | <Henson> | monochrom: I've already used Criterion to test my simple example and will use it tomorrow on my more complex production code |
2022-01-19 02:10:19 +0100 | <EvanR> | data SP a b = SP !a !b |
2022-01-19 02:10:21 +0100 | waleee-cl | (~waleee@h-98-128-229-110.NA.cust.bahnhof.se) |
2022-01-19 02:10:54 +0100 | <EvanR> | again assuming a and b are numbers or flat-ass values |
2022-01-19 02:11:03 +0100 | <monochrom> | Also consider the deepseq library (comes with GHC). |
2022-01-19 02:11:30 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-01-19 02:12:40 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2022-01-19 02:14:04 +0100 | <Henson> | monochrom: c_wraith said earlier than deepseq is more of a debugging tool, and probably wouldn't show up in production code. Is it something that some people use in their libraries, or should it just be used for testing? |
2022-01-19 02:14:52 +0100 | <EvanR> | maybe it's useful for stress testing, but I'm having a hard time seeing what else is tests xD |
2022-01-19 02:15:28 +0100 | <EvanR> | performance testing, I'm not sure it makes sense |
2022-01-19 02:15:39 +0100 | <EvanR> | not evaluating stuff is faster than deepseqing it, if you don't need it |
2022-01-19 02:15:54 +0100 | <EvanR> | *huge memory footprints slowdown gc |
2022-01-19 02:16:26 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) (Remote host closed the connection) |
2022-01-19 02:16:44 +0100 | <Henson> | I think I've got some ideas and tools now to help me probe this. The Criterion library and EvanR's suggestions on evaluating functions many times will simplify my performance testing. I've got some webpages on space leak probing to investigate as well. |
2022-01-19 02:17:15 +0100 | <Henson> | thanks so much, everyone, for your advice and suggestions. I'll be back tomorrow with more questions, but hopefully some answers, too :-) |
2022-01-19 02:17:30 +0100 | <monochrom> | If you're too lazy to roll your own "data SP a b = SP !a !b" (I know I am) then "rnf mytuple" does the job just as well. |
2022-01-19 02:17:36 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-01-19 02:17:45 +0100 | shapr | (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) (Remote host closed the connection) |
2022-01-19 02:17:55 +0100 | <EvanR> | ah true |
2022-01-19 02:17:59 +0100 | shapr | (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) |
2022-01-19 02:18:13 +0100 | <monochrom> | So much for "not used in production". |
2022-01-19 02:18:29 +0100 | <monochrom> | And then there is the history of deepseq. |
2022-01-19 02:18:43 +0100 | <jackdk> | "space leak" - is that the name of a haskell Q&A platform? |
2022-01-19 02:18:47 +0100 | <monochrom> | It used to be part of the parallelization library. |
2022-01-19 02:19:25 +0100 | <EvanR> | still, like, "what is the airspeed velocity that I can construct a tuple with values in it" leaves some questions unanswered about how itll be used later, or not used |
2022-01-19 02:19:25 +0100 | <monochrom> | By popular demand, there was enough people wanting the rnf feature but didn't want the whole parallelization library because they're using rnf outside parallelization. |
2022-01-19 02:19:36 +0100 | <monochrom> | So tell me again how useless it is? |
2022-01-19 02:20:06 +0100 | <dolio> | Just because a lot of people use it doesn't mean it's a good idea. :þ |
2022-01-19 02:21:19 +0100 | ksqsf | (~user@134.209.106.31) |
2022-01-19 02:21:52 +0100 | <Henson> | javascript? |
2022-01-19 02:22:48 +0100 | <EvanR> | not used in the production much |
2022-01-19 02:26:02 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 240 seconds) |
2022-01-19 02:26:43 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
2022-01-19 02:27:20 +0100 | SummerSonw | (~The_viole@203.77.49.232) |
2022-01-19 02:28:52 +0100 | nek0 | (~nek0@nek0.eu) (Quit: The Lounge - https://thelounge.chat) |
2022-01-19 02:31:15 +0100 | myShoggoth | (~myShoggot@97-120-67-120.ptld.qwest.net) (Ping timeout: 256 seconds) |
2022-01-19 02:32:57 +0100 | rtsn | (~nstr@user/rtsn) (Ping timeout: 256 seconds) |
2022-01-19 02:40:06 +0100 | Guest|38 | (~Guest|38@50.38.63.144) |
2022-01-19 02:40:32 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 240 seconds) |
2022-01-19 02:40:34 +0100 | Guest|38 | (~Guest|38@50.38.63.144) (Client Quit) |
2022-01-19 02:43:40 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) |
2022-01-19 02:44:02 +0100 | nek0 | (~nek0@nek0.eu) |
2022-01-19 02:46:53 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) (Remote host closed the connection) |
2022-01-19 02:47:03 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2022-01-19 02:48:17 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:1c4:1928:78d1:c799) |
2022-01-19 02:51:21 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) |
2022-01-19 02:51:51 +0100 | SummerSonw | (~The_viole@203.77.49.232) (Quit: Leaving) |
2022-01-19 02:58:05 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) (Remote host closed the connection) |
2022-01-19 03:00:09 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) |
2022-01-19 03:04:37 +0100 | califax- | (~califax@user/califx) |
2022-01-19 03:04:48 +0100 | waleee-cl | (~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Remote host closed the connection) |
2022-01-19 03:05:13 +0100 | waleee-cl | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2022-01-19 03:05:34 +0100 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-01-19 03:05:40 +0100 | califax- | califax |
2022-01-19 03:09:58 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-19 03:10:50 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds) |
2022-01-19 03:11:51 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:1c4:1928:78d1:c799) (Remote host closed the connection) |
2022-01-19 03:15:24 +0100 | ksqsf | (~user@134.209.106.31) |
2022-01-19 03:15:39 +0100 | vysn | (~vysn@user/vysn) |
2022-01-19 03:18:43 +0100 | Cajun | (~Cajun@user/cajun) |
2022-01-19 03:20:22 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 250 seconds) |
2022-01-19 03:20:57 +0100 | xff0x | (~xff0x@2001:1a81:5209:df00:b3fa:3a32:fd8e:f809) (Ping timeout: 240 seconds) |
2022-01-19 03:21:41 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-9841-fdb7-086b-ec04.res6.spectrum.com) |
2022-01-19 03:23:11 +0100 | xff0x | (~xff0x@2001:1a81:5244:9c00:ed3e:b304:fdc1:f902) |
2022-01-19 03:24:09 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-01-19 03:25:12 +0100 | <Cajun> | so im running into a problem when i try to avoid the State effect/monad in which i end up requiring constant binds to pass the game state. is there any better solution than this? https://paste.tomsmeding.com/LV3XYPLl |
2022-01-19 03:25:34 +0100 | neurocyte0917090 | (~neurocyte@user/neurocyte) (Ping timeout: 250 seconds) |
2022-01-19 03:27:04 +0100 | waleee-cl | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 268 seconds) |
2022-01-19 03:31:13 +0100 | <EvanR> | name all the gameprimes the same so they shadow and you don't accidentally use an old one xD |
2022-01-19 03:32:46 +0100 | <EvanR> | what the heck is that (>>) = (>>=) trick |
2022-01-19 03:34:07 +0100 | <Cajun> | its set up such that using bind will compile (since the game gets passed to the drawN) but i cant use >>= in do notation without the arrow <-, and >> means i dont have to use an arrow, so it looks cleaner. problem being i cant use the normal >>...... |
2022-01-19 03:34:30 +0100 | <Cajun> | the extension that allows for (>>) = (>>=) is -XRebindableSyntax |
2022-01-19 03:34:35 +0100 | <EvanR> | oh |
2022-01-19 03:35:36 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4) |
2022-01-19 03:35:39 +0100 | <Cajun> | and the shadowing idea isnt bad, but doesnt solve the constant binding issue. i am not affront to it though |
2022-01-19 03:36:35 +0100 | <Cajun> | i could use state in the interpreter for those functions, but i tried that and my code got messy *fast* |
2022-01-19 03:36:38 +0100 | <EvanR> | also in a chain of commands that looks like f x y foo >>= \foo' -> g z w foo' >>= \foo'' -> ... |
2022-01-19 03:36:57 +0100 | <EvanR> | that's f x y >=> g z w >=> ... |
2022-01-19 03:37:18 +0100 | <EvanR> | or something |
2022-01-19 03:37:26 +0100 | <Cajun> | well preferably none of the >>, >>=, >=>, or their ilk appear in the code, as do notation makes it cleaner |
2022-01-19 03:38:05 +0100 | <Cajun> | s/appear/do not appear |
2022-01-19 03:38:28 +0100 | <Cajun> | (wait dont change that, reading is hard) |
2022-01-19 03:38:59 +0100 | shapr | (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) (Remote host closed the connection) |
2022-01-19 03:39:12 +0100 | shapr | (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) |
2022-01-19 03:42:51 +0100 | <dsal> | Well, if >> doesn't work for you and you don't want to keep naming the thing, then it sounds like do notation is making it less clean by your requirements. |
2022-01-19 03:42:51 +0100 | <Cajun> | EvanR: thats >>= in that instance. more specifically, `f x y foo >>= g z w` is the same as `f x y foo >>= \foo' -> g z w foo'` |
2022-01-19 03:43:43 +0100 | <EvanR> | I doubtted >=> would work |
2022-01-19 03:43:49 +0100 | <EvanR> | never helped me none |
2022-01-19 03:48:50 +0100 | mbuf | (~Shakthi@110.225.233.59) |
2022-01-19 03:50:19 +0100 | jackson99 | (~bc8147f2@cerf.good1.com) |
2022-01-19 03:50:39 +0100 | <EvanR> | yeah I dunno how clear do notation is for someone who didn't write it 30 minutes ago, unless it's a very straightforward monad |
2022-01-19 03:51:07 +0100 | <dsal> | I always find >=> weird -- I am confused by what it is or I need it and it's obvious. |
2022-01-19 03:51:39 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2022-01-19 03:51:42 +0100 | <Cajun> | monadic function composition |
2022-01-19 03:52:03 +0100 | <EvanR> | >=> and <=< feel like we left purely functional land and were composing functions that have side effects |
2022-01-19 03:52:15 +0100 | <EvanR> | which... I never did |
2022-01-19 03:52:28 +0100 | <EvanR> | applying functions with side effects is bad enough |
2022-01-19 03:52:58 +0100 | zmt01 | (~zmt00@user/zmt00) |
2022-01-19 03:53:35 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
2022-01-19 03:54:16 +0100 | akurilin_ | (uid322841@id-322841.ilkley.irccloud.com) |
2022-01-19 03:54:22 +0100 | Swahili | (~Swahili@a95-94-208-187.cpe.netcabo.pt) (Remote host closed the connection) |
2022-01-19 03:55:02 +0100 | zmt01 | (~zmt00@user/zmt00) (Read error: Connection reset by peer) |
2022-01-19 03:56:16 +0100 | zmt01 | (~zmt00@user/zmt00) |
2022-01-19 03:56:20 +0100 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 250 seconds) |
2022-01-19 03:58:31 +0100 | Henson | (~kvirc@107-179-133-201.cpe.teksavvy.com) (Ping timeout: 268 seconds) |
2022-01-19 04:00:17 +0100 | <Cajun> | i might try making a quasi quoter for it, but thatll be done later *shrug* |
2022-01-19 04:01:43 +0100 | ksqsf | (~user@134.209.106.31) |
2022-01-19 04:04:08 +0100 | amk | (~amk@109.255.169.126) (Ping timeout: 250 seconds) |
2022-01-19 04:06:44 +0100 | amk | (~amk@109.255.169.126) |
2022-01-19 04:07:17 +0100 | <Axman6> | Hmm, just had a possible terrible idea - when processing data which comes in as serialised binary, we usually parse it into a Haskell type with all the relevant fields, which can increase the size of the data quite a lot. Instead, we could read the data, parser it, but then use data MyType = MyType_ !ByteArray#; and provide pattern synonyms for the parsed type. Anyone know of this being done? |
2022-01-19 04:07:53 +0100 | <Axman6> | (ByteArray# being somewhat arbitrary, it could be any representation of bytes with a length) |
2022-01-19 04:08:26 +0100 | <c_wraith> | I'm not familiar with that exact technique, but I've certainly seen libraries that just allocate a thunk and only parse the inner elements if the thunk is demanded |
2022-01-19 04:09:01 +0100 | <c_wraith> | which works very well on length-prefixed encodings. Still works on other encodings, but it takes a little more effort. |
2022-01-19 04:09:03 +0100 | <EvanR> | similar to javascript typed arrays |
2022-01-19 04:09:57 +0100 | raym | (~raym@user/raym) (Remote host closed the connection) |
2022-01-19 04:10:20 +0100 | <EvanR> | Axman6, so compact region, but skip the compacting part because it's already compacted xD |
2022-01-19 04:10:44 +0100 | <Axman6> | possibly* yeah, sort of |
2022-01-19 04:11:25 +0100 | <EvanR> | how complex is your data, just some value backed by bytes, or does it represent nested levels of stuff |
2022-01-19 04:11:35 +0100 | <Axman6> | IIRC this is how capt'n proto or... one of those other serialisation libraries works, which aim to keep the in memory representation the same as the on the wire one |
2022-01-19 04:13:29 +0100 | raym | (~raym@user/raym) |
2022-01-19 04:15:39 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-19 04:17:21 +0100 | <EvanR> | an ADT programming interface on top of some big buffer of bytes would be cool |
2022-01-19 04:18:01 +0100 | <Axman6> | on a somewhat related note, I wish we had the binary pattern matching syntax that Erlang has |
2022-01-19 04:18:15 +0100 | <EvanR> | pattern matching would look into the buffer. Construction on the other hand |
2022-01-19 04:21:16 +0100 | <c_wraith> | There is a big question of whether you do a check to see that the data parses correctly up-front |
2022-01-19 04:21:28 +0100 | <c_wraith> | You probably *should* |
2022-01-19 04:21:47 +0100 | <c_wraith> | unless you're able to trust the data, for some reason. (It was signed by another instance of the same program, for instance) |
2022-01-19 04:22:13 +0100 | <Axman6> | yeah, the only way to create them would be to parse them |
2022-01-19 04:22:33 +0100 | <c_wraith> | not in length-prefixed binary data. |
2022-01-19 04:22:43 +0100 | <c_wraith> | If you could trust it, you wouldn't even need to parse it |
2022-01-19 04:23:55 +0100 | <Axman6> | sure - my question is mostly about the interface for working with the data, using pattern synonyms over some bytes |
2022-01-19 04:24:35 +0100 | <c_wraith> | I think it has some value. The real trick would be how to make it into a library |
2022-01-19 04:24:38 +0100 | <Axman6> | storing things in memory encoded using CBOR :thinking-face: |
2022-01-19 04:25:08 +0100 | <c_wraith> | there's no way to abstract over patterns :( |
2022-01-19 04:25:55 +0100 | <c_wraith> | (you can abstract over encoding them as an algebra, but that's pretty far away from your suggestion in terms of usability) |
2022-01-19 04:29:21 +0100 | alp | (~alp@user/alp) (Ping timeout: 268 seconds) |
2022-01-19 04:29:40 +0100 | rtsn | (~nstr@h-155-4-221-229.NA.cust.bahnhof.se) |
2022-01-19 04:30:02 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 240 seconds) |
2022-01-19 04:34:47 +0100 | td_ | (~td@muedsl-82-207-238-179.citykom.de) (Ping timeout: 256 seconds) |
2022-01-19 04:35:20 +0100 | <Axman6> | not sure what you mean |
2022-01-19 04:35:51 +0100 | <Axman6> | Also, I'm only considering the product types |
2022-01-19 04:36:16 +0100 | td_ | (~td@muedsl-82-207-238-121.citykom.de) |
2022-01-19 04:36:17 +0100 | <EvanR> | 'structs' xD |
2022-01-19 04:36:42 +0100 | <EvanR> | that's what you should call the lib |
2022-01-19 04:36:47 +0100 | <Axman6> | I'll give you one guess who wrote https://hackage.haskell.org/package/structs |
2022-01-19 04:36:54 +0100 | <EvanR> | dangit |
2022-01-19 04:36:56 +0100 | <c_wraith> | I don't need a guess, I know. |
2022-01-19 04:37:14 +0100 | <c_wraith> | I feel like that library was never quite finished, somehow |
2022-01-19 04:39:00 +0100 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Quit: Konversation terminated!) |
2022-01-19 04:40:11 +0100 | <c_wraith> | anyway - my point was that this is not the sort of thing that easily fits into a library. The kinds of library designs currently used for parsers tend to be very Applicative-centric, and it's hard to get the guarantees this needs out of Applicative. |
2022-01-19 04:41:46 +0100 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) |
2022-01-19 04:42:14 +0100 | <Axman6> | yeah it would need to be monadic |
2022-01-19 04:42:38 +0100 | <Axman6> | assuming there are length prefixed values contained within |
2022-01-19 04:43:24 +0100 | <c_wraith> | I don't think you can get the guarantees you need from that, either. |
2022-01-19 04:43:34 +0100 | <c_wraith> | the problem is that they allow arbitrary functions to be embedded |
2022-01-19 04:43:37 +0100 | zmt01 | (~zmt00@user/zmt00) (Ping timeout: 240 seconds) |
2022-01-19 04:43:50 +0100 | <c_wraith> | So that people can and will happily parse things early |
2022-01-19 04:44:19 +0100 | <c_wraith> | You need a more restrictive interface. |
2022-01-19 04:44:40 +0100 | zmt00 | (~zmt00@user/zmt00) |
2022-01-19 04:45:27 +0100 | <c_wraith> | I guess there's QualifiedDo now. That might solve a lot of issues. |
2022-01-19 04:47:02 +0100 | zmt00 | (~zmt00@user/zmt00) (Client Quit) |
2022-01-19 04:48:31 +0100 | nunggu | (~q@user/nunggu) (Remote host closed the connection) |
2022-01-19 04:49:36 +0100 | zmt00 | (~zmt00@user/zmt00) |
2022-01-19 04:50:05 +0100 | Henson | (~kvirc@107-179-133-201.cpe.teksavvy.com) |
2022-01-19 04:50:35 +0100 | myShoggoth | (~myShoggot@97-120-67-120.ptld.qwest.net) |
2022-01-19 04:56:01 +0100 | ksqsf | (~user@134.209.106.31) |
2022-01-19 04:58:11 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2022-01-19 04:58:11 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2022-01-19 04:58:11 +0100 | finn_elija | FinnElija |
2022-01-19 05:00:32 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 240 seconds) |
2022-01-19 05:01:29 +0100 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Remote host closed the connection) |
2022-01-19 05:02:23 +0100 | russruss | (~russruss@my.russellmcc.com) |
2022-01-19 05:03:25 +0100 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) |
2022-01-19 05:03:32 +0100 | burnsidesLlama | (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-01-19 05:03:44 +0100 | razetime | (~quassel@49.207.203.87) |
2022-01-19 05:07:15 +0100 | <Axman6> | I think if this were to be a library, it would be a TH based library, which would provide a quasiquoter which is passed a data declaration and it would produce the type and pattern synonyms |
2022-01-19 05:09:43 +0100 | <Axman6> | so if you pass it data MyType = MyType { w8 :: Word8; i64 :: Int64; bs :: ByteString {- maybe not easy to handle? -}; } you'd get back data MyType = MyType_ !ByteArray#; pattern MyType w8 i64 bs = ... but I'm not sure what other problems you'd run into |
2022-01-19 05:10:41 +0100 | <Axman6> | I'm imagining it working like a C struct though, where fields are indexable by offset ot offset plus the size of dynamically sized members appearing before |
2022-01-19 05:12:28 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) |
2022-01-19 05:13:30 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer) |
2022-01-19 05:13:32 +0100 | ksqsf | (~user@134.209.106.31) |
2022-01-19 05:18:25 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 256 seconds) |
2022-01-19 05:19:06 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
2022-01-19 05:20:15 +0100 | ksqsf | (~user@134.209.106.31) |
2022-01-19 05:25:09 +0100 | hololeap_ | hololeap |
2022-01-19 05:31:30 +0100 | zmt01 | (~zmt00@user/zmt00) |
2022-01-19 05:31:47 +0100 | deadmarshal | (~deadmarsh@95.38.228.70) |
2022-01-19 05:32:20 +0100 | jenna8912 | (~jenna@c-107-5-104-51.hsd1.mi.comcast.net) (Quit: Reconnecting) |
2022-01-19 05:32:32 +0100 | jenna8912 | (~jenna@c-107-5-104-51.hsd1.mi.comcast.net) |
2022-01-19 05:33:46 +0100 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2022-01-19 05:34:43 +0100 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 250 seconds) |
2022-01-19 05:35:20 +0100 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) (Ping timeout: 268 seconds) |
2022-01-19 05:36:17 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds) |
2022-01-19 05:36:54 +0100 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) |
2022-01-19 05:38:44 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-19 05:40:38 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-01-19 05:43:13 +0100 | Guest48 | (~Guest48@133.8.220.53) |
2022-01-19 05:44:51 +0100 | qeqeqw1 | (~qeqeqw3@2001:861:3a04:e320:31ea:a59b:1c06:51f4) |
2022-01-19 05:49:46 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-01-19 05:51:32 +0100 | pavonia | (~user@user/siracusa) (Ping timeout: 240 seconds) |
2022-01-19 05:52:44 +0100 | Guest48 | faustind |
2022-01-19 05:59:20 +0100 | pavonia | (~user@user/siracusa) |
2022-01-19 05:59:22 +0100 | pfurla | (~pfurla@2804:d41:4331:4800:31ef:1aaf:1e7:47d) (Quit: gone to sleep. ZZZzzz…) |
2022-01-19 06:07:43 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) |
2022-01-19 06:08:52 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2022-01-19 06:09:47 +0100 | <EvanR> | I see there is no Stream type in base? Is there a conventional :ctor operator name for it |
2022-01-19 06:09:50 +0100 | <EvanR> | :> or such |
2022-01-19 06:10:10 +0100 | shapr | (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) (Remote host closed the connection) |
2022-01-19 06:10:24 +0100 | shapr | (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) |
2022-01-19 06:10:49 +0100 | <faustind> | Hi. My question is about the simplifier of the compiler. Specifically |
2022-01-19 06:10:50 +0100 | <faustind> | about the interaction of inlining and rewrite rules. |
2022-01-19 06:10:50 +0100 | <faustind> | I know that we can control the interaction of inlining and rules with phase numbers. |
2022-01-19 06:10:51 +0100 | <faustind> | But I am curious, in the same run of the simplifier, |
2022-01-19 06:10:51 +0100 | <faustind> | between inlining and rules application which one takes place first? |
2022-01-19 06:10:52 +0100 | <faustind> | I read that inlining is relied upon to expose more opportunities |
2022-01-19 06:10:52 +0100 | <faustind> | for optimization. So I think inlining happens first. But I am not sure. |
2022-01-19 06:12:20 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
2022-01-19 06:15:18 +0100 | Erutuon | (~Erutuon@user/erutuon) (Quit: WeeChat 2.8) |
2022-01-19 06:16:29 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-19 06:17:19 +0100 | <Axman6> | I don't know the answer but GHC has quite a lot of information on its wiki, so I would start there |
2022-01-19 06:19:27 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Ping timeout: 256 seconds) |
2022-01-19 06:20:45 +0100 | amk | (~amk@109.255.169.126) (Ping timeout: 256 seconds) |
2022-01-19 06:21:51 +0100 | amk | (~amk@109.255.169.126) |
2022-01-19 06:22:41 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-01-19 06:23:01 +0100 | jackson99 | (~bc8147f2@cerf.good1.com) (Quit: quit) |
2022-01-19 06:23:25 +0100 | xsperry | (~xs@user/xsperry) () |
2022-01-19 06:24:03 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
2022-01-19 06:25:37 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds) |
2022-01-19 06:27:05 +0100 | <sclv> | EvanR: in a lazy language, streams can often be just lazy lists |
2022-01-19 06:27:39 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds) |
2022-01-19 06:27:52 +0100 | <Axman6> | @hoogle (:>) |
2022-01-19 06:27:52 +0100 | <lambdabot> | Data.Sequence (:>) :: Seq a -> a -> ViewR a |
2022-01-19 06:27:52 +0100 | <lambdabot> | Data.Sequence.Internal (:>) :: Seq a -> a -> ViewR a |
2022-01-19 06:27:52 +0100 | <lambdabot> | Control.Lens.Cons pattern (:>) :: forall a b . Snoc a a b b => () => a -> b -> a |
2022-01-19 06:27:55 +0100 | <sclv> | parameterized streams are also often done as cofree comonads like so https://hackage.haskell.org/package/free-5.1.7/docs/Control-Comonad-Cofree.html |
2022-01-19 06:29:08 +0100 | <EvanR> | I mean specifically this data type |
2022-01-19 06:29:17 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-01-19 06:29:23 +0100 | <EvanR> | data Stream a = a :? Stream a deriving everything |
2022-01-19 06:29:43 +0100 | <EvanR> | a list that can't end |
2022-01-19 06:30:09 +0100 | <EvanR> | i can't remember if there is a conventional ctor name |
2022-01-19 06:30:35 +0100 | <Axman6> | :> feels familiar for that... |
2022-01-19 06:31:12 +0100 | <EvanR> | yeah I knew it conflicted with Sequence |
2022-01-19 06:31:37 +0100 | <EvanR> | apparently something in Lens |
2022-01-19 06:31:49 +0100 | <Axman6> | it makes me uneasy that it should probably be a Foldable, but things like length will never work |
2022-01-19 06:32:21 +0100 | <EvanR> | doctor, it hurts when I try to length an infinite structure! |
2022-01-19 06:32:55 +0100 | <EvanR> | actually |
2022-01-19 06:33:06 +0100 | <EvanR> | the length of a stream can be expressed as a lazy natural |
2022-01-19 06:33:17 +0100 | <EvanR> | so "never work" for some value of work |
2022-01-19 06:33:44 +0100 | <EvanR> | it could usefully be compared to finite lazy nats |
2022-01-19 06:33:56 +0100 | xsperry | (~xs@user/xsperry) |
2022-01-19 06:34:03 +0100 | <Axman6> | "Hopw long is that stream?" "At least this long.... S (S (S (S (S ..." |
2022-01-19 06:34:32 +0100 | deadmarshal | (~deadmarsh@95.38.228.70) (Ping timeout: 268 seconds) |
2022-01-19 06:35:08 +0100 | <EvanR> | exactly! |
2022-01-19 06:35:57 +0100 | <monochrom> | Maybe is an instance of Alternative, and some (Just 0) hurts. I think it's OK for length (your stream) to hurt, too. :) |
2022-01-19 06:36:51 +0100 | <EvanR> | I don't particularly understand Alternative |
2022-01-19 06:37:30 +0100 | <Axman6> | Alternative: or do you? |
2022-01-19 06:37:33 +0100 | <Axman6> | ly* |
2022-01-19 06:37:34 +0100 | <Axman6> | damn |
2022-01-19 06:38:47 +0100 | <EvanR> | well, STM is an instance of Alternative, and I get that |
2022-01-19 06:39:11 +0100 | <EvanR> | is some broken there too |
2022-01-19 06:39:18 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480::41) |
2022-01-19 06:39:27 +0100 | <Axman6> | I feel both Maybe and list's instances make sense |
2022-01-19 06:40:25 +0100 | ishutin | (~ishutin@91-83-11-240.pool.digikabel.hu) (Ping timeout: 256 seconds) |
2022-01-19 06:40:37 +0100 | shapr | (~user@2601:7c0:c37c:46d0:a68f:6e87:2453:573d) (Ping timeout: 240 seconds) |
2022-01-19 06:42:02 +0100 | ishutin | (~ishutin@84-236-1-73.pool.digikabel.hu) |
2022-01-19 06:45:32 +0100 | _ht | (~quassel@82-168-34-160.fixed.kpn.net) |
2022-01-19 06:52:42 +0100 | mvk | (~mvk@2607:fea8:5cdd:f000::55f8) (Ping timeout: 250 seconds) |
2022-01-19 06:55:18 +0100 | qeqeqw1 | (~qeqeqw3@2001:861:3a04:e320:31ea:a59b:1c06:51f4) (Ping timeout: 250 seconds) |
2022-01-19 06:55:38 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Quit: leaving) |
2022-01-19 06:58:43 +0100 | namkeleser | (~namkelese@124.188.192.57) |
2022-01-19 06:59:07 +0100 | zaquest | (~notzaques@5.130.79.72) (Quit: Leaving) |
2022-01-19 07:06:17 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds) |
2022-01-19 07:09:01 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:a11d:216c:4ca3:2c86) |
2022-01-19 07:09:32 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 240 seconds) |
2022-01-19 07:10:12 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-19 07:10:47 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) |
2022-01-19 07:11:42 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2022-01-19 07:14:37 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
2022-01-19 07:16:53 +0100 | <jackdk> | I would've expected `some (Just 0)` to be an infinite list, not an infinite loop. What am I doing wrong? |
2022-01-19 07:17:03 +0100 | <jackdk> | (in my brain, I mean) |
2022-01-19 07:17:17 +0100 | rusrushal13 | (~rusrushal@2401:4900:5d14:5eb2:ab40:4205:c981:41c3) |
2022-01-19 07:17:30 +0100 | <hololeap> | I think it tries to keep going until it hits a Nothing, which never happens |
2022-01-19 07:18:15 +0100 | <dsal> | Hmm... I think I also misunderstand some that way. I expect it to be lazy and start giving me stuff. |
2022-01-19 07:18:19 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 268 seconds) |
2022-01-19 07:18:56 +0100 | xff0x | (~xff0x@2001:1a81:5244:9c00:ed3e:b304:fdc1:f902) (Ping timeout: 268 seconds) |
2022-01-19 07:19:25 +0100 | <hololeap> | @src some |
2022-01-19 07:19:25 +0100 | <lambdabot> | some v = some_v |
2022-01-19 07:19:25 +0100 | <lambdabot> | where many_v = some_v <|> pure [] |
2022-01-19 07:19:25 +0100 | <lambdabot> | some_v = (:) <$> v <*> many_v |
2022-01-19 07:20:21 +0100 | xff0x | (~xff0x@2001:1a81:525d:1e00:f1de:1cfe:e8a8:d6c0) |
2022-01-19 07:21:50 +0100 | <hololeap> | % let some_v = (:) <$> Just 0 <*> some_v |
2022-01-19 07:21:50 +0100 | <yahb> | hololeap: |
2022-01-19 07:22:02 +0100 | <hololeap> | % some_v |
2022-01-19 07:22:03 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-19 07:22:03 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-19 07:22:03 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-19 07:22:07 +0100 | <yahb> | hololeap: [Timed out] |
2022-01-19 07:23:31 +0100 | <jackdk> | right, but I need to case on the tail to know whether to return Just at all |
2022-01-19 07:23:51 +0100 | <jackdk> | and because there's no tail, we spin forever |
2022-01-19 07:24:05 +0100 | <hololeap> | since some_v always succeeds, it never gets to the second part of the <|> inside many_v |
2022-01-19 07:24:31 +0100 | <hololeap> | I'm also trying to understand it more fully :) |
2022-01-19 07:26:01 +0100 | <hololeap> | so it ends up being equivalent to: fix $ liftA2 (:) (Just 0) |
2022-01-19 07:26:32 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-19 07:29:02 +0100 | chomwitt | (~chomwitt@2a02:587:dc0b:200:12c3:7bff:fe6d:d374) |
2022-01-19 07:31:25 +0100 | rusrushal13 | (~rusrushal@2401:4900:5d14:5eb2:ab40:4205:c981:41c3) (Ping timeout: 256 seconds) |
2022-01-19 07:31:50 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-01-19 07:32:09 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-01-19 07:34:32 +0100 | zmt01 | (~zmt00@user/zmt00) (Ping timeout: 240 seconds) |
2022-01-19 07:35:25 +0100 | michalz | (~michalz@185.246.204.101) |
2022-01-19 07:35:48 +0100 | ksqsf | (~user@134.209.106.31) |
2022-01-19 07:36:39 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-19 07:37:59 +0100 | <hololeap> | % foo :: StateT Int Maybe () ; foo = get >>= bool (modify (+1)) empty . (>=5) |
2022-01-19 07:38:00 +0100 | <yahb> | hololeap: |
2022-01-19 07:38:10 +0100 | <hololeap> | % evalStateT (some foo) 0 |
2022-01-19 07:38:10 +0100 | <yahb> | hololeap: Just [(),(),(),(),()] |
2022-01-19 07:41:13 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 256 seconds) |
2022-01-19 07:41:24 +0100 | <hololeap> | % fix $ liftA2 (:) (Identity 0) |
2022-01-19 07:41:29 +0100 | <yahb> | hololeap: Identity [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
2022-01-19 07:42:06 +0100 | <hololeap> | so it might have something to do with Maybe being more strict than Identity? |
2022-01-19 07:42:22 +0100 | myShoggoth | (~myShoggot@97-120-67-120.ptld.qwest.net) (Ping timeout: 268 seconds) |
2022-01-19 07:43:16 +0100 | <int-e> | > liftA2 (:) (Just 0) $ liftA2 (:) (Just 0) $ liftA2 (:) (Just 0) $ Nothing |
2022-01-19 07:43:17 +0100 | <lambdabot> | Nothing |
2022-01-19 07:43:48 +0100 | <EvanR> | at first I was boggling at how Maybe could be *more* strict than Identity, but I guess we're talking about Alternative instance |
2022-01-19 07:43:53 +0100 | vglfr | (~vglfr@46.96.165.111) (Ping timeout: 256 seconds) |
2022-01-19 07:44:11 +0100 | <EvanR> | @src Identity |
2022-01-19 07:44:11 +0100 | <lambdabot> | newtype Identity a = Identity { runIdentity :: a } |
2022-01-19 07:44:42 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-01-19 07:45:01 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Ping timeout: 256 seconds) |
2022-01-19 07:45:25 +0100 | <int-e> | > liftA2 (:) (pure 0) undefined :: Identity [Int] |
2022-01-19 07:45:26 +0100 | <lambdabot> | Identity [0*Exception: Prelude.undefined |
2022-01-19 07:45:32 +0100 | <int-e> | > liftA2 (:) (pure 0) undefined :: Maybe [Int] |
2022-01-19 07:45:33 +0100 | <lambdabot> | *Exception: Prelude.undefined |
2022-01-19 07:45:39 +0100 | <hololeap> | I'm pivoting to talking about why in ghci `fix $ liftA2 (:) (Just 0)` hangs but `fix $ liftA2 (:) (Identity 0)` will try to give you an infinite list ... it might explain why `some (Just 0)` also seems to hang |
2022-01-19 07:45:55 +0100 | <int-e> | there you have your additional strictness demonstrated with actual bottoms |
2022-01-19 07:46:20 +0100 | <hololeap> | right, that makes sense |
2022-01-19 07:46:49 +0100 | <int-e> | but the *reason* is that you can't know that a later part of the computation won't be Nothing, which would collapse the result |
2022-01-19 07:47:24 +0100 | <hololeap> | I see |
2022-01-19 07:47:51 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-01-19 07:48:20 +0100 | <hololeap> | that's a good way to explain it |
2022-01-19 07:51:01 +0100 | deadmarshal | (~deadmarsh@95.38.228.70) |
2022-01-19 07:51:47 +0100 | zaquest | (~notzaques@5.130.79.72) |
2022-01-19 07:55:16 +0100 | ksqsf | (~user@134.209.106.31) |
2022-01-19 08:00:02 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 240 seconds) |
2022-01-19 08:00:02 +0100 | deadmarshal | (~deadmarsh@95.38.228.70) (Ping timeout: 240 seconds) |
2022-01-19 08:17:50 +0100 | kuribas | (~user@ptr-25vy0i81lhv78yduvdy.18120a2.ip6.access.telenet.be) |
2022-01-19 08:20:53 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
2022-01-19 08:25:29 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-01-19 08:28:51 +0100 | deadmarshal | (~deadmarsh@95.38.230.192) |
2022-01-19 08:31:26 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-01-19 08:31:59 +0100 | shriekingnoise | (~shrieking@201.231.16.156) (Quit: Quit) |
2022-01-19 08:31:59 +0100 | ksqsf | (~user@134.209.106.31) |
2022-01-19 08:32:26 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2022-01-19 08:37:15 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 268 seconds) |
2022-01-19 08:37:21 +0100 | falafel | (~falafel@2603-8000-d800-688c-7d7e-a81e-32e3-0736.res6.spectrum.com) |
2022-01-19 08:38:25 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2022-01-19 08:45:21 +0100 | MajorBiscuit | (~MajorBisc@86-88-79-148.fixed.kpn.net) |
2022-01-19 08:45:23 +0100 | MajorBiscuit | (~MajorBisc@86-88-79-148.fixed.kpn.net) (Client Quit) |
2022-01-19 08:45:39 +0100 | MajorBiscuit | (~MajorBisc@86-88-79-148.fixed.kpn.net) |
2022-01-19 08:45:41 +0100 | ksqsf | (~user@134.209.106.31) |
2022-01-19 08:45:50 +0100 | <qrpnxz> | Maybe kills laziness because you need to finish to know if it's Just or Nothing, Identity doesn't have that problem. |
2022-01-19 08:46:02 +0100 | <qrpnxz> | ah my bad, already explained |
2022-01-19 08:46:23 +0100 | notzmv | (~zmv@user/notzmv) |
2022-01-19 08:46:33 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2022-01-19 08:49:11 +0100 | fef | (~thedawn@user/thedawn) |
2022-01-19 08:51:29 +0100 | deadmarshal | (~deadmarsh@95.38.230.192) (Ping timeout: 256 seconds) |
2022-01-19 08:53:40 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-01-19 08:54:08 +0100 | slac13033 | (~slack1256@191.126.227.199) |
2022-01-19 08:54:43 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-01-19 08:55:30 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-01-19 08:56:02 +0100 | slack1256 | (~slack1256@186.11.27.197) (Ping timeout: 240 seconds) |
2022-01-19 08:56:04 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-01-19 08:57:56 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 250 seconds) |
2022-01-19 09:01:10 +0100 | simendsjo | (~user@84.211.91.241) |
2022-01-19 09:04:30 +0100 | deadmarshal | (~deadmarsh@95.38.230.192) |
2022-01-19 09:04:37 +0100 | falafel | (~falafel@2603-8000-d800-688c-7d7e-a81e-32e3-0736.res6.spectrum.com) (Ping timeout: 240 seconds) |
2022-01-19 09:05:56 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Remote host closed the connection) |
2022-01-19 09:06:35 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-01-19 09:09:26 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-19 09:10:49 +0100 | fr33domlover | (~fr33@5.102.195.159) |
2022-01-19 09:15:08 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-19 09:20:47 +0100 | faustind | (~Guest48@133.8.220.53) (Ping timeout: 256 seconds) |
2022-01-19 09:22:16 +0100 | simendsjo | (~user@84.211.91.241) (Ping timeout: 268 seconds) |
2022-01-19 09:24:53 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) |
2022-01-19 09:25:30 +0100 | chele | (~chele@user/chele) |
2022-01-19 09:25:48 +0100 | Major_Biscuit | (~MajorBisc@c-001-018-021.client.tudelft.eduvpn.nl) |
2022-01-19 09:28:53 +0100 | MajorBiscuit | (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 256 seconds) |
2022-01-19 09:29:40 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2022-01-19 09:30:00 +0100 | falafel | (~falafel@2603-8000-d800-688c-7d7e-a81e-32e3-0736.res6.spectrum.com) |
2022-01-19 09:34:20 +0100 | falafel | (~falafel@2603-8000-d800-688c-7d7e-a81e-32e3-0736.res6.spectrum.com) (Ping timeout: 250 seconds) |
2022-01-19 09:35:07 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2022-01-19 09:37:49 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-19 09:38:32 +0100 | deadmarshal | (~deadmarsh@95.38.230.192) (Ping timeout: 256 seconds) |
2022-01-19 09:45:29 +0100 | deadmarshal | (~deadmarsh@95.38.230.192) |
2022-01-19 09:47:02 +0100 | ubert | (~Thunderbi@p200300ecdf099420d5ce6ee7616221b3.dip0.t-ipconnect.de) |
2022-01-19 09:48:15 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-01-19 09:50:30 +0100 | max22- | (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) |
2022-01-19 09:50:44 +0100 | mastarija | (~mastarija@2a05:4f46:e0e:5000:c96c:6830:df6b:3edb) |
2022-01-19 09:53:17 +0100 | rtsn | (~nstr@h-155-4-221-229.NA.cust.bahnhof.se) (Changing host) |
2022-01-19 09:53:17 +0100 | rtsn | (~nstr@user/rtsn) |
2022-01-19 09:58:36 +0100 | dut | (~dut@user/dut) (Quit: Leaving) |
2022-01-19 09:58:37 +0100 | wmacmil | (~wmacmil@83-233-165-97.cust.bredband2.com) |
2022-01-19 10:00:24 +0100 | mmhat | (~mmh@55d4fa95.access.ecotel.net) |
2022-01-19 10:02:17 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2022-01-19 10:02:37 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:edf9:3833:cff9:92b3) |
2022-01-19 10:03:47 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-01-19 10:06:05 +0100 | alp | (~alp@user/alp) |
2022-01-19 10:06:46 +0100 | mastarija | (~mastarija@2a05:4f46:e0e:5000:c96c:6830:df6b:3edb) (Quit: Leaving) |
2022-01-19 10:07:05 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-01-19 10:08:38 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-01-19 10:09:14 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-01-19 10:09:40 +0100 | ubert1 | (~Thunderbi@p200300ecdf0994208629362fe72747a7.dip0.t-ipconnect.de) |
2022-01-19 10:09:59 +0100 | SummerSonw | (~The_viole@203.77.49.232) |
2022-01-19 10:10:16 +0100 | lemonsnicks | (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 256 seconds) |
2022-01-19 10:11:26 +0100 | SummerSonw | (~The_viole@203.77.49.232) (Client Quit) |
2022-01-19 10:11:44 +0100 | SummerSonw | (~The_viole@203.77.49.232) |
2022-01-19 10:12:03 +0100 | antony | (~The_viole@203.77.49.232) |
2022-01-19 10:12:27 +0100 | lemonsnicks | (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) |
2022-01-19 10:14:58 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) |
2022-01-19 10:14:59 +0100 | ardell | (~ardell@user/ardell) |
2022-01-19 10:15:18 +0100 | antony | (~The_viole@203.77.49.232) (Client Quit) |
2022-01-19 10:15:38 +0100 | antony | (~The_viole@203.77.49.232) |
2022-01-19 10:15:39 +0100 | PVPANTHONY | (~The_viole@203.77.49.232) |
2022-01-19 10:16:07 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:81c9:f67f:1443:f972) (Remote host closed the connection) |
2022-01-19 10:16:32 +0100 | SummerSonw | (~The_viole@203.77.49.232) (Ping timeout: 268 seconds) |
2022-01-19 10:17:16 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-01-19 10:17:39 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-01-19 10:19:12 +0100 | PVPANTHONY | (~The_viole@203.77.49.232) (Client Quit) |
2022-01-19 10:19:17 +0100 | antony | (~The_viole@203.77.49.232) (Client Quit) |
2022-01-19 10:20:22 +0100 | SummerSonw | (~The_viole@203.77.49.232) |
2022-01-19 10:21:53 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-01-19 10:22:55 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-01-19 10:24:18 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:edf9:3833:cff9:92b3) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-19 10:32:05 +0100 | jgeerds | (~jgeerds@55d4090e.access.ecotel.net) |
2022-01-19 10:32:34 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 268 seconds) |
2022-01-19 10:35:18 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2022-01-19 10:37:22 +0100 | namkeleser | (~namkelese@124.188.192.57) (Quit: Client closed) |
2022-01-19 10:40:32 +0100 | raym | (~raym@user/raym) (Ping timeout: 240 seconds) |
2022-01-19 10:44:48 +0100 | `2jt | (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) |
2022-01-19 10:46:29 +0100 | SummerSonw | (~The_viole@203.77.49.232) (Quit: Leaving) |
2022-01-19 10:46:42 +0100 | raym | (~raym@user/raym) |
2022-01-19 10:46:50 +0100 | SummerSonw | (~The_viole@203.77.49.232) |
2022-01-19 10:46:55 +0100 | slac13033 | (~slack1256@191.126.227.199) (Ping timeout: 256 seconds) |
2022-01-19 10:47:41 +0100 | SummerSonw | (~The_viole@203.77.49.232) (Client Quit) |
2022-01-19 10:47:59 +0100 | SummerSonw | (~The_viole@203.77.49.232) |
2022-01-19 10:50:34 +0100 | sprout_ | (~quassel@2a02:a467:ccd6:1:5d8f:20db:5ddd:bcf4) |
2022-01-19 10:51:32 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:798d:4129:9f07:fe5b) (Ping timeout: 240 seconds) |
2022-01-19 10:55:20 +0100 | phma | (phma@2001:5b0:211b:a618:dfa3:a13:fe81:dc84) (Read error: Connection reset by peer) |
2022-01-19 10:55:22 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:a11d:216c:4ca3:2c86) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-19 10:56:19 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:edf9:3833:cff9:92b3) |
2022-01-19 10:56:43 +0100 | phma | (phma@2001:5b0:215d:e318:4fbc:412:b7cd:6bd5) |
2022-01-19 10:58:05 +0100 | vglfr | (~vglfr@88.155.46.9) |
2022-01-19 11:05:34 +0100 | Jing | (~hedgehog@115.207.51.203) |
2022-01-19 11:08:29 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Read error: Connection reset by peer) |
2022-01-19 11:09:17 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
2022-01-19 11:10:21 +0100 | rusrushal13 | (~rusrushal@2401:4900:5d18:76e4:7b06:d89d:4706:dcce) |
2022-01-19 11:12:02 +0100 | raym | (~raym@user/raym) (Ping timeout: 256 seconds) |
2022-01-19 11:13:49 +0100 | raym | (~raym@user/raym) |
2022-01-19 11:15:51 +0100 | Guest48 | (~Guest48@M014008067225.v4.enabler.ne.jp) |
2022-01-19 11:17:08 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:b976:af3b:634a:9904) |
2022-01-19 11:18:49 +0100 | Codaraxis_ | (~Codaraxis@user/codaraxis) |
2022-01-19 11:19:08 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2022-01-19 11:21:22 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:b976:af3b:634a:9904) (Ping timeout: 250 seconds) |
2022-01-19 11:21:29 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds) |
2022-01-19 11:22:02 +0100 | jgeerds | (~jgeerds@55d4090e.access.ecotel.net) (Ping timeout: 240 seconds) |
2022-01-19 11:28:41 +0100 | razetime | (~quassel@49.207.203.87) (Ping timeout: 268 seconds) |
2022-01-19 11:28:54 +0100 | razetime | (~quassel@49.207.203.87) |
2022-01-19 11:41:52 +0100 | qeqeqw1 | (~qeqeqw3@2001:861:3a04:e320:31ea:a59b:1c06:51f4) |
2022-01-19 11:42:21 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2022-01-19 11:43:02 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds) |
2022-01-19 11:43:38 +0100 | Lord_of_Life_ | Lord_of_Life |
2022-01-19 11:47:04 +0100 | pfurla | (~pfurla@2804:d41:4331:4800:31ef:1aaf:1e7:47d) |
2022-01-19 11:48:23 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) |
2022-01-19 11:48:24 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-01-19 11:48:32 +0100 | qeqeqw1 | (~qeqeqw3@2001:861:3a04:e320:31ea:a59b:1c06:51f4) (Ping timeout: 240 seconds) |
2022-01-19 11:52:32 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-19 11:55:59 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-19 11:56:38 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) |
2022-01-19 11:57:02 +0100 | Codaraxis_ | (~Codaraxis@user/codaraxis) (Ping timeout: 240 seconds) |
2022-01-19 11:59:31 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 268 seconds) |
2022-01-19 12:01:48 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-01-19 12:03:59 +0100 | rusrushal13 | (~rusrushal@2401:4900:5d18:76e4:7b06:d89d:4706:dcce) (Ping timeout: 256 seconds) |
2022-01-19 12:04:37 +0100 | fr33domlover | (~fr33@5.102.195.159) (Ping timeout: 240 seconds) |
2022-01-19 12:05:29 +0100 | fr33domlover | (~fr33@2.55.33.131) |
2022-01-19 12:09:04 +0100 | Codaraxis_ | (~Codaraxis@user/codaraxis) |
2022-01-19 12:09:57 +0100 | d0ku | (~d0ku@178.43.152.233.ipv4.supernova.orange.pl) |
2022-01-19 12:12:05 +0100 | MiguelNegrao | (~MiguelNeg@2001:818:dc71:d100:9e5a:44ff:fe17:1240) |
2022-01-19 12:12:24 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-19 12:12:28 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) (Ping timeout: 268 seconds) |
2022-01-19 12:13:07 +0100 | <MiguelNegrao> | Hi all. What is the best/most popular solution for a generic uncurry function that uncurries for tuples of any length ? |
2022-01-19 12:14:03 +0100 | <MiguelNegrao> | I found this one https://hackage.haskell.org/package/tuple-0.3.0.2/docs/Data-Tuple-Curry.html#v:uncurryN |
2022-01-19 12:14:42 +0100 | ubert | (~Thunderbi@p200300ecdf099420d5ce6ee7616221b3.dip0.t-ipconnect.de) (Quit: ubert) |
2022-01-19 12:14:42 +0100 | ubert1 | ubert |
2022-01-19 12:15:52 +0100 | <MiguelNegrao> | I found this issue also ("curry & uncurry family of functions"): https://github.com/haskell-foundation/foundation/issues/223 |
2022-01-19 12:16:56 +0100 | <MiguelNegrao> | The solution here doesn't seem to be viable as type class instance is needed for the result type: https://ro-che.info/articles/2013-01-29-generic-uncurry |
2022-01-19 12:16:59 +0100 | <sshine> | MiguelNegrao, I'd go with lists :D |
2022-01-19 12:17:14 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) |
2022-01-19 12:17:39 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:4901:95ce:aaba:4aa1) |
2022-01-19 12:17:42 +0100 | <MiguelNegrao> | lists, hum... ? |
2022-01-19 12:17:52 +0100 | <MiguelNegrao> | How would that work ? |
2022-01-19 12:18:14 +0100 | <sshine> | (what I mean is, if you want to perform an operation on a tuple of a variable size, then lists are data structures with a variable size.) |
2022-01-19 12:18:31 +0100 | <MiguelNegrao> | basicaly, I need to transform any function of type (a1 -> b, a1 -> a2 -> b, a1 -> a2 -> a3 -> b, etc) into ( a -> b) |
2022-01-19 12:18:35 +0100 | kjak | (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 250 seconds) |
2022-01-19 12:19:01 +0100 | <MiguelNegrao> | because I need to use that function as arrow (think `arr` combinator) and the input must go in as a tuple |
2022-01-19 12:19:41 +0100 | <MiguelNegrao> | The functions I need to turn into arrows, are any function of gi-gtk, so they already exist and I can't change them. |
2022-01-19 12:22:02 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:4901:95ce:aaba:4aa1) (Ping timeout: 240 seconds) |
2022-01-19 12:22:07 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2022-01-19 12:22:07 +0100 | <MiguelNegrao> | In this case not exactly `arr` but `arrM :: Monad m => (a -> m b) -> MSF m a b` , e.g., from [here](https://hackage.haskell.org/package/dunai-0.8.1/docs/Data-MonadicStreamFunction-Core.html#v:arrM) |
2022-01-19 12:23:49 +0100 | ardell | (~ardell@user/ardell) (Quit: Konversation terminated!) |
2022-01-19 12:30:13 +0100 | vysn | (~vysn@user/vysn) |
2022-01-19 12:35:54 +0100 | cfricke | (~cfricke@user/cfricke) (Ping timeout: 268 seconds) |
2022-01-19 12:42:56 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4) |
2022-01-19 12:45:07 +0100 | faustind | (~faustin@240b:12:43e1:7b00:fc04:33:8474:c903) |
2022-01-19 12:46:45 +0100 | Guest48 | (~Guest48@M014008067225.v4.enabler.ne.jp) (Quit: Connection closed) |
2022-01-19 12:47:17 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-01-19 12:47:23 +0100 | <tomsmeding> | MiguelNegrao: you can also do this, but type inference breaks quite badly and you probably have to add type annotations everywhere: https://paste.tomsmeding.com/UflC766M |
2022-01-19 12:47:49 +0100 | <tomsmeding> | this then works: `uncurryN (\x y z -> x + y + z :: Int) (1::Int, (2::Int, (3::Int, ()))) :: Int` |
2022-01-19 12:48:09 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Client Quit) |
2022-01-19 12:48:34 +0100 | <tomsmeding> | advantage: works for any function arity. disadvantages: everything |
2022-01-19 12:51:22 +0100 | <MiguelNegrao> | This approach with Generics looks promising: https://stackoverflow.com/a/28942478 |
2022-01-19 12:52:32 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2022-01-19 12:53:10 +0100 | <tomsmeding> | (another disadvantage of my approach: you can't choose how far to uncurry, i.e. the codomain of the uncurried function cannot be a function type) |
2022-01-19 12:54:09 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-01-19 12:55:50 +0100 | pfurla | (~pfurla@2804:d41:4331:4800:31ef:1aaf:1e7:47d) (Quit: gone to sleep. ZZZzzz…) |
2022-01-19 12:57:27 +0100 | <MiguelNegrao> | I think I will go with https://hackage.haskell.org/package/tuple-0.3.0.2/docs/Data-Tuple-Curry.html#v:uncurryN |
2022-01-19 12:59:41 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-01-19 12:59:49 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) |
2022-01-19 13:04:53 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2022-01-19 13:08:04 +0100 | pfurla | (~pfurla@2804:d41:4331:4800:31ef:1aaf:1e7:47d) |
2022-01-19 13:12:34 +0100 | simendsjo | (~user@2a02:2121:6c0:42f8:d80b:8f5a:9182:35dd) |
2022-01-19 13:17:10 +0100 | bravespear|2 | (~Ranhir@157.97.53.139) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/) |
2022-01-19 13:17:56 +0100 | qeqeqw1 | (~qeqeqw3@2001:861:3a04:e320:31ea:a59b:1c06:51f4) |
2022-01-19 13:18:24 +0100 | deadmarshal | (~deadmarsh@95.38.230.192) (Ping timeout: 256 seconds) |
2022-01-19 13:19:28 +0100 | Guest5233 | (~Guest52@80-100-97-100.ip.xs4all.nl) |
2022-01-19 13:20:44 +0100 | <qeqeqw1> | Hi. I'm reading "learn you a haskell for great good" and the examples of function type declarations don't work. Like this one for example: "factorial :: Integer -> Integer" What is the correct syntax ? |
2022-01-19 13:21:33 +0100 | Ranhir | (~Ranhir@157.97.53.139) |
2022-01-19 13:21:58 +0100 | <Guest5233> | qeqeqw1 What is the error you're getting? |
2022-01-19 13:22:09 +0100 | <Guest5233> | That type signature should work |
2022-01-19 13:22:56 +0100 | <qeqeqw1> | I'm getting this : • No instance for (Show (Integer -> Integer)) |
2022-01-19 13:22:56 +0100 | <qeqeqw1> | arising from a use of ‘print’ |
2022-01-19 13:22:56 +0100 | <qeqeqw1> | (maybe you haven't applied a function to enough arguments?) |
2022-01-19 13:22:56 +0100 | <qeqeqw1> | • In a stmt of an interactive GHCi command: print it |
2022-01-19 13:23:01 +0100 | pfurla | (~pfurla@2804:d41:4331:4800:31ef:1aaf:1e7:47d) (Quit: Textual IRC Client: www.textualapp.com) |
2022-01-19 13:24:51 +0100 | <Guest5233> | That error is not related to the type signature |
2022-01-19 13:25:12 +0100 | <Guest5233> | Are trying to do the following? |
2022-01-19 13:25:13 +0100 | <Guest5233> | show factorial |
2022-01-19 13:25:35 +0100 | <qeqeqw1> | this is the factorial: "factorial n = product [1..n]" |
2022-01-19 13:26:00 +0100 | <Guest5233> | The error is telling you that you're trying to `show` something that has the type `Integer -> Integer`. In other words, you're trying to `show` a _function_, rather than the _result_ of a function |
2022-01-19 13:26:56 +0100 | <Guest5233> | (`show` is used by `print`, by the way) |
2022-01-19 13:27:16 +0100 | <qeqeqw1> | I understand what you're saying but I do not understand what I am doing wrong |
2022-01-19 13:27:40 +0100 | <AWizzArd> | HLS in vs code: how can I turn off formatting when saving a file? I only want to manually mark the area that I want to format. I already tried in my settings.json to do "haskell.formattingProvider": "none" |
2022-01-19 13:28:45 +0100 | <Guest5233> | qeqeqw1 Can you show me your full code? |
2022-01-19 13:28:46 +0100 | Jing | (~hedgehog@115.207.51.203) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-19 13:29:31 +0100 | <qeqeqw1> | Guest5233, this is the full code : |
2022-01-19 13:29:34 +0100 | <qeqeqw1> | $ ghci |
2022-01-19 13:29:34 +0100 | <qeqeqw1> | GHCi, version 9.0.2: https://www.haskell.org/ghc/ :? for help |
2022-01-19 13:29:34 +0100 | <qeqeqw1> | ghci> factorial n = product [1..n] |
2022-01-19 13:29:34 +0100 | <qeqeqw1> | ghci> factorial :: Integer -> Integer |
2022-01-19 13:29:34 +0100 | <qeqeqw1> | <interactive>:2:1: error: |
2022-01-19 13:29:37 +0100 | <qeqeqw1> | • No instance for (Show (Integer -> Integer)) |
2022-01-19 13:29:39 +0100 | <qeqeqw1> | arising from a use of ‘print’ |
2022-01-19 13:29:41 +0100 | <qeqeqw1> | (maybe you haven't applied a function to enough arguments?) |
2022-01-19 13:29:43 +0100 | <qeqeqw1> | • In a stmt of an interactive GHCi command: print it |
2022-01-19 13:29:45 +0100 | <qeqeqw1> | ghci> |
2022-01-19 13:30:22 +0100 | <Guest5233> | Ah, I see |
2022-01-19 13:31:12 +0100 | <Guest5233> | When you want to include a type signature in GHCi, you should wrap your code in `:{` and `:}` |
2022-01-19 13:31:27 +0100 | xb0o2 | (~xb0o2@user/xb0o2) |
2022-01-19 13:31:31 +0100 | <Guest5233> | :{ |
2022-01-19 13:31:31 +0100 | <Guest5233> | factorial n = product [1..n] |
2022-01-19 13:31:32 +0100 | <Guest5233> | factorial :: Integer -> Integer |
2022-01-19 13:31:32 +0100 | <Guest5233> | :} |
2022-01-19 13:31:33 +0100 | <Guest5233> | factorial 5 |
2022-01-19 13:31:33 +0100 | <Guest5233> | > 120 |
2022-01-19 13:31:35 +0100 | <lambdabot> | 120 |
2022-01-19 13:32:05 +0100 | jgeerds | (~jgeerds@55d4090e.access.ecotel.net) |
2022-01-19 13:32:09 +0100 | <Guest5233> | More info here: https://downloads.haskell.org/~ghc/9.0.1/docs/html/users_guide/ghci.html#ghci-cmd-:{ |
2022-01-19 13:32:58 +0100 | <qeqeqw1> | Guest5233, Yes that worked! Thank you very much! |
2022-01-19 13:33:45 +0100 | <Guest5233> | No problem! |
2022-01-19 13:34:08 +0100 | <qeqeqw1> | Guest5233, I will read this. First time on #haskell and not disapointed :) |
2022-01-19 13:34:59 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-01-19 13:35:24 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:ac4b:acb4:af59:598f) |
2022-01-19 13:38:48 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-01-19 13:39:16 +0100 | jakalx | (~jakalx@base.jakalx.net) (Disconnected: Replaced by new connection) |
2022-01-19 13:39:16 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-01-19 13:40:16 +0100 | biberu\ | (~biberu@user/biberu) |
2022-01-19 13:40:19 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-01-19 13:41:01 +0100 | phma_ | (phma@2001:5b0:215d:e318:4fbc:412:b7cd:6bd5) |
2022-01-19 13:41:48 +0100 | ubert | (~Thunderbi@p200300ecdf0994208629362fe72747a7.dip0.t-ipconnect.de) (Quit: ubert) |
2022-01-19 13:41:49 +0100 | erisco_ | (~erisco@d24-57-249-233.home.cgocable.net) |
2022-01-19 13:42:05 +0100 | ubert | (~Thunderbi@p200300ecdf0994202d2de89ac733253b.dip0.t-ipconnect.de) |
2022-01-19 13:42:36 +0100 | jkaye | (~jkaye@2601:281:200:1958:cc69:95b3:52f2:6773) |
2022-01-19 13:42:38 +0100 | jmct__ | (sid160793@id-160793.tinside.irccloud.com) |
2022-01-19 13:42:40 +0100 | terrorjack0 | (~terrorjac@2a01:4f8:1c1e:509a::1) |
2022-01-19 13:42:41 +0100 | wallymathieu_ | (sid533252@id-533252.uxbridge.irccloud.com) |
2022-01-19 13:42:41 +0100 | davetapley_ | (sid666@id-666.uxbridge.irccloud.com) |
2022-01-19 13:42:41 +0100 | awpr_ | (uid446117@id-446117.lymington.irccloud.com) |
2022-01-19 13:42:46 +0100 | b20n_ | (sid115913@id-115913.uxbridge.irccloud.com) |
2022-01-19 13:42:47 +0100 | rtpg_ | (sid443069@id-443069.ilkley.irccloud.com) |
2022-01-19 13:42:47 +0100 | lagash_ | (lagash@lagash.shelltalk.net) |
2022-01-19 13:42:51 +0100 | megeve_ | (sid523379@id-523379.hampstead.irccloud.com) |
2022-01-19 13:42:52 +0100 | elvishjerricco_ | (sid237756@id-237756.helmsley.irccloud.com) |
2022-01-19 13:42:52 +0100 | joel135_ | (sid136450@id-136450.hampstead.irccloud.com) |
2022-01-19 13:42:53 +0100 | choucavalier_ | (~choucaval@peanutbuttervibes.com) |
2022-01-19 13:42:54 +0100 | akurilin__ | (uid322841@id-322841.ilkley.irccloud.com) |
2022-01-19 13:43:00 +0100 | hugo- | (znc@verdigris.lysator.liu.se) |
2022-01-19 13:43:00 +0100 | codedmart_ | (~codedmart@li335-49.members.linode.com) |
2022-01-19 13:43:01 +0100 | tafama | (~tafa@user/tafa) |
2022-01-19 13:43:02 +0100 | greyrat_ | (~greyrat@ip202.ip-51-178-215.eu) |
2022-01-19 13:43:02 +0100 | Hash_ | (~Hash@hashsecurity.org) |
2022-01-19 13:43:03 +0100 | rembo10_ | (~rembo10@remulis.com) |
2022-01-19 13:43:07 +0100 | kristjansson_ | (sid126207@id-126207.tinside.irccloud.com) |
2022-01-19 13:43:28 +0100 | rubin55_ | (sid175221@id-175221.hampstead.irccloud.com) |
2022-01-19 13:43:31 +0100 | EvanR_ | (~EvanR@user/evanr) |
2022-01-19 13:43:32 +0100 | vgtw_ | (~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) |
2022-01-19 13:43:45 +0100 | the_proffesor | (~theproffe@2601:282:847f:8010::85ac) |
2022-01-19 13:43:45 +0100 | the_proffesor | (~theproffe@2601:282:847f:8010::85ac) (Changing host) |
2022-01-19 13:43:45 +0100 | the_proffesor | (~theproffe@user/theproffesor) |
2022-01-19 13:44:10 +0100 | obfusk_ | (~quassel@a82-161-150-56.adsl.xs4all.nl) |
2022-01-19 13:44:21 +0100 | carbolymer_ | (~carbolyme@dropacid.net) |
2022-01-19 13:44:29 +0100 | szkl_ | (uid110435@uxbridge.irccloud.com) |
2022-01-19 13:44:46 +0100 | caubert_ | (~caubert@136.244.111.235) |
2022-01-19 13:45:04 +0100 | aforemny_ | (~aforemny@static.248.158.34.188.clients.your-server.de) |
2022-01-19 13:45:06 +0100 | stilgart_ | (~Christoph@chezlefab.net) |
2022-01-19 13:45:09 +0100 | mal1 | (~mal@ns2.wyrd.be) |
2022-01-19 13:45:12 +0100 | Clint_ | (~Clint@user/clint) |
2022-01-19 13:45:12 +0100 | Logio_ | (em@kapsi.fi) |
2022-01-19 13:45:14 +0100 | jlamothe_ | (~jlamothe@198.251.61.229) |
2022-01-19 13:45:16 +0100 | opqdonut_ | (opqdonut@pseudo.fixme.fi) |
2022-01-19 13:45:17 +0100 | cls_ | (~cls@chalk.lubutu.com) |
2022-01-19 13:45:17 +0100 | andjjj23_ | (~irc@107.170.228.47) |
2022-01-19 13:45:19 +0100 | ddb1 | (~ddb@ipv6two.tilde.club) |
2022-01-19 13:45:20 +0100 | hrdl_ | (~hrdl@mail.hrdl.eu) |
2022-01-19 13:45:21 +0100 | perro_ | (~perro@072-191-245-069.res.spectrum.com) |
2022-01-19 13:45:21 +0100 | PHO`__ | (~pho@akari.cielonegro.org) |
2022-01-19 13:45:26 +0100 | farn_ | (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) |
2022-01-19 13:45:26 +0100 | enicar | (~enikar@user/enikar) |
2022-01-19 13:45:29 +0100 | kmein_ | (~weechat@user/kmein) |
2022-01-19 13:45:31 +0100 | ridcully_ | (~ridcully@p57b52a9a.dip0.t-ipconnect.de) |
2022-01-19 13:45:36 +0100 | bravespear|2 | (~Ranhir@157.97.53.139) |
2022-01-19 13:45:37 +0100 | w1gz_ | (~do@159.89.11.133) |
2022-01-19 13:45:44 +0100 | sabx_ | (~sabbas@user/sabbas) |
2022-01-19 13:45:51 +0100 | emf_ | (~emf@2620:10d:c090:400::5:2d26) |
2022-01-19 13:45:52 +0100 | noddy_ | (~user@user/noddy) |
2022-01-19 13:45:55 +0100 | Megant_ | (megant@user/megant) |
2022-01-19 13:46:04 +0100 | fef | (~thedawn@user/thedawn) (Remote host closed the connection) |
2022-01-19 13:46:05 +0100 | yaroot | (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) (Ping timeout: 240 seconds) |
2022-01-19 13:46:05 +0100 | b20n | (sid115913@id-115913.uxbridge.irccloud.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:05 +0100 | totte | (~totte@h-82-196-112-155.A166.priv.bahnhof.se) (Ping timeout: 240 seconds) |
2022-01-19 13:46:05 +0100 | davetapley | (sid666@id-666.uxbridge.irccloud.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | remexre | (~remexre@user/remexre) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | tito | (tito@tilde.team) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | erisco | (~erisco@d24-57-249-233.home.cgocable.net) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | greyrat | (~greyrat@ip202.ip-51-178-215.eu) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | kristjansson | (sid126207@id-126207.tinside.irccloud.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | lieven | (~mal@ns2.wyrd.be) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | rtpg | (sid443069@id-443069.ilkley.irccloud.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | lagash | (lagash@lagash.shelltalk.net) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | jmct_ | (sid160793@id-160793.tinside.irccloud.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | koolazer | (~koo@user/koolazer) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | flukiluke | (~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | megeve | (sid523379@id-523379.hampstead.irccloud.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | ddb | (~ddb@ipv6two.tilde.club) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | akurilin_ | (uid322841@id-322841.ilkley.irccloud.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | jlamothe | (~jlamothe@198.251.61.229) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | Flow | (~none@gentoo/developer/flow) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | cocreature | (~moritz@2a03:b0c0:3:d0::c8:f001) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | PHO`_ | (~pho@akari.cielonegro.org) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | wallymathieu | (uid533252@id-533252.uxbridge.irccloud.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | tafa | (~tafa@user/tafa) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | awpr | (uid446117@id-446117.lymington.irccloud.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | aforemny | (~aforemny@static.248.158.34.188.clients.your-server.de) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | choucavalier | (~choucaval@peanutbuttervibes.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | Hafydd | (~Hafydd@user/hafydd) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | Clint | (~Clint@user/clint) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | Logio | (em@kapsi.fi) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | Ranhir | (~Ranhir@157.97.53.139) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | phma | (phma@2001:5b0:215d:e318:4fbc:412:b7cd:6bd5) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | kmein | (~weechat@user/kmein) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | emf | (~emf@2620:10d:c090:400::5:2d26) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | hays | (rootvegeta@fsf/member/hays) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | EvanR | (~EvanR@user/evanr) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | mtjm | (~mutantmel@2604:a880:2:d0::208b:d001) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | biberu | (~biberu@user/biberu) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | vgtw | (~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | emergence | (thelounge@2607:5300:60:5910:dcad:beff:feef:5bc) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | sabx | (~sabbas@user/sabbas) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | cls | (~cls@chalk.lubutu.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | stefan-_ | (~cri@42dots.de) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | Hash | (~Hash@hashsecurity.org) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | caubert | (~caubert@136.244.111.235) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | rubin55 | (sid175221@id-175221.hampstead.irccloud.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | carbolymer | (~carbolyme@dropacid.net) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | hrdl | (~hrdl@mail.hrdl.eu) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | obfusk | (~quassel@a82-161-150-56.adsl.xs4all.nl) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | opqdonut | (opqdonut@pseudo.fixme.fi) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | nisstyre | (~wes@user/nisstyre) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | hexology | (~hexology@user/hexology) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | landonf | (landonf@mac68k.info) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | stilgart | (~Christoph@chezlefab.net) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | farn | (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Ping timeout: 240 seconds) |
2022-01-19 13:46:06 +0100 | andjjj23 | (~irc@107.170.228.47) (Ping timeout: 240 seconds) |
2022-01-19 13:46:07 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 240 seconds) |
2022-01-19 13:46:07 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Ping timeout: 240 seconds) |
2022-01-19 13:46:07 +0100 | rembo10 | (~rembo10@remulis.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:07 +0100 | theproffesor | (~theproffe@user/theproffesor) (Ping timeout: 240 seconds) |
2022-01-19 13:46:07 +0100 | codedmart | (codedmart@2600:3c01::f03c:92ff:fefe:8511) (Ping timeout: 240 seconds) |
2022-01-19 13:46:07 +0100 | hugo | (znc@verdigris.lysator.liu.se) (Ping timeout: 240 seconds) |
2022-01-19 13:46:07 +0100 | joel135 | (sid136450@id-136450.hampstead.irccloud.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:07 +0100 | noddy | (~user@user/noddy) (Ping timeout: 240 seconds) |
2022-01-19 13:46:07 +0100 | elvishjerricco | (sid237756@id-237756.helmsley.irccloud.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:07 +0100 | perro | (~perro@072-191-245-069.res.spectrum.com) (Ping timeout: 240 seconds) |
2022-01-19 13:46:07 +0100 | Megant | (megant@user/megant) (Ping timeout: 240 seconds) |
2022-01-19 13:46:07 +0100 | w1gz | (~do@159.89.11.133) (Ping timeout: 240 seconds) |
2022-01-19 13:46:07 +0100 | ridcully | (~ridcully@p57b52a9a.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-19 13:46:07 +0100 | enikar | (~enikar@user/enikar) (Ping timeout: 240 seconds) |
2022-01-19 13:46:08 +0100 | landonf | (landonf@mac68k.info) |
2022-01-19 13:46:08 +0100 | jmct__ | jmct_ |
2022-01-19 13:46:08 +0100 | awpr_ | awpr |
2022-01-19 13:46:08 +0100 | rtpg_ | rtpg |
2022-01-19 13:46:13 +0100 | b20n_ | b20n |
2022-01-19 13:46:13 +0100 | davetapley_ | davetapley |
2022-01-19 13:46:13 +0100 | erisco_ | erisco |
2022-01-19 13:46:13 +0100 | akurilin__ | akurilin_ |
2022-01-19 13:46:13 +0100 | wallymathieu_ | wallymathieu |
2022-01-19 13:46:13 +0100 | kristjansson_ | kristjansson |
2022-01-19 13:46:13 +0100 | terrorjack0 | terrorjack |
2022-01-19 13:46:14 +0100 | joel135_ | joel135 |
2022-01-19 13:46:14 +0100 | elvishjerricco_ | elvishjerricco |
2022-01-19 13:46:15 +0100 | rubin55_ | rubin55 |
2022-01-19 13:46:20 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-01-19 13:46:20 +0100 | flukiluke | (~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962) |
2022-01-19 13:46:23 +0100 | remexre | (~remexre@user/remexre) |
2022-01-19 13:46:29 +0100 | stefan-_ | (~cri@42dots.de) |
2022-01-19 13:46:31 +0100 | yaroot | (~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953) |
2022-01-19 13:46:31 +0100 | mtjm | (~mutantmel@2604:a880:2:d0::208b:d001) |
2022-01-19 13:46:32 +0100 | kmein_ | kmein |
2022-01-19 13:46:38 +0100 | biberu | (~biberu@user/biberu) |
2022-01-19 13:46:38 +0100 | koolazer | (~koo@user/koolazer) |
2022-01-19 13:46:38 +0100 | fef | (~thedawn@user/thedawn) |
2022-01-19 13:46:45 +0100 | hays | (rootvegeta@fsf/member/hays) |
2022-01-19 13:47:05 +0100 | cocreature | (~moritz@2a03:b0c0:3:d0::c8:f001) |
2022-01-19 13:47:08 +0100 | Hafydd | (~Hafydd@user/hafydd) |
2022-01-19 13:47:16 +0100 | nisstyre | (~wes@user/nisstyre) |
2022-01-19 13:47:17 +0100 | Flow | (~none@gentoo/developer/flow) |
2022-01-19 13:47:24 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-01-19 13:47:29 +0100 | totte | (~totte@h-82-196-112-155.A166.priv.bahnhof.se) |
2022-01-19 13:49:17 +0100 | jgeerds | (~jgeerds@55d4090e.access.ecotel.net) (Ping timeout: 268 seconds) |
2022-01-19 13:49:54 +0100 | fr33domlover | (~fr33@2.55.33.131) (Ping timeout: 268 seconds) |
2022-01-19 13:49:57 +0100 | hrdl_ | (~hrdl@mail.hrdl.eu) (Ping timeout: 256 seconds) |
2022-01-19 13:49:57 +0100 | cls_ | (~cls@chalk.lubutu.com) (Ping timeout: 256 seconds) |
2022-01-19 13:49:57 +0100 | szkl_ | (uid110435@uxbridge.irccloud.com) (Ping timeout: 256 seconds) |
2022-01-19 13:49:57 +0100 | vgtw_ | (~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) (Ping timeout: 256 seconds) |
2022-01-19 13:50:06 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:84bf:ceba:6161:c1f6) |
2022-01-19 13:50:31 +0100 | opqdonut_ | (opqdonut@pseudo.fixme.fi) (Ping timeout: 256 seconds) |
2022-01-19 13:50:31 +0100 | biberu\ | (~biberu@user/biberu) (Ping timeout: 256 seconds) |
2022-01-19 13:50:34 +0100 | vgtw | (~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) |
2022-01-19 13:51:34 +0100 | hrdl | (~hrdl@mail.hrdl.eu) |
2022-01-19 13:51:39 +0100 | cls | (~cls@chalk.lubutu.com) |
2022-01-19 13:51:46 +0100 | szkl_ | (uid110435@id-110435.uxbridge.irccloud.com) |
2022-01-19 13:51:54 +0100 | opqdonut | (opqdonut@pseudo.fixme.fi) |
2022-01-19 13:52:24 +0100 | wmacmil | (~wmacmil@83-233-165-97.cust.bredband2.com) (Ping timeout: 256 seconds) |
2022-01-19 13:52:37 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-01-19 13:53:15 +0100 | <merijn> | qeqeqw1: fwiw, I (and most people) would generally recommend not trying to write multiline code in ghci |
2022-01-19 13:53:31 +0100 | <merijn> | qeqeqw1: It's generally easier to just write it in an editor, then load the file in ghci to play with |
2022-01-19 13:56:31 +0100 | <raehik> | I've got an instance that I needed QuantifiedConstraints for to allow me to say "given an instance that works with any KnownNat n, we have an instance X". Now I can't figure out how to use it! |
2022-01-19 13:57:07 +0100 | deadmarshal | (~deadmarsh@95.38.230.192) |
2022-01-19 13:57:35 +0100 | <hpc> | in fact, i would recommend that anyway |
2022-01-19 13:57:51 +0100 | <hpc> | vim foo.hs, ghci foo.hs, and :r in ghci as you make edits |
2022-01-19 13:58:12 +0100 | <hpc> | easier than whatever fancy :l and :{ :} nonsense anyone could possibly come up with |
2022-01-19 13:58:37 +0100 | <hpc> | the hardest part of the whole thing is exiting vim when you're done :D |
2022-01-19 14:02:40 +0100 | <raehik> | is what I'm trying currently disallowed in the first place? https://gitlab.haskell.org/ghc/ghc/-/issues/18150 |
2022-01-19 14:04:01 +0100 | <raehik> | feels weird, I just want an instance that knows it can use any KnownNat rather than having to put each type nat in the instance head |
2022-01-19 14:04:42 +0100 | max22- | (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 268 seconds) |
2022-01-19 14:06:44 +0100 | <merijn> | is there a name for generalising quad-tree/oct-trees to N-dimensions? |
2022-01-19 14:08:01 +0100 | <hpc> | space partition? |
2022-01-19 14:08:48 +0100 | slack1256 | (~slack1256@191.125.227.223) |
2022-01-19 14:09:02 +0100 | <merijn> | as in data structure name |
2022-01-19 14:09:32 +0100 | <merijn> | so binary trees, quad trees, and oct trees are 1, 2, and 3 dimensional instance of ?? trees |
2022-01-19 14:09:45 +0100 | <merijn> | Trying to figure out the ?? :p |
2022-01-19 14:09:52 +0100 | <qeqeqw1> | merijn, Right I will start this habit then. That's a good tip. I'm not really the repl type anyway so it'all good |
2022-01-19 14:10:01 +0100 | <hpc> | ah |
2022-01-19 14:10:30 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) (Quit: Leaving) |
2022-01-19 14:10:43 +0100 | <merijn> | qeqeqw1: You can simply do ":l yourfile.hs" and everything will be accessible |
2022-01-19 14:10:45 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) |
2022-01-19 14:10:48 +0100 | <qeqeqw1> | merijn, I think the term you're looking for is N-ary tree |
2022-01-19 14:11:20 +0100 | <merijn> | (and ":r" or ":reload" to reload file after changes) |
2022-01-19 14:11:25 +0100 | <qeqeqw1> | merijn, Yes, I've read it in the tutorial but thanks anyway |
2022-01-19 14:12:03 +0100 | <qeqeqw1> | Does modifying functions in the repl and then do reload change the file, though ? |
2022-01-19 14:12:36 +0100 | <merijn> | you can't really modify things in the repl, only define new things |
2022-01-19 14:13:44 +0100 | <qeqeqw1> | right, that's a sensible behavior |
2022-01-19 14:15:18 +0100 | <hpc> | qeqeqw1: that's "no more than N children" instead of "exactly N children", and N doesn't have to be a power of two |
2022-01-19 14:17:40 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2022-01-19 14:18:41 +0100 | <hpc> | merijn: maybe give up on finding an existing term and call it a 2**n-ary space partition? |
2022-01-19 14:19:19 +0100 | <merijn> | hpc: I need a name so I can search for whatever people have written about them :p |
2022-01-19 14:19:25 +0100 | <hpc> | ah |
2022-01-19 14:19:26 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:ede6:9f76:f2c5:9990) |
2022-01-19 14:20:12 +0100 | <hpc> | if it was me, i would try a search for "space partition" and just deal with the extra results |
2022-01-19 14:20:35 +0100 | <hpc> | unless there's an ungodly huge number of search results, that seems easiest |
2022-01-19 14:20:36 +0100 | <merijn> | especially how to get self-balancing right :p |
2022-01-19 14:23:20 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-01-19 14:23:37 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:ede6:9f76:f2c5:9990) (Ping timeout: 240 seconds) |
2022-01-19 14:25:03 +0100 | simendsjo | (~user@2a02:2121:6c0:42f8:d80b:8f5a:9182:35dd) (Ping timeout: 268 seconds) |
2022-01-19 14:25:52 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-01-19 14:27:05 +0100 | aforemny_ | aforemny |
2022-01-19 14:28:58 +0100 | fef | (~thedawn@user/thedawn) (Remote host closed the connection) |
2022-01-19 14:31:39 +0100 | fr33domlover | (~fr33@141.226.10.136) |
2022-01-19 14:31:58 +0100 | alp | (~alp@user/alp) (Remote host closed the connection) |
2022-01-19 14:32:02 +0100 | deadmarshal | (~deadmarsh@95.38.230.192) (Ping timeout: 250 seconds) |
2022-01-19 14:32:18 +0100 | alp | (~alp@user/alp) |
2022-01-19 14:33:55 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-01-19 14:34:26 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-01-19 14:34:55 +0100 | `2jt | (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) (Ping timeout: 268 seconds) |
2022-01-19 14:34:58 +0100 | PHO`__ | PHO` |
2022-01-19 14:37:19 +0100 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) |
2022-01-19 14:37:56 +0100 | <merijn> | ah, feck, I don't think quad/oct trees are quite right for my problem anyway :\ |
2022-01-19 14:39:01 +0100 | faustind | (~faustin@240b:12:43e1:7b00:fc04:33:8474:c903) (Quit: Leaving.) |
2022-01-19 14:44:38 +0100 | __monty__ | (~toonn@user/toonn) |
2022-01-19 14:45:18 +0100 | `2jt | (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) |
2022-01-19 14:46:03 +0100 | vglfr | (~vglfr@88.155.46.9) (Ping timeout: 256 seconds) |
2022-01-19 14:46:16 +0100 | deadmarshal | (~deadmarsh@95.38.230.192) |
2022-01-19 14:46:20 +0100 | vglfr | (~vglfr@88.155.46.9) |
2022-01-19 14:48:55 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset) |
2022-01-19 14:55:07 +0100 | deadmarshal | (~deadmarsh@95.38.230.192) (Ping timeout: 256 seconds) |
2022-01-19 14:56:16 +0100 | max22- | (~maxime@2a01cb0883359800afbe144533f29e72.ipv6.abo.wanadoo.fr) |
2022-01-19 14:56:17 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) |
2022-01-19 14:57:12 +0100 | Clint_ | Clint |
2022-01-19 14:58:57 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-01-19 14:59:17 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-01-19 14:59:29 +0100 | <merijn> | ok, so help me out. I'm trying to invent something like IntervalMap from data-interval |
2022-01-19 14:59:34 +0100 | <merijn> | @hackage data-interval |
2022-01-19 14:59:34 +0100 | <lambdabot> | https://hackage.haskell.org/package/data-interval |
2022-01-19 14:59:44 +0100 | <merijn> | Except, that only deals with 1-dimensional intervals |
2022-01-19 14:59:47 +0100 | mal1 | lieven |
2022-01-19 14:59:55 +0100 | <merijn> | And I need N-dimensional |
2022-01-19 15:00:37 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
2022-01-19 15:02:53 +0100 | shriekingnoise | (~shrieking@201.231.16.156) |
2022-01-19 15:03:57 +0100 | <merijn> | I was looking at the data-interval implementation, but that stores the smallest point for each interval and then does a lookup, but that's...not as doable with N dimensions. At least I'm not sure how... |
2022-01-19 15:04:25 +0100 | <merijn> | And octtrees seems like they'd inflict a lot of additional storage |
2022-01-19 15:08:17 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) |
2022-01-19 15:08:57 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds) |
2022-01-19 15:09:03 +0100 | joo-_ | (~joo-_@fsf/member/joo--) (Quit: leaving) |
2022-01-19 15:09:10 +0100 | <__monty__> | Oof, are you a day ahead in AoC or something? : ) |
2022-01-19 15:09:18 +0100 | joo-_ | (~joo-_@80-62-117-53-mobile.dk.customer.tdc.net) |
2022-01-19 15:09:18 +0100 | joo-_ | (~joo-_@80-62-117-53-mobile.dk.customer.tdc.net) (Changing host) |
2022-01-19 15:09:18 +0100 | joo-_ | (~joo-_@fsf/member/joo--) |
2022-01-19 15:10:53 +0100 | deadmarshal | (~deadmarsh@95.38.230.192) |
2022-01-19 15:11:50 +0100 | <merijn> | __monty__: This is actual work >.> |
2022-01-19 15:12:41 +0100 | `2jt | (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) (Ping timeout: 256 seconds) |
2022-01-19 15:13:06 +0100 | shapr | (~user@2601:7c0:c37c:46d0:f28:8342:f51d:c5e2) |
2022-01-19 15:13:10 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) |
2022-01-19 15:14:58 +0100 | betelgeuse9 | (~betelgeus@94-225-47-8.access.telenet.be) |
2022-01-19 15:17:03 +0100 | <__monty__> | Yeah, it's just that Octrees kinda popped up this year, for 3D intervals. It sounds like a pretty hard problem. |
2022-01-19 15:17:22 +0100 | betelgeuse9 | (~betelgeus@94-225-47-8.access.telenet.be) (Client Quit) |
2022-01-19 15:18:06 +0100 | wombat875 | (~neilfulwi@pool-72-89-24-154.nycmny.fios.verizon.net) |
2022-01-19 15:20:12 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9) |
2022-01-19 15:21:49 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-19 15:22:03 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-19 15:22:10 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-19 15:22:28 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-19 15:22:30 +0100 | gdd | (~gdd@129.199.146.230) |
2022-01-19 15:22:35 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-01-19 15:24:13 +0100 | max22- | (~maxime@2a01cb0883359800afbe144533f29e72.ipv6.abo.wanadoo.fr) (Ping timeout: 250 seconds) |
2022-01-19 15:24:17 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9) (Ping timeout: 240 seconds) |
2022-01-19 15:25:43 +0100 | jlamothe_ | (~jlamothe@198.251.61.229) (Quit: leaving) |
2022-01-19 15:26:37 +0100 | deadmarshal | (~deadmarsh@95.38.230.192) (Ping timeout: 240 seconds) |
2022-01-19 15:27:21 +0100 | <tomsmeding> | merijn: why are oct trees not right for your problem? |
2022-01-19 15:29:45 +0100 | dut | (~dut@user/dut) |
2022-01-19 15:30:50 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2022-01-19 15:31:57 +0100 | `2jt | (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) |
2022-01-19 15:32:09 +0100 | <tomsmeding> | note that BVH also exists, but you probably already found that, and without knowing more about the problem it's impossible to say whether it will be more suitable anyway :) |
2022-01-19 15:32:15 +0100 | <xerox> | people might be interested in POPL streamed live https://www.youtube.com/watch?v=83D2k5pgFlM |
2022-01-19 15:32:28 +0100 | <merijn> | tomsmeding: Intervals that cover multiple branches will have to be split a lot |
2022-01-19 15:32:54 +0100 | wombat875 | (~neilfulwi@pool-72-89-24-154.nycmny.fios.verizon.net) (Read error: Connection reset by peer) |
2022-01-19 15:32:58 +0100 | <tomsmeding> | ah |
2022-01-19 15:33:13 +0100 | <merijn> | tomsmeding: My intervals will most be large and dense |
2022-01-19 15:33:16 +0100 | <merijn> | *mostly |
2022-01-19 15:33:23 +0100 | <tomsmeding> | does IntervalMap even solve that issue? from a peek at the implementation it looked like it doesn't deal with overlapping intervals _at all_ |
2022-01-19 15:33:32 +0100 | <merijn> | tomsmeding: Which is, like, the pessimal case for octtrees |
2022-01-19 15:33:42 +0100 | <merijn> | tomsmeding: There can't be overlap |
2022-01-19 15:34:46 +0100 | <merijn> | tomsmeding: But with quad/octrees you end up doing a lot of gratuitous splitting to fit into the 4/8 quads/octs of the space |
2022-01-19 15:34:58 +0100 | <tomsmeding> | yeah I see |
2022-01-19 15:35:13 +0100 | <merijn> | Aha! |
2022-01-19 15:35:25 +0100 | qeqeqw1 | (~qeqeqw3@2001:861:3a04:e320:31ea:a59b:1c06:51f4) (Leaving) |
2022-01-19 15:35:26 +0100 | <merijn> | kd-tree, that was the name I was looking for earlier, I think |
2022-01-19 15:35:29 +0100 | <tomsmeding> | BVH won't split (with the standard implementation -- you can make it split if you want), but it will just have an inefficient tree structure probably |
2022-01-19 15:36:42 +0100 | <tomsmeding> | what dimensions are you looking at? <=3? <=10? <=10000? |
2022-01-19 15:36:58 +0100 | <merijn> | tomsmeding: BVH seems more general than I want anyway, since I will never have overlap |
2022-01-19 15:37:12 +0100 | <merijn> | tomsmeding: Let's say *at least* up to 5 |
2022-01-19 15:37:15 +0100 | x_kuru | (~xkuru@user/xkuru) |
2022-01-19 15:37:20 +0100 | <tomsmeding> | bvh is just an alternative on kd trees |
2022-01-19 15:37:40 +0100 | <tomsmeding> | the bounding volumes of the internal nodes will overlap |
2022-01-19 15:37:55 +0100 | <tomsmeding> | where a kd tree would split things |
2022-01-19 15:38:16 +0100 | <tomsmeding> | (that is, if I remember graphics class correctly :p ) |
2022-01-19 15:39:00 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-19 15:39:00 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-19 15:39:00 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-19 15:40:14 +0100 | <merijn> | tomsmeding: That makes sense for sparse items, in my case I'm looking more at dense things. That is most (if not all) of the space is assigned a value |
2022-01-19 15:40:17 +0100 | xkuru | (~xkuru@user/xkuru) (Ping timeout: 268 seconds) |
2022-01-19 15:40:18 +0100 | eron | (~eron@2804:431:c7c2:3848:2c26:bc50:f8a2:a008) |
2022-01-19 15:41:40 +0100 | <merijn> | So it's more like (in the 3d case) I have a collection of (non-overlapping) volumes and wanna efficiently query "what's the volume of point (x, y, z)?" |
2022-01-19 15:42:04 +0100 | <merijn> | (I guess "what volume does (x, y, z) fall within?" is a more natural formulation) |
2022-01-19 15:42:04 +0100 | shapr | (~user@2601:7c0:c37c:46d0:f28:8342:f51d:c5e2) (Remote host closed the connection) |
2022-01-19 15:42:17 +0100 | shapr | (~user@2601:7c0:c37c:46d0:d31:791c:8c24:e54b) |
2022-01-19 15:42:32 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2022-01-19 15:43:33 +0100 | <merijn> | Which seems like it should be a solved problem, I just dunno what the solution is called :p |
2022-01-19 15:43:37 +0100 | <tomsmeding> | store a list of neighbour volumes for each volume, and walk towards your destination |
2022-01-19 15:43:44 +0100 | jlamothe | (~jlamothe@198.251.61.229) |
2022-01-19 15:43:58 +0100 | <tomsmeding> | more seriously, I don't know of anything better or more recent than a kd tree or bvh |
2022-01-19 15:44:35 +0100 | <tomsmeding> | note that you can make a kd tree adaptive: select its split points depending on the volumes in your set |
2022-01-19 15:44:36 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-01-19 15:44:41 +0100 | <tomsmeding> | instead of always in the middle |
2022-01-19 15:44:57 +0100 | <tomsmeding> | whether that helps depends on your dataset I guess :p |
2022-01-19 15:46:36 +0100 | <merijn> | tomsmeding: Yeah, but then I still need a sensible way to build a (semi-balanced) tree with the kd solution, which is unclear :p |
2022-01-19 15:47:53 +0100 | <merijn> | That's my problem, most of these are talking about partitioning "sets of points" when constructing, but that only makes sense for sparse things |
2022-01-19 15:49:51 +0100 | ardell | (~ardell@user/ardell) |
2022-01-19 15:50:41 +0100 | SummerSonw | (~The_viole@203.77.49.232) (Quit: Leaving) |
2022-01-19 15:51:53 +0100 | wombat875 | (~neilfulwi@pool-72-89-24-154.nycmny.fios.verizon.net) |
2022-01-19 15:52:06 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-01-19 15:52:55 +0100 | `2jt | (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) (Ping timeout: 256 seconds) |
2022-01-19 15:53:25 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-19 15:53:44 +0100 | <wombat875> | \quit |
2022-01-19 15:53:46 +0100 | wombat875 | (~neilfulwi@pool-72-89-24-154.nycmny.fios.verizon.net) (Client Quit) |
2022-01-19 15:54:22 +0100 | wombat875 | (~neilfulwi@72.89.24.154) |
2022-01-19 15:54:57 +0100 | wombat875 | (~neilfulwi@72.89.24.154) (Client Quit) |
2022-01-19 15:56:05 +0100 | wombat875 | (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) |
2022-01-19 15:56:29 +0100 | wombat875 | (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Client Quit) |
2022-01-19 15:56:31 +0100 | slac74781 | (~slack1256@186.11.27.197) |
2022-01-19 15:57:18 +0100 | wombat875 | (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) |
2022-01-19 15:57:37 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2022-01-19 15:58:33 +0100 | max22- | (~maxime@2a01cb08833598003263d82d70b82807.ipv6.abo.wanadoo.fr) |
2022-01-19 15:58:55 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-01-19 15:59:34 +0100 | slack1256 | (~slack1256@191.125.227.223) (Ping timeout: 250 seconds) |
2022-01-19 16:00:43 +0100 | Vajb | (~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506) |
2022-01-19 16:02:51 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2022-01-19 16:05:37 +0100 | fr33domlover | (~fr33@141.226.10.136) (Ping timeout: 240 seconds) |
2022-01-19 16:06:03 +0100 | rembo10_ | (~rembo10@remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-01-19 16:06:06 +0100 | <merijn> | man, I seem to have accidentally stumbled into some really tricky nerd-snipy shit >.> |
2022-01-19 16:06:23 +0100 | rembo10 | (~rembo10@remulis.com) |
2022-01-19 16:07:42 +0100 | deadmarshal | (~deadmarsh@95.38.230.192) |
2022-01-19 16:13:17 +0100 | <merijn> | I stumbled across R-trees, but I think something more efficient should be possible, since I *can* simply split my volumes if needed. But this whole thing requires more thinking than my brain can handle >.> |
2022-01-19 16:16:54 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-19 16:16:54 +0100 | polyphem | (~rod@2a02:810d:840:8754:e450:3ca3:b389:687a) (Ping timeout: 250 seconds) |
2022-01-19 16:18:33 +0100 | wmacmil | (~wmacmil@83-233-165-97.cust.bredband2.com) |
2022-01-19 16:22:50 +0100 | hugo- | hugo |
2022-01-19 16:23:35 +0100 | Guest70 | (~Guest70@2a00:1fa1:8247:926e:abaa:e5d4:d634:d5d9) |
2022-01-19 16:23:55 +0100 | Guest70 | (~Guest70@2a00:1fa1:8247:926e:abaa:e5d4:d634:d5d9) () |
2022-01-19 16:23:58 +0100 | mmhat | (~mmh@55d4fa95.access.ecotel.net) (Quit: WeeChat 3.4) |
2022-01-19 16:25:10 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-19 16:25:10 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-19 16:25:10 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-19 16:25:45 +0100 | LukeHoersten | (~LukeHoers@user/lukehoersten) |
2022-01-19 16:26:09 +0100 | darchitect | (~darchitec@2a00:23c6:3584:df00:8fb:65a6:c5ec:35ce) |
2022-01-19 16:26:32 +0100 | polyphem | (~rod@2a02:810d:840:8754:e450:3ca3:b389:687a) |
2022-01-19 16:28:03 +0100 | cfricke | (~cfricke@user/cfricke) (Ping timeout: 256 seconds) |
2022-01-19 16:29:25 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2022-01-19 16:29:45 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-19 16:32:12 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-19 16:33:39 +0100 | ksqsf | (~user@134.209.106.31) (Remote host closed the connection) |
2022-01-19 16:34:50 +0100 | ksqsf | (~user@2001:da8:d800:611:d4b0:39ea:c0c9:ff22) |
2022-01-19 16:38:13 +0100 | fr33domlover | (~fr33@141.226.170.143) |
2022-01-19 16:38:53 +0100 | <zwro[m]> | question: are "bound" variables in let expressions called "closed" variables, and are these terms interchangeable? |
2022-01-19 16:41:22 +0100 | michalz | (~michalz@185.246.204.101) (Remote host closed the connection) |
2022-01-19 16:42:14 +0100 | <merijn> | tomsmeding: Oh! |
2022-01-19 16:43:02 +0100 | <merijn> | tomsmeding: I think I *can* reformulate it into a (simple) 1D case, iff I only admit simple, "rectangular" (however that's called in higher dimensions) shapes |
2022-01-19 16:43:06 +0100 | <merijn> | ) |
2022-01-19 16:43:07 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-19 16:43:31 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-01-19 16:46:12 +0100 | LukeHoersten | (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-19 16:49:38 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-01-19 16:52:11 +0100 | <zzz> | zwro[m]: you mean bound vs free / closed vs _ ? |
2022-01-19 16:52:26 +0100 | <zwro[m]> | zzz: exactly |
2022-01-19 16:52:51 +0100 | myShoggoth | (~myShoggot@97-120-67-120.ptld.qwest.net) |
2022-01-19 16:54:37 +0100 | zebrag | (~chris@user/zebrag) |
2022-01-19 16:55:45 +0100 | <zzz> | as i understading there's a suble difference between bound vs free in math and in programming. in programming, a free variable is one that needs to be looked up the function call stack |
2022-01-19 16:56:18 +0100 | <zzz> | no sure if that exactly correlates with all let/where bindings |
2022-01-19 16:57:22 +0100 | d0ku | (~d0ku@178.43.152.233.ipv4.supernova.orange.pl) (Ping timeout: 268 seconds) |
2022-01-19 16:58:02 +0100 | <lortabac> | zwro[m]: IIRC a term is called "closed" if it doesn't contain free variables |
2022-01-19 16:58:29 +0100 | <lortabac> | a variable can't be closed, a term can |
2022-01-19 16:59:04 +0100 | <zwro[m]> | i see. are terms called "open" in opposition? |
2022-01-19 16:59:36 +0100 | `2jt | (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) |
2022-01-19 17:00:08 +0100 | <zwro[m]> | and can we set warnings for closed terms? |
2022-01-19 17:01:34 +0100 | <zwro[m]> | i want to enforce (for stylistic purposes) defining all terms at the highest level |
2022-01-19 17:02:52 +0100 | Topsi | (~Tobias@dyndsl-095-033-018-085.ewe-ip-backbone.de) |
2022-01-19 17:04:14 +0100 | <lortabac> | zwro[m]: these are two different things |
2022-01-19 17:05:16 +0100 | <zzz> | which things? |
2022-01-19 17:05:22 +0100 | <lortabac> | you want to emit a warning when let or where is used? |
2022-01-19 17:05:30 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-01-19 17:05:32 +0100 | <lortabac> | open/closed and toplevel/nested |
2022-01-19 17:06:11 +0100 | <zzz> | i think they want to avoid let/where bindings without free variables |
2022-01-19 17:06:38 +0100 | <zzz> | force defining them at the highest possile level |
2022-01-19 17:07:51 +0100 | <lortabac> | so for example (f x = y + 1 where y = x + 2) would be allowed and (f = x where x = 1) would emit a warning? |
2022-01-19 17:12:04 +0100 | <zwro[m]> | lortabac: yes |
2022-01-19 17:12:20 +0100 | <lortabac> | I don't think such a warning exists in GHC, but it shouldn't be too hard to implement, I suppose |
2022-01-19 17:14:15 +0100 | jgeerds | (~jgeerds@55d4090e.access.ecotel.net) |
2022-01-19 17:14:47 +0100 | <zzz> | i was going to say that's superfulous because ghc probably treats all "closed" bindings the same as top-level but i see a point in zwro[m]'s style |
2022-01-19 17:15:34 +0100 | <zwro[m]> | lortabac: it should be trivial |
2022-01-19 17:16:14 +0100 | <zwro[m]> | how can i make sure the setting doesn't exist yet? |
2022-01-19 17:16:24 +0100 | HyperTimeBreaker | (~HyperTime@202.3.77.166) |
2022-01-19 17:16:31 +0100 | MiguelNegrao | (~MiguelNeg@2001:818:dc71:d100:9e5a:44ff:fe17:1240) (Quit: Client closed) |
2022-01-19 17:17:13 +0100 | <zwro[m]> | zzz: mostly for conciseness and to avoid duplication, but there are other advantages |
2022-01-19 17:17:58 +0100 | HyperTimeBreaker | (~HyperTime@202.3.77.166) (Client Quit) |
2022-01-19 17:18:27 +0100 | <lortabac> | zzz: let expressions can be considered syntactic sugar for lambdas (it is the case in Scheme for example) |
2022-01-19 17:19:31 +0100 | <lortabac> | (let x = 1 in x) is just sugar for ((\x -> x) 1) |
2022-01-19 17:20:02 +0100 | <lortabac> | that's why we can say bound/free for both lambdas and lets |
2022-01-19 17:21:51 +0100 | <tomsmeding> | merijn: cuboidal? |
2022-01-19 17:22:02 +0100 | <zzz> | lortabac: there are some caveats regarding generalization of polymorphic types |
2022-01-19 17:22:38 +0100 | <EvanR_> | is zwro[m] talking about supercombinators |
2022-01-19 17:22:39 +0100 | <merijn> | tomsmeding: Anyway, I realised I'm wrong because I have a partial order that's screwing me over >.> |
2022-01-19 17:23:24 +0100 | <zwro[m]> | EvanR_: am I? |
2022-01-19 17:24:10 +0100 | <EvanR_> | nvm, I'm not sure why f = x where x = 1 would not be allowed |
2022-01-19 17:24:15 +0100 | <merijn> | tomsmeding: I was thinking I could just order by (in 2d land, but generalises to N) by like the "top-most, leftmost point of an interval" and then lookup the greatest one "smaller than my target" and identify the volume it's in. |
2022-01-19 17:24:31 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:ac4b:acb4:af59:598f) (Quit: WeeChat 2.8) |
2022-01-19 17:24:41 +0100 | <merijn> | But that doesn't quite work, because a total (lexicographical) order on points gets you the wrong one sometimes |
2022-01-19 17:24:55 +0100 | <merijn> | But a partial order doesn't play nice with a BST |
2022-01-19 17:25:28 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-19 17:25:28 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-19 17:25:28 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-19 17:26:53 +0100 | <zwro[m]> | EvanR_: i just checked what supercombinators are. i guess that's more useful! that example not being allowed would just be an unfortunate side-effect |
2022-01-19 17:27:29 +0100 | <zwro[m]> | if i'm understanding, any combinator can be trivially turned into a supercombinator, right? |
2022-01-19 17:29:12 +0100 | <zzz> | (lortabac: MonoLocalBinds) |
2022-01-19 17:29:26 +0100 | <EvanR_> | actually, sometimes just "combinator" is what people call a top level thing with no free vars |
2022-01-19 17:30:00 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-01-19 17:30:11 +0100 | <zzz> | i see |
2022-01-19 17:30:17 +0100 | <EvanR_> | whereas supercombinator is in an implementation context and often has an explicit arity for compiler purposes |
2022-01-19 17:30:57 +0100 | geranim0 | (~geranim0@modemcable242.171-178-173.mc.videotron.ca) |
2022-01-19 17:31:02 +0100 | <zzz> | haskell needs a compreehensive list of common terminology |
2022-01-19 17:32:39 +0100 | hyiltiz_ | (~quassel@31.220.5.250) (Ping timeout: 256 seconds) |
2022-01-19 17:33:00 +0100 | hyiltiz | (~quassel@31.220.5.250) |
2022-01-19 17:33:23 +0100 | <zwro[m]> | so i guess i was not talking about it, exactly |
2022-01-19 17:34:13 +0100 | <zwro[m]> | i just want to avoid having stuff limited by a function's scope when it has no reason to |
2022-01-19 17:34:27 +0100 | fendor | (~fendor@77.119.169.94.wireless.dyn.drei.com) |
2022-01-19 17:34:58 +0100 | <EvanR_> | sounds like xkcd style, there are only so many functions, we should never write the same combinator twice |
2022-01-19 17:35:17 +0100 | <zwro[m]> | ScopedTypeVariables, which i have always on, complicates things |
2022-01-19 17:35:21 +0100 | <EvanR_> | oh oh, there's the birding combinator book |
2022-01-19 17:36:01 +0100 | random-jellyfish | (~random-je@user/random-jellyfish) |
2022-01-19 17:36:23 +0100 | <EvanR_> | https://hackage.haskell.org/package/data-aviary haven't thought of this in a while |
2022-01-19 17:36:48 +0100 | eron | (~eron@2804:431:c7c2:3848:2c26:bc50:f8a2:a008) (Quit: Client closed) |
2022-01-19 17:37:56 +0100 | <dolio> | The really technical definition is that combinators are defined like `f x y z ... = E` where `E` contains only application and previously defined combinators. |
2022-01-19 17:38:07 +0100 | <merijn> | oh, wait, maybe this is rescuable by using manhattan distance to induce a total ordering! |
2022-01-19 17:38:08 +0100 | <zwro[m]> | EvanR_: xkcd style? now i need a link |
2022-01-19 17:38:10 +0100 | <dolio> | Oh, and the bound variables, of course. |
2022-01-19 17:38:28 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
2022-01-19 17:38:46 +0100 | <EvanR_> | on xkcd's irc network (who has their own irc network anyway) there is a channel where the bot is set up to stop you from using a previously spoken message |
2022-01-19 17:38:47 +0100 | <dolio> | I.E. it's a formalism without lambda expressions. |
2022-01-19 17:39:13 +0100 | <EvanR_> | seems similar to your not wanting to write the same combinator again xD |
2022-01-19 17:39:59 +0100 | <EvanR_> | dolio, but doesn't e.g. Y combinator use lambdas |
2022-01-19 17:40:21 +0100 | <zzz> | EvanR_: is Data.Aviary a reference to Smullyan? |
2022-01-19 17:40:53 +0100 | <EvanR_> | yes |
2022-01-19 17:40:59 +0100 | <dolio> | Not if you define it in a combinator calculus. |
2022-01-19 17:41:24 +0100 | laslmtdwbcs^ | (~laslmtdwb@wsip-98-188-242-61.mc.at.cox.net) |
2022-01-19 17:41:24 +0100 | <zzz> | how can Y be defined in Haskell? |
2022-01-19 17:41:31 +0100 | <zzz> | fix ? |
2022-01-19 17:41:45 +0100 | <zzz> | you can't excape the let |
2022-01-19 17:42:26 +0100 | <dolio> | I don't have the combinator definition memorized, though, and don't really feel like working it out. :þ |
2022-01-19 17:42:34 +0100 | johnjaye | (~pi@154.6.152.74) |
2022-01-19 17:42:55 +0100 | <johnjaye> | i'm looking at a build script and it has names like 'v1-install' as commands for building a haskell project. is that reasonable? |
2022-01-19 17:42:59 +0100 | <dolio> | @pl \f -> (\x -> f (x x)) (\x -> f (x x)) |
2022-01-19 17:42:59 +0100 | <lambdabot> | ap (. join id) (. join id) |
2022-01-19 17:43:13 +0100 | <dolio> | @pl (\x -> f (x x)) (\x -> f (x x)) |
2022-01-19 17:43:16 +0100 | <lambdabot> | (f . ap id id) (f . ap id id) |
2022-01-19 17:43:16 +0100 | <lambdabot> | optimization suspended, use @pl-resume to continue. |
2022-01-19 17:43:36 +0100 | <EvanR_> | @pl-resume |
2022-01-19 17:43:42 +0100 | <lambdabot> | (f . ap id id) (f . ap id id) |
2022-01-19 17:43:42 +0100 | <lambdabot> | optimization suspended, use @pl-resume to continue. |
2022-01-19 17:43:45 +0100 | <dolio> | :) |
2022-01-19 17:43:46 +0100 | <maerwald> | johnjaye: what do you mean witth reasonable? |
2022-01-19 17:43:47 +0100 | <EvanR_> | nice |
2022-01-19 17:43:52 +0100 | <EvanR_> | partiality monad |
2022-01-19 17:44:18 +0100 | <EvanR_> | could be used for a "loading" screen in a video game |
2022-01-19 17:44:30 +0100 | <johnjaye> | maerwald: i'm trying to figure out if it's an option to cabal, ghc, or something else |
2022-01-19 17:44:41 +0100 | <johnjaye> | man cabal doesn't exist. oops |
2022-01-19 17:44:47 +0100 | <geekosaur> | v1-install would be cabal |
2022-01-19 17:45:06 +0100 | <geekosaur> | https://cabal.readthedocs.io/ |
2022-01-19 17:45:08 +0100 | <johnjaye> | ok --help works |
2022-01-19 17:45:14 +0100 | <johnjaye> | i see i there |
2022-01-19 17:45:21 +0100 | <geekosaur> | but the v1-* commands are deprecated at this point |
2022-01-19 17:45:25 +0100 | <johnjaye> | ok |
2022-01-19 17:45:38 +0100 | <geekosaur> | they're a good way to make unsolvable messes |
2022-01-19 17:45:45 +0100 | <maerwald> | johnjaye: cabal man |
2022-01-19 17:46:27 +0100 | <johnjaye> | maerwald: illegal option -l |
2022-01-19 17:46:32 +0100 | <johnjaye> | then some usage message about man. lol |
2022-01-19 17:46:34 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-19 17:46:35 +0100 | <johnjaye> | on bsd |
2022-01-19 17:46:55 +0100 | <maerwald> | yeah, it's a bug https://github.com/haskell/cabal/issues/7714 |
2022-01-19 17:47:25 +0100 | <zzz> | @type \f -> (\x -> f (x x)) (\x -> f (x x)) |
2022-01-19 17:47:26 +0100 | <lambdabot> | error: |
2022-01-19 17:47:26 +0100 | <lambdabot> | • Occurs check: cannot construct the infinite type: t0 ~ t0 -> t |
2022-01-19 17:47:26 +0100 | <lambdabot> | • In the first argument of ‘x’, namely ‘x’ |
2022-01-19 17:47:31 +0100 | <zzz> | ^ |
2022-01-19 17:48:33 +0100 | zmt01 | (~zmt00@user/zmt00) |
2022-01-19 17:48:37 +0100 | <zzz> | @type ap (. join id) (. join id) |
2022-01-19 17:48:38 +0100 | <lambdabot> | error: |
2022-01-19 17:48:38 +0100 | <lambdabot> | • Occurs check: cannot construct the infinite type: a0 ~ a0 -> b |
2022-01-19 17:48:38 +0100 | <lambdabot> | Expected type: (a0 -> b) -> (a0 -> b) -> b |
2022-01-19 17:48:40 +0100 | enicar | enikar |
2022-01-19 17:49:04 +0100 | <zzz> | computer says no |
2022-01-19 17:49:57 +0100 | <zzz> | dolio EvanR_ |
2022-01-19 17:50:06 +0100 | <ksqsf> | you'll need some recursive type to guide the type checking |
2022-01-19 17:50:24 +0100 | <ksqsf> | a simpler and more evil way is to use unsafeCoerce |
2022-01-19 17:50:51 +0100 | Sgeo_ | (~Sgeo@user/sgeo) |
2022-01-19 17:50:57 +0100 | Sgeo | (~Sgeo@user/sgeo) (Ping timeout: 240 seconds) |
2022-01-19 17:51:04 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection) |
2022-01-19 17:51:07 +0100 | <zzz> | ksqsf: can we make it typecheck with a recursive type? |
2022-01-19 17:51:08 +0100 | <EvanR_> | zzz, you wrote a Y combinator for untyped lambda calculus |
2022-01-19 17:51:23 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
2022-01-19 17:51:30 +0100 | <zzz> | EvanR_: yes, that's my point |
2022-01-19 17:51:31 +0100 | <EvanR_> | many things from untyped lambda calculus don't work as is when you add types |
2022-01-19 17:52:26 +0100 | <tomsmeding> | merijn: probably a bad idea, but (in 2d land): store for each rect with left-top (x,y) the other rect with left-top (a,b) such that a<=x, b>=y, and b is minimal with tiebreaker (a is maximal). Also store the symmetric thing on the top. Then by following these "other rect" pointers you kind of walk a convex hull thing around your query point, if you start with a rect with left-top (x,y) with x <= |
2022-01-19 17:52:26 +0100 | <tomsmeding> | queryx and y <= queryy, optimised by some metric. Not sure if this actually works |
2022-01-19 17:52:35 +0100 | <ksqsf> | zzz: yes, try newtype Mu a = Mu (Mu a -> a) |
2022-01-19 17:54:04 +0100 | <tomsmeding> | @let newtype Mu a = Mu (Mu a -> a) |
2022-01-19 17:54:05 +0100 | <lambdabot> | Defined. |
2022-01-19 17:54:21 +0100 | <tomsmeding> | @type \f -> (\(Mu x) -> f (x (Mu x))) (\x -> f (x (Mu x))) |
2022-01-19 17:54:22 +0100 | <lambdabot> | error: |
2022-01-19 17:54:22 +0100 | <lambdabot> | • Couldn't match expected type ‘Mu t’ |
2022-01-19 17:54:22 +0100 | <lambdabot> | with actual type ‘(Mu t -> t) -> t1’ |
2022-01-19 17:54:33 +0100 | burnsidesLlama | (~burnsides@dhcp168-042.wadham.ox.ac.uk) |
2022-01-19 17:54:37 +0100 | jgeerds | (~jgeerds@55d4090e.access.ecotel.net) (Ping timeout: 240 seconds) |
2022-01-19 17:54:46 +0100 | <tomsmeding> | @type \f -> (\x -> f (x (Mu x))) (\(Mu x) -> f (x (Mu x))) |
2022-01-19 17:54:47 +0100 | <lambdabot> | (a -> a) -> a |
2022-01-19 17:55:01 +0100 | <merijn> | tomsmeding: That's what I was thinking, but I don't think I can get a good enough ordering for "closest, left-top" |
2022-01-19 17:55:18 +0100 | <merijn> | Because lexicographical ordering produces the wrong order |
2022-01-19 17:55:25 +0100 | <tomsmeding> | also I now realise that this suffers from combinatorial explosion if d > 2 |
2022-01-19 17:55:44 +0100 | <dolio> | Ruling out the Y combinator is one of the reasons types were invented. |
2022-01-19 17:55:53 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds) |
2022-01-19 17:55:59 +0100 | <merijn> | If you can smash the ordering into a 1-d total order the problem is "solved" |
2022-01-19 17:56:18 +0100 | <merijn> | But I can't make that work |
2022-01-19 17:56:19 +0100 | Vajb | (~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506) (Read error: Connection reset by peer) |
2022-01-19 17:57:16 +0100 | <johnjaye> | is building with ghc -O1 a lot slower than with -O0? |
2022-01-19 17:57:23 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
2022-01-19 17:57:27 +0100 | <johnjaye> | ah there's a #ghc channel ok |
2022-01-19 17:57:32 +0100 | <geekosaur> | not usually a "lot" slower |
2022-01-19 17:57:43 +0100 | <geekosaur> | note that #ghc is a dev channel, they send user questions here |
2022-01-19 17:57:50 +0100 | <johnjaye> | ok. i notice my processors aren't really working that hard |
2022-01-19 17:58:01 +0100 | <johnjaye> | like one goes to 100% every few seconds |
2022-01-19 17:58:26 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-01-19 17:58:56 +0100 | <tomsmeding> | johnjaye: soundsd like you're compiling using one thread, which makes sense since ghc compiles one component (library or executable) single-threaded |
2022-01-19 17:59:09 +0100 | <tomsmeding> | the build parallelism is in compiling multiple packages in parallel, not really within one package |
2022-01-19 17:59:16 +0100 | burnsidesLlama | (~burnsides@dhcp168-042.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-01-19 17:59:37 +0100 | fr33domlover | (~fr33@141.226.170.143) (Ping timeout: 240 seconds) |
2022-01-19 18:00:24 +0100 | neverfindme | (~hayden@158.123.160.43) |
2022-01-19 18:00:41 +0100 | neverfindme | (~hayden@158.123.160.43) (Max SendQ exceeded) |
2022-01-19 18:00:46 +0100 | <tomsmeding> | merijn: also my idea doesn't work, found a counterexample (in the walking even, not the selection of the first rect) |
2022-01-19 18:01:01 +0100 | neverfindme | (~hayden@158.123.160.43) |
2022-01-19 18:01:50 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
2022-01-19 18:01:51 +0100 | mbuf | (~Shakthi@110.225.233.59) (Quit: Leaving) |
2022-01-19 18:02:01 +0100 | <merijn> | tomsmeding: it feels like there *should* be an efficient/simple solution, but I just can't make it work :( |
2022-01-19 18:02:27 +0100 | <johnjaye> | i see |
2022-01-19 18:02:55 +0100 | <tomsmeding> | johnjaye: there technically is a -j argument to ghc, but in my experience that is very successful in using more cores and keeping total compilation time roughly constant |
2022-01-19 18:03:14 +0100 | neverfindme | (~hayden@158.123.160.43) (Remote host closed the connection) |
2022-01-19 18:03:31 +0100 | neverfindme | (~hayden@158.123.160.43) |
2022-01-19 18:03:44 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) |
2022-01-19 18:03:59 +0100 | neverfindme | (~hayden@158.123.160.43) (Remote host closed the connection) |
2022-01-19 18:05:11 +0100 | <tomsmeding> | (that's a different -j argument than the one to cabal; the cabal one is on by default and is for cross-package parallelism and works well) |
2022-01-19 18:05:43 +0100 | <tomsmeding> | merijn: combination of these three examples defeated my idea https://tomsmeding.com/ss/get/tomsmeding/XEkacx |
2022-01-19 18:06:05 +0100 | random-jellyfish | (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds) |
2022-01-19 18:06:24 +0100 | <[itchyjunk]> | Trying to see if i remember foldr. it took a function , element of type a, list [a] and returned [b] so foldr :: a -> a -> b -> a -> [a] -> [b] ? |
2022-01-19 18:06:27 +0100 | <[itchyjunk]> | :t foldr |
2022-01-19 18:06:28 +0100 | <lambdabot> | Foldable t => (a -> b -> b) -> b -> t a -> b |
2022-01-19 18:06:33 +0100 | <[itchyjunk]> | ree |
2022-01-19 18:06:39 +0100 | <[itchyjunk]> | thats what i had first lol |
2022-01-19 18:06:55 +0100 | <tomsmeding> | missing some parens in your suggestion |
2022-01-19 18:06:56 +0100 | <[itchyjunk]> | hmm |
2022-01-19 18:07:02 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2022-01-19 18:07:02 +0100 | <[itchyjunk]> | oh right, oops |
2022-01-19 18:07:06 +0100 | <tomsmeding> | a -> b -> c is not the same as (a -> b) -> c |
2022-01-19 18:07:12 +0100 | <tomsmeding> | though it _is_ the same as a -> (b -> c) |
2022-01-19 18:07:30 +0100 | <[itchyjunk]> | right, the second one suggests a function (a -> b) |
2022-01-19 18:07:37 +0100 | <tomsmeding> | not only suggests |
2022-01-19 18:07:38 +0100 | <[itchyjunk]> | right associativity |
2022-01-19 18:07:52 +0100 | <[itchyjunk]> | implies is a better word, maybe |
2022-01-19 18:08:02 +0100 | <tomsmeding> | 'a -> b -> c' = 'a -> (b -> c)' can be remembered by knowing that \x -> \y -> E is the same as \x y -> E |
2022-01-19 18:08:41 +0100 | <[itchyjunk]> | hmm |
2022-01-19 18:08:42 +0100 | <EvanR_> | a -> (b -> c) could be read as `a' implies `b -> c' xD |
2022-01-19 18:08:56 +0100 | <tomsmeding> | EvanR_: or is that a => (b -> c) :p |
2022-01-19 18:09:02 +0100 | <johnjaye> | incredibly the command line argument to ghc is 2,000 characters long |
2022-01-19 18:09:13 +0100 | <tomsmeding> | or are => and -> secretly the same thing? hmmmmmmmmmm |
2022-01-19 18:09:17 +0100 | myShoggoth | (~myShoggot@97-120-67-120.ptld.qwest.net) (Ping timeout: 240 seconds) |
2022-01-19 18:09:21 +0100 | EvanR_ | dumps out a big bin of arrow glyphs on the table and starts searching through them |
2022-01-19 18:09:24 +0100 | <johnjaye> | i think it put every submodule to build for the project on the command argument |
2022-01-19 18:09:25 +0100 | <zzz> | ksqsf: tomsmeding: wow |
2022-01-19 18:09:34 +0100 | <tomsmeding> | johnjaye: it does :p |
2022-01-19 18:09:44 +0100 | nvmd | (~nvmd@user/nvmd) (Quit: Later, nerds.) |
2022-01-19 18:09:56 +0100 | <tomsmeding> | cabal collects what modules belong in the component, then passes the full list to ghc, which then compiles them all |
2022-01-19 18:10:02 +0100 | <[itchyjunk]> | :t unfoldr |
2022-01-19 18:10:04 +0100 | <johnjaye> | i see |
2022-01-19 18:10:04 +0100 | <lambdabot> | (b -> Maybe (a, b)) -> b -> [a] |
2022-01-19 18:10:10 +0100 | <[itchyjunk]> | now this monstrosity.. |
2022-01-19 18:10:14 +0100 | <tomsmeding> | the reason why it's one ghc process instead of one per module is that ghc does a _lot_ of caching of intermediate products |
2022-01-19 18:10:24 +0100 | <[itchyjunk]> | it takes a function and another argument and returns a list |
2022-01-19 18:10:59 +0100 | <tomsmeding> | > unfoldr (\x -> if x > 10 then Nothing else Just (-x, x + 1)) 1 |
2022-01-19 18:11:01 +0100 | <lambdabot> | [-1,-2,-3,-4,-5,-6,-7,-8,-9,-10] |
2022-01-19 18:11:01 +0100 | <[itchyjunk]> | ah, i need to find function with type b -> Maybe (a,b) first! |
2022-01-19 18:11:08 +0100 | <zzz> | dolio: if types were invented to rule out the Y combinator, howcome we can still define it? |
2022-01-19 18:11:14 +0100 | <johnjaye> | i guess it's time to use the old fashioned progress indicator - du |
2022-01-19 18:11:25 +0100 | <tomsmeding> | zzz: because we then went on and introduced recursive types |
2022-01-19 18:11:39 +0100 | tito | (tito@tilde.team) |
2022-01-19 18:11:44 +0100 | <tomsmeding> | we can also leave those out; then you end up with the simply-typed lambda calculus, in which general recursion is not expressible |
2022-01-19 18:12:35 +0100 | <[itchyjunk]> | okay, i can read you function up there i think, the \x one. but wouldn't it keep checking higher values of x forever and keep getting Nothing back? |
2022-01-19 18:12:40 +0100 | <[itchyjunk]> | how does it know when to stop? |
2022-01-19 18:12:43 +0100 | <zzz> | what wuold be a good book to read to introduce myself to these concepts? |
2022-01-19 18:12:44 +0100 | <tomsmeding> | @src unfold |
2022-01-19 18:12:44 +0100 | <lambdabot> | Source not found. Just what do you think you're doing Dave? |
2022-01-19 18:12:47 +0100 | <dolio> | zzz: You can't. It's re-added as a basic thing when desired. |
2022-01-19 18:12:51 +0100 | <EvanR_> | haskell restores the chaos of uncontrolled recursion with recursive bindings and recursive ADTs |
2022-01-19 18:13:07 +0100 | <tomsmeding> | [itchyjunk]: https://hackage.haskell.org/package/base-4.14.0.0/docs/src/Data.OldList.html#unfoldr |
2022-01-19 18:13:08 +0100 | <[itchyjunk]> | ahh, i'll file that under magic for now |
2022-01-19 18:13:18 +0100 | <EvanR_> | but recursive ADTs are nice because they are lazy |
2022-01-19 18:13:27 +0100 | <tomsmeding> | oh that's not very helpful with build there |
2022-01-19 18:13:45 +0100 | <tomsmeding> | [itchyjunk]: read (:) instead of c, and [] instead of n |
2022-01-19 18:14:15 +0100 | <EvanR_> | ADTs are necessarily guarded recursion |
2022-01-19 18:14:25 +0100 | <EvanR_> | unlike let x = x in x |
2022-01-19 18:14:52 +0100 | <johnjaye> | well that didn't work either. guess i'll go break and come back and hope ghc finished properly |
2022-01-19 18:15:09 +0100 | <tomsmeding> | johnjaye: what are you even compiling :p |
2022-01-19 18:15:15 +0100 | <johnjaye> | tomsmeding: agda |
2022-01-19 18:15:26 +0100 | <tomsmeding> | and getting no progress feedback? |
2022-01-19 18:15:29 +0100 | <johnjaye> | yes |
2022-01-19 18:15:36 +0100 | <zzz> | EvanR_: but let x = f x in x is ok |
2022-01-19 18:15:42 +0100 | <tomsmeding> | that's very odd |
2022-01-19 18:15:47 +0100 | <EvanR_> | it depends on f |
2022-01-19 18:15:56 +0100 | phma_ | phma |
2022-01-19 18:16:03 +0100 | <johnjaye> | says Starting Agda-2.6.3 (all, legacy fallback) |
2022-01-19 18:16:08 +0100 | <johnjaye> | then building. then nothing |
2022-01-19 18:16:11 +0100 | <tomsmeding> | ah right, as a dependency |
2022-01-19 18:16:14 +0100 | <zzz> | EvanR_: oh i see |
2022-01-19 18:16:17 +0100 | <zzz> | nice |
2022-01-19 18:16:18 +0100 | <[itchyjunk]> | I need an exercise where i can practice writing functions with Maybe blah in the return type. :x what do i google for? |
2022-01-19 18:16:28 +0100 | <tomsmeding> | johnjaye: yeah it's probably working, agda is a _really_ large package |
2022-01-19 18:16:41 +0100 | <johnjaye> | ok. i should probably learn how cabal works |
2022-01-19 18:16:43 +0100 | <[itchyjunk]> | adga is written in haskell? |
2022-01-19 18:16:45 +0100 | <johnjaye> | that might help |
2022-01-19 18:16:49 +0100 | <johnjaye> | [itchyjunk]: maybe |
2022-01-19 18:16:53 +0100 | <tomsmeding> | yes |
2022-01-19 18:16:54 +0100 | <[itchyjunk]> | hmmm |
2022-01-19 18:16:57 +0100 | <[itchyjunk]> | i didn't know that |
2022-01-19 18:17:25 +0100 | <tomsmeding> | idris too, raku too, ghc itself too, whitespace too |
2022-01-19 18:17:28 +0100 | <johnjaye> | only 55.1% haskell |
2022-01-19 18:17:36 +0100 | <[itchyjunk]> | never heard of any of those :D |
2022-01-19 18:17:44 +0100 | <johnjaye> | 26.7% agda |
2022-01-19 18:17:53 +0100 | <ksqsf> | the law of haskell syntax: if a language looks like haskell, its compiler is probably written in haskell |
2022-01-19 18:18:06 +0100 | <EvanR_> | wait, I thought that was law of perl |
2022-01-19 18:18:10 +0100 | <zzz> | [itchyjunk]: you should know ghc at least |
2022-01-19 18:18:11 +0100 | <johnjaye> | tomsmeding: the raku one seems odd to me. wouldn't that defeat self-hosting? |
2022-01-19 18:18:14 +0100 | <[itchyjunk]> | I don't really know what agda looks like other than seeing it on youtube |
2022-01-19 18:18:16 +0100 | <geekosaur> | mm, raku's not written in haskell. pugs was |
2022-01-19 18:18:25 +0100 | <[itchyjunk]> | zzz, i know of ghci |
2022-01-19 18:18:45 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2022-01-19 18:18:48 +0100 | <johnjaye> | someone linked me to a youtube video about agda but i don't remember. it was like CS410 and had a whiteboard |
2022-01-19 18:18:59 +0100 | <johnjaye> | yes one of those types of vids |
2022-01-19 18:19:04 +0100 | <[itchyjunk]> | i watched it on that computerphile video. |
2022-01-19 18:19:07 +0100 | <zzz> | [itchyjunk]: ghci stands for ghc interactive [environment] |
2022-01-19 18:19:13 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2022-01-19 18:19:14 +0100 | <tomsmeding> | geekosaur: ah, I misremembered |
2022-01-19 18:19:21 +0100 | <[itchyjunk]> | the claim was you can turn run time type error into compile time type error |
2022-01-19 18:19:31 +0100 | <zzz> | [itchyjunk]: ghc is the haskell compiler you're probably using |
2022-01-19 18:19:53 +0100 | <johnjaye> | i'm using ghc right now |
2022-01-19 18:19:55 +0100 | <[itchyjunk]> | zzz, right. i still need to learn to compile my stuff :< its on the todo |
2022-01-19 18:19:57 +0100 | <tomsmeding> | johnjaye: seems like all the .agda files are in test/ |
2022-01-19 18:19:57 +0100 | <zzz> | the glorious/glasgow haskell compiler |
2022-01-19 18:20:28 +0100 | <monochrom> | [itchyjunk]: Have you done this? Recall that "maximum []" is undefined. Implement a "nicerMaximum :: Ord a => [a] -> Maybe a" such that nicerMaximum [] = Nothing, nicerMaximum non_empty_list = Just (the answer). |
2022-01-19 18:20:49 +0100 | <johnjaye> | tomsmeding: do you think it will go way faster i if i turn off tests? |
2022-01-19 18:21:03 +0100 | <tomsmeding> | johnjaye: turn off which tests how exactly? |
2022-01-19 18:21:18 +0100 | <[itchyjunk]> | Oh i haven't learned maximum. so i could work on this. i suppose i take a list an return the largest element in it |
2022-01-19 18:21:22 +0100 | <tomsmeding> | johnjaye: also, what process is taking cpu at the moment? |
2022-01-19 18:21:31 +0100 | <monochrom> | yeah |
2022-01-19 18:21:45 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2022-01-19 18:23:16 +0100 | <johnjaye> | it involves --ghc-options=O0 |
2022-01-19 18:23:32 +0100 | tomku | (~tomku@user/tomku) (Ping timeout: 240 seconds) |
2022-01-19 18:23:41 +0100 | <johnjaye> | ghc is taking 100% of one cpu |
2022-01-19 18:23:44 +0100 | <tomsmeding> | johnjaye: the command is ghc with flags? Then it's still building |
2022-01-19 18:23:55 +0100 | tomku | (~tomku@user/tomku) |
2022-01-19 18:23:59 +0100 | <tomsmeding> | I don't think it will be running any tests unless you specifically asked it somehow |
2022-01-19 18:24:08 +0100 | <johnjaye> | no i mean the makefile has an option for a quick build. and the quick bu ild is adding --ghc-options=O0 |
2022-01-19 18:24:23 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-19 18:24:28 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-19 18:24:28 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-19 18:24:28 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-19 18:24:51 +0100 | <tomsmeding> | with O0 the resulting Agda binary will be a lot slower |
2022-01-19 18:24:54 +0100 | <ksqsf> | Agda sure takes a long time to build, but I don't recall the compile time being so bad |
2022-01-19 18:25:26 +0100 | <ksqsf> | probably due to GHC 9 being faster |
2022-01-19 18:25:31 +0100 | <tomsmeding> | johnjaye: it has to build all these modules https://github.com/agda/agda/blob/master/Agda.cabal#L287-L645 |
2022-01-19 18:26:18 +0100 | <tomsmeding> | johnjaye: if you're on linux, open htop, select the ghc process taking cpu, and press the L key, then look at which .hs file it's currently looking at |
2022-01-19 18:26:27 +0100 | <johnjaye> | ksqsf: how did you know i was using ghc-8.10.7? |
2022-01-19 18:26:41 +0100 | <tomsmeding> | doesn't tell you much about how far it is, but it should show progress :p |
2022-01-19 18:26:45 +0100 | econo | (uid147250@user/econo) |
2022-01-19 18:26:50 +0100 | <tomsmeding> | s/progress/action/ |
2022-01-19 18:27:57 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480::41) |
2022-01-19 18:28:02 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-01-19 18:28:50 +0100 | throwaaaa[m] | (~throwaaaa@2001:470:69fc:105::1:6fe6) |
2022-01-19 18:28:56 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-01-19 18:28:57 +0100 | alp | (~alp@user/alp) (Ping timeout: 240 seconds) |
2022-01-19 18:29:19 +0100 | razetime | (~quassel@49.207.203.87) (Ping timeout: 256 seconds) |
2022-01-19 18:31:12 +0100 | burnsidesLlama | (~burnsides@dhcp168-042.wadham.ox.ac.uk) |
2022-01-19 18:31:58 +0100 | <[itchyjunk]> | I tried to write the regular version of maximum first, it's kinda works but it seems to have a weird issue |
2022-01-19 18:31:59 +0100 | <[itchyjunk]> | https://bpa.st/TRLA |
2022-01-19 18:32:19 +0100 | <[itchyjunk]> | i tried "apple", [1..10], [1..100]. works fine for first 2 |
2022-01-19 18:32:32 +0100 | <[itchyjunk]> | the thrid one just freezes |
2022-01-19 18:33:10 +0100 | Akiva | (~Akiva@user/Akiva) |
2022-01-19 18:33:40 +0100 | <[itchyjunk]> | myMaximum [2,1,6,0,3] |
2022-01-19 18:33:40 +0100 | <[itchyjunk]> | 6 |
2022-01-19 18:33:57 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2022-01-19 18:34:01 +0100 | <[itchyjunk]> | So works for some list, but definately not for myMaximum [1..100] and i am wondering where i went wrong |
2022-01-19 18:34:15 +0100 | kjak | (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) |
2022-01-19 18:34:15 +0100 | <tomsmeding> | try 'myMaximum [1..20]' |
2022-01-19 18:34:30 +0100 | <monochrom> | OK, do you know the efficiency difference between "f (n+1) = let y = f n in y+y" and "f (n+1) = f n + f n"? |
2022-01-19 18:34:38 +0100 | <[itchyjunk]> | that worked but took a second. |
2022-01-19 18:34:49 +0100 | <[itchyjunk]> | i do not know the efficiency difference there :< |
2022-01-19 18:34:53 +0100 | <monochrom> | That is, one of them takes time proportional to n, the other exponential time. |
2022-01-19 18:34:57 +0100 | tomsmeding | is happy to have guessed the right number there |
2022-01-19 18:35:03 +0100 | xb0o2 | (~xb0o2@user/xb0o2) (Quit: Client closed) |
2022-01-19 18:35:11 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection) |
2022-01-19 18:35:31 +0100 | <[itchyjunk]> | ah i will file this under complexity theory and move on then :x |
2022-01-19 18:35:31 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
2022-01-19 18:35:50 +0100 | <tomsmeding> | first one: f 2 = let y = (let y = (let y = f 0 in y+y) in y+y) in y+y |
2022-01-19 18:36:17 +0100 | <tomsmeding> | ahem, f 3 is that |
2022-01-19 18:36:36 +0100 | <tomsmeding> | second one: f 3 = ((f 0 + f 0) + (f 0 + f 0)) + ((f 0 + f 0) + (f 0 + f 0)) |
2022-01-19 18:36:42 +0100 | <monochrom> | This one is very easy baby-level complexity. |
2022-01-19 18:37:20 +0100 | <monochrom> | If you use "f (n+1) = f n + f n", f n makes 2^n calls to f 0. |
2022-01-19 18:37:26 +0100 | fr33domlover | (~fr33@141.226.170.143) |
2022-01-19 18:38:00 +0100 | burnsidesLlama | (~burnsides@dhcp168-042.wadham.ox.ac.uk) (Ping timeout: 256 seconds) |
2022-01-19 18:38:52 +0100 | Guest80 | (~Guest80@host-95-245-231-154.retail.telecomitalia.it) |
2022-01-19 18:39:31 +0100 | <monochrom> | This is also why DRY is important. |
2022-01-19 18:39:41 +0100 | <[itchyjunk]> | right, it makes 2^n calls for all f n it seems |
2022-01-19 18:39:55 +0100 | <[itchyjunk]> | hmm my function looks pretty dry :x |
2022-01-19 18:40:09 +0100 | <monochrom> | OK, why are you saying "myMaximum xs" twice? |
2022-01-19 18:40:27 +0100 | <monochrom> | In the same way my "f (n+1) = f n + f n" says "f n" twice? |
2022-01-19 18:40:38 +0100 | <[itchyjunk]> | oh |
2022-01-19 18:42:17 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 240 seconds) |
2022-01-19 18:42:20 +0100 | <monochrom> | I have had students who, for other problems, said "f (x:xs) = .... f xs .... f xs .... f xs ...", so, 3 times. |
2022-01-19 18:42:35 +0100 | <[itchyjunk]> | https://bpa.st/B2XQ |
2022-01-19 18:42:51 +0100 | <monochrom> | OK good. |
2022-01-19 18:43:10 +0100 | <monochrom> | Did you also know: 2-argument "max" exists >:) |
2022-01-19 18:43:20 +0100 | <[itchyjunk]> | no i did not |
2022-01-19 18:43:46 +0100 | <monochrom> | "Based on your past searches, Amazon thinks you may be interested in..." |
2022-01-19 18:43:54 +0100 | Hildegunst | (~luc@80.248.12.109.rev.sfr.net) |
2022-01-19 18:45:12 +0100 | <[itchyjunk]> | oh max blah blah returns maximum of two |
2022-01-19 18:45:33 +0100 | <[itchyjunk]> | right, i saw that. i used somethign similar to find the longest length of nodes in itchyTree |
2022-01-19 18:46:18 +0100 | <EvanR_> | max is cool, it can potentially return an answer without knowing everything about the arguments, which is important if the arguments are infinite or otherwise inconvenient to get all of |
2022-01-19 18:47:20 +0100 | <EvanR_> | where as maximum can't return if you give it an empty list or an infinite list |
2022-01-19 18:47:34 +0100 | <janus> | EvanR_: can't (<>) of Max do the same? |
2022-01-19 18:48:18 +0100 | <janus> | sconcat only works for NonEmpty lists, so that issue is also taken care of |
2022-01-19 18:48:48 +0100 | <janus> | NonEmpty also supports infinite lists, i guess |
2022-01-19 18:49:33 +0100 | <EvanR_> | isn't <> of Max just max |
2022-01-19 18:50:04 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) |
2022-01-19 18:50:15 +0100 | <EvanR_> | but yeah any combination of maxes also work |
2022-01-19 18:50:23 +0100 | <EvanR_> | finite |
2022-01-19 18:50:39 +0100 | myShoggoth | (~myShoggot@97-120-67-120.ptld.qwest.net) |
2022-01-19 18:50:59 +0100 | <Guest80> | does anyone have any experience using Haskell on Mac M1 and VSCode? I'm getting some weird "relocateSection: unexpected internal relocation type 10" errors |
2022-01-19 18:51:14 +0100 | <janus> | EvanR_: yes https://hackage.haskell.org/package/base-4.16.0.0/docs/src/Data.Semigroup.html#line-238 |
2022-01-19 18:51:27 +0100 | Major_Biscuit | (~MajorBisc@c-001-018-021.client.tudelft.eduvpn.nl) (Ping timeout: 268 seconds) |
2022-01-19 18:51:39 +0100 | <janus> | Guest80: which version of ghc are you using? |
2022-01-19 18:51:55 +0100 | <EvanR_> | semigroups in general are cool |
2022-01-19 18:52:07 +0100 | <Guest80> | 8.10.7 |
2022-01-19 18:52:16 +0100 | <Guest80> | (sorry I'm not used to IRC) |
2022-01-19 18:52:24 +0100 | <geekosaur> | also which version of llvm? |
2022-01-19 18:52:47 +0100 | <geekosaur> | (and where did you get it?) |
2022-01-19 18:53:06 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-01-19 18:53:46 +0100 | <[itchyjunk]> | this seems to work : https://bpa.st/PSQA |
2022-01-19 18:53:47 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:84bf:ceba:6161:c1f6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-19 18:53:56 +0100 | <Guest80> | This is what I get running llvm-gcc --version |
2022-01-19 18:53:57 +0100 | <Guest80> | Apple clang version 13.0.0 (clang-1300.0.29.30) |
2022-01-19 18:53:57 +0100 | <Guest80> | Target: arm64-apple-darwin21.2.0 |
2022-01-19 18:54:17 +0100 | <[itchyjunk]> | althought this makes me wonder how you would use the result of improvedMaximum for a function that wants type `a` as parameter and not `Just a` |
2022-01-19 18:54:26 +0100 | Henson | (~kvirc@107-179-133-201.cpe.teksavvy.com) (Ping timeout: 256 seconds) |
2022-01-19 18:55:04 +0100 | ksqsf | (~user@2001:da8:d800:611:d4b0:39ea:c0c9:ff22) (Ping timeout: 250 seconds) |
2022-01-19 18:55:06 +0100 | <Guest80> | I installed my GHC from brew, I believe |
2022-01-19 18:56:19 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:edf9:3833:cff9:92b3) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-19 18:56:19 +0100 | <Guest80> | from a bit of digging around it looks like there is a missing case in ghc/MachO.hs, in GHC, type 10 seems to be ARM64_RELOC_ADDEND |
2022-01-19 18:56:32 +0100 | <Guest80> | but I'm not really familiar with the compiler |
2022-01-19 18:58:13 +0100 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) (Ping timeout: 256 seconds) |
2022-01-19 18:58:46 +0100 | <fgaz> | johnjaye: if you want to see building progress at the module level _and_ disable parallelism you can build with -j1 |
2022-01-19 18:59:17 +0100 | neurocyte0917090 | (~neurocyte@IP-195080055024.dynamic.medianet-world.de) |
2022-01-19 18:59:17 +0100 | neurocyte0917090 | (~neurocyte@IP-195080055024.dynamic.medianet-world.de) (Changing host) |
2022-01-19 18:59:17 +0100 | neurocyte0917090 | (~neurocyte@user/neurocyte) |
2022-01-19 18:59:57 +0100 | burnsidesLlama | (~burnsides@dhcp168-042.wadham.ox.ac.uk) |
2022-01-19 19:01:19 +0100 | Guest5233 | (~Guest52@80-100-97-100.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2022-01-19 19:03:53 +0100 | johnjaye | (~pi@154.6.152.74) (Ping timeout: 256 seconds) |
2022-01-19 19:05:16 +0100 | <janus> | Guest80: i don't think many in here are super familiar with the compiler, you could try asking in #ghc regarding your patch |
2022-01-19 19:08:30 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
2022-01-19 19:08:32 +0100 | <Guest80> | janus: thanks, I'll give it a try |
2022-01-19 19:09:37 +0100 | fr33domlover | (~fr33@141.226.170.143) (Quit: fr33domlover) |
2022-01-19 19:10:08 +0100 | <supersven> | Guest80: You may want to try a newer version of GHC. AFAIK there were many changes on the AARCH support lately. |
2022-01-19 19:12:26 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-19 19:12:36 +0100 | <Guest80> | supersven: that would be great, I'll try |
2022-01-19 19:12:57 +0100 | Hildegunst | (~luc@80.248.12.109.rev.sfr.net) (Ping timeout: 256 seconds) |
2022-01-19 19:13:20 +0100 | ksqsf | (~user@2001:da8:d800:611:d4b0:39ea:c0c9:ff22) |
2022-01-19 19:13:20 +0100 | Henson | (~kvirc@107-179-133-201.cpe.teksavvy.com) |
2022-01-19 19:14:30 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-01-19 19:15:52 +0100 | Codaraxis_ | (~Codaraxis@user/codaraxis) (Ping timeout: 250 seconds) |
2022-01-19 19:15:57 +0100 | alp | (~alp@user/alp) |
2022-01-19 19:16:17 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds) |
2022-01-19 19:16:39 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-19 19:16:39 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-19 19:16:39 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-19 19:16:42 +0100 | <Guest80> | supersven: by newer version do you mean GHC version 9 or above? |
2022-01-19 19:17:20 +0100 | <geekosaur> | I would avoid 9.2.1: it has native (instead if LLVM) support but severe bugs were found in its code generation post-release |
2022-01-19 19:17:27 +0100 | <geekosaur> | 9.0.2 might work better |
2022-01-19 19:17:36 +0100 | <geekosaur> | *instead of |
2022-01-19 19:18:37 +0100 | ksqsf | (~user@2001:da8:d800:611:d4b0:39ea:c0c9:ff22) (Ping timeout: 240 seconds) |
2022-01-19 19:18:39 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-19 19:19:49 +0100 | <geekosaur> | there was a bit of a bobble with releases through that whole period so 9.0.2 is actually the most recent version of ghc. 9.2.2 is due later this month, I think |
2022-01-19 19:20:57 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-01-19 19:22:31 +0100 | random-jellyfish | (~random-je@user/random-jellyfish) |
2022-01-19 19:22:35 +0100 | <Guest80> | geekosaur: thanks, sorry for the newbie question but how do I install GHC 9.0.2 on an M1? I can't see binaries for M1, do I need to compile it from source? |
2022-01-19 19:23:38 +0100 | <geekosaur> | in general we use ghcup instead of brew or other platform repo to install ghc these days |
2022-01-19 19:24:07 +0100 | <geekosaur> | it's possible brew has a cask (I think that's the right term?) for it |
2022-01-19 19:24:14 +0100 | Akiva | (~Akiva@user/Akiva) |
2022-01-19 19:24:23 +0100 | <maerwald> | also make sure to install 9.2.1, because that's the only one with native codegen... the others require llvm and may cause linker bugs |
2022-01-19 19:24:44 +0100 | <geekosaur> | native codegen has sign extension bugs and produces bad code :( |
2022-01-19 19:24:49 +0100 | <maerwald> | GG |
2022-01-19 19:24:52 +0100 | <yushyin> | but also avoid 9.2.1 :) |
2022-01-19 19:24:58 +0100 | <maerwald> | ok, so don't install Haskell |
2022-01-19 19:25:26 +0100 | <EvanR_> | obviously ghc is shit and we should start writing a new compiler |
2022-01-19 19:25:32 +0100 | <geekosaur> | glwt |
2022-01-19 19:25:35 +0100 | <EvanR_> | lol |
2022-01-19 19:25:36 +0100 | <Guest80> | lol |
2022-01-19 19:26:03 +0100 | <geekosaur> | although sometimes I really wish jhc hadn't dropped off into the ether |
2022-01-19 19:27:13 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Ping timeout: 268 seconds) |
2022-01-19 19:28:38 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-01-19 19:28:49 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 256 seconds) |
2022-01-19 19:29:17 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 240 seconds) |
2022-01-19 19:29:52 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) |
2022-01-19 19:30:23 +0100 | <Guest80> | how do I specify GHC version on GHCup? |
2022-01-19 19:30:43 +0100 | <Guest80> | the command curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh. reinstalled 8.10.7 for me |
2022-01-19 19:30:58 +0100 | <maerwald> | Guest80: https://www.haskell.org/ghcup/guide/#basic-usage |
2022-01-19 19:31:31 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-19 19:31:39 +0100 | ksqsf | (~user@2001:da8:d800:611:5d60:36d8:624a:54af) |
2022-01-19 19:33:32 +0100 | jkaye | (~jkaye@2601:281:200:1958:cc69:95b3:52f2:6773) (Ping timeout: 240 seconds) |
2022-01-19 19:33:55 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Ping timeout: 256 seconds) |
2022-01-19 19:35:42 +0100 | fizzsegfaultbuzz | (~segfaultf@135-180-0-138.static.sonic.net) |
2022-01-19 19:35:54 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-01-19 19:36:14 +0100 | ksqsf | (~user@2001:da8:d800:611:5d60:36d8:624a:54af) (Ping timeout: 250 seconds) |
2022-01-19 19:36:25 +0100 | <fizzsegfaultbuzz> | so this isn't haskell per-se so feel free to tell me to buzz off, but i thought a programmer with more expertise might have a good answer to this question: |
2022-01-19 19:38:10 +0100 | ksqsf | (~user@2001:da8:d800:611:5d60:36d8:624a:54af) |
2022-01-19 19:38:27 +0100 | <fizzsegfaultbuzz> | i have a function which maps points onto points (2d points onto 2d points). if i start from a uniform distribution of 2d points and apply f iteratively, i get a "limit" distribution |
2022-01-19 19:38:31 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-01-19 19:38:52 +0100 | <fizzsegfaultbuzz> | my problem is that f samples extremely un-evenly from the region of the XY plane i am interested in |
2022-01-19 19:39:07 +0100 | jgeerds | (~jgeerds@55d4090e.access.ecotel.net) |
2022-01-19 19:39:42 +0100 | <EvanR_> | using floats? |
2022-01-19 19:40:05 +0100 | fef | (~thedawn@user/thedawn) |
2022-01-19 19:40:07 +0100 | <fizzsegfaultbuzz> | so i have X in [0,1] and Y in [0,1] and i want to know what the limit distribution of f looks like in those regions, although i only care about a fixed resolution for X an Y (think of pixelization,...) |
2022-01-19 19:40:33 +0100 | <fizzsegfaultbuzz> | my two dimensional points are floats, yes |
2022-01-19 19:40:59 +0100 | <EvanR_> | if you were at [1,2] x [1,2] uniform float would be a lot simpler xD |
2022-01-19 19:41:02 +0100 | <fizzsegfaultbuzz> | what happens is that f sends nearly all points to (0.5, 0.5) but once in a rare while they will land somewhere else |
2022-01-19 19:42:47 +0100 | xb0o2 | (~xb0o2@user/xb0o2) |
2022-01-19 19:47:07 +0100 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2022-01-19 19:47:31 +0100 | deadmarshal | (~deadmarsh@95.38.230.192) (Ping timeout: 256 seconds) |
2022-01-19 19:48:13 +0100 | <tomsmeding> | fizzsegfaultbuzz: wouldn't the limit distribution then be just [(0.5, 0.5)]? |
2022-01-19 19:48:23 +0100 | <tomsmeding> | oh wait no that's not true |
2022-01-19 19:48:26 +0100 | <Henson> | EvanR_: according to Criterion, I've been able to get a 10-15 times speed increase in my code by using a custom recursive function that uses a strict data type and completely avoids tuples and zipping/unzipping anywhere, as well as inlining one of the functions. |
2022-01-19 19:48:43 +0100 | <monochrom> | We don't know the actual f enough to tell. |
2022-01-19 19:48:44 +0100 | <tomsmeding> | fizzsegfaultbuzz: is f random? |
2022-01-19 19:48:46 +0100 | Guest80 | (~Guest80@host-95-245-231-154.retail.telecomitalia.it) (Quit: Client closed) |
2022-01-19 19:49:13 +0100 | <monochrom> | I also refuse to believe that a program actually iterates f for infinitely many times and actually hits the limit. |
2022-01-19 19:49:34 +0100 | <EvanR_> | Henson, by avoid tuples, do you mean the usual tuple type, or any form of tupling (strict tuples too) |
2022-01-19 19:49:37 +0100 | <monochrom> | There is still a difference between iterating 100 times and the limit. |
2022-01-19 19:49:50 +0100 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) |
2022-01-19 19:50:32 +0100 | <Henson> | EvanR_: any form of tupling. I needed to return 7 numbers from the function, so instead of a 7-tuple, I just made a new datatype with 7 strict Double fields in it. |
2022-01-19 19:51:03 +0100 | <monochrom> | Sounds like s/tupling/lazy tupling/ |
2022-01-19 19:51:17 +0100 | ksqsf | (~user@2001:da8:d800:611:5d60:36d8:624a:54af) (Ping timeout: 240 seconds) |
2022-01-19 19:51:23 +0100 | <EvanR_> | that's a 7 tuple |
2022-01-19 19:51:29 +0100 | <fizzsegfaultbuzz> | i was thinking of creating a table mapping the preimage to the image and then uniformly perturbing the preimage of points which map to locations i like |
2022-01-19 19:51:47 +0100 | <fizzsegfaultbuzz> | then i would iterate, updating that table |
2022-01-19 19:52:21 +0100 | <Henson> | EvanR_: ok, well, it's not using a (Double,Double,Double,Double,Double,Double,Double) |
2022-01-19 19:52:31 +0100 | <fizzsegfaultbuzz> | that would probably create a bit of a fixed error with respect to the limit distribution but that is probably ok |
2022-01-19 19:52:36 +0100 | <EvanR_> | yeah strict records for that kind of data is often a big win |
2022-01-19 19:52:52 +0100 | <EvanR_> | like data V2 a = V2 !a !a |
2022-01-19 19:53:03 +0100 | <EvanR_> | good for Int, Double, etc |
2022-01-19 19:53:21 +0100 | <Henson> | EvanR_: yes, like that |
2022-01-19 19:53:27 +0100 | <Henson> | monochrom: right, no more lazy tupling |
2022-01-19 19:53:52 +0100 | <EvanR_> | another way is to make sure the components of the lazy tuple are evaluated before constructing the tuple |
2022-01-19 19:54:08 +0100 | <EvanR_> | which might be a pain in the ass or not, hence these types |
2022-01-19 19:54:09 +0100 | <Henson> | EvanR_: like seq a $ seq b (a,b) |
2022-01-19 19:54:13 +0100 | <EvanR_> | yes |
2022-01-19 19:54:13 +0100 | <tomsmeding> | fizzsegfaultbuzz: so your function is [0,1]x[0,1] -> [0,1]x[0,1], and you want the distribution of lim_{n -> \infty} f^n((x, y)) if (x, y) is uniformly chosen from [0,1]x[0,1]? |
2022-01-19 19:54:22 +0100 | <EvanR_> | Henson, or bang patterns |
2022-01-19 19:54:39 +0100 | <Henson> | EvanR_: but bang patterns can only be used on the left hand side, correct? |
2022-01-19 19:54:50 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
2022-01-19 19:54:51 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection) |
2022-01-19 19:54:54 +0100 | <EvanR_> | yes |
2022-01-19 19:55:02 +0100 | <tomsmeding> | if so, if f sends most (as in, more than half or something) of the points to (0.5,0.5), wouldn't the limit distribution then not just be {f((0.5,0.5))} ? |
2022-01-19 19:55:02 +0100 | <EvanR_> | which is often a convenient place to put them |
2022-01-19 19:55:10 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
2022-01-19 19:55:11 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-19 19:55:22 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2022-01-19 19:55:30 +0100 | <fizzsegfaultbuzz> | tomsmeding: a bit of a correction there is that i initialize the distribution of points to be uniform |
2022-01-19 19:55:37 +0100 | <Henson> | EvanR_: I did try seqing the variables before putting them in to a lazy 7-tuple, and that made the code about 2 times faster. But using the strict data type made it 10-15 times faster. |
2022-01-19 19:55:38 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) (Remote host closed the connection) |
2022-01-19 19:55:40 +0100 | <tomsmeding> | fizzsegfaultbuzz: is f random or deterministic? |
2022-01-19 19:55:45 +0100 | <fizzsegfaultbuzz> | tomsmeding: and then iterative application of f leads to a fixed, complex, non-uniform distribution |
2022-01-19 19:55:48 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection) |
2022-01-19 19:55:56 +0100 | <fizzsegfaultbuzz> | f is fixed |
2022-01-19 19:56:00 +0100 | <fizzsegfaultbuzz> | no, sorry |
2022-01-19 19:56:03 +0100 | <fizzsegfaultbuzz> | f is stochastic |
2022-01-19 19:56:05 +0100 | <tomsmeding> | is f random or deterministic? :p |
2022-01-19 19:56:06 +0100 | <tomsmeding> | ah |
2022-01-19 19:56:07 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
2022-01-19 19:56:15 +0100 | <fizzsegfaultbuzz> | so there's a sort of a coinflip with each call to f |
2022-01-19 19:56:15 +0100 | Kaiepi | (~Kaiepi@156.34.47.253) |
2022-01-19 19:56:19 +0100 | <tomsmeding> | so f is a markov chain |
2022-01-19 19:56:58 +0100 | <EvanR_> | Henson, I bet there was another optimization where your strict 7 tuple was also UNPACKed, hence having the Doubles in the record instead of pointers to something in the record |
2022-01-19 19:57:41 +0100 | <Henson> | EvanR_: can you elaborate on that? I don't really understand. |
2022-01-19 19:57:53 +0100 | <tomsmeding> | fizzsegfaultbuzz: is f easily describable, you might be able to compute the limit distribution algebraically |
2022-01-19 19:59:18 +0100 | <tomsmeding> | fizzsegfaultbuzz: what do you mean when you say "what the limit distribution of f looks like in a particular region"? What the limit distribution looks like when you sample input points only from that region, or what that portion of the limit distribution looks like if you start with fully uniform inputs? |
2022-01-19 19:59:18 +0100 | <tomjagua1paw> | Henson: I would be very interested to know the performance if you put Strict around your tuple: https://hackage.haskell.org/package/strict-wrapper-0.0.0.0/docs/Data-Strict-Wrapper.html#v:Strict |
2022-01-19 19:59:21 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2022-01-19 19:59:38 +0100 | <EvanR_> | most values in haskell are boxed, meaning they are manipulated as a pointer to heap object, containing the value. A tree data type is made of a bunch of pointer to boxes |
2022-01-19 20:00:03 +0100 | <EvanR_> | a record or tuple is at best just a really flat tree |
2022-01-19 20:00:19 +0100 | <EvanR_> | unpacking a record field means the value is stored in the record object itself |
2022-01-19 20:01:22 +0100 | tomjagua1paw | tomjaguarpaw |
2022-01-19 20:01:50 +0100 | <EvanR_> | now the verb "unpack" makes no sense to me, coffee failing me |
2022-01-19 20:02:10 +0100 | <tomsmeding> | "do not pack inside a box" |
2022-01-19 20:02:27 +0100 | <monochrom> | yeah, analogous to "unbox". |
2022-01-19 20:02:53 +0100 | <monochrom> | Now, it is the name "Boxing Day" that makes no sense to me, why is it not "Unboxing Day"? >:) |
2022-01-19 20:02:54 +0100 | <tomjaguarpaw> | Reversing the packing that implicitly happened. Perhaps "nonpack" and "nonbox" would be better. |
2022-01-19 20:03:09 +0100 | vicfred | (~vicfred@user/vicfred) |
2022-01-19 20:03:31 +0100 | <tomsmeding> | monochrom: because the ones that pack the boxes are always late and still have to do it frantically on the unboxing day? |
2022-01-19 20:05:20 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2022-01-19 20:05:51 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-19 20:05:54 +0100 | johnjaye | (~pi@173.209.65.233) |
2022-01-19 20:06:17 +0100 | <monochrom> | {-# language Dec26 #-} = implies StrictData, and moreover, adds {-# UNPACK #-} wherever valid. >:) |
2022-01-19 20:06:44 +0100 | <tomsmeding> | isn't that gibbon |
2022-01-19 20:06:55 +0100 | <monochrom> | I don't know! |
2022-01-19 20:06:57 +0100 | yassernasc | (~yassernas@ec2-54-87-145-249.compute-1.amazonaws.com) |
2022-01-19 20:07:19 +0100 | <tomsmeding> | https://github.com/iu-parfunc/gibbon |
2022-01-19 20:07:26 +0100 | <tomsmeding> | read some papers but never tried |
2022-01-19 20:07:37 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9) |
2022-01-19 20:07:42 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
2022-01-19 20:07:55 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
2022-01-19 20:08:18 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-01-19 20:09:01 +0100 | darchitect | (~darchitec@2a00:23c6:3584:df00:8fb:65a6:c5ec:35ce) (Ping timeout: 240 seconds) |
2022-01-19 20:09:10 +0100 | <monochrom> | Interesting, but Dec26 does not optimize data layout order. |
2022-01-19 20:09:28 +0100 | zincy_ | (~zincy@host86-151-99-97.range86-151.btcentralplus.com) |
2022-01-19 20:09:28 +0100 | <tomsmeding> | not sure gibbon does either |
2022-01-19 20:09:52 +0100 | <tomsmeding> | but there is also parallel gibbon, which attemps to get a nice middle ground between serialising everything and still being able to process parts of a tree in parallel |
2022-01-19 20:10:00 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) |
2022-01-19 20:10:05 +0100 | <monochrom> | It sounds like one of the goals of gibbon. Although, "goal" also means work in progress. |
2022-01-19 20:10:23 +0100 | <tomsmeding> | ah, could be |
2022-01-19 20:10:37 +0100 | myShoggoth | (~myShoggot@97-120-67-120.ptld.qwest.net) (Ping timeout: 240 seconds) |
2022-01-19 20:11:19 +0100 | `2jt | (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) (Ping timeout: 256 seconds) |
2022-01-19 20:11:19 +0100 | random-jellyfish | (~random-je@user/random-jellyfish) (Ping timeout: 256 seconds) |
2022-01-19 20:11:24 +0100 | Hildegunst | (~luc@80.248.12.109.rev.sfr.net) |
2022-01-19 20:13:06 +0100 | <[itchyjunk]> | behold, i am monading https://bpa.st/ZHTQ |
2022-01-19 20:13:27 +0100 | <monochrom> | That's just functoring. |
2022-01-19 20:13:53 +0100 | <EvanR_> | just a functor wound |
2022-01-19 20:14:18 +0100 | <monochrom> | OK OK fine! "I'm Haskelling" can also mean doing just a little part of Haskell. |
2022-01-19 20:14:50 +0100 | <monochrom> | I'm humaning. |
2022-01-19 20:15:04 +0100 | <[itchyjunk]> | I am lifting a -> b to Maybe a -> Maybe b hence monading? |
2022-01-19 20:15:09 +0100 | <tomsmeding> | monochrom: is a cat, I always knew it |
2022-01-19 20:15:14 +0100 | <ephemient> | :t maybe Nothing . (Just .) -- pointless |
2022-01-19 20:15:15 +0100 | <lambdabot> | (a1 -> a2) -> Maybe a1 -> Maybe a2 |
2022-01-19 20:15:33 +0100 | <tomsmeding> | [itchyjunk]: that's what fmap does, and fmap is in the Functor typeclass |
2022-01-19 20:15:41 +0100 | <tomsmeding> | every Monad is a Functor, but a Functor does not make a Monad |
2022-01-19 20:15:50 +0100 | <monochrom> | Actually that is not entirely pointless. Behind it is the theorem that a lot of fmap's are catamorphisms. |
2022-01-19 20:16:51 +0100 | boxscape_ | (~boxscape_@p4ff0b9d5.dip0.t-ipconnect.de) |
2022-01-19 20:17:14 +0100 | <EvanR_> | [itchyjunk], lifting an (a -> b) to (f a -> f b) is decidedly functoring |
2022-01-19 20:17:14 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
2022-01-19 20:17:15 +0100 | <boxscape_> | Is there a way to have an export list that exports everything except for a single name (without explicitly listing everything else)? |
2022-01-19 20:17:34 +0100 | <tomsmeding> | why does everyone have _ today |
2022-01-19 20:17:42 +0100 | <boxscape_> | It's underscore day |
2022-01-19 20:18:14 +0100 | `2jt | (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) |
2022-01-19 20:18:17 +0100 | <tomsmeding> | boxscape_: no, but you can put all the stuff in an internal module, then have the public module be 'module Public (module Internal) where import Internal hiding (stuff)' |
2022-01-19 20:18:21 +0100 | fef | (~thedawn@user/thedawn) (Ping timeout: 276 seconds) |
2022-01-19 20:18:23 +0100 | <monochrom> | It's on the wishlists of many people. |
2022-01-19 20:18:26 +0100 | <boxscape_> | okay, thanks |
2022-01-19 20:18:32 +0100 | Hildegunst | (~luc@80.248.12.109.rev.sfr.net) (Quit: leaving) |
2022-01-19 20:19:00 +0100 | myShoggoth | (~myShoggot@97-120-67-120.ptld.qwest.net) |
2022-01-19 20:19:26 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-19 20:20:29 +0100 | Akiva | (~Akiva@user/Akiva) |
2022-01-19 20:23:37 +0100 | `2jt | (~jtomas@10.red-83-58-228.dynamicip.rima-tde.net) (Ping timeout: 240 seconds) |
2022-01-19 20:26:49 +0100 | simendsjo | (~user@84.211.91.241) |
2022-01-19 20:28:28 +0100 | <maerwald> | tomsmeding: that produces annoying haddock, doesn't it? |
2022-01-19 20:28:38 +0100 | <tomsmeding> | yeah it does |
2022-01-19 20:30:11 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-19 20:30:41 +0100 | o-90 | (~o-90@gateway/tor-sasl/o-90) |
2022-01-19 20:32:09 +0100 | <awpr> | `{-# OPTIONS_HADDOCK not-home #-}` on the internal module should help: https://haskell-haddock.readthedocs.io/en/latest/markup.html#module-attributes |
2022-01-19 20:36:47 +0100 | o-90 | (~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection) |
2022-01-19 20:36:58 +0100 | darchitect | (~darchitec@2a00:23c6:3584:df00:8fb:65a6:c5ec:35ce) |
2022-01-19 20:39:21 +0100 | <boxscape_> | ah, good to know |
2022-01-19 20:40:34 +0100 | Hildegunst | (~luc@80.248.12.109.rev.sfr.net) |
2022-01-19 20:41:09 +0100 | acidsys | (~LSD@2.lsd.systems) (Excess Flood) |
2022-01-19 20:41:49 +0100 | acidsys | (~LSD@2.lsd.systems) |
2022-01-19 20:42:06 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) |
2022-01-19 20:42:06 +0100 | Hildegunst | (~luc@80.248.12.109.rev.sfr.net) (Client Quit) |
2022-01-19 20:42:27 +0100 | darchitect | (~darchitec@2a00:23c6:3584:df00:8fb:65a6:c5ec:35ce) (Ping timeout: 268 seconds) |
2022-01-19 20:42:31 +0100 | Codaraxis_ | (~Codaraxis@user/codaraxis) |
2022-01-19 20:42:50 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-01-19 20:42:53 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-01-19 20:43:27 +0100 | vicfred | (~vicfred@user/vicfred) (Quit: Leaving) |
2022-01-19 20:43:45 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-01-19 20:44:09 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-01-19 20:44:42 +0100 | Codaraxis__ | (~Codaraxis@user/codaraxis) |
2022-01-19 20:45:26 +0100 | jkaye | (~jkaye@2601:281:200:1958:837d:401b:4a0:3b8f) |
2022-01-19 20:45:40 +0100 | ubert | (~Thunderbi@p200300ecdf0994202d2de89ac733253b.dip0.t-ipconnect.de) (Remote host closed the connection) |
2022-01-19 20:46:38 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds) |
2022-01-19 20:46:39 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Remote host closed the connection) |
2022-01-19 20:46:58 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) |
2022-01-19 20:47:38 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) |
2022-01-19 20:47:46 +0100 | Codaraxis_ | (~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds) |
2022-01-19 20:49:50 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-19 20:51:33 +0100 | ProfSimm | (~ProfSimm@176-12-60-137.pon.spectrumnet.bg) (Ping timeout: 256 seconds) |
2022-01-19 20:52:12 +0100 | Morrow | (~Morrow@ool-1826f675.dyn.optonline.net) |
2022-01-19 20:52:17 +0100 | yauhsien | (~yauhsien@61-231-62-246.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
2022-01-19 20:53:07 +0100 | Guest80 | (~Guest80@host-95-245-231-154.retail.telecomitalia.it) |
2022-01-19 20:53:33 +0100 | alp | (~alp@user/alp) (Ping timeout: 268 seconds) |
2022-01-19 20:55:54 +0100 | Hildegunst | (~luc@80.248.12.109.rev.sfr.net) |
2022-01-19 20:58:37 +0100 | Morrow | (~Morrow@ool-1826f675.dyn.optonline.net) (Ping timeout: 240 seconds) |
2022-01-19 21:00:34 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-01-19 21:03:35 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9) (Remote host closed the connection) |
2022-01-19 21:04:33 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-19 21:05:02 +0100 | juhp | (~juhp@128.106.188.82) (Ping timeout: 240 seconds) |
2022-01-19 21:05:42 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9) |
2022-01-19 21:07:48 +0100 | juhp | (~juhp@128.106.188.82) |
2022-01-19 21:10:18 +0100 | darchitect | (~darchitec@2a00:23c6:3584:df00:8fb:65a6:c5ec:35ce) |
2022-01-19 21:10:40 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2022-01-19 21:11:11 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2022-01-19 21:11:57 +0100 | myShoggoth | (~myShoggot@97-120-67-120.ptld.qwest.net) (Ping timeout: 240 seconds) |
2022-01-19 21:12:08 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-01-19 21:14:11 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-19 21:15:50 +0100 | ardell | (~ardell@user/ardell) (Quit: Konversation terminated!) |
2022-01-19 21:16:13 +0100 | Hildegunst | (~luc@80.248.12.109.rev.sfr.net) (Ping timeout: 240 seconds) |
2022-01-19 21:16:37 +0100 | Pickchea | (~private@user/pickchea) |
2022-01-19 21:17:10 +0100 | kuribas | (~user@ptr-25vy0i81lhv78yduvdy.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2022-01-19 21:17:36 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 268 seconds) |
2022-01-19 21:18:23 +0100 | Hildegunst | (~luc@80.248.12.109.rev.sfr.net) |
2022-01-19 21:19:17 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2022-01-19 21:23:22 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-01-19 21:23:35 +0100 | briandaed | (~briandaed@185.234.208.208.r.toneticgroup.pl) |
2022-01-19 21:24:33 +0100 | Hildegunst | (~luc@80.248.12.109.rev.sfr.net) (Quit: leaving) |
2022-01-19 21:24:48 +0100 | <fizzsegfaultbuzz> | tomsmeding: i think that as long as the starting distribution isn't "strange" the limit distribution is always the same, although that's an informal statement |
2022-01-19 21:24:55 +0100 | <fizzsegfaultbuzz> | tomsmeding: f is very nonlinear |
2022-01-19 21:26:41 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2022-01-19 21:28:27 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-01-19 21:28:52 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-01-19 21:29:15 +0100 | yassernasc | (~yassernas@ec2-54-87-145-249.compute-1.amazonaws.com) (Remote host closed the connection) |
2022-01-19 21:29:33 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-01-19 21:30:33 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-19 21:35:15 +0100 | you | (~ShmoSeph@173-167-220-193-ip-static.hfc.comcastbusiness.net) |
2022-01-19 21:36:55 +0100 | johnw | (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) |
2022-01-19 21:37:25 +0100 | <tomsmeding> | fizzsegfaultbuzz: the limit distribution doesn't change if f lets every point go to every other point with nonzero probability after some number of steps |
2022-01-19 21:44:58 +0100 | <tomsmeding> | also this is not a buddhabrot, is ot? |
2022-01-19 21:45:00 +0100 | <tomsmeding> | *it |
2022-01-19 21:47:00 +0100 | Guest80 | (~Guest80@host-95-245-231-154.retail.telecomitalia.it) (Quit: Client closed) |
2022-01-19 21:47:18 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:edf9:3833:cff9:92b3) |
2022-01-19 21:48:30 +0100 | you | (~ShmoSeph@173-167-220-193-ip-static.hfc.comcastbusiness.net) (Remote host closed the connection) |
2022-01-19 21:50:29 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4) |
2022-01-19 22:00:18 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) |
2022-01-19 22:04:03 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9) (Remote host closed the connection) |
2022-01-19 22:04:04 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-9841-fdb7-086b-ec04.res6.spectrum.com) (Remote host closed the connection) |
2022-01-19 22:04:05 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-01-19 22:04:05 +0100 | simendsjo | (~user@84.211.91.241) (Ping timeout: 256 seconds) |
2022-01-19 22:06:12 +0100 | TonyStone | (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) |
2022-01-19 22:09:38 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-01-19 22:09:43 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-19 22:12:23 +0100 | vicfred | (~vicfred@user/vicfred) |
2022-01-19 22:12:57 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds) |
2022-01-19 22:14:17 +0100 | _ht | (~quassel@82-168-34-160.fixed.kpn.net) (Remote host closed the connection) |
2022-01-19 22:17:49 +0100 | LukeHoersten | (~LukeHoers@user/lukehoersten) |
2022-01-19 22:19:56 +0100 | alp | (~alp@user/alp) |
2022-01-19 22:20:44 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-01-19 22:21:09 +0100 | spaceseller | (~spacesell@31.147.205.13) |
2022-01-19 22:21:37 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-19 22:23:04 +0100 | LukeHoersten | (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-01-19 22:25:34 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-01-19 22:25:34 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-01-19 22:25:34 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-01-19 22:32:20 +0100 | zincy_ | (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection) |
2022-01-19 22:33:51 +0100 | <EvanR_> | what's going on here |
2022-01-19 22:35:09 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-01-19 22:35:53 +0100 | <EvanR_> | morphisms in a category support this operation, f b c -> f a b -> f a c. What about f a (f b c) -> f a b -> f a c. What's that |
2022-01-19 22:37:21 +0100 | <awpr> | that looks kinda like a variant on the eval morphism of a cartesian closed category? |
2022-01-19 22:37:42 +0100 | <EvanR_> | CCC... of course |
2022-01-19 22:38:40 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-19 22:39:17 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-01-19 22:40:05 +0100 | <awpr> | in a bit more detail: "closed" means you have an internal "exponential" object representing morphisms between two objects: by putting `f b c` inside `f a _`, you're asserting one of the objects of the category is the morphisms between `b` and `c` |
2022-01-19 22:41:28 +0100 | <EvanR_> | seems like mixing levels in a gnarly way |
2022-01-19 22:41:52 +0100 | briandaed | (~briandaed@185.234.208.208.r.toneticgroup.pl) (Quit: Lost terminal) |
2022-01-19 22:42:12 +0100 | <awpr> | yeah, that presentation is restricting the objects of the category to be Type |
2022-01-19 22:42:46 +0100 | <awpr> | because it uses the same `f` for the Hask-level functions and the exponential object |
2022-01-19 22:43:22 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds) |
2022-01-19 22:43:40 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:d001:2aa2:4908:56e6) |
2022-01-19 22:43:41 +0100 | <awpr> | if it's cartesian closed, there's also a cartesian product that can support `forall a. f a (a, a)` and `forall a b c d. f a b -> f c d -> f (a, c) (b, d)`, and an eval morphism `forall a b. f (a, f a b) b` |
2022-01-19 22:43:58 +0100 | myShoggoth | (~myShoggot@97-120-67-120.ptld.qwest.net) |
2022-01-19 22:44:42 +0100 | <awpr> | if you plug all those together with the given `f a (f b c)` and `f a b`, you can get to `f a c` |
2022-01-19 22:45:12 +0100 | <EvanR_> | I started talking about f a (f b c) -> f a b -> f a c, or the flip of that. Are products necessary for this to make sense, or are they implied, or |
2022-01-19 22:45:12 +0100 | spaceseller | (~spacesell@31.147.205.13) (Quit: Leaving) |
2022-01-19 22:45:28 +0100 | <EvanR_> | like where did the cartesian come from |
2022-01-19 22:45:46 +0100 | <EvanR_> | or is it just a possible thing to add |
2022-01-19 22:47:49 +0100 | <awpr> | I had to invoke the product and diagonal morphism `f a (a, a)` to be able to "use the `a` twice" (both in the input of `f a (f b c)` and in the input of `f a b`). categories in general can't automatically do that, so they need some extra structure. I'm not sure whether there's a "smaller" way to gain that power instead of CCCs |
2022-01-19 22:48:27 +0100 | <EvanR_> | it's funny because a product seems much more mundane than an exponential object, but it's critical |
2022-01-19 22:48:43 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-01-19 22:48:59 +0100 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2022-01-19 22:49:24 +0100 | <awpr> | yeah, I was just looking at the definition of a closed category, and it looks like it doesn't even involve an apply morphism, just an internal composition `f (f a b) |
2022-01-19 22:49:54 +0100 | <EvanR_> | I think you got cut off |
2022-01-19 22:50:20 +0100 | <awpr> | `f (f b c) (f (f a b) (f a c))` (still abusing `f` as both hom-set and internal-hom) |
2022-01-19 22:50:39 +0100 | <EvanR_> | oh that's confusing |
2022-01-19 22:51:03 +0100 | <awpr> | [for some reason I made enter be adjacent to backspace on my keyboard layout...) |
2022-01-19 22:51:31 +0100 | <EvanR_> | OK placed next to ABORT |
2022-01-19 22:51:46 +0100 | <EvanR_> | nice UI/UX principle |
2022-01-19 22:53:01 +0100 | <awpr> | try plugging `->` in for `f`: `(->) ((->) b c) ((->) ((->) a b) ((->) a c))`, or in infix form, `(b -> c) -> (a -> b) -> (a -> c)` |
2022-01-19 22:53:42 +0100 | <EvanR_> | there are two kinds of f going on right? |
2022-01-19 22:53:53 +0100 | <geekosaur> | I noticed the other one you had earlier looked suspiciously like an Arrow |
2022-01-19 22:55:12 +0100 | <awpr> | in general, yeah, there would be two different ones. but in `Set` the hom-set and the internal hom are exactly the same, so if we're specializing to Haskell functions they both collapse onto functions anyway |
2022-01-19 22:55:13 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-19 22:55:16 +0100 | <EvanR_> | :t app |
2022-01-19 22:55:17 +0100 | <lambdabot> | ArrowApply a => a (a b c, b) c |
2022-01-19 22:55:54 +0100 | <EvanR_> | awpr, haskell as a specialization of set which itself a confusing specialization is confusing xD |
2022-01-19 22:55:58 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-01-19 22:56:50 +0100 | <EvanR_> | speaking of which, I guess we assumed we're talking about morphisms which are haskell values of a type implementing Category |
2022-01-19 22:57:42 +0100 | <EvanR_> | this automatically brings in Hask somehow? |
2022-01-19 22:57:59 +0100 | <EvanR_> | if so, is there a sane way to work with other kinds of categories |
2022-01-19 22:58:28 +0100 | <int-e> | Heh, that type is nearly unreadable. |
2022-01-19 22:58:44 +0100 | <awpr> | yeah, I think that's a reasonable assumption as long as we're pretending Hask = Set. ignoring enriched category theory, the morphisms are always a set, and things like functors' actions on morphisms are functions |
2022-01-19 22:59:12 +0100 | <int-e> | app :: ArrowApply (~>) => (b ~> c, b) ~> c |
2022-01-19 22:59:24 +0100 | <EvanR_> | ah |
2022-01-19 22:59:59 +0100 | <EvanR_> | ok yeah, in that type there, b and c are haskell types |
2022-01-19 23:00:24 +0100 | <EvanR_> | what if you wanted them to be restricted to some special kind of types |
2022-01-19 23:00:27 +0100 | <awpr> | the place we're artificially limiting things is by identifying the objects with Type, by reusing the same `f` in both levels |
2022-01-19 23:00:32 +0100 | <awpr> | yeah, that |
2022-01-19 23:01:00 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-01-19 23:01:10 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2022-01-19 23:02:01 +0100 | <EvanR_> | *b and c are any arbitrary haskell types (I guess of compatible kind) |
2022-01-19 23:03:07 +0100 | <awpr> | because we have `something :: f _ _`, then `f :: k1 -> k1 -> Type`, and because we have `f _ (f _ _)`, `f :: k2 -> k2 -> k2`, which forces everything to be `Type`. that's where it becomes important to distinguish the hom-set `f _ _` from the internal hom object which we've also been calling `f _ _` |
2022-01-19 23:03:17 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2022-01-19 23:04:57 +0100 | <awpr> | so an extra step towards real CT would be `eval :: f (_Product a (_Exp a b)) b` etc., with some form of type family or fundeps or something to tell you what `_Product` and `_Exp` should be |
2022-01-19 23:06:22 +0100 | wombat875 | (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Quit: WeeChat 2.2-dev) |
2022-01-19 23:06:45 +0100 | shapr | (~user@2601:7c0:c37c:46d0:d31:791c:8c24:e54b) (Remote host closed the connection) |
2022-01-19 23:06:49 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) |
2022-01-19 23:06:58 +0100 | shapr | (~user@2601:7c0:c37c:46d0:d31:791c:8c24:e54b) |
2022-01-19 23:09:49 +0100 | kaph | (~kaph@net-2-47-208-144.cust.vodafonedsl.it) (Ping timeout: 256 seconds) |
2022-01-19 23:12:56 +0100 | <EvanR_> | so an _Exp is better than just implementing an apply function? |
2022-01-19 23:13:29 +0100 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2022-01-19 23:13:32 +0100 | Megant_ | (megant@user/megant) (Ping timeout: 268 seconds) |
2022-01-19 23:14:39 +0100 | Megant | (megant@user/megant) |
2022-01-19 23:15:27 +0100 | <awpr> | having the exponential object be distinct from the Haskell-value-level representation of morphisms is what lets you use something other than Type for the objects: since Haskell values' types are of kind Type, making the exponential object the same as the type of morphisms forces the objects to be Types |
2022-01-19 23:15:50 +0100 | <EvanR_> | oh |
2022-01-19 23:18:00 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
2022-01-19 23:18:41 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-01-19 23:27:29 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
2022-01-19 23:30:47 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-01-19 23:32:19 +0100 | fendor | (~fendor@77.119.169.94.wireless.dyn.drei.com) (Remote host closed the connection) |
2022-01-19 23:32:26 +0100 | shapr | (~user@2601:7c0:c37c:46d0:d31:791c:8c24:e54b) (Remote host closed the connection) |
2022-01-19 23:32:39 +0100 | shapr | (~user@2601:7c0:c37c:46d0:d31:791c:8c24:e54b) |
2022-01-19 23:35:46 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-01-19 23:37:01 +0100 | Sgeo_ | (~Sgeo@user/sgeo) (Ping timeout: 256 seconds) |
2022-01-19 23:38:47 +0100 | coot | (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot) |
2022-01-19 23:39:37 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2022-01-19 23:40:02 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-01-19 23:41:39 +0100 | Topsi | (~Tobias@dyndsl-095-033-018-085.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
2022-01-19 23:42:32 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9) |
2022-01-19 23:42:34 +0100 | <monochrom> | Hahaha, Oleg wrote a Scheme syntax-rule for the CPS transform, and commented "the standard CPS transformation written in Latin rather than in Greek" |
2022-01-19 23:42:44 +0100 | <monochrom> | https://okmij.org/ftp/Scheme/callcc-calc-page.html |
2022-01-19 23:43:39 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection) |
2022-01-19 23:43:44 +0100 | burnsidesLlama | (~burnsides@dhcp168-042.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-01-19 23:44:22 +0100 | chomwitt | (~chomwitt@2a02:587:dc0b:200:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds) |
2022-01-19 23:44:26 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
2022-01-19 23:44:43 +0100 | Sgeo_ | (~Sgeo@user/sgeo) |
2022-01-19 23:46:57 +0100 | Sgeo | (~Sgeo@user/sgeo) (Ping timeout: 240 seconds) |
2022-01-19 23:52:51 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2022-01-19 23:54:35 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dd9f:9c7:a4ae:c7f9) (Remote host closed the connection) |
2022-01-19 23:56:20 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |