2023-02-14 00:01:57 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-02-14 00:16:58 +0100 | rlj | (~rlj@194-218-34-180.customer.telia.com) (Quit: Client closed) |
2023-02-14 00:17:45 +0100 | freeside | (~mengwong@103.252.202.170) (Ping timeout: 255 seconds) |
2023-02-14 00:19:51 +0100 | tremon | (~tremon@83-85-213-108.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in) |
2023-02-14 00:20:25 +0100 | bilegeek | (~bilegeek@2600:1008:b09e:5b5c:fb38:650f:1536:6b2d) (Remote host closed the connection) |
2023-02-14 00:20:55 +0100 | bilegeek | (~bilegeek@2600:1008:b09e:5b5c:fb38:650f:1536:6b2d) |
2023-02-14 00:23:41 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2023-02-14 00:24:05 +0100 | mvk | (~mvk@2607:fea8:5caa:ac00::fa57) |
2023-02-14 00:24:08 +0100 | <justsomeguy> | I found a good quote! "A LISP programmer knows the value of everything, but the cost of nothing." ~ Alan Perlis |
2023-02-14 00:24:30 +0100 | jespada | (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 255 seconds) |
2023-02-14 00:24:43 +0100 | mvk | (~mvk@2607:fea8:5caa:ac00::fa57) (Client Quit) |
2023-02-14 00:29:41 +0100 | merijn | (~merijn@86.86.29.250) |
2023-02-14 00:30:40 +0100 | freeside | (~mengwong@103.252.202.170) |
2023-02-14 00:32:49 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2023-02-14 00:34:19 +0100 | <monochrom> | I think it fits us more than them. |
2023-02-14 00:35:09 +0100 | jespada | (~jespada@77.98.179.16) |
2023-02-14 00:35:18 +0100 | <monochrom> | Then again there was a time Haskell didn't exist, so Lisp had no contender. |
2023-02-14 00:35:25 +0100 | freeside | (~mengwong@103.252.202.170) (Ping timeout: 260 seconds) |
2023-02-14 00:35:29 +0100 | <hpc> | a rust programmer borrows everything and never throws out the garbage |
2023-02-14 00:38:12 +0100 | <hpc> | but yeah, lisp was the original "you don't know the underlying representation" language |
2023-02-14 00:38:29 +0100 | <hpc> | you "knew", but it didn't have to be that way in every implementation |
2023-02-14 00:48:09 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2023-02-14 00:58:01 +0100 | freeside | (~mengwong@103.252.202.170) |
2023-02-14 01:01:47 +0100 | forell | (~forell@user/forell) (Quit: ZNC - https://znc.in) |
2023-02-14 01:02:02 +0100 | forell | (~forell@user/forell) |
2023-02-14 01:02:30 +0100 | notzmv | (~zmv@user/notzmv) |
2023-02-14 01:02:50 +0100 | freeside | (~mengwong@103.252.202.170) (Ping timeout: 260 seconds) |
2023-02-14 01:02:55 +0100 | merijn | (~merijn@86.86.29.250) (Ping timeout: 252 seconds) |
2023-02-14 01:13:50 +0100 | acidjnk | (~acidjnk@p200300d6e715c4786dabe743f9921989.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-02-14 01:15:31 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2023-02-14 01:15:48 +0100 | TheCoffeMaker_ | (~TheCoffeM@200.126.137.246) (Ping timeout: 255 seconds) |
2023-02-14 01:18:13 +0100 | Alex_test_ | (~al_test@178.34.160.79) |
2023-02-14 01:19:34 +0100 | freeside | (~mengwong@103.252.202.170) |
2023-02-14 01:19:47 +0100 | Alex_test | (~al_test@178.34.160.79) (Ping timeout: 252 seconds) |
2023-02-14 01:23:49 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2023-02-14 01:24:36 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2023-02-14 01:27:53 +0100 | jmorris | (uid537181@id-537181.uxbridge.irccloud.com) |
2023-02-14 01:32:15 +0100 | gurkenglas | (~gurkengla@46.114.176.170) (Ping timeout: 252 seconds) |
2023-02-14 01:33:34 +0100 | waleee | (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 252 seconds) |
2023-02-14 01:34:33 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) |
2023-02-14 01:47:10 +0100 | gpncarl_ | (~gpncarl@210.12.195.6) |
2023-02-14 01:48:13 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) |
2023-02-14 01:48:49 +0100 | bitmapper | (uid464869@2a03:5180:f:2::7:17e5) |
2023-02-14 01:49:35 +0100 | gpncarl | (~gpncarl@222.249.231.3) (Ping timeout: 248 seconds) |
2023-02-14 01:55:18 +0100 | zaquest | (~notzaques@5.130.79.72) |
2023-02-14 01:55:38 +0100 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-02-14 01:56:31 +0100 | energizer_ | energizer |
2023-02-14 02:00:25 +0100 | bilegeek | (~bilegeek@2600:1008:b09e:5b5c:fb38:650f:1536:6b2d) (Remote host closed the connection) |
2023-02-14 02:00:51 +0100 | bilegeek | (~bilegeek@2600:1008:b09e:5b5c:fb38:650f:1536:6b2d) |
2023-02-14 02:00:57 +0100 | AlexZenon_2 | (~alzenon@178.34.160.79) |
2023-02-14 02:01:59 +0100 | biberu\ | (~biberu@user/biberu) |
2023-02-14 02:02:01 +0100 | accord | (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2023-02-14 02:02:23 +0100 | AlexZenon | (~alzenon@178.34.160.79) (Ping timeout: 248 seconds) |
2023-02-14 02:03:02 +0100 | wroathe | (~wroathe@207.153.38.140) |
2023-02-14 02:03:02 +0100 | wroathe | (~wroathe@207.153.38.140) (Changing host) |
2023-02-14 02:03:02 +0100 | wroathe | (~wroathe@user/wroathe) |
2023-02-14 02:05:36 +0100 | biberu | (~biberu@user/biberu) (Ping timeout: 248 seconds) |
2023-02-14 02:05:36 +0100 | biberu\ | biberu |
2023-02-14 02:08:14 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
2023-02-14 02:10:50 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-02-14 02:11:45 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
2023-02-14 02:16:57 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-02-14 02:19:55 +0100 | freeside | (~mengwong@103.252.202.170) (Ping timeout: 252 seconds) |
2023-02-14 02:24:55 +0100 | bilegeek | (~bilegeek@2600:1008:b09e:5b5c:fb38:650f:1536:6b2d) (Remote host closed the connection) |
2023-02-14 02:25:32 +0100 | bilegeek | (~bilegeek@2600:1008:b09e:5b5c:fb38:650f:1536:6b2d) |
2023-02-14 02:26:10 +0100 | freeside | (~mengwong@103.252.202.170) |
2023-02-14 02:26:11 +0100 | king_gs | (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) |
2023-02-14 02:27:28 +0100 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 252 seconds) |
2023-02-14 02:30:30 +0100 | freeside | (~mengwong@103.252.202.170) (Ping timeout: 255 seconds) |
2023-02-14 02:37:39 +0100 | lackita` | (~user@73.114.250.252) |
2023-02-14 02:39:15 +0100 | <lackita`> | I'm having trouble with typeclasses, could use some help understanding what's going wrong with this code: |
2023-02-14 02:39:35 +0100 | <lackita`> | oh, sorry, don't use IRC much, one sec and I'll share the actual code |
2023-02-14 02:40:03 +0100 | <lackita`> | class KeyStore s where |
2023-02-14 02:40:03 +0100 | <lackita`> | lookup :: s -> k -> Maybe v |
2023-02-14 02:40:03 +0100 | <lackita`> | instance KeyStore (Map.Map k v) where |
2023-02-14 02:40:06 +0100 | <lackita`> | lookup store key = Map.lookup key store |
2023-02-14 02:40:16 +0100 | <lackita`> | Here's the error: |
2023-02-14 02:40:23 +0100 | <lackita`> | test/KeyStoreSpec.hs:7:37: error: |
2023-02-14 02:40:23 +0100 | <lackita`> | • Couldn't match type ‘k1’ with ‘k’ |
2023-02-14 02:40:26 +0100 | <lackita`> | Expected: Map k1 v1 |
2023-02-14 02:40:29 +0100 | <lackita`> | Actual: Map k v |
2023-02-14 02:40:29 +0100 | <lackita`> | ‘k1’ is a rigid type variable bound by |
2023-02-14 02:40:32 +0100 | <lackita`> | the type signature for: |
2023-02-14 02:40:36 +0100 | <lackita`> | KeyStore.lookup :: forall k1 v1. Map k v -> k1 -> Maybe v1 |
2023-02-14 02:40:38 +0100 | <davean> | Please use a pastebin |
2023-02-14 02:40:41 +0100 | <lackita`> | at test/KeyStoreSpec.hs:7:3-8 |
2023-02-14 02:40:44 +0100 | <lackita`> | ‘k’ is a rigid type variable bound by |
2023-02-14 02:40:44 +0100 | <lackita`> | the instance declaration |
2023-02-14 02:40:47 +0100 | <lackita`> | at test/KeyStoreSpec.hs:6:10-31 |
2023-02-14 02:40:51 +0100 | <lackita`> | • In the second argument of ‘Map.lookup’, namely ‘store’ |
2023-02-14 02:40:52 +0100 | <mauke> | ... and it's scrolled off |
2023-02-14 02:40:54 +0100 | <lackita`> | In the expression: Map.lookup key store |
2023-02-14 02:40:57 +0100 | <lackita`> | In an equation for ‘KeyStore.lookup’: |
2023-02-14 02:41:01 +0100 | <lackita`> | KeyStore.lookup store key = Map.lookup key store |
2023-02-14 02:41:04 +0100 | <lackita`> | • Relevant bindings include |
2023-02-14 02:41:07 +0100 | <lackita`> | key :: k1 (bound at test/KeyStoreSpec.hs:7:16) |
2023-02-14 02:41:11 +0100 | <lackita`> | store :: Map k v (bound at test/KeyStoreSpec.hs:7:10) |
2023-02-14 02:41:13 +0100 | freeside | (~mengwong@103.252.202.170) |
2023-02-14 02:41:14 +0100 | <lackita`> | lookup :: Map k v -> k1 -> Maybe v1 |
2023-02-14 02:41:14 +0100 | <lackita`> | (bound at test/KeyStoreSpec.hs:7:3) |
2023-02-14 02:41:17 +0100 | <lackita`> | | |
2023-02-14 02:41:21 +0100 | <lackita`> | 7 | lookup store key = Map.lookup key store |
2023-02-14 02:41:24 +0100 | <lackita`> | | ^^^^^ |
2023-02-14 02:41:33 +0100 | <lackita`> | oh, sorry, I'll do that now |
2023-02-14 02:41:39 +0100 | <davean> | lackita`: you have nothing specifying what type 'k' is or how it relates to type 's' |
2023-02-14 02:41:48 +0100 | <davean> | It was at the very top |
2023-02-14 02:42:36 +0100 | <davean> | You can use Functional Dependencies to fix this, multiple parameter type classes, or associated types. |
2023-02-14 02:42:47 +0100 | thongpv | (~thongpv87@2402:9d80:3f1:9812:89bf:b07c:d355:c620) |
2023-02-14 02:43:02 +0100 | <mauke> | the type signature for lookup says I should be able to use it with any key type k, independent of the map type s |
2023-02-14 02:44:34 +0100 | <lackita`> | Here's the pastebin, btw: https://pastebin.com/BFWhG5wT |
2023-02-14 02:44:41 +0100 | <davean> | The same is true of type 'v' BTW |
2023-02-14 02:45:07 +0100 | <davean> | You have provided no connection between them, as the error message spells out. |
2023-02-14 02:45:43 +0100 | <lackita`> | Yeah, that was my general understanding, but I'm struggline to figure out how to communicate that relationship. |
2023-02-14 02:45:55 +0100 | <davean> | I gave you 3 options above |
2023-02-14 02:46:22 +0100 | <lackita`> | oh, hold on, too much scrolling |
2023-02-14 02:46:26 +0100 | <mauke> | isn't that really just 2 options? |
2023-02-14 02:46:41 +0100 | <mauke> | fundeps require multi-param type classes |
2023-02-14 02:46:46 +0100 | <geekosaur> | yes, either way it's an MPTC, with either fundeps or associated types |
2023-02-14 02:46:53 +0100 | <davean> | mauke: You don't have to use fundeps with MPTC |
2023-02-14 02:47:07 +0100 | <mauke> | ok, but that would be annoying to use |
2023-02-14 02:47:31 +0100 | <davean> | I was covering the full options |
2023-02-14 02:47:42 +0100 | <davean> | There are cases where there is no direct dependency |
2023-02-14 02:49:45 +0100 | <davean> | In this case there is a strong dependency but in others one of several choices could have to be infered from a set of options |
2023-02-14 02:51:20 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds) |
2023-02-14 02:51:47 +0100 | ddellacosta | (~ddellacos@143.244.47.81) (Quit: WeeChat 3.8) |
2023-02-14 02:53:20 +0100 | ddellacosta | (~ddellacos@143.244.47.81) |
2023-02-14 02:56:34 +0100 | <lackita`> | I see, so I guess I wasn't trying to require a tight relationship between the k and v of the instance and the k and v of the class. I guess the types would end up lining up, but I was considering them arbitrary type variables. |
2023-02-14 02:56:44 +0100 | sammelweis | (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
2023-02-14 03:01:25 +0100 | bilegeek | (~bilegeek@2600:1008:b09e:5b5c:fb38:650f:1536:6b2d) (Remote host closed the connection) |
2023-02-14 03:01:51 +0100 | bilegeek | (~bilegeek@2600:1008:b09e:5b5c:fb38:650f:1536:6b2d) |
2023-02-14 03:02:05 +0100 | lackita` | (~user@73.114.250.252) (Ping timeout: 252 seconds) |
2023-02-14 03:05:56 +0100 | <mauke> | the class doesn't have k and v |
2023-02-14 03:06:16 +0100 | <mauke> | with your definition, every use of lookup gets to choose its own k and v |
2023-02-14 03:06:22 +0100 | <monochrom> | "any k" is ambiguous and you are precisely suffering from the wrong interpretation. |
2023-02-14 03:06:42 +0100 | <monochrom> | Your problem can be simplified and explained without type classes. |
2023-02-14 03:06:56 +0100 | <monochrom> | You are attempting "f :: k -> Int". |
2023-02-14 03:07:20 +0100 | <monochrom> | You think it means the implementer of f (that's you) gets to choose what k means. |
2023-02-14 03:07:46 +0100 | <monochrom> | But no. The user (that's me) chooses what k means and I can choose a different thing at a different call site. |
2023-02-14 03:08:17 +0100 | sidy | (~sidy@user/sidy) (Remote host closed the connection) |
2023-02-14 03:08:18 +0100 | <monochrom> | At one site I'm entitled to make it "f :: Bool -> Int". At another I'm entitled "f :: String -> Int". What are you going to do? |
2023-02-14 03:08:37 +0100 | sidy | (~sidy@user/sidy) |
2023-02-14 03:08:44 +0100 | <davean> | monochrom: f = const 0 |
2023-02-14 03:09:09 +0100 | <mauke> | parametricity rears its ugly head again |
2023-02-14 03:09:22 +0100 | <davean> | mauke: you mean its lovely head |
2023-02-14 03:09:39 +0100 | <monochrom> | How about: polymorphic head haha |
2023-02-14 03:10:17 +0100 | <monochrom> | @quote monochrom polymorphic |
2023-02-14 03:10:17 +0100 | <lambdabot> | monochrom says: All pointless debates can be settled by going polymorphic. |
2023-02-14 03:13:30 +0100 | lackita | (~lackita@73.114.250.252) (Quit: Quit) |
2023-02-14 03:13:30 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 260 seconds) |
2023-02-14 03:15:18 +0100 | thongpv87 | (~thongpv87@2402:9d80:3f7:eb1f:5e9:5cfd:6906:7397) |
2023-02-14 03:17:35 +0100 | thongpv | (~thongpv87@2402:9d80:3f1:9812:89bf:b07c:d355:c620) (Ping timeout: 260 seconds) |
2023-02-14 03:19:41 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) (Ping timeout: 252 seconds) |
2023-02-14 03:20:12 +0100 | lackita | (~user@73.114.250.252) |
2023-02-14 03:20:48 +0100 | <lackita> | Thank you for the explanation before, sorry I dropped off in the middle, I think I better understand things now. |
2023-02-14 03:21:11 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) |
2023-02-14 03:22:11 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
2023-02-14 03:22:30 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
2023-02-14 03:24:38 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) |
2023-02-14 03:26:54 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.8) |
2023-02-14 03:27:08 +0100 | king_gs | (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Remote host closed the connection) |
2023-02-14 03:27:23 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) |
2023-02-14 03:27:25 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
2023-02-14 03:27:28 +0100 | king_gs | (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) |
2023-02-14 03:27:29 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2023-02-14 03:28:47 +0100 | Lord_of_Life_ | Lord_of_Life |
2023-02-14 03:29:03 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) |
2023-02-14 03:29:50 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
2023-02-14 03:31:44 +0100 | mncheckm | (~mncheck@193.224.205.254) (Ping timeout: 246 seconds) |
2023-02-14 03:33:24 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) (Ping timeout: 255 seconds) |
2023-02-14 03:33:34 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6) |
2023-02-14 03:33:42 +0100 | <davean> | lackita: as a rule of thumb, ask "Why must this be right?" not "why could this be right?" |
2023-02-14 03:34:11 +0100 | <lackita> | got it, I'll try to keep that in mind |
2023-02-14 03:34:47 +0100 | <lackita> | still trying to make the mental shift, thank you for the advice |
2023-02-14 03:35:39 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds) |
2023-02-14 03:36:11 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 252 seconds) |
2023-02-14 03:37:40 +0100 | jmorris | (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2023-02-14 03:40:21 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-02-14 03:40:36 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-02-14 03:57:27 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2023-02-14 03:57:54 +0100 | Guest | (~Guest@2409:4073:2e88:d92f:e409:ddc0:97e9:70a2) |
2023-02-14 03:58:41 +0100 | gmg | (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
2023-02-14 03:59:19 +0100 | lackita | (~user@73.114.250.252) (Ping timeout: 252 seconds) |
2023-02-14 03:59:36 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2023-02-14 03:59:43 +0100 | PotentialUser-23 | (~Potential@2600:8800:7b00:2aa0:829e:a723:57f0:e3b8) (Quit: Client closed) |
2023-02-14 03:59:49 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) |
2023-02-14 04:03:38 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2023-02-14 04:05:44 +0100 | jero98772 | (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection) |
2023-02-14 04:09:23 +0100 | Guest | (~Guest@2409:4073:2e88:d92f:e409:ddc0:97e9:70a2) (Ping timeout: 260 seconds) |
2023-02-14 04:11:15 +0100 | xff0x | (~xff0x@2405:6580:b080:900:9474:b05a:3851:1ef1) (Ping timeout: 260 seconds) |
2023-02-14 04:19:18 +0100 | king_gs | (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Ping timeout: 255 seconds) |
2023-02-14 04:27:00 +0100 | thongpv87 | (~thongpv87@2402:9d80:3f7:eb1f:5e9:5cfd:6906:7397) (Ping timeout: 260 seconds) |
2023-02-14 04:31:10 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) |
2023-02-14 04:35:27 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) (Ping timeout: 248 seconds) |
2023-02-14 04:42:53 +0100 | rettahcay | (~kaushikv@c-24-20-37-193.hsd1.or.comcast.net) |
2023-02-14 04:44:58 +0100 | Axman6 | (~Axman6@user/axman6) (Remote host closed the connection) |
2023-02-14 04:46:34 +0100 | Axman6 | (~Axman6@user/axman6) |
2023-02-14 04:52:22 +0100 | razetime | (~Thunderbi@43.254.111.18) |
2023-02-14 04:55:23 +0100 | td_ | (~td@83.135.9.23) (Ping timeout: 252 seconds) |
2023-02-14 04:57:10 +0100 | td_ | (~td@i5387090E.versanet.de) |
2023-02-14 04:59:12 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2023-02-14 04:59:12 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2023-02-14 04:59:12 +0100 | finn_elija | FinnElija |
2023-02-14 05:00:02 +0100 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2023-02-14 05:10:27 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
2023-02-14 05:10:45 +0100 | thegeekinside | (~thegeekin@189.180.83.186) (Ping timeout: 260 seconds) |
2023-02-14 05:12:15 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) |
2023-02-14 05:12:15 +0100 | bilegeek | (~bilegeek@2600:1008:b09e:5b5c:fb38:650f:1536:6b2d) (Quit: Leaving) |
2023-02-14 05:16:05 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
2023-02-14 05:16:52 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) (Ping timeout: 252 seconds) |
2023-02-14 05:19:24 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2023-02-14 05:26:42 +0100 | Xeroine_ | (~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in) |
2023-02-14 05:28:05 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) |
2023-02-14 05:31:43 +0100 | Xeroine_ | (~Xeroine@user/xeroine) |
2023-02-14 05:37:11 +0100 | mbuf | (~Shakthi@49.204.117.35) |
2023-02-14 05:38:23 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Ping timeout: 260 seconds) |
2023-02-14 05:43:25 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2023-02-14 05:48:03 +0100 | Axman6 | (~Axman6@user/axman6) (Ping timeout: 240 seconds) |
2023-02-14 05:56:15 +0100 | Vajb | (~Vajb@2001:999:404:9516:d621:6cbe:c71e:5686) (Read error: Connection reset by peer) |
2023-02-14 05:56:42 +0100 | Vajb | (~Vajb@88.195.165.27) |
2023-02-14 05:59:45 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
2023-02-14 06:06:25 +0100 | Vajb | (~Vajb@88.195.165.27) (Read error: Connection reset by peer) |
2023-02-14 06:08:53 +0100 | king_gs | (~Thunderbi@187.201.41.239) |
2023-02-14 06:09:10 +0100 | Axman6 | (~Axman6@user/axman6) |
2023-02-14 06:09:47 +0100 | Vajb | (~Vajb@2001:999:404:9516:d621:6cbe:c71e:5686) |
2023-02-14 06:21:05 +0100 | phma | (~phma@host-67-44-208-29.hnremote.net) (Read error: Connection reset by peer) |
2023-02-14 06:22:04 +0100 | phma | (~phma@2001:5b0:210d:608:3734:a17:3698:d342) |
2023-02-14 06:22:30 +0100 | razetime | (~Thunderbi@43.254.111.18) (Ping timeout: 260 seconds) |
2023-02-14 06:28:20 +0100 | king_gs | (~Thunderbi@187.201.41.239) (Read error: Connection reset by peer) |
2023-02-14 06:28:34 +0100 | king_gs | (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) |
2023-02-14 06:29:31 +0100 | rettahcay | (~kaushikv@c-24-20-37-193.hsd1.or.comcast.net) () |
2023-02-14 06:30:27 +0100 | burnsidesLlama | (~burnsides@119.247.164.140) |
2023-02-14 06:31:15 +0100 | razetime | (~Thunderbi@43.254.111.18) |
2023-02-14 06:34:33 +0100 | burnsidesLlama | (~burnsides@119.247.164.140) (Remote host closed the connection) |
2023-02-14 06:36:21 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) |
2023-02-14 06:37:45 +0100 | razetime | (~Thunderbi@43.254.111.18) (Remote host closed the connection) |
2023-02-14 06:39:55 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Remote host closed the connection) |
2023-02-14 06:40:58 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2023-02-14 06:44:48 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) (Remote host closed the connection) |
2023-02-14 06:46:32 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2023-02-14 06:59:01 +0100 | <albet70> | https://paste.tomsmeding.com/Ept5Rb5u this version of quickSort is very good usage on list comprehesion, but how about its speed? |
2023-02-14 07:00:30 +0100 | <albet70> | like p = s[2..] where s (x: xs) = s [i <- xs, mod i x /= 0] |
2023-02-14 07:01:25 +0100 | <int-e> | It's not great, even in the best case. |
2023-02-14 07:01:55 +0100 | freeside | (~mengwong@103.252.202.170) (Ping timeout: 252 seconds) |
2023-02-14 07:02:13 +0100 | ravamrt | (~ravamrt@112.134.194.82) |
2023-02-14 07:02:13 +0100 | <albet70> | https://hackage.haskell.org/package/base-4.17.0.0/docs/src/Data.OldList.html#sort this version is best? |
2023-02-14 07:02:47 +0100 | <int-e> | For lists? It has been tuned a lot to be fast, afaik it's the best we have. |
2023-02-14 07:03:35 +0100 | thegeekinside | (~thegeekin@189.180.97.223) |
2023-02-14 07:03:41 +0100 | <albet70> | the list comprehension version is more easy to read |
2023-02-14 07:04:23 +0100 | <albet70> | its "let's assume there's a middle value called x, and we compare other values with x" |
2023-02-14 07:05:02 +0100 | <albet70> | and we actually don't know what x is, but we can use it, is that amazing |
2023-02-14 07:05:07 +0100 | <albet70> | in list comprehension |
2023-02-14 07:06:38 +0100 | <int-e> | But in the worst case, one of the recursive calls will get an empty list and the other one will get a list that has one element less than the original one, resulting in quadratic runtime instead of O(n log(n)). |
2023-02-14 07:07:09 +0100 | <int-e> | And it's library code, you don't really have to read it. |
2023-02-14 07:11:37 +0100 | thongpv87 | (~thongpv87@2402:9d80:3f7:eb1f:fd16:bff4:dc8f:c8d1) |
2023-02-14 07:14:11 +0100 | trev | (~trev@user/trev) |
2023-02-14 07:14:43 +0100 | thegeekinside | (~thegeekin@189.180.97.223) (Ping timeout: 252 seconds) |
2023-02-14 07:14:59 +0100 | falafel | (~falafel@172.58.187.198) |
2023-02-14 07:15:19 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) |
2023-02-14 07:16:47 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.8) |
2023-02-14 07:19:44 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) (Ping timeout: 248 seconds) |
2023-02-14 07:25:49 +0100 | <albet70> | is list comprehension equal to filter or fmap? |
2023-02-14 07:28:03 +0100 | freeside | (~mengwong@202.161.55.11) |
2023-02-14 07:29:50 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2023-02-14 07:31:35 +0100 | <int-e> | @undo [c | a <- [1..3], odd a, b <- [1..3], let c = a + b] |
2023-02-14 07:31:35 +0100 | <lambdabot> | concatMap (\ a -> if odd a then concatMap (\ b -> let { c = a + b} in [c]) [1 .. 3] else []) [1 .. 3] |
2023-02-14 07:32:14 +0100 | <int-e> | Oh, no filter? Interesting, I expected the guard to become a filter. |
2023-02-14 07:32:50 +0100 | <int-e> | @undo should follow what the report specifies; ghc probably does things slightly differently. |
2023-02-14 07:42:47 +0100 | opticblast | (~Thunderbi@172.58.80.43) (Ping timeout: 264 seconds) |
2023-02-14 07:56:41 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) |
2023-02-14 07:57:03 +0100 | thegeekinside | (~thegeekin@189.180.97.223) |
2023-02-14 07:57:32 +0100 | thegeekinside | (~thegeekin@189.180.97.223) (Remote host closed the connection) |
2023-02-14 07:58:19 +0100 | <Clinton[m]> | If I have something like the following:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/09924ec0371c2773daef544c8a3c69fb2328…>) |
2023-02-14 07:59:54 +0100 | mjacob | (~mjacob@adrastea.uberspace.de) |
2023-02-14 08:01:08 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
2023-02-14 08:03:28 +0100 | <mjacob> | i tried to define a function that returns itself: "let f x = f". but it fails with "Couldn't match expected type ‘t’ with actual type ‘p0 -> t’". what’s the problem? i can think of three things: 1) a function returning itself does not make sense at all 2) such function is not representable with haskell’s type system 3) i made a mistake in the definition |
2023-02-14 08:04:56 +0100 | shapr | (~user@net-5-88-238-17.cust.vodafonedsl.it) |
2023-02-14 08:05:19 +0100 | Inst__ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
2023-02-14 08:07:12 +0100 | king_gs | (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Ping timeout: 248 seconds) |
2023-02-14 08:08:06 +0100 | thegeekinside | (~thegeekin@189.180.97.223) |
2023-02-14 08:08:06 +0100 | <int-e> | mjacob: If a is the type of x, and b is the type of the right-hand side of f, then f has type a -> b. But you're returning f, so this only works if b = a -> b. But solving that would make b's type infinite. That's your error in a nutshell, except that the error uses p0 for a and t for b. |
2023-02-14 08:08:36 +0100 | Inst_ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Ping timeout: 252 seconds) |
2023-02-14 08:09:50 +0100 | <mjacob> | int-e: are "infinite types" non-sensical or does haskell just not happen to implement it? |
2023-02-14 08:10:00 +0100 | <mjacob> | is there something like "tying the knot" for types? |
2023-02-14 08:10:09 +0100 | <int-e> | If you actually want to do such things, you can wrap the result in a newtype: newtype F a = F (a -> F a); let f x = F f |
2023-02-14 08:10:57 +0100 | <int-e> | (whoops, the `let` is only correct when typing that as separate lines in a ghci context) |
2023-02-14 08:11:59 +0100 | <int-e> | note that F a is isomorphic to a -> F a, a -> a -> F a, so in the limit that's the infinite a -> a -> a -> ... |
2023-02-14 08:12:45 +0100 | <Maxdamantus> | Presumably for completeness you'd want `f = F (\x -> f)` |
2023-02-14 08:13:04 +0100 | <int-e> | what's the difference? |
2023-02-14 08:14:27 +0100 | <Maxdamantus> | Your one doesn't return `f` |
2023-02-14 08:15:17 +0100 | <int-e> | Ah right. |
2023-02-14 08:15:47 +0100 | cheater_ | (~Username@user/cheater) |
2023-02-14 08:15:53 +0100 | <int-e> | I'm kind of blind to that because I'm just ignoring the `F` wrapper newtype completely when reading it. |
2023-02-14 08:16:34 +0100 | <Maxdamantus> | and as for why Haskell doesn't allow infinite types, I suspect it's not really to do with being hard to implement, but more to do with reducing the chance of errors. |
2023-02-14 08:17:06 +0100 | <Maxdamantus> | since infinite types are relatively likely to be a sign of something illogical. |
2023-02-14 08:17:41 +0100 | michalz | (~michalz@185.246.204.107) |
2023-02-14 08:18:01 +0100 | <int-e> | I suspect they would actually cause a rather big mess in the type checker. |
2023-02-14 08:18:53 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2023-02-14 08:19:02 +0100 | cheater_ | cheater |
2023-02-14 08:20:33 +0100 | <int-e> | For starters, while unification of finite tree-like graphs with loops works relatively easily, it has to interact with type functions too. |
2023-02-14 08:21:32 +0100 | <int-e> | Comparing two such graphs to check whether they're the same infinte type is not entirely trivial; it's definitely not handled by `deriving Eq` anymore. |
2023-02-14 08:21:39 +0100 | int-e | shrugs. |
2023-02-14 08:22:26 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-02-14 08:22:30 +0100 | <int-e> | Maxdamantus: Not insurmountable. The fact that this is usually a programming error (as you mentioned) weighs more heavily. |
2023-02-14 08:22:51 +0100 | <int-e> | I don't know what happens to this story when you mix in higher rank types. |
2023-02-14 08:23:01 +0100 | <int-e> | I probably don't want to know either :) |
2023-02-14 08:25:41 +0100 | <Maxdamantus> | https://mail.haskell.org/pipermail/haskell-cafe/2011-February/089492.html |
2023-02-14 08:26:18 +0100 | <Maxdamantus> | Yeah, so this basically alludes to how in the LC, everything is a function. |
2023-02-14 08:26:49 +0100 | <Maxdamantus> | it would be pretty useless to make a LC type system that just typed every function as `f = (a -> f)` |
2023-02-14 08:27:28 +0100 | <Maxdamantus> | or rather, `f = (f -> f)` |
2023-02-14 08:30:28 +0100 | thegeekinside | (~thegeekin@189.180.97.223) (Ping timeout: 252 seconds) |
2023-02-14 08:30:28 +0100 | falafel | (~falafel@172.58.187.198) (Ping timeout: 252 seconds) |
2023-02-14 08:33:32 +0100 | <int-e> | Yeah, newtype L = Abs { app :: L -> L } would be a really cool type for the untyped lamdba calculus except that it makes it fiendishly difficult to get any information out. |
2023-02-14 08:33:49 +0100 | kenran | (~user@user/kenran) |
2023-02-14 08:37:12 +0100 | Guest7260 | (~Guest72@165.57.80.205) |
2023-02-14 08:37:26 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:6d5d:8b8e:2d4b:5bae) |
2023-02-14 08:37:29 +0100 | <int-e> | "fiendishly difficult" -- you can do stuff with unsafePerformIO and exceptions. |
2023-02-14 08:44:52 +0100 | king_gs | (~Thunderbi@187.201.41.239) |
2023-02-14 08:51:12 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 255 seconds) |
2023-02-14 08:52:22 +0100 | mncheck | (~mncheck@193.224.205.254) |
2023-02-14 08:52:24 +0100 | mncheck | (~mncheck@193.224.205.254) (Remote host closed the connection) |
2023-02-14 08:53:58 +0100 | mncheckm | (~mncheck@193.224.205.254) |
2023-02-14 08:57:48 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) |
2023-02-14 08:58:49 +0100 | Inst_ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
2023-02-14 09:01:54 +0100 | Inst__ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Ping timeout: 255 seconds) |
2023-02-14 09:02:19 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) (Ping timeout: 260 seconds) |
2023-02-14 09:03:04 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2023-02-14 09:04:52 +0100 | phma | (~phma@2001:5b0:210d:608:3734:a17:3698:d342) (Ping timeout: 252 seconds) |
2023-02-14 09:05:01 +0100 | phma_ | (~phma@host-67-44-208-68.hnremote.net) |
2023-02-14 09:06:43 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
2023-02-14 09:06:55 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) |
2023-02-14 09:10:08 +0100 | king_gs | (~Thunderbi@187.201.41.239) (Read error: Connection reset by peer) |
2023-02-14 09:10:12 +0100 | king_gs1 | (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) |
2023-02-14 09:11:47 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
2023-02-14 09:12:20 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
2023-02-14 09:12:30 +0100 | king_gs1 | king_gs |
2023-02-14 09:14:33 +0100 | chele | (~chele@user/chele) |
2023-02-14 09:15:29 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2023-02-14 09:17:53 +0100 | Inst__ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) |
2023-02-14 09:17:55 +0100 | zeenk | (~zeenk@2a02:2f04:a214:1e00::7fe) |
2023-02-14 09:21:15 +0100 | Inst_ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Ping timeout: 255 seconds) |
2023-02-14 09:23:48 +0100 | nschoe | (~q@141.101.51.197) |
2023-02-14 09:24:12 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-02-14 09:28:08 +0100 | ft | (~ft@p3e9bc443.dip0.t-ipconnect.de) (Quit: leaving) |
2023-02-14 09:29:19 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds) |
2023-02-14 09:29:19 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-02-14 09:32:59 +0100 | acidjnk | (~acidjnk@p200300d6e715c4925d8ff2b2fdd73d05.dip0.t-ipconnect.de) |
2023-02-14 09:37:42 +0100 | MajorBiscuit | (~MajorBisc@2001:1c00:2408:a400:67e:5371:52a7:9b9a) |
2023-02-14 09:38:02 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) |
2023-02-14 09:39:36 +0100 | lottaquestions_ | (~nick@2607:fa49:503e:7100:97f3:c391:158c:f98a) (Remote host closed the connection) |
2023-02-14 09:40:01 +0100 | lottaquestions_ | (~nick@2607:fa49:503e:7100:ab:1d1a:a3a6:1b51) |
2023-02-14 09:43:05 +0100 | kuribas | (~user@ptr-17d51ep3y07q376bohf.18120a2.ip6.access.telenet.be) |
2023-02-14 09:43:07 +0100 | <jackdk> | https://hackage.haskell.org/package/acme-smuggler |
2023-02-14 09:44:17 +0100 | BasLaa | (~BasLaa@84-28-141-28.cable.dynamic.v4.ziggo.nl) |
2023-02-14 09:44:36 +0100 | <[exa]> | noooooooooooooo |
2023-02-14 09:45:15 +0100 | <dminuoso_> | Downloads: 1590 total |
2023-02-14 09:45:18 +0100 | <dminuoso_> | This has me worried a little. |
2023-02-14 09:45:31 +0100 | <merijn> | dminuoso_: I mean, loads of package have high downloads from crawlers |
2023-02-14 09:46:26 +0100 | <mauke> | ooh, neat |
2023-02-14 09:46:40 +0100 | tomsmeding | saw the Dynamic coming, not the exceptions |
2023-02-14 09:47:00 +0100 | <tomsmeding> | that's clever |
2023-02-14 09:47:32 +0100 | <mauke> | the values are all bottom |
2023-02-14 09:47:46 +0100 | <tomsmeding> | yeah |
2023-02-14 09:47:53 +0100 | <tomsmeding> | sad though |
2023-02-14 09:48:04 +0100 | <tomsmeding> | would've been nice to be able to 'show' that it's indeed "just" a unit |
2023-02-14 09:49:40 +0100 | cods | (~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 252 seconds) |
2023-02-14 09:51:10 +0100 | BasLaa | (~BasLaa@84-28-141-28.cable.dynamic.v4.ziggo.nl) (Quit: Client closed) |
2023-02-14 09:51:21 +0100 | cods | (~fred@82-65-232-44.subs.proxad.net) |
2023-02-14 09:55:05 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-02-14 09:58:35 +0100 | Inst__ | (~Inst@2601:6c4:4081:54f0:d621:5cdd:9051:c240) (Ping timeout: 256 seconds) |
2023-02-14 09:59:34 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) (Remote host closed the connection) |
2023-02-14 09:59:37 +0100 | cfricke | (~cfricke@user/cfricke) |
2023-02-14 10:04:23 +0100 | <Clinton[m]> | Lets say I have the following:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/e0144bb5fd2d4469761cc1d74fcb26c97b35…>) |
2023-02-14 10:07:46 +0100 | dsal | (sid13060@id-13060.lymington.irccloud.com) (Ping timeout: 252 seconds) |
2023-02-14 10:07:50 +0100 | <Clinton[m]> | * Lets say I have the following:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/384f0b3c7ac3c334192cf2e2514a0c26fc3b…>) |
2023-02-14 10:08:03 +0100 | yandere | (sid467876@id-467876.ilkley.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:08:03 +0100 | edwardk | (sid47016@haskell/developer/edwardk) (Ping timeout: 255 seconds) |
2023-02-14 10:08:03 +0100 | jakesyl____ | (sid56879@id-56879.hampstead.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:08:03 +0100 | alinab | (sid468903@id-468903.helmsley.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:08:14 +0100 | yandere | (sid467876@id-467876.ilkley.irccloud.com) |
2023-02-14 10:08:14 +0100 | xacktm | (~xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com) |
2023-02-14 10:08:30 +0100 | lechner | (~lechner@debian/lechner) (Ping timeout: 255 seconds) |
2023-02-14 10:08:30 +0100 | pjlsergeant__ | (sid143467@id-143467.hampstead.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:08:30 +0100 | hongminhee | (sid295@id-295.tinside.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:08:30 +0100 | lightandlight | (sid135476@id-135476.helmsley.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:08:30 +0100 | grfn | (sid449115@id-449115.helmsley.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:08:57 +0100 | azathough | (uid589374@user/azathough) (Ping timeout: 255 seconds) |
2023-02-14 10:08:57 +0100 | scav | (sid309693@user/scav) (Ping timeout: 255 seconds) |
2023-02-14 10:08:57 +0100 | dmj` | (sid72307@id-72307.hampstead.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:08:57 +0100 | PotatoGim | (sid99505@id-99505.lymington.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:09:21 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-02-14 10:09:24 +0100 | eruditass | (uid248673@id-248673.uxbridge.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:09:24 +0100 | megeve | (uid523379@id-523379.hampstead.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:09:24 +0100 | idnar | (sid12240@debian/mithrandi) (Ping timeout: 255 seconds) |
2023-02-14 10:09:24 +0100 | glowcoil | (sid3405@id-3405.tinside.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:09:24 +0100 | wallymathieu | (sid533252@id-533252.uxbridge.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:09:32 +0100 | dsal | (sid13060@id-13060.lymington.irccloud.com) |
2023-02-14 10:09:51 +0100 | cyphase | (~cyphase@user/cyphase) (Ping timeout: 255 seconds) |
2023-02-14 10:09:51 +0100 | gmc_ | (sid58314@id-58314.ilkley.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:09:51 +0100 | Guest585 | (~mike@user/feetwind) (Ping timeout: 255 seconds) |
2023-02-14 10:09:51 +0100 | jmct | (sid160793@id-160793.tinside.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 10:09:59 +0100 | urdh | (~urdh@user/urdh) (Ping timeout: 260 seconds) |
2023-02-14 10:10:27 +0100 | megeve | (sid523379@id-523379.hampstead.irccloud.com) |
2023-02-14 10:10:28 +0100 | azathough | (uid589374@user/azathough) |
2023-02-14 10:10:28 +0100 | pjlsergeant__ | (sid143467@id-143467.hampstead.irccloud.com) |
2023-02-14 10:10:30 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-02-14 10:10:30 +0100 | hongminhee | (sid295@id-295.tinside.irccloud.com) |
2023-02-14 10:10:33 +0100 | gmc_ | (sid58314@id-58314.ilkley.irccloud.com) |
2023-02-14 10:10:44 +0100 | cyphase | (~cyphase@user/cyphase) |
2023-02-14 10:11:05 +0100 | eruditass | (uid248673@id-248673.uxbridge.irccloud.com) |
2023-02-14 10:11:12 +0100 | trev | (~trev@user/trev) |
2023-02-14 10:12:13 +0100 | xacktm | (~xacktm@user/xacktm) |
2023-02-14 10:12:24 +0100 | grfn | (sid449115@id-449115.helmsley.irccloud.com) |
2023-02-14 10:12:24 +0100 | scav | (sid309693@user/scav) |
2023-02-14 10:12:25 +0100 | idnar | (sid12240@debian/mithrandi) |
2023-02-14 10:12:26 +0100 | edwardk | (sid47016@haskell/developer/edwardk) |
2023-02-14 10:12:26 +0100 | wallymathieu | (sid533252@id-533252.uxbridge.irccloud.com) |
2023-02-14 10:12:27 +0100 | glowcoil | (sid3405@id-3405.tinside.irccloud.com) |
2023-02-14 10:12:27 +0100 | alinab | (sid468903@id-468903.helmsley.irccloud.com) |
2023-02-14 10:12:28 +0100 | lightandlight | (sid135476@id-135476.helmsley.irccloud.com) |
2023-02-14 10:12:28 +0100 | jmct | (sid160793@id-160793.tinside.irccloud.com) |
2023-02-14 10:12:38 +0100 | PotatoGim | (sid99505@id-99505.lymington.irccloud.com) |
2023-02-14 10:12:44 +0100 | jakesyl____ | (sid56879@id-56879.hampstead.irccloud.com) |
2023-02-14 10:12:50 +0100 | dmj` | (sid72307@id-72307.hampstead.irccloud.com) |
2023-02-14 10:13:51 +0100 | mastarija | (~mastarija@2a05:4f46:e03:6000:4d71:cd5a:a7fb:2ef7) |
2023-02-14 10:17:52 +0100 | CiaoSen | (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2023-02-14 10:22:22 +0100 | Guest585 | (~mike@user/feetwind) |
2023-02-14 10:30:53 +0100 | cheater | (~Username@user/cheater) (Read error: Connection timed out) |
2023-02-14 10:32:22 +0100 | cheater | (~Username@user/cheater) |
2023-02-14 10:33:07 +0100 | gpncarl_ | (~gpncarl@210.12.195.6) (Ping timeout: 252 seconds) |
2023-02-14 10:33:26 +0100 | gpncarl_ | (~gpncarl@210.12.195.6) |
2023-02-14 10:37:03 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-02-14 10:39:01 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2023-02-14 10:40:47 +0100 | jespada | (~jespada@77.98.179.16) (Ping timeout: 252 seconds) |
2023-02-14 10:41:21 +0100 | jespada | (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
2023-02-14 10:49:08 +0100 | shapr` | (~user@net-5-88-238-17.cust.vodafonedsl.it) |
2023-02-14 10:50:48 +0100 | shapr | (~user@net-5-88-238-17.cust.vodafonedsl.it) (Ping timeout: 255 seconds) |
2023-02-14 10:58:04 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-02-14 11:00:03 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) |
2023-02-14 11:04:45 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) (Ping timeout: 255 seconds) |
2023-02-14 11:05:25 +0100 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 260 seconds) |
2023-02-14 11:06:31 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-02-14 11:17:26 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
2023-02-14 11:21:22 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-02-14 11:24:22 +0100 | shapr` | shapr |
2023-02-14 11:29:11 +0100 | mmhat | (~mmh@p200300f1c72b42b0ee086bfffe095315.dip0.t-ipconnect.de) |
2023-02-14 11:29:36 +0100 | mmhat | (~mmh@p200300f1c72b42b0ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit) |
2023-02-14 11:30:34 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
2023-02-14 11:52:06 +0100 | freeside | (~mengwong@202.161.55.11) (Ping timeout: 255 seconds) |
2023-02-14 11:55:40 +0100 | xff0x | (~xff0x@2405:6580:b080:900:a328:3e4d:f447:d561) |
2023-02-14 11:59:16 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2023-02-14 12:01:41 +0100 | acidjnk | (~acidjnk@p200300d6e715c4925d8ff2b2fdd73d05.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-02-14 12:04:38 +0100 | king_gs | (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Ping timeout: 265 seconds) |
2023-02-14 12:06:11 +0100 | mechap | (~mechap@user/mechap) (Ping timeout: 264 seconds) |
2023-02-14 12:08:04 +0100 | mechap | (~mechap@user/mechap) |
2023-02-14 12:10:24 +0100 | __monty__ | (~toonn@user/toonn) |
2023-02-14 12:10:28 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 252 seconds) |
2023-02-14 12:12:43 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-02-14 12:15:23 +0100 | mechap | (~mechap@user/mechap) (Ping timeout: 255 seconds) |
2023-02-14 12:16:14 +0100 | accord | (uid568320@id-568320.hampstead.irccloud.com) |
2023-02-14 12:17:24 +0100 | mechap | (~mechap@user/mechap) |
2023-02-14 12:18:07 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) |
2023-02-14 12:20:38 +0100 | jespada_ | (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
2023-02-14 12:20:43 +0100 | lechner | (~lechner@debian/lechner) |
2023-02-14 12:20:43 +0100 | jespada | (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 248 seconds) |
2023-02-14 12:25:45 +0100 | gpncarl_ | (~gpncarl@210.12.195.6) (Ping timeout: 255 seconds) |
2023-02-14 12:28:49 +0100 | patrl | (~patrl@user/patrl) |
2023-02-14 12:29:07 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2023-02-14 12:36:16 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) |
2023-02-14 12:36:25 +0100 | ubert1 | (~Thunderbi@2a02:8109:abc0:6434:fdd9:182:a444:ad44) |
2023-02-14 12:36:42 +0100 | Inst__ | (~Inst@2601:6c4:4081:54f0:ca9:cf1a:975a:ad95) |
2023-02-14 12:48:29 +0100 | acidjnk | (~acidjnk@p200300d6e715c4924c46451fa3694d1b.dip0.t-ipconnect.de) |
2023-02-14 12:48:50 +0100 | haritzondo | (~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk) (Changing host) |
2023-02-14 12:48:50 +0100 | haritzondo | (~hrtz@user/haritz) |
2023-02-14 12:48:54 +0100 | haritzondo | haritz |
2023-02-14 12:50:31 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
2023-02-14 12:54:57 +0100 | dcoutts_ | (~duncan@host86-167-90-212.range86-167.btcentralplus.com) |
2023-02-14 12:57:32 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-02-14 13:01:18 +0100 | patrl | (~patrl@user/patrl) (Remote host closed the connection) |
2023-02-14 13:03:15 +0100 | ravamrt | (~ravamrt@112.134.194.82) (Ping timeout: 260 seconds) |
2023-02-14 13:07:49 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2023-02-14 13:08:55 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) (Remote host closed the connection) |
2023-02-14 13:09:07 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) |
2023-02-14 13:17:31 +0100 | gpncarl_ | (~gpncarl@210.12.195.6) |
2023-02-14 13:22:27 +0100 | gpncarl_ | (~gpncarl@210.12.195.6) (Ping timeout: 255 seconds) |
2023-02-14 13:29:07 +0100 | lyle | (~lyle@104.246.145.237) |
2023-02-14 13:32:05 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) (Remote host closed the connection) |
2023-02-14 13:32:29 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) |
2023-02-14 13:36:16 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) (Remote host closed the connection) |
2023-02-14 13:40:32 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-02-14 13:47:12 +0100 | dcoutts_ | (~duncan@host86-167-90-212.range86-167.btcentralplus.com) (Ping timeout: 255 seconds) |
2023-02-14 13:49:27 +0100 | Midjak | (~Midjak@82.66.147.146) (Quit: Leaving) |
2023-02-14 13:54:25 +0100 | freeside | (~mengwong@103.252.202.170) |
2023-02-14 13:58:00 +0100 | mechap | (~mechap@user/mechap) (Ping timeout: 255 seconds) |
2023-02-14 13:59:51 +0100 | mechap | (~mechap@user/mechap) |
2023-02-14 14:02:19 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.8) |
2023-02-14 14:04:45 +0100 | mechap | (~mechap@user/mechap) (Ping timeout: 255 seconds) |
2023-02-14 14:05:37 +0100 | dcoutts_ | (~duncan@host86-167-90-212.range86-167.btcentralplus.com) |
2023-02-14 14:05:59 +0100 | Midjak | (~Midjak@82.66.147.146) |
2023-02-14 14:06:11 +0100 | mechap | (~mechap@user/mechap) |
2023-02-14 14:07:21 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2023-02-14 14:11:04 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) |
2023-02-14 14:18:16 +0100 | gpncarl_ | (~gpncarl@210.12.195.6) |
2023-02-14 14:18:32 +0100 | urdh | (~urdh@user/urdh) |
2023-02-14 14:22:51 +0100 | gpncarl_ | (~gpncarl@210.12.195.6) (Ping timeout: 255 seconds) |
2023-02-14 14:23:53 +0100 | thegeekinside | (~thegeekin@189.180.97.223) |
2023-02-14 14:31:12 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-02-14 14:31:40 +0100 | kenran | (~user@user/kenran) (Remote host closed the connection) |
2023-02-14 14:32:01 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2023-02-14 14:32:32 +0100 | ezzieygu1wuf | (~Unknown@user/ezzieyguywuf) |
2023-02-14 14:32:53 +0100 | mechap | (~mechap@user/mechap) (Quit: WeeChat 3.8) |
2023-02-14 14:33:39 +0100 | ezzieyguywuf | (~Unknown@user/ezzieyguywuf) (Ping timeout: 260 seconds) |
2023-02-14 14:35:58 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2023-02-14 14:38:36 +0100 | freeside | (~mengwong@103.252.202.170) (Ping timeout: 255 seconds) |
2023-02-14 14:49:58 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
2023-02-14 14:50:12 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2023-02-14 14:53:35 +0100 | kurbus | (~kurbus@user/kurbus) |
2023-02-14 14:56:54 +0100 | mechap | (~mechap@user/mechap) |
2023-02-14 14:58:33 +0100 | jle` | (~jle`@23.240.75.236) (Ping timeout: 252 seconds) |
2023-02-14 14:59:55 +0100 | Xeroine_ | (~Xeroine@user/xeroine) (Ping timeout: 260 seconds) |
2023-02-14 15:00:42 +0100 | jle` | (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
2023-02-14 15:03:50 +0100 | Xeroine_ | (~Xeroine@user/xeroine) |
2023-02-14 15:05:58 +0100 | maroloccio | (~marolocci@90.167.158.133) |
2023-02-14 15:08:57 +0100 | razetime | (~Thunderbi@117.193.2.42) |
2023-02-14 15:10:25 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) (Ping timeout: 260 seconds) |
2023-02-14 15:11:11 +0100 | maroloccio | (~marolocci@90.167.158.133) (Quit: WeeChat 3.7.1) |
2023-02-14 15:11:36 +0100 | maroloccio | (~marolocci@90.167.158.133) |
2023-02-14 15:11:47 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-02-14 15:17:36 +0100 | Xeroine_ | (~Xeroine@user/xeroine) (Ping timeout: 248 seconds) |
2023-02-14 15:17:59 +0100 | nschoe | (~q@141.101.51.197) (Ping timeout: 252 seconds) |
2023-02-14 15:19:28 +0100 | Xeroine_ | (~Xeroine@user/xeroine) |
2023-02-14 15:26:28 +0100 | nschoe | (~q@141.101.51.197) |
2023-02-14 15:26:43 +0100 | hueso | (~root@user/hueso) (Ping timeout: 268 seconds) |
2023-02-14 15:26:48 +0100 | freeside | (~mengwong@103.252.202.170) |
2023-02-14 15:30:22 +0100 | hueso | (~root@user/hueso) |
2023-02-14 15:31:14 +0100 | kurbus | (~kurbus@user/kurbus) (Quit: Client closed) |
2023-02-14 15:37:06 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 255 seconds) |
2023-02-14 15:39:04 +0100 | tr|ck | (~trick@user/trck/x-5559992) |
2023-02-14 15:39:56 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) |
2023-02-14 15:40:52 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-02-14 15:42:35 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-02-14 15:42:35 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-02-14 15:42:35 +0100 | wroathe | (~wroathe@user/wroathe) |
2023-02-14 15:47:00 +0100 | tr|ck | (~trick@user/trck/x-5559992) (Ping timeout: 255 seconds) |
2023-02-14 15:49:30 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
2023-02-14 15:51:08 +0100 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-02-14 15:55:20 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 260 seconds) |
2023-02-14 16:02:24 +0100 | Guest7260 | (~Guest72@165.57.80.205) (Quit: Client closed) |
2023-02-14 16:04:30 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) |
2023-02-14 16:09:20 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) (Ping timeout: 260 seconds) |
2023-02-14 16:09:28 +0100 | tr|ck | (~trick@user/trck/x-5559992) |
2023-02-14 16:09:45 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.8) |
2023-02-14 16:12:11 +0100 | acidjnk | (~acidjnk@p200300d6e715c4924c46451fa3694d1b.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
2023-02-14 16:13:01 +0100 | AlexZenon_2 | AlexZenon |
2023-02-14 16:13:53 +0100 | Alex_test_ | Alex_test |
2023-02-14 16:15:08 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
2023-02-14 16:16:50 +0100 | nattiestnate | (~nate@202.138.250.53) (Quit: WeeChat 3.8) |
2023-02-14 16:17:13 +0100 | nattiestnate | (~nate@202.138.250.37) |
2023-02-14 16:18:11 +0100 | phma_ | phma |
2023-02-14 16:23:37 +0100 | hounded | (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) |
2023-02-14 16:23:57 +0100 | hounded_woodstoc | (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) |
2023-02-14 16:25:30 +0100 | tromp | (~textual@92.110.219.57) |
2023-02-14 16:26:07 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
2023-02-14 16:26:25 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
2023-02-14 16:29:49 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
2023-02-14 16:30:27 +0100 | acidjnk | (~acidjnk@2003:d6:e715:c492:4016:f417:874:f7c3) |
2023-02-14 16:31:01 +0100 | jinsun | (~jinsun@user/jinsun) |
2023-02-14 16:31:27 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-02-14 16:34:51 +0100 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-02-14 16:35:08 +0100 | img | (~img@user/img) |
2023-02-14 16:39:10 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) |
2023-02-14 16:39:30 +0100 | nek0 | (~nek0@2a01:4f8:222:2b41::12) (Quit: I don't want to spoil the fun any further…) |
2023-02-14 16:39:39 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2023-02-14 16:41:25 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-176-170.46.114.pool.telefonica.de) |
2023-02-14 16:41:47 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) (Ping timeout: 255 seconds) |
2023-02-14 16:45:54 +0100 | accord | (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2023-02-14 16:48:43 +0100 | aryl | (~aryl@pool175-134.domashka.kiev.ua) |
2023-02-14 16:49:27 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:6d5d:8b8e:2d4b:5bae) (Quit: WeeChat 2.8) |
2023-02-14 16:50:05 +0100 | Luj | (~Luj@2a01:e0a:5f9:9681:e45d:27d5:311f:767e) (Quit: Ping timeout (120 seconds)) |
2023-02-14 16:50:24 +0100 | Luj | (~Luj@2a01:e0a:5f9:9681:40ef:5a70:1bf4:6920) |
2023-02-14 16:52:27 +0100 | maroloccio | (~marolocci@90.167.158.133) (Quit: WeeChat 3.7.1) |
2023-02-14 16:54:40 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) |
2023-02-14 16:54:48 +0100 | burnsidesLlama | (~burnsides@119247164140.ctinets.com) (Remote host closed the connection) |
2023-02-14 16:58:42 +0100 | aryl | (~aryl@pool175-134.domashka.kiev.ua) (Quit: Leaving) |
2023-02-14 17:00:04 +0100 | Tisoxin | (~ikosit@user/ikosit) (Quit: You have been kicked for being idle) |
2023-02-14 17:04:33 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) (Remote host closed the connection) |
2023-02-14 17:05:02 +0100 | gpncarl_ | (~gpncarl@210.12.195.6) |
2023-02-14 17:09:49 +0100 | gpncarl_ | (~gpncarl@210.12.195.6) (Ping timeout: 252 seconds) |
2023-02-14 17:10:42 +0100 | Guest|59 | (~Guest|59@5072AF5A.static.ziggozakelijk.nl) |
2023-02-14 17:15:14 +0100 | mncheckm | (~mncheck@193.224.205.254) (Read error: Connection reset by peer) |
2023-02-14 17:15:25 +0100 | Guest|59 | (~Guest|59@5072AF5A.static.ziggozakelijk.nl) (Client Quit) |
2023-02-14 17:15:56 +0100 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Quit: WeeChat 3.8) |
2023-02-14 17:19:21 +0100 | mbuf | (~Shakthi@49.204.117.35) (Quit: Leaving) |
2023-02-14 17:25:43 +0100 | kurbus | (~kurbus@user/kurbus) |
2023-02-14 17:30:24 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) |
2023-02-14 17:31:30 +0100 | kurbus | npm_i_kurbus |
2023-02-14 17:32:42 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-02-14 17:39:57 +0100 | ravamrt | (~ravamrt@112.134.195.223) |
2023-02-14 17:43:55 +0100 | werneta | (~werneta@70.142.214.115) (Remote host closed the connection) |
2023-02-14 17:44:27 +0100 | nschoe | (~q@141.101.51.197) (Ping timeout: 255 seconds) |
2023-02-14 17:46:09 +0100 | CiaoSen | (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
2023-02-14 17:47:24 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) |
2023-02-14 17:51:06 +0100 | lechner | (~lechner@debian/lechner) (Ping timeout: 255 seconds) |
2023-02-14 17:51:14 +0100 | edwardk | (sid47016@haskell/developer/edwardk) (Ping timeout: 252 seconds) |
2023-02-14 17:52:00 +0100 | dmj` | (sid72307@id-72307.hampstead.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 17:52:00 +0100 | hongminhee | (sid295@id-295.tinside.irccloud.com) (Ping timeout: 255 seconds) |
2023-02-14 17:52:00 +0100 | edwardk | (sid47016@haskell/developer/edwardk) |
2023-02-14 17:52:09 +0100 | hongminhee | (sid295@id-295.tinside.irccloud.com) |
2023-02-14 17:52:27 +0100 | azathough | (uid589374@user/azathough) (Ping timeout: 255 seconds) |
2023-02-14 17:53:04 +0100 | glowcoil | (sid3405@id-3405.tinside.irccloud.com) (Ping timeout: 252 seconds) |
2023-02-14 17:53:21 +0100 | xff0x | (~xff0x@2405:6580:b080:900:a328:3e4d:f447:d561) (Ping timeout: 255 seconds) |
2023-02-14 17:53:34 +0100 | azathough | (uid589374@user/azathough) |
2023-02-14 17:53:34 +0100 | lechner | (~lechner@debian/lechner) |
2023-02-14 17:53:38 +0100 | xff0x | (~xff0x@2405:6580:b080:900:a328:3e4d:f447:d561) |
2023-02-14 17:53:58 +0100 | dmj` | (sid72307@2a03:5180:f:4::1:1a73) |
2023-02-14 17:54:03 +0100 | glowcoil | (sid3405@id-3405.tinside.irccloud.com) |
2023-02-14 17:54:33 +0100 | acidjnk | (~acidjnk@2003:d6:e715:c492:4016:f417:874:f7c3) (Ping timeout: 252 seconds) |
2023-02-14 17:55:35 +0100 | patrl | (~patrl@user/patrl) |
2023-02-14 18:01:52 +0100 | Guest|60 | (~Guest|60@wn-campus-nat-129-97-124-25.dynamic.uwaterloo.ca) |
2023-02-14 18:02:10 +0100 | Guest|60 | (~Guest|60@wn-campus-nat-129-97-124-25.dynamic.uwaterloo.ca) (Client Quit) |
2023-02-14 18:04:28 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
2023-02-14 18:04:31 +0100 | razetime | (~Thunderbi@117.193.2.42) (Remote host closed the connection) |
2023-02-14 18:06:21 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) (Remote host closed the connection) |
2023-02-14 18:10:28 +0100 | accord | (uid568320@id-568320.hampstead.irccloud.com) |
2023-02-14 18:10:46 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) |
2023-02-14 18:11:15 +0100 | ddellacosta | (~ddellacos@143.244.47.81) (Ping timeout: 260 seconds) |
2023-02-14 18:14:48 +0100 | shapr` | (~user@net-5-88-239-92.cust.vodafonedsl.it) |
2023-02-14 18:16:23 +0100 | shapr | (~user@net-5-88-238-17.cust.vodafonedsl.it) (Ping timeout: 264 seconds) |
2023-02-14 18:17:39 +0100 | dcoutts_ | (~duncan@host86-167-90-212.range86-167.btcentralplus.com) (Ping timeout: 255 seconds) |
2023-02-14 18:18:23 +0100 | thongpv87 | (~thongpv87@2402:9d80:3f7:eb1f:fd16:bff4:dc8f:c8d1) (Ping timeout: 248 seconds) |
2023-02-14 18:19:36 +0100 | thongpv | (~thongpv87@14.246.240.242) |
2023-02-14 18:21:43 +0100 | Sgeo_ | (~Sgeo@user/sgeo) |
2023-02-14 18:23:13 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) |
2023-02-14 18:23:50 +0100 | srk | (~sorki@user/srk) (Ping timeout: 246 seconds) |
2023-02-14 18:23:54 +0100 | thegeekinside | (~thegeekin@189.180.97.223) (Remote host closed the connection) |
2023-02-14 18:23:55 +0100 | shapr` | (~user@net-5-88-239-92.cust.vodafonedsl.it) (Ping timeout: 248 seconds) |
2023-02-14 18:24:14 +0100 | thegeekinside | (~thegeekin@189.180.97.223) |
2023-02-14 18:25:05 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2023-02-14 18:25:15 +0100 | Sgeo | (~Sgeo@user/sgeo) (Ping timeout: 260 seconds) |
2023-02-14 18:26:18 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds) |
2023-02-14 18:26:22 +0100 | Lord_of_Life_ | Lord_of_Life |
2023-02-14 18:32:49 +0100 | tr|ck | (~trick@user/trck/x-5559992) () |
2023-02-14 18:33:08 +0100 | Joao003 | (~Joao003@2804:840:8309:8700:cf:9c07:d6ca:caa3) |
2023-02-14 18:34:58 +0100 | tromp | (~textual@92.110.219.57) (Read error: Connection reset by peer) |
2023-02-14 18:42:17 +0100 | Joao003 | (~Joao003@2804:840:8309:8700:cf:9c07:d6ca:caa3) (Read error: Connection reset by peer) |
2023-02-14 18:42:21 +0100 | dcoutts_ | (~duncan@host86-167-90-212.range86-167.btcentralplus.com) |
2023-02-14 18:48:07 +0100 | MajorBiscuit | (~MajorBisc@2001:1c00:2408:a400:67e:5371:52a7:9b9a) (Ping timeout: 252 seconds) |
2023-02-14 18:49:55 +0100 | andrewboltachev | (~andrey@178.141.125.176) |
2023-02-14 18:52:32 +0100 | werneta | (~werneta@137.79.195.231) |
2023-02-14 18:52:52 +0100 | phma | (~phma@host-67-44-208-68.hnremote.net) (Read error: Connection reset by peer) |
2023-02-14 18:53:06 +0100 | ubert1 | (~Thunderbi@2a02:8109:abc0:6434:fdd9:182:a444:ad44) (Quit: ubert1) |
2023-02-14 18:53:46 +0100 | phma | (phma@2001:5b0:210d:bd78:7d2a:52e1:c274:2d5) |
2023-02-14 18:56:52 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
2023-02-14 18:57:25 +0100 | econo | (uid147250@user/econo) |
2023-02-14 18:58:19 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2023-02-14 18:59:05 +0100 | bollu | (~bollu@159.65.151.13) (Quit: Ping timeout (120 seconds)) |
2023-02-14 18:59:17 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2023-02-14 18:59:34 +0100 | bollu | (~bollu@159.65.151.13) |
2023-02-14 19:01:23 +0100 | ravamrt | (~ravamrt@112.134.195.223) (Quit: Leaving.) |
2023-02-14 19:06:29 +0100 | CiaoSen | (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2023-02-14 19:09:01 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) (Remote host closed the connection) |
2023-02-14 19:09:18 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2023-02-14 19:14:18 +0100 | Joao003 | (~Joao003@2804:840:8309:8700:b01f:79f9:8910:d564) |
2023-02-14 19:18:07 +0100 | thongpv87 | (~thongpv87@2402:9d80:3bb:7b3a:7018:2d58:855e:f2ef) |
2023-02-14 19:20:27 +0100 | thongpv | (~thongpv87@14.246.240.242) (Ping timeout: 248 seconds) |
2023-02-14 19:21:48 +0100 | rlj | (~rlj@194-218-34-180.customer.telia.com) |
2023-02-14 19:22:38 +0100 | xeph | (~xeph@2a02-8428-8326-2501-4a51-c5ff-fe27-99a8.rev.sfr.net) |
2023-02-14 19:25:18 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-02-14 19:30:06 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 255 seconds) |
2023-02-14 19:30:58 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) |
2023-02-14 19:31:20 +0100 | ravamrt | (~ravamrt@112.134.195.223) |
2023-02-14 19:33:59 +0100 | ubert | (~Thunderbi@84.140.142.240) (Quit: ubert) |
2023-02-14 19:35:12 +0100 | beteigeuze | (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 248 seconds) |
2023-02-14 19:35:55 +0100 | <Joao003> | hi |
2023-02-14 19:36:03 +0100 | <Joao003> | how do i convert Char to String? |
2023-02-14 19:36:32 +0100 | <trev> | put it in a list |
2023-02-14 19:36:37 +0100 | <Joao003> | oh i can just nest it in a list |
2023-02-14 19:37:43 +0100 | <Joao003> | since String is just [Char] I can simply `\x -> [x]` |
2023-02-14 19:38:03 +0100 | <Joao003> | or even better: `return :: a -> [a]` |
2023-02-14 19:39:11 +0100 | <geekosaur> | > (:[]) 'a' -- munch! |
2023-02-14 19:39:13 +0100 | <lambdabot> | "a" |
2023-02-14 19:39:22 +0100 | <[exa]> | ( strings are chars cleaned of impurities, so `pure` should work just as well. ) |
2023-02-14 19:42:27 +0100 | npm_i_kurbus | (~kurbus@user/kurbus) (Quit: Client closed) |
2023-02-14 19:43:18 +0100 | xeph | (~xeph@2a02-8428-8326-2501-4a51-c5ff-fe27-99a8.rev.sfr.net) (Ping timeout: 260 seconds) |
2023-02-14 19:47:27 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) |
2023-02-14 19:48:12 +0100 | kurbus | (~kurbus@user/kurbus) |
2023-02-14 19:49:20 +0100 | rlj | (~rlj@194-218-34-180.customer.telia.com) (Quit: Client closed) |
2023-02-14 19:51:06 +0100 | <Joao003> | after all, `pure` is just `return` |
2023-02-14 19:53:02 +0100 | tomsmeding | sometimes uses 'pure' as a short idiom to put stuff in a singleton list, like 'map pure ...' |
2023-02-14 19:54:46 +0100 | mastarija | (~mastarija@2a05:4f46:e03:6000:4d71:cd5a:a7fb:2ef7) (Quit: WeeChat 3.7.1) |
2023-02-14 19:54:57 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-176-170.46.114.pool.telefonica.de) (Ping timeout: 255 seconds) |
2023-02-14 19:58:57 +0100 | Sciencentistguy5 | (~sciencent@hacksoc/ordinary-member) |
2023-02-14 19:59:01 +0100 | dsal | always uses `pure` because pure code is better and doesn't want to return to the old ways |
2023-02-14 20:01:02 +0100 | Sciencentistguy | (~sciencent@hacksoc/ordinary-member) (Ping timeout: 252 seconds) |
2023-02-14 20:01:02 +0100 | Sciencentistguy5 | Sciencentistguy |
2023-02-14 20:02:54 +0100 | hounded_1969 | (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) |
2023-02-14 20:03:11 +0100 | opticblast | (~Thunderbi@172.58.82.191) |
2023-02-14 20:03:19 +0100 | <Joao003> | im in hexchat, how do i send these messages with asterisk |
2023-02-14 20:03:25 +0100 | <tomsmeding> | /me |
2023-02-14 20:04:01 +0100 | Joao003 | never uses `pure`, always uses `return` |
2023-02-14 20:04:43 +0100 | <geekosaur> | you miht want to get out of that habit in case the "monad of no return" proposal ever lands |
2023-02-14 20:05:07 +0100 | <tomsmeding> | why? |
2023-02-14 20:05:18 +0100 | <geekosaur> | (it's silly to have both `pure` and `return` when they have to do the same thing and `pure` is required via Applicative anyway) |
2023-02-14 20:05:36 +0100 | <tomsmeding> | surely 'return' will never vanish from Prelude |
2023-02-14 20:05:42 +0100 | <tomsmeding> | that would break absolutely everything |
2023-02-14 20:06:50 +0100 | <dsal> | `return` is just bad. It can be a compatibility function if someone wants it, but Haskell will be better when no code mentions `return` |
2023-02-14 20:07:12 +0100 | jakalx | (~jakalx@base.jakalx.net) (Error from remote client) |
2023-02-14 20:08:35 +0100 | <geekosaur> | that being one of the sticking points on the proposal; it designates a deprecation schedule for `return` and not everyone agrees with that |
2023-02-14 20:08:49 +0100 | <tomsmeding> | I see |
2023-02-14 20:09:57 +0100 | <dsal> | Not everyone even agrees that `return` is bad. People like weird things. |
2023-02-14 20:11:39 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-176-170.46.114.pool.telefonica.de) |
2023-02-14 20:11:49 +0100 | <tomsmeding> | I'm for removing 'return' from Monad, but I don't see how removing 'return' from Prelude accomplishes anything |
2023-02-14 20:11:53 +0100 | <tomsmeding> | should I just read the proposal? |
2023-02-14 20:12:12 +0100 | Joao003 | now only uses `return` situationally |
2023-02-14 20:12:47 +0100 | <Joao003> | yeah. i can use return in situations like `main = return ()` |
2023-02-14 20:12:59 +0100 | <dsal> | I don't think many people agree with what Prelude is meant to be, either. |
2023-02-14 20:13:11 +0100 | <Joao003> | it's like a pass in python |
2023-02-14 20:13:14 +0100 | <tomsmeding> | fair :) |
2023-02-14 20:13:23 +0100 | <dsal> | e.g., it's nice having `head` in there for people playing around and learning stuff, but it's bad for real apps. |
2023-02-14 20:13:35 +0100 | <dsal> | But we use an alternate prelude at work and I very much dislike it. |
2023-02-14 20:13:49 +0100 | <Joao003> | why an alternate prelude? |
2023-02-14 20:13:54 +0100 | <dsal> | Joao003: `pure ()` is as well, but has fewer characters and isn't weird. |
2023-02-14 20:14:11 +0100 | <tomsmeding> | why dislike, because of the hassle with NoImplicitPrelude? |
2023-02-14 20:14:26 +0100 | <dsal> | Prelude alternatives remove bad things (like `head`) and add things that you need all the time and don't want to have to import. |
2023-02-14 20:14:47 +0100 | <Joao003> | dsal: nah, `return ()` sounds more fine to me, coming from python |
2023-02-14 20:15:01 +0100 | <dsal> | Ours is mostly bad because it's significantly larger and I don't want to try to remember all the things in it. It also has monotraversable which most people agree is pretty awful. |
2023-02-14 20:15:11 +0100 | <Joao003> | ugh. |
2023-02-14 20:15:26 +0100 | <dsal> | Joao003: One of the things I don't like about `return` is that it "sounds fine" because it implies it's doing something that's not what it's actually doing. |
2023-02-14 20:15:42 +0100 | urdh | (~urdh@user/urdh) (Quit: Boom!) |
2023-02-14 20:15:52 +0100 | <dsal> | The implementation of `return ()` is almost always `pure ()` |
2023-02-14 20:16:12 +0100 | <dsal> | (I'm not aware of cases where it isn't, but I assume anything that can be done poorly is) |
2023-02-14 20:16:20 +0100 | <Joao003> | yeah. return is not returning. returning is at the end of a function, not at any point. |
2023-02-14 20:16:49 +0100 | ddellacosta | (~ddellacos@146.70.166.203) |
2023-02-14 20:17:35 +0100 | urdh | (~urdh@user/urdh) |
2023-02-14 20:17:36 +0100 | <dsal> | It's also strange that you say you like `return` because it's like `pass` in python. But not `pure` which is more like `pass` in python than `return` is like `return` in python. |
2023-02-14 20:17:41 +0100 | <Joao003> | situation solved: `pass = pure (); main = pass` sounds very fine to a pythonist |
2023-02-14 20:18:21 +0100 | <Joao003> | if you don't know, pass in python is used when code is required but there is no code |
2023-02-14 20:19:06 +0100 | <Joao003> | like in `def f(): pass` (behind the curtains it returns None but anyways) |
2023-02-14 20:20:00 +0100 | <dsal> | Yeah, that's context-dependent, though. In that case maybe it's `mempty` or `()` or `id` or just `undefined` which I like because I need to go back and fix it. |
2023-02-14 20:20:39 +0100 | <tomsmeding> | :t mempty :: IO () |
2023-02-14 20:20:40 +0100 | <lambdabot> | IO () |
2023-02-14 20:20:50 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:50a4:25c9:e12:371f) (Remote host closed the connection) |
2023-02-14 20:20:54 +0100 | <Joao003> | code is cluttered |
2023-02-14 20:20:55 +0100 | <tomsmeding> | doesn't work for all monads though |
2023-02-14 20:21:05 +0100 | <Joao003> | > mempty :: IO () |
2023-02-14 20:21:07 +0100 | <lambdabot> | <IO ()> |
2023-02-14 20:21:28 +0100 | <Joao003> | very cluttered. better use (pure () :: IO ()) |
2023-02-14 20:22:00 +0100 | <geekosaur> | % mempty :: IO () |
2023-02-14 20:22:00 +0100 | <yahb2> | <no output> |
2023-02-14 20:22:18 +0100 | <Joao003> | % pure () :: IO (); print "HI!" |
2023-02-14 20:22:18 +0100 | <yahb2> | <interactive>:30:1: error: ; Invalid type signature: pure () :: ... ; Should be of form <variable> :: <type> |
2023-02-14 20:22:29 +0100 | <Joao003> | % (pure () :: IO ()); print "HI!" |
2023-02-14 20:22:29 +0100 | <yahb2> | <interactive>:32:1: error: ; Parse error: module header, import declaration ; or top-level declaration expected. |
2023-02-14 20:22:30 +0100 | <dsal> | Nah, but `pure ()` can't just be put anywhere. If you're writing code that needs to "do nothing" the idea of "doing nothing" still has to fit with the types. |
2023-02-14 20:22:37 +0100 | <tomsmeding> | % do mempty; print "hi" |
2023-02-14 20:22:37 +0100 | <yahb2> | <interactive>:34:4: error: ; • Ambiguous type variable ‘a0’ arising from a use of ‘mempty’ ; prevents the constraint ‘(Monoid a0)’ from being solved. ; Probable fix: use a type anno... |
2023-02-14 20:22:37 +0100 | <Joao003> | oh. |
2023-02-14 20:22:43 +0100 | <tomsmeding> | % do (mempty :: IO ()); print "hi" |
2023-02-14 20:22:43 +0100 | <yahb2> | Oops, something went wrong |
2023-02-14 20:22:46 +0100 | <tomsmeding> | % do (mempty :: IO ()); print "hi" |
2023-02-14 20:22:46 +0100 | <yahb2> | "hi" |
2023-02-14 20:22:50 +0100 | <tomsmeding> | I really need to fix that |
2023-02-14 20:23:04 +0100 | <Joao003> | % do (pure () :: IO ()); print "hi" |
2023-02-14 20:23:04 +0100 | <yahb2> | "hi" |
2023-02-14 20:23:16 +0100 | <Joao003> | @src mempty |
2023-02-14 20:23:16 +0100 | <lambdabot> | Source not found. I feel much better now. |
2023-02-14 20:23:23 +0100 | <tomsmeding> | it's a method of Monoid |
2023-02-14 20:23:37 +0100 | <Joao003> | @src Monoid mempty |
2023-02-14 20:23:37 +0100 | <lambdabot> | Source not found. There are some things that I just don't know. |
2023-02-14 20:23:37 +0100 | <tomsmeding> | () is a (trivial) monoid, and IO a is a monoid whenever 'a' is |
2023-02-14 20:23:48 +0100 | <tomsmeding> | it wouldn't make sense to show that source |
2023-02-14 20:24:00 +0100 | <tomsmeding> | the source is in the instances |
2023-02-14 20:24:41 +0100 | <Joao003> | these monad applicative monoid are too complicated for me, a pythonist |
2023-02-14 20:24:54 +0100 | <tomsmeding> | a monoid is a thing with a 0 and a + |
2023-02-14 20:25:02 +0100 | <tomsmeding> | > mempty :: String |
2023-02-14 20:25:04 +0100 | <lambdabot> | "" |
2023-02-14 20:25:09 +0100 | <tomsmeding> | > "abc" <> "def" |
2023-02-14 20:25:10 +0100 | <Joao003> | basically group but less strict? |
2023-02-14 20:25:11 +0100 | <lambdabot> | "abcdef" |
2023-02-14 20:25:21 +0100 | <tomsmeding> | Joao003: precisely, a group without additive inverses |
2023-02-14 20:25:26 +0100 | <Joao003> | yeah |
2023-02-14 20:25:31 +0100 | <Joao003> | so it's less strict |
2023-02-14 20:25:56 +0100 | <tomsmeding> | % Sum 4 <> Sum 10 <> Sum 12 |
2023-02-14 20:25:56 +0100 | <yahb2> | <interactive>:8:1: error: ; • Data constructor not in scope: Sum :: t2 -> a ; • Perhaps you meant variable ‘sum’ (imported from Prelude) ; ; <interactive>:8:10: error: ; • Data constru... |
2023-02-14 20:25:59 +0100 | <tomsmeding> | > Sum 4 <> Sum 10 <> Sum 12 |
2023-02-14 20:26:01 +0100 | <lambdabot> | Sum {getSum = 26} |
2023-02-14 20:26:04 +0100 | <Joao003> | a functor is like an arrow from 1 element in a group to another |
2023-02-14 20:26:10 +0100 | <tomsmeding> | > Product 4 <> Product 10 <> Product 12 |
2023-02-14 20:26:12 +0100 | <lambdabot> | Product {getProduct = 480} |
2023-02-14 20:26:25 +0100 | <Joao003> | wth is this sum and product thing |
2023-02-14 20:26:25 +0100 | <tomsmeding> | > (mempty :: Sum Int, mempty :: Product Int) |
2023-02-14 20:26:27 +0100 | <lambdabot> | (Sum {getSum = 0},Product {getProduct = 1}) |
2023-02-14 20:26:38 +0100 | <tomsmeding> | data Sum a = Sum { getSum :: a } |
2023-02-14 20:26:41 +0100 | <tomsmeding> | similarly for Product |
2023-02-14 20:26:47 +0100 | <tomsmeding> | the interesting thing is their Monoid instance |
2023-02-14 20:26:57 +0100 | TimWolla | (~timwolla@2a01:4f8:150:6153:beef::6667) (Quit: Bye) |
2023-02-14 20:27:05 +0100 | <tomsmeding> | (well, newtype actually, not data, but that's irrelevant to the current discussion) |
2023-02-14 20:27:05 +0100 | <Joao003> | @src Monoid Sum |
2023-02-14 20:27:05 +0100 | <lambdabot> | Source not found. |
2023-02-14 20:27:07 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) (Ping timeout: 248 seconds) |
2023-02-14 20:27:13 +0100 | <Joao003> | .-. |
2023-02-14 20:27:16 +0100 | <tomsmeding> | https://hackage.haskell.org/package/base-4.17.0.0/docs/Data-Monoid.html#t:Sum |
2023-02-14 20:27:28 +0100 | <tomsmeding> | Joao003: https://hackage.haskell.org/package/base-4.17.0.0/docs/src/Data.Semigroup.Internal.html#line-227 |
2023-02-14 20:27:41 +0100 | <tomsmeding> | ugly stuffs because people found it useful to optimise this |
2023-02-14 20:27:55 +0100 | <tomsmeding> | (<>) should read: Sum a <> Sum b = Sum (a + b) |
2023-02-14 20:28:15 +0100 | <Joao003> | ohhhhh |
2023-02-14 20:28:21 +0100 | <mauke> | Group without inverses |
2023-02-14 20:28:22 +0100 | <tomsmeding> | ((<>) is really in Semigroup, not in Monoid -- a Semigroup is a group without additive inverses and without zero, so only an associative +) |
2023-02-14 20:28:41 +0100 | <Joao003> | basically a group without inverses and a neutral element |
2023-02-14 20:28:48 +0100 | <tomsmeding> | yes |
2023-02-14 20:29:06 +0100 | <Joao003> | we usually don't call it zero |
2023-02-14 20:29:13 +0100 | <tomsmeding> | https://commons.wikimedia.org/wiki/File:Magma_to_group4.svg |
2023-02-14 20:29:27 +0100 | <Joao003> | good to see group theory pop out of nowhere |
2023-02-14 20:29:45 +0100 | <tomsmeding> | monoids turn out to be insanely useful |
2023-02-14 20:30:09 +0100 | <tomsmeding> | semigroups-that-are-not-monoids also sometimes occur, less often though |
2023-02-14 20:31:01 +0100 | <Joao003> | jsik is there a group typeclass? |
2023-02-14 20:31:09 +0100 | <tomsmeding> | not in base |
2023-02-14 20:31:17 +0100 | <Joao003> | .-. |
2023-02-14 20:31:23 +0100 | <tomsmeding> | @hackage groups |
2023-02-14 20:31:23 +0100 | <lambdabot> | https://hackage.haskell.org/package/groups |
2023-02-14 20:31:24 +0100 | <Joao003> | what is a functor then |
2023-02-14 20:31:42 +0100 | <tomsmeding> | the haskell Functor typeclass is kind of an endofunctor on Hask, if I'm not mistaken |
2023-02-14 20:31:56 +0100 | <Joao003> | so what's an endofunctor |
2023-02-14 20:32:03 +0100 | <tomsmeding> | or no, that's incorrectly stated: instances of the Functor typeclass are endofunctors on Hask |
2023-02-14 20:32:11 +0100 | <dminuoso_> | Joao003: Its a construction from category theory. |
2023-02-14 20:32:15 +0100 | <tomsmeding> | a functor from a category to itself, as opposed to to another category :p |
2023-02-14 20:32:22 +0100 | <dminuoso_> | Joao003: It's almost entirely irrelevant to the purpose of learning Haskell, mind you. |
2023-02-14 20:32:25 +0100 | <tomsmeding> | yes |
2023-02-14 20:32:32 +0100 | TimWolla | (~timwolla@2a01:4f8:150:6153:beef::6667) |
2023-02-14 20:32:55 +0100 | <tomsmeding> | for learning haskell, the relevant thing about Functor is that you can lift functions (a -> b) to functions (f a -> f b) |
2023-02-14 20:32:56 +0100 | <dminuoso_> | A pragmatic beginner intuition of what Functor is, is things you can "map over" in a sensible way. |
2023-02-14 20:33:10 +0100 | <Joao003> | so we have group theory and cat. theory in hask |
2023-02-14 20:33:48 +0100 | <Joao003> | it's basically each element having an arrow from itself to another element |
2023-02-14 20:34:19 +0100 | <dminuoso_> | Are you merely curious, or are you hoping to improve your Haskell with this? |
2023-02-14 20:34:30 +0100 | <Joao003> | im trying to improve my haskell |
2023-02-14 20:34:39 +0100 | <dminuoso_> | Then my recommendation, dont bother with the category part in the slightest. |
2023-02-14 20:34:49 +0100 | <tomsmeding> | agreed |
2023-02-14 20:34:51 +0100 | <dminuoso_> | It really wont help in all likelihood, unless you already have the category theory knowledge in the first place. |
2023-02-14 20:35:21 +0100 | <Joao003> | "a monad is a monoid in the category of endofunctors" is that correct? |
2023-02-14 20:35:29 +0100 | <dminuoso_> | Functor is the typeclass of things you can "map over" in a sensible fashion, as in `mapping with a function over a list` |
2023-02-14 20:35:40 +0100 | <dminuoso_> | Joao003: It's a joke that is, perfectly honest, inaccurately told. |
2023-02-14 20:35:48 +0100 | <tomsmeding> | it's correct but misses a bit of context, and is completely unhelpful and uninformative to any haskell programmer |
2023-02-14 20:35:49 +0100 | <dminuoso_> | It's not a means for understanding, it's really just a joke. |
2023-02-14 20:36:18 +0100 | <Joao003> | so monad is just a little typeclass with a few functions |
2023-02-14 20:36:28 +0100 | <dminuoso_> | Joao003: yes! |
2023-02-14 20:36:34 +0100 | <dminuoso_> | That's really all that monad is. |
2023-02-14 20:36:34 +0100 | <tomsmeding> | a very general and useful one, though |
2023-02-14 20:36:49 +0100 | <Joao003> | even [] is a monad |
2023-02-14 20:36:52 +0100 | <dminuoso_> | Yes. |
2023-02-14 20:37:01 +0100 | <dminuoso_> | Joao003: The somewhat difficult part is recognizing what it abstracts over, and that comes from just understanding each individual instance. |
2023-02-14 20:37:13 +0100 | <Joao003> | @src Monad |
2023-02-14 20:37:13 +0100 | <lambdabot> | class Applicative m => Monad m where |
2023-02-14 20:37:14 +0100 | <lambdabot> | -- Note: Applicative wasn't a superclass before GHC 7.10 |
2023-02-14 20:37:14 +0100 | <lambdabot> | (>>=) :: m a -> (a -> m b) -> m b |
2023-02-14 20:37:14 +0100 | <lambdabot> | (>>) :: m a -> m b -> m b |
2023-02-14 20:37:14 +0100 | <lambdabot> | return :: a -> m a |
2023-02-14 20:37:15 +0100 | <lambdabot> | fail :: String -> m a |
2023-02-14 20:37:16 +0100 | <dminuoso_> | Each individual instance is very easy to learn by inexperienced beginners. |
2023-02-14 20:37:18 +0100 | urdh | (~urdh@user/urdh) (Quit: Boom!) |
2023-02-14 20:37:27 +0100 | <Joao003> | so what's an applicative...? |
2023-02-14 20:37:32 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2023-02-14 20:37:46 +0100 | <tomsmeding> | monad-ish, but weaker |
2023-02-14 20:37:47 +0100 | <dminuoso_> | Something that should be explained in your syllabus or book you should be studying. |
2023-02-14 20:37:54 +0100 | <Joao003> | @src Applicative |
2023-02-14 20:37:54 +0100 | <lambdabot> | class Functor f => Applicative f where |
2023-02-14 20:37:54 +0100 | <tomsmeding> | :D |
2023-02-14 20:37:54 +0100 | <lambdabot> | pure :: a -> f a |
2023-02-14 20:37:54 +0100 | <lambdabot> | (<*>) :: f (a -> b) -> f a -> f b |
2023-02-14 20:37:58 +0100 | <Joao003> | ooh |
2023-02-14 20:38:07 +0100 | <Joao003> | defines pure and <*> |
2023-02-14 20:38:12 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) |
2023-02-14 20:38:23 +0100 | <Joao003> | so return is just a trash pile in monad |
2023-02-14 20:38:58 +0100 | <EvanR> | pure and return create an action with no effect |
2023-02-14 20:38:58 +0100 | <ddellacosta> | it's just the same as pure |
2023-02-14 20:39:29 +0100 | <Joao003> | <*> takes a functor of functions, a functor and applies those functions to the value within functor |
2023-02-14 20:39:33 +0100 | <ddellacosta> | Joao003: https://hackage.haskell.org/package/base-4.17.0.0/docs/src/GHC.Base.html#return |
2023-02-14 20:39:43 +0100 | <Joao003> | i understand |
2023-02-14 20:40:11 +0100 | <Joao003> | @src return |
2023-02-14 20:40:11 +0100 | <lambdabot> | Source not found. I feel much better now. |
2023-02-14 20:40:35 +0100 | <Joao003> | it's like fmap isn't it |
2023-02-14 20:40:48 +0100 | <Joao003> | pure just wraps |
2023-02-14 20:41:10 +0100 | thongpv87 | (~thongpv87@2402:9d80:3bb:7b3a:7018:2d58:855e:f2ef) (Ping timeout: 260 seconds) |
2023-02-14 20:41:15 +0100 | <EvanR> | wrapping and unwrapping might work for some examples but not others |
2023-02-14 20:41:35 +0100 | <EvanR> | as an analogy |
2023-02-14 20:42:37 +0100 | mcglk_ | (~mcglk@131.191.49.120) (Read error: Connection reset by peer) |
2023-02-14 20:42:48 +0100 | <Joao003> | ok (>>=) is just fmap isn't it |
2023-02-14 20:42:55 +0100 | <EvanR> | no |
2023-02-14 20:43:06 +0100 | <EvanR> | it's a combination of fmap and join |
2023-02-14 20:43:19 +0100 | <tomsmeding> | with (>>=) you can choose what function to apply based on the "intermediate" value in your monadic computation |
2023-02-14 20:43:25 +0100 | <tomsmeding> | fmap applies the same function always |
2023-02-14 20:43:26 +0100 | <Joao003> | @src join |
2023-02-14 20:43:26 +0100 | <lambdabot> | join x = x >>= id |
2023-02-14 20:43:32 +0100 | <EvanR> | :t join |
2023-02-14 20:43:33 +0100 | <lambdabot> | Monad m => m (m a) -> m a |
2023-02-14 20:43:51 +0100 | <EvanR> | use the types luke |
2023-02-14 20:43:51 +0100 | <Joao003> | BUT JOIN IS DEFINED IN TERMS OF BIND HOW IN TARNATION AM I SUPPOSED TO GET BIND FROM TERMS OF JOIN |
2023-02-14 20:43:53 +0100 | <geekosaur> | using @src won't help because Haskell defines a monad "backwards" |
2023-02-14 20:43:54 +0100 | urdh | (~urdh@user/urdh) |
2023-02-14 20:44:05 +0100 | <dminuoso_> | Joao003: My recommendation, ignore applicative for now. |
2023-02-14 20:44:11 +0100 | <Joao003> | ... ok. |
2023-02-14 20:44:19 +0100 | <dminuoso_> | For a beginner you likely can get away with just Monad most of the time. |
2023-02-14 20:44:30 +0100 | mcglk | (~mcglk@131.191.49.120) |
2023-02-14 20:44:39 +0100 | <dminuoso_> | (Applicative becomes only a main concern for a select view types that have Applicative but not Monad, but thats nothing you need worry about for now) |
2023-02-14 20:44:44 +0100 | <Joao003> | but what the hell are all of these functions supposed to do |
2023-02-14 20:44:46 +0100 | <geekosaur> | you might want to start from lists, where fmap is map and join is concat |
2023-02-14 20:44:53 +0100 | <tomsmeding> | you can define join in terms of bind, and bind in terms of join; hence to define a monad, you can give either, and the other will be defined in terms of it |
2023-02-14 20:44:57 +0100 | <Joao003> | wth is fail for |
2023-02-14 20:45:01 +0100 | <Joao003> | @src [] fail |
2023-02-14 20:45:01 +0100 | <lambdabot> | fail _ = [] |
2023-02-14 20:45:08 +0100 | <geekosaur> | mistakes, mostly 🙂 |
2023-02-14 20:45:15 +0100 | <tomsmeding> | mathematicians tend to appreciate join more, for programmers join is almost completely useless and you use >>= always |
2023-02-14 20:45:21 +0100 | <EvanR> | fail is for monads that can fail |
2023-02-14 20:45:25 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine) |
2023-02-14 20:45:27 +0100 | <EvanR> | i.e. MonadFail |
2023-02-14 20:45:37 +0100 | <geekosaur> | basically, join is a hack for failed pattern matches |
2023-02-14 20:45:42 +0100 | <geekosaur> | er, fail is a hack |
2023-02-14 20:45:47 +0100 | <Joao003> | but hth can [] fail |
2023-02-14 20:45:47 +0100 | <geekosaur> | derp |
2023-02-14 20:45:57 +0100 | <EvanR> | [] is failure |
2023-02-14 20:46:03 +0100 | <EvanR> | any other list is success |
2023-02-14 20:46:07 +0100 | <Joao003> | lol |
2023-02-14 20:46:15 +0100 | <EvanR> | [] means you failed to produce any result |
2023-02-14 20:46:20 +0100 | <Joao003> | BUT WHY DOES [] FAIL TAKE A [] |
2023-02-14 20:46:30 +0100 | <dsal> | :t fail |
2023-02-14 20:46:31 +0100 | <lambdabot> | MonadFail m => String -> m a |
2023-02-14 20:46:34 +0100 | <EvanR> | it takes a String |
2023-02-14 20:46:35 +0100 | <dsal> | Fail takes a string. |
2023-02-14 20:46:43 +0100 | <geekosaur> | fail takes a message. the message is unused for the list monad |
2023-02-14 20:46:43 +0100 | <Joao003> | but string is [char]. |
2023-02-14 20:46:44 +0100 | <[exa]> | "" == [] |
2023-02-14 20:46:59 +0100 | <Joao003> | "" == FAILURE |
2023-02-14 20:47:01 +0100 | <geekosaur> | for IO, fail produces an IO exception containing the message |
2023-02-14 20:47:07 +0100 | <geekosaur> | % fail "oops" |
2023-02-14 20:47:07 +0100 | <yahb2> | Oops, something went wrong |
2023-02-14 20:47:10 +0100 | <geekosaur> | % fail "oops" |
2023-02-14 20:47:10 +0100 | <yahb2> | *** Exception: user error (oops) |
2023-02-14 20:47:15 +0100 | <Joao003> | > fail "hehe" |
2023-02-14 20:47:17 +0100 | <lambdabot> | error: |
2023-02-14 20:47:17 +0100 | <lambdabot> | • Ambiguous type variables ‘m0’, |
2023-02-14 20:47:17 +0100 | <lambdabot> | ‘a0’ arising from a use of ‘show_M46332160034... |
2023-02-14 20:47:20 +0100 | <[exa]> | [] is extreme way of saying you have so much of nothing to say that it's not even worth the quotes |
2023-02-14 20:47:26 +0100 | <Joao003> | % fail "hehe" |
2023-02-14 20:47:26 +0100 | <yahb2> | *** Exception: user error (hehe) |
2023-02-14 20:47:30 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2023-02-14 20:47:47 +0100 | <EvanR> | it takes a message due to ancient attempts to convenience |
2023-02-14 20:47:50 +0100 | <geekosaur> | > fail "oops" :: Maybe () |
2023-02-14 20:47:52 +0100 | <lambdabot> | Nothing |
2023-02-14 20:47:54 +0100 | <EvanR> | attempts at convenience |
2023-02-14 20:47:54 +0100 | <Joao003> | [exa]: lol |
2023-02-14 20:48:05 +0100 | <geekosaur> | > fail "oops" :: Either String () |
2023-02-14 20:48:06 +0100 | <lambdabot> | error: |
2023-02-14 20:48:06 +0100 | <lambdabot> | • No instance for (MonadFail (Either String)) |
2023-02-14 20:48:06 +0100 | <lambdabot> | arising from a use of ‘fail’ |
2023-02-14 20:48:13 +0100 | <Joao003> | > fail "oopsie!" :: String |
2023-02-14 20:48:13 +0100 | <geekosaur> | right, that got removed |
2023-02-14 20:48:14 +0100 | <lambdabot> | "" |
2023-02-14 20:48:30 +0100 | <EvanR> | it doesn't even work xD |
2023-02-14 20:48:36 +0100 | <geekosaur> | used to be Left "oops" |
2023-02-14 20:48:39 +0100 | <Joao003> | wth is monadfail anyways |
2023-02-14 20:48:45 +0100 | <dsal> | I feel like I have to relearn the MonadFail Either thing all the time. |
2023-02-14 20:48:57 +0100 | <[exa]> | Joao003: a constructive concentration of failure opportunities |
2023-02-14 20:48:57 +0100 | <EvanR> | that's where fail got moved to, it used to be in the Monad class |
2023-02-14 20:48:58 +0100 | <Joao003> | @src MonadFail |
2023-02-14 20:48:58 +0100 | <lambdabot> | Source not found. I am sorry. |
2023-02-14 20:49:15 +0100 | urdh | (~urdh@user/urdh) (Quit: Boom!) |
2023-02-14 20:49:23 +0100 | <EvanR> | now monad is just (>>=) |
2023-02-14 20:49:23 +0100 | <Joao003> | so basically a list of ways to FAIL? |
2023-02-14 20:49:34 +0100 | <Joao003> | what about (>>) |
2023-02-14 20:49:54 +0100 | <EvanR> | ok >> can be implemented if there's a more efficient version than |
2023-02-14 20:49:57 +0100 | <EvanR> | @src (>>) |
2023-02-14 20:49:57 +0100 | <lambdabot> | m >> k = m >>= \_ -> k |
2023-02-14 20:50:13 +0100 | <EvanR> | but it's not the core ability of monad |
2023-02-14 20:50:13 +0100 | <dsal> | But that may go away as well since it's unnecessary. |
2023-02-14 20:50:16 +0100 | <Joao003> | welp >> is just a semicolon in c |
2023-02-14 20:50:29 +0100 | <[exa]> | fail is a lack of success and there's 0 successes in [] |
2023-02-14 20:50:53 +0100 | <Joao003> | and there's 0 successes in Nothing |
2023-02-14 20:51:06 +0100 | ft | (~ft@p3e9bc443.dip0.t-ipconnect.de) |
2023-02-14 20:51:08 +0100 | <EvanR> | if you want to really understand stuff, probably quit with the theories that "x is just a y" unless it really is just a y (sometimes it is, usually when "is just a" comes up... it's not!) |
2023-02-14 20:51:20 +0100 | urdh | (~urdh@user/urdh) |
2023-02-14 20:51:21 +0100 | <EvanR> | except for the stupid endofunctor category quote |
2023-02-14 20:51:40 +0100 | <Joao003> | yeah it's stupid |
2023-02-14 20:52:56 +0100 | <Joao003> | the category of endofunctors must contain a endofunctor in the category of endofunctors |
2023-02-14 20:53:29 +0100 | <Joao003> | how the hell are you supposed to find a monoid in a place with only endofunctors |
2023-02-14 20:53:58 +0100 | <dminuoso_> | Joao003: Its a rather complex construction, that you wont be able to understand without gaining a strong footing in category theory first. |
2023-02-14 20:54:29 +0100 | <dminuoso_> | Joao003: the term `monoid` means something different, the joke is inaccurately told. |
2023-02-14 20:54:35 +0100 | <Joao003> | lol |
2023-02-14 20:55:17 +0100 | <Joao003> | so just provide an accurate definition of a monad please |
2023-02-14 20:55:35 +0100 | <dminuoso_> | A typeclass with two functions and a bunch of laws. |
2023-02-14 20:55:40 +0100 | <Joao003> | lol |
2023-02-14 20:55:52 +0100 | <dsal> | That's a sort of long-running joke. People want to understand Monad in some way other than its definition. |
2023-02-14 20:55:54 +0100 | <Joao003> | for me i understand it as a box which you can put values in |
2023-02-14 20:55:59 +0100 | <dminuoso_> | Joao003: No, its not. |
2023-02-14 20:56:04 +0100 | <dminuoso_> | Joao003: drop all intuition, and dont look for one. |
2023-02-14 20:56:33 +0100 | <dminuoso_> | Joao003: Let me give you a different picture. |
2023-02-14 20:56:38 +0100 | <dminuoso_> | Imagine Haskell had the following two functions: |
2023-02-14 20:56:50 +0100 | <Joao003> | what are they |
2023-02-14 20:56:58 +0100 | <dminuoso_> | `nextIO :: IO a -> (a -> IO b) -> IO b` which takes one IO action, and sequences its result with another action |
2023-02-14 20:57:16 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-02-14 20:57:17 +0100 | <dminuoso_> | and `pureIO :: a -> IO a` that creates an IO action that, as its only effect, will immediately produce its argument as a result. |
2023-02-14 20:57:34 +0100 | <dminuoso_> | Are these functions complicated? confusing? |
2023-02-14 20:57:41 +0100 | <Joao003> | nope. |
2023-02-14 20:57:45 +0100 | <dminuoso_> | Good. |
2023-02-14 20:58:04 +0100 | <dminuoso_> | Joao003: would you agree that you dont need any understanding of category theory in order to use nextIO or pureIO? |
2023-02-14 20:58:10 +0100 | <Joao003> | yes. |
2023-02-14 20:58:16 +0100 | <dminuoso_> | Superb. |
2023-02-14 20:58:29 +0100 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
2023-02-14 20:58:58 +0100 | <dminuoso_> | Joao003: I will use a particular phrasing now: The function (>>=) at m ~ IO, is `nextIO` and `return` at m ~ IO is `pureIO` |
2023-02-14 20:59:02 +0100 | <dminuoso_> | By `at` I mean |
2023-02-14 20:59:06 +0100 | <dminuoso_> | % :t (>>=) |
2023-02-14 20:59:06 +0100 | <yahb2> | (>>=) :: Monad m => m a -> (a -> m b) -> m b |
2023-02-14 20:59:08 +0100 | <dminuoso_> | % :t return |
2023-02-14 20:59:08 +0100 | <yahb2> | return :: Monad m => a -> m a |
2023-02-14 20:59:13 +0100 | <dminuoso_> | Setting `m` to that particular type |
2023-02-14 20:59:32 +0100 | <Joao003> | gives us our 2 functions |
2023-02-14 20:59:39 +0100 | <dminuoso_> | Joao003: So you see, you dont need to undertand what Monad is about, in order to use its methods at a particular instance. |
2023-02-14 20:59:53 +0100 | <dminuoso_> | You just need to know that `Monad IO` is a thing, and that in its instance (>>=) and return do those two things. |
2023-02-14 21:00:12 +0100 | <Joao003> | And that Monad [] is a thing |
2023-02-14 21:00:13 +0100 | <dminuoso_> | In fact, you dont even need to know about all the other instances, in order to use (>>=) and return at m ~ IO. |
2023-02-14 21:00:15 +0100 | <Joao003> | etc. |
2023-02-14 21:00:18 +0100 | <dminuoso_> | Joao003: Well only if thats relevant to you. |
2023-02-14 21:00:23 +0100 | <dminuoso_> | That's the point sort of. |
2023-02-14 21:00:33 +0100 | <dminuoso_> | These instances only matter to you if you want to *use* them |
2023-02-14 21:00:39 +0100 | <dminuoso_> | Each instance has a particular implementation |
2023-02-14 21:01:16 +0100 | <dminuoso_> | So (>>=) at [] is a concatMap, which will take a function `(a -> [b])` map over a list of `[a]`, producing some nested list [[b]], and flatten it (by concatenating all inner lists together) |
2023-02-14 21:01:32 +0100 | <dminuoso_> | And `return` produces a singleton list containing just its argument. |
2023-02-14 21:01:46 +0100 | <dminuoso_> | Whether or not you need to know this, is only depending on whether you actually care to use this behavior or not. |
2023-02-14 21:01:47 +0100 | <Joao003> | `return` == `pure` |
2023-02-14 21:02:06 +0100 | yahb2 | (~yahb2@2a01:4f8:c0c:5c7b::2) (Remote host closed the connection) |
2023-02-14 21:02:12 +0100 | <Joao003> | and just know that `pure` is a better name but still doesn't solve the problem |
2023-02-14 21:02:17 +0100 | <dminuoso_> | sure. |
2023-02-14 21:02:18 +0100 | yahb2 | (~yahb2@2a01:4f8:c0c:5c7b::2) |
2023-02-14 21:02:32 +0100 | <dminuoso_> | Joao003: all Im saying is, you dont need to care to understand what Monad is really to start with Haskell |
2023-02-14 21:02:38 +0100 | <dminuoso_> | Its rather the opposite thing: |
2023-02-14 21:02:57 +0100 | <tomsmeding> | (the yahb2 lots of "Oops" issue has been resolved I think) |
2023-02-14 21:03:05 +0100 | <dminuoso_> | If you need to sequence two IO actions, then the `Monad` methods is how you do it, using the `Monad IO` instance. Why the operator is named >>= or why Monad is named Monad is irrelevant |
2023-02-14 21:03:12 +0100 | <Joao003> | if i chose a name for `pure` it'd be `wrap` |
2023-02-14 21:03:23 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) (Ping timeout: 248 seconds) |
2023-02-14 21:03:28 +0100 | <dminuoso_> | we could have named `Monad` just `FooThing`, it wouldnt make a different |
2023-02-14 21:03:40 +0100 | <dminuoso_> | Joao003: I think its less important to attach names to these things, because the behavior differs. |
2023-02-14 21:03:52 +0100 | <dminuoso_> | I can think of a bunch of instances where `pure` doesnt really "wrap" something. |
2023-02-14 21:04:04 +0100 | <dminuoso_> | What `pure` does depends on the instance. |
2023-02-14 21:04:17 +0100 | <Joao003> | you don't even need to care that monad exists. just care about (>>=) and `return`. |
2023-02-14 21:04:33 +0100 | <dminuoso_> | Joao003: In a simpler world, we wouldnt really have Monad at all |
2023-02-14 21:04:37 +0100 | <dminuoso_> | Instead we would have functions like |
2023-02-14 21:04:44 +0100 | <dminuoso_> | nextIO :: IO a -> (a -> IO b) -> IO b |
2023-02-14 21:04:50 +0100 | <dminuoso_> | concatMap :: [a] -> (a -> [b]) -> [b] |
2023-02-14 21:05:08 +0100 | <Joao003> | SO WHY DOES MONAD EXIST THEN |
2023-02-14 21:05:11 +0100 | <dminuoso_> | nextIfJust ::: Maybe a -> (a -> Maybe b) -> Maybe b |
2023-02-14 21:05:22 +0100 | <dminuoso_> | Joao003: That's a good question! |
2023-02-14 21:05:31 +0100 | oldfashionedcow | (~Rahul_San@user/oldfashionedcow) |
2023-02-14 21:05:31 +0100 | <geekosaur> | because all of these have a common pattern |
2023-02-14 21:05:40 +0100 | <Joao003> | yeah |
2023-02-14 21:05:41 +0100 | mauke_ | (~mauke@user/mauke) |
2023-02-14 21:05:58 +0100 | <Joao003> | they host a value inside or not at all |
2023-02-14 21:05:59 +0100 | mauke_ | mauke[i] |
2023-02-14 21:06:01 +0100 | <dminuoso_> | Joao003: two things. convenience - all the functions above have a similar shape - and they follow the same set of laws |
2023-02-14 21:06:05 +0100 | <dminuoso_> | but thats not really a good reason |
2023-02-14 21:06:06 +0100 | <geekosaur> | IO has no value inside |
2023-02-14 21:06:08 +0100 | <dminuoso_> | the other thing is |
2023-02-14 21:06:34 +0100 | <dminuoso_> | Joao003: There is a very deep common theme connecting all of these. And what Monad is mainly useful for, is not for you as a library consumer, but its more about library authors really. |
2023-02-14 21:06:36 +0100 | gpncarl_ | (~gpncarl@210.12.195.6) |
2023-02-14 21:06:43 +0100 | <dminuoso_> | The one thing you cant do with `nextIO`, `concatMap` and `nextIfJust`... |
2023-02-14 21:06:49 +0100 | <dminuoso_> | Is write a function that works over any such function |
2023-02-14 21:07:08 +0100 | <Joao003> | so (>>=) exists |
2023-02-14 21:07:23 +0100 | <dminuoso_> | Right, its chiefly useful for when you yourself write code that works polymorphically over *any* Monad instance. |
2023-02-14 21:07:30 +0100 | <geekosaur> | IO composes programs, and (a -> IO b) is a callback function appended to a program |
2023-02-14 21:07:33 +0100 | <Joao003> | also don't care about (=<<) it's just flip (>>=) |
2023-02-14 21:07:46 +0100 | <dminuoso_> | But if you yourself instantiate (>>=) at particular types, its not really useful much in itself, but its handy to have fewer names to remember. |
2023-02-14 21:07:56 +0100 | <dminuoso_> | 21:05:08 Joao003 | SO WHY DOES MONAD EXIST THEN |
2023-02-14 21:08:23 +0100 | <dminuoso_> | ^- crucially that surprise I think is important to understand. |
2023-02-14 21:08:30 +0100 | <Joao003> | but most of the time we just use do-notation |
2023-02-14 21:08:36 +0100 | <dminuoso_> | Well thats the thing |
2023-02-14 21:08:42 +0100 | <dminuoso_> | You can use do-notation with non-IO too! |
2023-02-14 21:08:48 +0100 | <Joao003> | ik |
2023-02-14 21:08:57 +0100 | <mauke[i]> | so how about monad transformers |
2023-02-14 21:09:08 +0100 | <Joao003> | do-notation is just syntactic sugar for (>>=) and (>>) |
2023-02-14 21:09:12 +0100 | <dminuoso_> | And if you do it long enough, with different instances (!), you automatically begin to develop an intuition what Monad really abstracts over. |
2023-02-14 21:09:35 +0100 | <dminuoso_> | Joao003: But you wont understand it by trying to just learn the abstract thing. Just use individual instances when you need them, and over time it will just click. |
2023-02-14 21:09:37 +0100 | <dminuoso_> | And the thing if |
2023-02-14 21:09:43 +0100 | <dminuoso_> | That `click` is not really important |
2023-02-14 21:09:54 +0100 | mei | (~mei@user/mei) (Quit: mei) |
2023-02-14 21:10:07 +0100 | <dminuoso_> | Undertanding of Monad is not prerequisite to using IO, to using lists, to using Maybe, etc.. |
2023-02-14 21:10:26 +0100 | <geekosaur> | the "click" really matters only if you want to define your own monad from scratch. which is vanishingly rare |
2023-02-14 21:10:37 +0100 | <Joao003> | monad is basically just a house with a few functions living on it |
2023-02-14 21:11:27 +0100 | gpncarl_ | (~gpncarl@210.12.195.6) (Ping timeout: 255 seconds) |
2023-02-14 21:11:41 +0100 | <Joao003> | sorry ONE FUNCTION |
2023-02-14 21:11:43 +0100 | <mauke[i]> | one of my pet peeves is referring to "the IO monad" all the time, as if being a monad were the important part and not that it's IO |
2023-02-14 21:12:09 +0100 | <mauke[i]> | it's like calling [] "the list functor" |
2023-02-14 21:12:16 +0100 | <Joao003> | IO is really just an action that causes side effects and may or not return a value |
2023-02-14 21:12:33 +0100 | <geekosaur> | not even causing side effects. that's up to the implementation |
2023-02-14 21:13:01 +0100 | <geekosaur> | the IO monad is a monad solely for sequencing without requiring you to set up manual data dependencies |
2023-02-14 21:13:10 +0100 | <geekosaur> | everything else is IO's doing |
2023-02-14 21:13:23 +0100 | <Joao003> | imagine having (>>>=) just like we have (,,) |
2023-02-14 21:13:27 +0100 | <dminuoso_> | I think one story not frequently told, is how JavaScript async works. |
2023-02-14 21:13:56 +0100 | <mauke[i]> | hoho |
2023-02-14 21:13:56 +0100 | <Joao003> | ok if you're gonna talk js go to #javascript |
2023-02-14 21:13:58 +0100 | <dminuoso_> | Because JavaScript async sort of is a good stepping stone that displays this sort of "Oh hold on, there's a common pattern", and that seems to be easily picked up by thousands of developers. |
2023-02-14 21:14:18 +0100 | <dminuoso_> | I mean yes, on a formal level its ill constructed, but honestly sometimes a bit of squinting helps learning. |
2023-02-14 21:14:19 +0100 | <mauke[i]> | I've been thinking about implementing async/await in a new programming language, but mentally it always boils down to >>= for me |
2023-02-14 21:14:27 +0100 | <dminuoso_> | Okay "how it works" was ill phrased |
2023-02-14 21:14:39 +0100 | <dminuoso_> | but rather why JS has this `async` keyword. |
2023-02-14 21:15:02 +0100 | urdh | (~urdh@user/urdh) (Quit: Boom!) |
2023-02-14 21:15:05 +0100 | <Joao003> | is js async just like goroutines in go |
2023-02-14 21:15:31 +0100 | king_gs | (~Thunderbi@187.201.41.239) |
2023-02-14 21:15:42 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-02-14 21:16:19 +0100 | son0p | (~ff@181.136.122.143) (Remote host closed the connection) |
2023-02-14 21:16:56 +0100 | mei | (~mei@user/mei) |
2023-02-14 21:17:19 +0100 | son0p | (~ff@181.136.122.143) |
2023-02-14 21:18:06 +0100 | <dminuoso_> | Sometimes I do wonder, if base had (>>=) and return instantiated at some of the basic types `Maybe`, `Either a`, `IO` and `[]` bound to functions like `nextIfJust`, `nextIfRight`, nextIO`, and `concatMap`, and had tutorials explain "do notations just desugars into uses of `nextIO` for IO", perhaps more confusion could have been avoided. |
2023-02-14 21:18:42 +0100 | <dminuoso_> | The term `monad` can be banished from early chapters in learning resources |
2023-02-14 21:19:35 +0100 | <mauke[i]> | for bootstrapping I would straight up restrict >>=/>>/return to IO |
2023-02-14 21:19:35 +0100 | <darkling> | Except, presumably, for the ones that specifically set out to describe why a monad is like a banana... |
2023-02-14 21:20:05 +0100 | <mauke[i]> | do-notation comes later (also restricted to IO) |
2023-02-14 21:20:13 +0100 | <Joao003> | darkling: wait what |
2023-02-14 21:21:48 +0100 | <darkling> | There's a load of monad tutorials (and blog posts) out there that make misleading or confusing analogies... |
2023-02-14 21:21:56 +0100 | <dminuoso_> | mauke[i]: Sure, I think there's some actual relevant haddock improvements out there. |
2023-02-14 21:22:17 +0100 | <dminuoso_> | Imagine a typeclass instance could be annotated more thoroughly, and the haddock page had a slider or a dropdown thing, where you can just select an instance |
2023-02-14 21:22:29 +0100 | <dminuoso_> | And when you selecft it, it will display the instantiated types, and the instance specific documentation instead. |
2023-02-14 21:22:31 +0100 | <darkling> | "Monads are just like breezeblocks", or "You can think of a Monad as a kind of aardvark." :) |
2023-02-14 21:22:49 +0100 | <dminuoso_> | Better instance documentation is something I have been wanting for a while |
2023-02-14 21:23:06 +0100 | <dminuoso_> | Perhaps I can dedicate some of my work time to improving haddock to that end. |
2023-02-14 21:23:24 +0100 | <geekosaur> | then there's dons mocking monad tutorials with a spacesuit comparison and people running with it |
2023-02-14 21:23:51 +0100 | <dminuoso_> | by `mocking monad tutorials`, are you talking about a tutorial explaining how to mock monadic code using a spacesuit comparison? |
2023-02-14 21:23:54 +0100 | dminuoso_ | is not sure |
2023-02-14 21:24:07 +0100 | <dminuoso_> | either way seems hilarious. |
2023-02-14 21:24:11 +0100 | <geekosaur> | no, mockery about monad tutorials |
2023-02-14 21:24:16 +0100 | <geekosaur> | s/about/of/ |
2023-02-14 21:24:18 +0100 | <dminuoso_> | funny, but less interesting. |
2023-02-14 21:27:20 +0100 | pavonia | (~user@user/siracusa) |
2023-02-14 21:27:41 +0100 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2023-02-14 21:27:53 +0100 | programmeruser | (21612@2a01:4f8:141:1272::2) |
2023-02-14 21:28:58 +0100 | urdh | (~urdh@user/urdh) |
2023-02-14 21:31:38 +0100 | nek0 | (~nek0@2a01:4f8:222:2b41::12) |
2023-02-14 21:33:05 +0100 | biberu | (~biberu@user/biberu) (Read error: Connection reset by peer) |
2023-02-14 21:33:09 +0100 | <Joao003> | anyone has any uses of Ordering? |
2023-02-14 21:33:38 +0100 | <mauke[i]> | :t sortBy |
2023-02-14 21:33:39 +0100 | <lambdabot> | (a -> a -> Ordering) -> [a] -> [a] |
2023-02-14 21:33:57 +0100 | <mauke[i]> | :t comparing |
2023-02-14 21:33:58 +0100 | <lambdabot> | Ord a => (b -> a) -> b -> b -> Ordering |
2023-02-14 21:34:07 +0100 | acidjnk | (~acidjnk@p200300d6e715c408e15a683b71611690.dip0.t-ipconnect.de) |
2023-02-14 21:34:11 +0100 | <Joao003> | why can't we just use pairs of booleans |
2023-02-14 21:34:12 +0100 | <geekosaur> | usually we use its Monoid instance to chain together comparisons for e.g. sort, which gives you primary and secondary (and tertiary, etc.) keys |
2023-02-14 21:34:23 +0100 | urdh | (~urdh@user/urdh) (Quit: Boom!) |
2023-02-14 21:34:58 +0100 | <mauke[i]> | Ordering has 3 values. pairs of booleans is 4 values |
2023-02-14 21:35:00 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine) |
2023-02-14 21:35:25 +0100 | <mauke[i]> | > sortBy (comparing length) (words "when the truth is found to be lies") |
2023-02-14 21:35:28 +0100 | <lambdabot> | ["is","to","be","the","when","lies","truth","found"] |
2023-02-14 21:35:37 +0100 | <Joao003> | but (True, True) would probably be unused |
2023-02-14 21:36:11 +0100 | <geekosaur> | C uses <-, 0, >0 for the "ordering" tristate |
2023-02-14 21:36:16 +0100 | <Joao003> | (True, True) could be used for something like "can't compare!" |
2023-02-14 21:36:19 +0100 | <geekosaur> | er, "<0" |
2023-02-14 21:36:42 +0100 | <Joao003> | any <=> fans out there |
2023-02-14 21:36:58 +0100 | <mauke[i]> | :t compare |
2023-02-14 21:36:59 +0100 | <lambdabot> | Ord a => a -> a -> Ordering |
2023-02-14 21:37:10 +0100 | <geekosaur> | also you invite boolean blindness. which pair of bools means which? |
2023-02-14 21:37:11 +0100 | <mauke[i]> | ^ that's basically <=> |
2023-02-14 21:37:19 +0100 | <geekosaur> | Ordering is self-descriptive |
2023-02-14 21:37:23 +0100 | <smol-hors> | Raku has leg |
2023-02-14 21:37:29 +0100 | <smol-hors> | the leg operator |
2023-02-14 21:37:34 +0100 | <geekosaur> | so did earlier versions of perl |
2023-02-14 21:37:36 +0100 | Guest35 | (~Guest35@mob-5-91-18-33.net.vodafone.it) |
2023-02-14 21:37:40 +0100 | <smol-hors> | ahh |
2023-02-14 21:37:42 +0100 | <geekosaur> | leg for lexical, <-> for numeric |
2023-02-14 21:37:46 +0100 | <smol-hors> | ye |
2023-02-14 21:37:47 +0100 | <mauke[i]> | wat |
2023-02-14 21:37:50 +0100 | <Joao003> | (a < b, a > b) |
2023-02-14 21:37:50 +0100 | <geekosaur> | <=> |
2023-02-14 21:37:55 +0100 | <mauke[i]> | <=> for numbers, cmp for strings |
2023-02-14 21:37:57 +0100 | <mauke[i]> | in perl, that is |
2023-02-14 21:37:58 +0100 | <geekosaur> | not typing well today |
2023-02-14 21:38:04 +0100 | <mauke[i]> | no idea what leg is |
2023-02-14 21:38:05 +0100 | <geekosaur> | oh, sammit |
2023-02-14 21:38:08 +0100 | <geekosaur> | dammit |
2023-02-14 21:38:10 +0100 | Guest35 | (~Guest35@mob-5-91-18-33.net.vodafone.it) (Client Quit) |
2023-02-14 21:38:14 +0100 | <geekosaur> | can't type or remember |
2023-02-14 21:38:17 +0100 | <Joao003> | lol |
2023-02-14 21:38:18 +0100 | <geekosaur> | bleh |
2023-02-14 21:38:19 +0100 | <mauke[i]> | oh, less-equal-greater |
2023-02-14 21:38:39 +0100 | ddellacosta | (~ddellacos@146.70.166.203) (Quit: WeeChat 3.8) |
2023-02-14 21:38:58 +0100 | Guest35 | (~Guest35@mob-5-91-18-33.net.vodafone.it) |
2023-02-14 21:39:02 +0100 | <Joao003> | any const users |
2023-02-14 21:39:03 +0100 | <geekosaur> | probably for te best I've been doing more haskell than perl if it's bitrotting on me |
2023-02-14 21:39:17 +0100 | <mauke[i]> | Joao003: const is just pure in the naked Reader monad |
2023-02-14 21:39:31 +0100 | Guest35 | (~Guest35@mob-5-91-18-33.net.vodafone.it) (Client Quit) |
2023-02-14 21:39:44 +0100 | <Joao003> | no i'm saying const in prelude |
2023-02-14 21:39:49 +0100 | <mauke[i]> | yes |
2023-02-14 21:40:03 +0100 | <mauke[i]> | > const 42 "x" |
2023-02-14 21:40:05 +0100 | <lambdabot> | 42 |
2023-02-14 21:40:08 +0100 | <mauke[i]> | > pure 42 "x" |
2023-02-14 21:40:10 +0100 | <lambdabot> | 42 |
2023-02-14 21:40:11 +0100 | Guest97 | (~Guest97@cgn-89-1-59-168.nc.de) |
2023-02-14 21:40:23 +0100 | <Joao003> | > const id 42 "x" |
2023-02-14 21:40:26 +0100 | <lambdabot> | "x" |
2023-02-14 21:40:44 +0100 | <mauke[i]> | > pure ask 42 "x" |
2023-02-14 21:40:46 +0100 | <lambdabot> | "x" |
2023-02-14 21:40:50 +0100 | phma | (phma@2001:5b0:210d:bd78:7d2a:52e1:c274:2d5) (*.net *.split) |
2023-02-14 21:40:50 +0100 | rodental | (~rodental@38.146.5.222) (Remote host closed the connection) |
2023-02-14 21:40:57 +0100 | <Joao003> | WHY THE HELL IS ASK A THING |
2023-02-14 21:41:00 +0100 | <Joao003> | @src ask |
2023-02-14 21:41:00 +0100 | <lambdabot> | Source not found. BOB says: You seem to have forgotten your passwd, enter another! |
2023-02-14 21:41:03 +0100 | <Joao003> | wth |
2023-02-14 21:41:04 +0100 | <mauke[i]> | :t ask |
2023-02-14 21:41:05 +0100 | <lambdabot> | MonadReader r m => m r |
2023-02-14 21:41:11 +0100 | <Joao003> | what the fu |
2023-02-14 21:41:14 +0100 | phma | (phma@2001:5b0:210d:bd78:7d2a:52e1:c274:2d5) |
2023-02-14 21:41:18 +0100 | <mauke[i]> | it's for when you want to be polite |
2023-02-14 21:41:45 +0100 | <Joao003> | but why be polite to your pc when you can torture it and it's still fine |
2023-02-14 21:42:27 +0100 | <Joao003> | i bet there's please |
2023-02-14 21:42:31 +0100 | <Joao003> | :t please |
2023-02-14 21:42:32 +0100 | <lambdabot> | error: |
2023-02-14 21:42:32 +0100 | <lambdabot> | • Variable not in scope: please |
2023-02-14 21:42:32 +0100 | <lambdabot> | • Perhaps you meant one of these: |
2023-02-14 21:42:34 +0100 | <Joao003> | nope |
2023-02-14 21:43:01 +0100 | kuribas | (~user@ptr-17d51ep3y07q376bohf.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1)) |
2023-02-14 21:43:01 +0100 | <Joao003> | @hoogle please |
2023-02-14 21:43:02 +0100 | <lambdabot> | Yesod.Auth.Message PleaseProvidePassword :: AuthMessage |
2023-02-14 21:43:02 +0100 | <lambdabot> | Yesod.Auth.Message PleaseProvideUsername :: AuthMessage |
2023-02-14 21:43:02 +0100 | <lambdabot> | Codec.BMP ErrorInternalErrorPleaseReport :: Error |
2023-02-14 21:43:13 +0100 | <mauke[i]> | :t ask `asTypeOf` asks |
2023-02-14 21:43:13 +0100 | <EvanR> | Joao003, ask retrieves the thing given to a Reader or ReaderT |
2023-02-14 21:43:14 +0100 | <lambdabot> | (r -> a) -> r -> a |
2023-02-14 21:43:24 +0100 | <Joao003> | :t asks |
2023-02-14 21:43:26 +0100 | <lambdabot> | MonadReader r m => (r -> a) -> m a |
2023-02-14 21:43:38 +0100 | <Joao003> | rama |
2023-02-14 21:43:40 +0100 | <EvanR> | asks hits it with it with a function first, pretty handy |
2023-02-14 21:43:59 +0100 | kurbus | (~kurbus@user/kurbus) (Quit: Client closed) |
2023-02-14 21:44:10 +0100 | Guest97 | (~Guest97@cgn-89-1-59-168.nc.de) (Quit: Client closed) |
2023-02-14 21:44:20 +0100 | <Joao003> | > (ask `asTypeOf` asks) (+1) 1 |
2023-02-14 21:44:22 +0100 | <lambdabot> | 2 |
2023-02-14 21:44:24 +0100 | <Joao003> | lol |
2023-02-14 21:44:27 +0100 | <Joao003> | its just id\ |
2023-02-14 21:44:27 +0100 | <dsal> | Joao003: I use all of these things, but that's a weird way to examine a language. I use them because I need to do the thing that they do. I didn't start writing a program and try to figure out how to wedge `ask` into it. |
2023-02-14 21:44:44 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2023-02-14 21:44:51 +0100 | <mauke[i]> | :t [id, ($), ask, asks] |
2023-02-14 21:44:52 +0100 | <lambdabot> | [(a -> b) -> a -> b] |
2023-02-14 21:44:53 +0100 | <dsal> | There are a few things I can't imagine a use for, but have been obvious when I've needed them so I used them. |
2023-02-14 21:45:02 +0100 | <EvanR> | so much bad go out there that uses languages features because they exist (PHP...) |
2023-02-14 21:45:14 +0100 | <EvanR> | instead of using what's prudent to accomplish the task |
2023-02-14 21:45:17 +0100 | <mauke[i]> | PHP is indeed the worst go |
2023-02-14 21:45:20 +0100 | <EvanR> | bad code* |
2023-02-14 21:45:49 +0100 | <EvanR> | maybe go is on the hook for this I don't know |
2023-02-14 21:46:56 +0100 | ravamrt | (~ravamrt@112.134.195.223) (Ping timeout: 248 seconds) |
2023-02-14 21:47:02 +0100 | <Joao003> | :t \ f x -> f . fst $ (x, ()) |
2023-02-14 21:47:04 +0100 | <lambdabot> | (b -> c) -> b -> c |
2023-02-14 21:47:43 +0100 | <EvanR> | (f . fst) (x, ()) |
2023-02-14 21:48:04 +0100 | <Joao003> | > ((+1) . fst) (1, ()) |
2023-02-14 21:48:05 +0100 | <lambdabot> | 2 |
2023-02-14 21:48:16 +0100 | myyo | (~myyo@71-211-142-215.hlrn.qwest.net) |
2023-02-14 21:48:26 +0100 | <Joao003> | :t [id, \ f x -> f . fst $ (x, ())] |
2023-02-14 21:48:27 +0100 | <lambdabot> | [(b -> c) -> b -> c] |
2023-02-14 21:50:27 +0100 | <Joao003> | nice that haskell expands id :: a -> a to id :: (a -> b) -> a -> b |
2023-02-14 21:54:39 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 255 seconds) |
2023-02-14 21:55:38 +0100 | urdh | (~urdh@user/urdh) |
2023-02-14 21:55:47 +0100 | urdh | (~urdh@user/urdh) (Remote host closed the connection) |
2023-02-14 21:55:54 +0100 | accord | (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2023-02-14 21:57:38 +0100 | biberu | (~biberu@user/biberu) |
2023-02-14 21:58:01 +0100 | ddellacosta | (~ddellacos@146.70.166.203) |
2023-02-14 21:59:18 +0100 | lyle | (~lyle@104.246.145.237) (Quit: WeeChat 3.8) |
2023-02-14 22:10:24 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds) |
2023-02-14 22:11:13 +0100 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-02-14 22:13:59 +0100 | AmyMalik | MelMalik |
2023-02-14 22:18:42 +0100 | <EvanR> | Joao003, it's a specialization |
2023-02-14 22:19:37 +0100 | urdh | (~urdh@user/urdh) |
2023-02-14 22:20:21 +0100 | gpncarl_ | (~gpncarl@210.12.195.6) |
2023-02-14 22:21:42 +0100 | urdh | (~urdh@user/urdh) (Client Quit) |
2023-02-14 22:23:20 +0100 | urdh | (~urdh@user/urdh) |
2023-02-14 22:25:15 +0100 | gpncarl_ | (~gpncarl@210.12.195.6) (Ping timeout: 255 seconds) |
2023-02-14 22:25:34 +0100 | <Joao003> | Yo let's find weird synonyms for id |
2023-02-14 22:28:12 +0100 | eggplantade | (~Eggplanta@104.55.37.220) |
2023-02-14 22:28:25 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
2023-02-14 22:28:44 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
2023-02-14 22:30:38 +0100 | <mauke[i]> | :t fix . const |
2023-02-14 22:30:39 +0100 | <lambdabot> | c -> c |
2023-02-14 22:32:29 +0100 | eggplantade | (~Eggplanta@104.55.37.220) (Ping timeout: 252 seconds) |
2023-02-14 22:32:33 +0100 | <geekosaur> | :t runReader ask |
2023-02-14 22:32:34 +0100 | <lambdabot> | a -> a |
2023-02-14 22:33:39 +0100 | <dsal> | :t flip const undefined |
2023-02-14 22:33:40 +0100 | <lambdabot> | c -> c |
2023-02-14 22:34:11 +0100 | zeenk | (~zeenk@2a02:2f04:a214:1e00::7fe) (Quit: Konversation terminated!) |
2023-02-14 22:34:16 +0100 | <dsal> | I like the `fix . const` one. |
2023-02-14 22:35:13 +0100 | npmania | (~Thunderbi@45.8.223.203) (Quit: npmania) |
2023-02-14 22:35:34 +0100 | npmania | (~Thunderbi@45.8.223.203) |
2023-02-14 22:37:11 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) |
2023-02-14 22:37:19 +0100 | andrewboltachev | (~andrey@178.141.125.176) (Quit: Leaving.) |
2023-02-14 22:37:55 +0100 | ystael | (~ystael@user/ystael) (Ping timeout: 256 seconds) |
2023-02-14 22:38:39 +0100 | npmania | (~Thunderbi@45.8.223.203) (Client Quit) |
2023-02-14 22:39:00 +0100 | ystael | (~ystael@user/ystael) |
2023-02-14 22:39:00 +0100 | npmania | (~Thunderbi@45.8.223.203) |
2023-02-14 22:41:19 +0100 | jinsun | (~jinsun@user/jinsun) (Ping timeout: 252 seconds) |
2023-02-14 22:42:56 +0100 | zer0bitz | (~zer0bitz@2001:2003:f443:d600:50e1:610d:453c:bdaa) (Read error: Connection reset by peer) |
2023-02-14 22:43:15 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-176-170.46.114.pool.telefonica.de) (Ping timeout: 255 seconds) |
2023-02-14 22:45:03 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds) |
2023-02-14 22:45:12 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-001-228.46.114.pool.telefonica.de) |
2023-02-14 22:49:10 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
2023-02-14 22:52:23 +0100 | Guest51 | (~Guest51@76.136.211.144) |
2023-02-14 22:56:36 +0100 | Joao003 | (~Joao003@2804:840:8309:8700:b01f:79f9:8910:d564) (Quit: Leaving) |
2023-02-14 22:57:10 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) |
2023-02-14 22:57:41 +0100 | Guest51 | (~Guest51@76.136.211.144) (Quit: Client closed) |
2023-02-14 22:58:38 +0100 | <zero> | i'm still trying to wrap my head around it |
2023-02-14 22:59:21 +0100 | Guest35 | (~Guest35@2601:189:8180:1870:f926:c45d:65c3:ea80) |
2023-02-14 23:01:28 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
2023-02-14 23:01:38 +0100 | <zero> | i get it |
2023-02-14 23:02:17 +0100 | <zero> | > const 'a' (const undefined) |
2023-02-14 23:02:19 +0100 | <lambdabot> | 'a' |
2023-02-14 23:03:27 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-02-14 23:03:35 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
2023-02-14 23:06:22 +0100 | Guest35 | (~Guest35@2601:189:8180:1870:f926:c45d:65c3:ea80) (Quit: Client closed) |
2023-02-14 23:14:18 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) |
2023-02-14 23:14:21 +0100 | <Inst__> | hey [exa], can i ask you something? |
2023-02-14 23:14:34 +0100 | Inst__ | Inst |
2023-02-14 23:16:05 +0100 | michalz | (~michalz@185.246.204.107) (Remote host closed the connection) |
2023-02-14 23:16:44 +0100 | <[exa]> | Inst: like, sure |
2023-02-14 23:19:19 +0100 | merijn | (~merijn@c-001-001-010.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
2023-02-14 23:20:50 +0100 | notzmv | (~zmv@user/notzmv) |
2023-02-14 23:22:47 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2023-02-14 23:23:08 +0100 | king_gs | (~Thunderbi@187.201.41.239) (Read error: Connection reset by peer) |
2023-02-14 23:23:10 +0100 | king_gs1 | (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) |
2023-02-14 23:24:36 +0100 | [Ristovski] | (~Ristovski@hellomouse/perf/ristovski) (Quit: 0) |
2023-02-14 23:25:05 +0100 | Guest35 | (~Guest35@2601:189:8180:1870:f926:c45d:65c3:ea80) |
2023-02-14 23:25:15 +0100 | <monochrom> | @type id id |
2023-02-14 23:25:16 +0100 | <lambdabot> | a -> a |
2023-02-14 23:25:18 +0100 | <monochrom> | @type id id id |
2023-02-14 23:25:19 +0100 | <lambdabot> | a -> a |
2023-02-14 23:25:27 +0100 | <monochrom> | @quote monochrom 17-ary |
2023-02-14 23:25:27 +0100 | king_gs1 | king_gs |
2023-02-14 23:25:27 +0100 | <lambdabot> | monochrom says: I am 17-ary, going on 18-ary, I can take curry of you |
2023-02-14 23:28:09 +0100 | bjobjo | (~bjobjo@user/bjobjo) (Ping timeout: 255 seconds) |
2023-02-14 23:28:10 +0100 | [Ristovski] | (~Ristovski@hellomouse/perf/ristovski) |
2023-02-14 23:29:36 +0100 | bjobjo | (~bjobjo@user/bjobjo) |
2023-02-14 23:31:21 +0100 | <jackdk> | :t (%%~) |
2023-02-14 23:31:22 +0100 | <lambdabot> | forall k (f :: k -> *) s (t :: k) a (b :: k). LensLike f s t a b -> (a -> f b) -> s -> f t |
2023-02-14 23:38:54 +0100 | beteigeuze | (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
2023-02-14 23:42:45 +0100 | king_gs | (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Quit: king_gs) |
2023-02-14 23:43:23 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2023-02-14 23:48:24 +0100 | thegeekinside | (~thegeekin@189.180.97.223) (Ping timeout: 255 seconds) |
2023-02-14 23:49:51 +0100 | falafel | (~falafel@2607:fb91:143f:e47f:834a:55d5:1880:33be) |
2023-02-14 23:52:06 +0100 | bob | (~bob22@user/bob) (Quit: ZNC - https://znc.in) |
2023-02-14 23:52:09 +0100 | zeenk | (~zeenk@2a02:2f04:a214:1e00::7fe) |
2023-02-14 23:58:48 +0100 | thegeekinside | (~thegeekin@189.180.97.223) |
2023-02-14 23:59:08 +0100 | Guest35 | (~Guest35@2601:189:8180:1870:f926:c45d:65c3:ea80) (Quit: Client closed) |