2023-05-17 00:01:26 +0200 | trev | (~trev@user/trev) (Quit: trev) |
2023-05-17 00:02:47 +0200 | freeside | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-17 00:03:16 +0200 | elain4 | (~textual@static-71-251-226-194.rcmdva.fios.verizon.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2023-05-17 00:05:49 +0200 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
2023-05-17 00:07:26 +0200 | evincar | (~evincar@user/evincar) |
2023-05-17 00:10:54 +0200 | freeside | (~mengwong@103.252.202.151) |
2023-05-17 00:13:23 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 264 seconds) |
2023-05-17 00:14:20 +0200 | acidjnk | (~acidjnk@p200300d6e7072f26a02f55797abeb791.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-05-17 00:15:00 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) |
2023-05-17 00:15:01 +0200 | freeside | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-17 00:27:35 +0200 | gurkenglas | (~user@dynamic-046-114-178-145.46.114.pool.telefonica.de) (Ping timeout: 240 seconds) |
2023-05-17 00:37:59 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-05-17 00:42:13 +0200 | <jackdk> | edwardk: skimmed your recent stream about hkd/distributive stuff. Super excited to see it get some attention again, I'd love to have a good hkd-flavoured version of representable |
2023-05-17 00:48:05 +0200 | finsternis | (~X@23.226.237.192) |
2023-05-17 00:48:23 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2023-05-17 00:49:33 +0200 | bilegeek | (~bilegeek@2600:1008:b05f:85d9:37ae:29a:60b8:7b43) (Quit: Leaving) |
2023-05-17 00:53:15 +0200 | AWizzArd_ | AWizzArd |
2023-05-17 00:53:48 +0200 | AWizzArd | (~code@gehrels.uberspace.de) (Changing host) |
2023-05-17 00:53:48 +0200 | AWizzArd | (~code@user/awizzard) |
2023-05-17 00:55:31 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 240 seconds) |
2023-05-17 00:57:06 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-05-17 00:57:33 +0200 | foul_owl | (~kerry@71.212.137.212) (Ping timeout: 256 seconds) |
2023-05-17 00:58:51 +0200 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
2023-05-17 00:59:10 +0200 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
2023-05-17 01:04:01 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 240 seconds) |
2023-05-17 01:07:57 +0200 | titibandit | (~titibandi@user/titibandit) (Remote host closed the connection) |
2023-05-17 01:12:47 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-05-17 01:12:47 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-05-17 01:12:47 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-05-17 01:14:19 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-05-17 01:15:08 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-05-17 01:19:13 +0200 | mauke_ | (~mauke@user/mauke) |
2023-05-17 01:20:28 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 240 seconds) |
2023-05-17 01:21:07 +0200 | mauke | (~mauke@user/mauke) (Ping timeout: 265 seconds) |
2023-05-17 01:21:08 +0200 | mauke_ | mauke |
2023-05-17 01:21:22 +0200 | rf | (~rf@2605:59c8:179c:f610:9cce:9bd8:c6af:4e85) |
2023-05-17 01:24:23 +0200 | mncheck | (~mncheck@193.224.205.254) (Ping timeout: 240 seconds) |
2023-05-17 01:28:44 +0200 | monix | (~quassel@a85-138-255-115.cpe.netcabo.pt) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2023-05-17 01:29:37 +0200 | abrantesasf | (~abrantesa@177.137.232.92) |
2023-05-17 01:30:35 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2023-05-17 01:31:20 +0200 | vandita | (~vandit@213-197-76-88.pool.digikabel.hu) (Ping timeout: 246 seconds) |
2023-05-17 01:33:06 +0200 | vandita | (~vandit@84-236-122-196.pool.digikabel.hu) |
2023-05-17 01:34:23 +0200 | captnemo | (~captnemo@193.32.127.232) (Ping timeout: 240 seconds) |
2023-05-17 01:34:53 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2023-05-17 01:35:29 +0200 | son0p | (~ff@181.136.122.143) |
2023-05-17 01:35:35 +0200 | bitdex_ | (~bitdex@gateway/tor-sasl/bitdex) |
2023-05-17 01:36:22 +0200 | freeside | (~mengwong@103.252.202.151) |
2023-05-17 01:38:34 +0200 | captnemo | (~captnemo@193.32.127.232) |
2023-05-17 01:40:31 +0200 | freeside | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-17 01:49:43 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) |
2023-05-17 01:52:31 +0200 | Sciencentistguy | (~sciencent@hacksoc/ordinary-member) (Ping timeout: 256 seconds) |
2023-05-17 01:52:58 +0200 | nate2 | (~nate@98.45.169.16) |
2023-05-17 01:54:30 +0200 | caubert | (~caubert@user/caubert) (Quit: WeeChat 3.7) |
2023-05-17 01:56:36 +0200 | caubert | (~caubert@user/caubert) |
2023-05-17 01:57:40 +0200 | zinguane2 | (~zinguane@pd9e856a3.dip0.t-ipconnect.de) (Quit: Leaving) |
2023-05-17 01:57:51 +0200 | nate2 | (~nate@98.45.169.16) (Ping timeout: 265 seconds) |
2023-05-17 01:59:31 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-05-17 01:59:39 +0200 | Sciencentistguy | (~sciencent@hacksoc/ordinary-member) |
2023-05-17 02:00:28 +0200 | nehsou^ | (~nehsou@73.237.206.60) |
2023-05-17 02:00:32 +0200 | bitdex_ | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2023-05-17 02:01:31 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds) |
2023-05-17 02:03:09 +0200 | cheater | (~Username@user/cheater) |
2023-05-17 02:03:19 +0200 | bitdex_ | (~bitdex@gateway/tor-sasl/bitdex) |
2023-05-17 02:03:22 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-17 02:13:19 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 265 seconds) |
2023-05-17 02:19:07 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 265 seconds) |
2023-05-17 02:20:28 +0200 | mestre | (~mestre@191.177.186.33) |
2023-05-17 02:20:30 +0200 | mestre | (~mestre@191.177.186.33) (Client Quit) |
2023-05-17 02:20:50 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
2023-05-17 02:22:12 +0200 | cheater_ | (~Username@user/cheater) |
2023-05-17 02:23:01 +0200 | <aaronv> | jackdk: do you have a use case for it? |
2023-05-17 02:23:03 +0200 | <aaronv> | Also, hi |
2023-05-17 02:23:55 +0200 | hammond | (proscan@user/hammond2) (Ping timeout: 265 seconds) |
2023-05-17 02:24:23 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 240 seconds) |
2023-05-17 02:24:28 +0200 | cheater_ | cheater |
2023-05-17 02:25:32 +0200 | captnemo | (~captnemo@193.32.127.232) (Quit: WeeChat 3.8) |
2023-05-17 02:28:43 +0200 | captnemo | (~captnemo@193.32.127.232) |
2023-05-17 02:32:38 +0200 | freeside | (~mengwong@103.252.202.151) |
2023-05-17 02:34:31 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 240 seconds) |
2023-05-17 02:35:37 +0200 | hammond | (proscan@gateway02.insomnia247.nl) |
2023-05-17 02:36:28 +0200 | <jackdk> | aaronv: Hi mate. Not urgently, but I was once playing with using a GADT to index the keys of a higher-kinded record, and had a neat function that turned a `DMap` from `dependent-map` into a record in a generic way using `tabluate`. Something like `fromDMap :: FRepresentable rep => DMap k f -> Maybe (rep f)` |
2023-05-17 02:36:47 +0200 | freeside | (~mengwong@103.252.202.151) (Ping timeout: 246 seconds) |
2023-05-17 02:37:27 +0200 | emmanuelux | (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
2023-05-17 02:39:24 +0200 | <aaronv> | ah, FRepresentable. Wasn't sure if you meant that or the "better distributive functor" stuff which happens to use FFunctor |
2023-05-17 02:41:47 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:b97c:3991:b4ea:4289) |
2023-05-17 02:43:15 +0200 | <aaronv> | maybe `fromDMap :: (FRepresentable rep, FTraversable rep) => DMap (FLog rep) f -> Maybe (rep f)` |
2023-05-17 02:43:43 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) |
2023-05-17 02:44:08 +0200 | <aaronv> | where it traverses through the keys looking them up in the map |
2023-05-17 02:44:13 +0200 | <jackdk> | Yeah that's right, you need FTraversable to go from `rep (Compose Maybe f)` to `Maybe (rep f)` |
2023-05-17 02:45:09 +0200 | evincar | (~evincar@user/evincar) (Ping timeout: 268 seconds) |
2023-05-17 02:46:14 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:b97c:3991:b4ea:4289) (Ping timeout: 246 seconds) |
2023-05-17 02:48:08 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2023-05-17 02:55:25 +0200 | freeside | (~mengwong@103.252.202.151) |
2023-05-17 02:56:06 +0200 | evincar | (~evincar@user/evincar) |
2023-05-17 02:56:46 +0200 | terrorjack | (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat) |
2023-05-17 02:58:31 +0200 | terrorjack | (~terrorjac@2a01:4f8:c17:87f8::) |
2023-05-17 03:01:10 +0200 | freeside | (~mengwong@103.252.202.151) (Ping timeout: 265 seconds) |
2023-05-17 03:01:37 +0200 | terrorjack | (~terrorjac@2a01:4f8:c17:87f8::) (Client Quit) |
2023-05-17 03:03:30 +0200 | terrorjack | (~terrorjac@2a01:4f8:c17:87f8::) |
2023-05-17 03:03:39 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-05-17 03:03:52 +0200 | captnemo | (~captnemo@193.32.127.232) (Quit: WeeChat 3.8) |
2023-05-17 03:07:39 +0200 | phma | (phma@2001:5b0:215a:8268:c7a7:f34c:bb4f:1f1d) (Read error: Connection reset by peer) |
2023-05-17 03:10:54 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-05-17 03:16:29 +0200 | phma | (~phma@2001:5b0:210f:7648:8296:8922:28df:c299) |
2023-05-17 03:17:03 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-05-17 03:20:23 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2023-05-17 03:20:31 +0200 | freeside | (~mengwong@103.252.202.151) |
2023-05-17 03:25:27 +0200 | freeside | (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
2023-05-17 03:36:30 +0200 | <hammond> | I have f::IO [String]->ReaderT IO |
2023-05-17 03:36:47 +0200 | vandita | (~vandit@84-236-122-196.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-05-17 03:37:01 +0200 | <hammond> | I'm trying to send multiple strings, one by one to a network (IRC) |
2023-05-17 03:37:36 +0200 | <hammond> | but i can only send one because readerT IO is not an array. |
2023-05-17 03:37:50 +0200 | <hammond> | or an array action, how would I solve this. |
2023-05-17 03:38:38 +0200 | vandita | (~vandit@80-95-82-22.pool.digikabel.hu) |
2023-05-17 03:40:44 +0200 | freeside | (~mengwong@103.252.202.151) |
2023-05-17 03:43:39 +0200 | abrantesasf | (~abrantesa@177.137.232.92) (Remote host closed the connection) |
2023-05-17 03:44:37 +0200 | <Inst> | cabal should be able to force install stuff into an executable directory, right? |
2023-05-17 03:45:46 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) |
2023-05-17 03:46:05 +0200 | freeside | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-17 03:48:21 +0200 | <mauke> | hammond: f :: [String] -> IO () |
2023-05-17 03:48:22 +0200 | <mauke> | ? |
2023-05-17 03:50:09 +0200 | <jackdk> | hammond: your type signature is not well-kinded. But do you want `for_` or `traverse_` from `Data.Foldable`? |
2023-05-17 04:00:33 +0200 | <hammond> | mauke f:: IO [String] -> ReaderT Bot IO () I would need to liftIO the [string] |
2023-05-17 04:00:36 +0200 | <hammond> | idk |
2023-05-17 04:00:40 +0200 | <hammond> | total mess. |
2023-05-17 04:00:54 +0200 | <hammond> | jackdk: i'll look at those. |
2023-05-17 04:01:28 +0200 | <mauke> | why does your function take an IO [String]? |
2023-05-17 04:02:39 +0200 | <hammond> | because the fuction that generated the [String] read from the web. |
2023-05-17 04:03:26 +0200 | <jackdk> | That doesn't mean your function must accept an IO [String]; make it take [String] or even String and use >>= or do-notation |
2023-05-17 04:04:10 +0200 | <mauke> | an IO [String] is not a list of strings |
2023-05-17 04:05:04 +0200 | <mauke> | it's a thing that can generate a list of strings |
2023-05-17 04:05:28 +0200 | captnemo | (~captnemo@193.32.127.232) |
2023-05-17 04:06:45 +0200 | <mauke> | so unless you're trying to pass the function itself (not the result of the function!) that reads from the web as an argument, you don't want to do that |
2023-05-17 04:07:10 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) (Ping timeout: 268 seconds) |
2023-05-17 04:07:30 +0200 | <hammond> | I'm already passing the IO String, and lifting it and it works fine. |
2023-05-17 04:07:44 +0200 | <hammond> | now I want to up the ante. |
2023-05-17 04:08:02 +0200 | <hammond> | total mess though. |
2023-05-17 04:08:04 +0200 | <hammond> | :P |
2023-05-17 04:08:31 +0200 | <hammond> | do you want to look at the code? |
2023-05-17 04:08:31 +0200 | xff0x | (~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 256 seconds) |
2023-05-17 04:08:44 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:b97c:3991:b4ea:4289) |
2023-05-17 04:08:55 +0200 | <mauke> | I dread to |
2023-05-17 04:08:59 +0200 | <hammond> | hahahaha |
2023-05-17 04:10:41 +0200 | <hammond> | https://github.com/sqljunkey/IRCBOT/blob/master/Test.hs |
2023-05-17 04:10:47 +0200 | <hammond> | eval |
2023-05-17 04:11:04 +0200 | <hammond> | is the one i want to convert to take [String] |
2023-05-17 04:11:29 +0200 | captnemo | (~captnemo@193.32.127.232) (Quit: WeeChat 3.8) |
2023-05-17 04:12:20 +0200 | captnemo | (~captnemo@193.32.127.232) |
2023-05-17 04:13:03 +0200 | <mauke> | yeah, that runs 'a' only once up front |
2023-05-17 04:13:14 +0200 | <mauke> | so there's no point in making eval take an IO String |
2023-05-17 04:13:25 +0200 | td_ | (~td@i5387090E.versanet.de) (Ping timeout: 240 seconds) |
2023-05-17 04:14:20 +0200 | freeside | (~mengwong@103.252.202.151) |
2023-05-17 04:14:54 +0200 | tessier | (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) |
2023-05-17 04:15:25 +0200 | nate2 | (~nate@98.45.169.16) |
2023-05-17 04:15:28 +0200 | <mauke> | instead of 'eval (command ...)', you'd write 'command ... >>= eval' |
2023-05-17 04:15:36 +0200 | td_ | (~td@83.135.9.0) |
2023-05-17 04:15:48 +0200 | <mauke> | or 'do s <- command ...; eval s' |
2023-05-17 04:16:33 +0200 | <hammond> | what do you mean you're referring to the IO String? |
2023-05-17 04:17:11 +0200 | <mauke> | eval :: String -> Net (); eval s = ... |
2023-05-17 04:17:21 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) |
2023-05-17 04:17:21 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) (Excess Flood) |
2023-05-17 04:17:52 +0200 | <mauke> | essentially, let the user of eval do the 's <- liftIO a' part |
2023-05-17 04:18:01 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2023-05-17 04:18:02 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) |
2023-05-17 04:18:53 +0200 | <mauke> | then, if you want to eval a list of strings, one after the other, you can do: evalList :: [String] -> Net (); evalList xs = forM_ xs eval |
2023-05-17 04:18:59 +0200 | freeside | (~mengwong@103.252.202.151) (Ping timeout: 265 seconds) |
2023-05-17 04:19:13 +0200 | <EvanR> | if you only used the action once immediately and definitely use it, you might as well just accept a value instead. Then no one will have to jump through hoops if they happen to want to use it on a value they already have, and it's trivial to run an IO action first |
2023-05-17 04:19:30 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-05-17 04:19:30 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-05-17 04:19:30 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-05-17 04:19:31 +0200 | <mauke> | :t traverse_ |
2023-05-17 04:19:32 +0200 | <lambdabot> | (Foldable t, Applicative f) => (a -> f b) -> t a -> f () |
2023-05-17 04:19:37 +0200 | <mauke> | :t forM_ |
2023-05-17 04:19:38 +0200 | <lambdabot> | (Foldable t, Monad m) => t a -> (a -> m b) -> m () |
2023-05-17 04:20:29 +0200 | <mauke> | OK, so traverse_ is a slightly more general (vague) version of that helper function |
2023-05-17 04:20:46 +0200 | <mauke> | could do: evalList xs = traverse_ eval xs |
2023-05-17 04:22:23 +0200 | <hammond> | and it wouldn't return a [Net()] ? |
2023-05-17 04:22:32 +0200 | <mauke> | instead of just lists, traverse_ accepts any "foldable" container type, and instead of just IO or Net or some other monad, it accepts any Applicative type |
2023-05-17 04:23:03 +0200 | <mauke> | no, the trailing underscore in the name indicates (by convention) that it throws the result away instead of collecting it |
2023-05-17 04:23:19 +0200 | <hammond> | i see |
2023-05-17 04:23:26 +0200 | <mauke> | the result will have type f () where f = Net in your case |
2023-05-17 04:27:00 +0200 | <mauke> | if we didn't have it in a library, we could implement (a simplified version of) it ourselves pretty easily: forM_ :: (Monad m) => [a] -> (a -> m b) -> m (); forM_ [] _ = return (); forM_ (x : xs) f = do f x; forM_ xs f |
2023-05-17 04:27:31 +0200 | <mauke> | oh, 'forever' is also a library function |
2023-05-17 04:27:33 +0200 | <mauke> | :t forever |
2023-05-17 04:27:34 +0200 | <lambdabot> | Applicative f => f a -> f b |
2023-05-17 04:28:03 +0200 | <mauke> | f = Net, a = (), b = (), and you have your case |
2023-05-17 04:28:32 +0200 | <hammond> | i see. thanx |
2023-05-17 04:29:07 +0200 | <mauke> | @index forever |
2023-05-17 04:29:07 +0200 | <lambdabot> | Control.Monad |
2023-05-17 04:30:48 +0200 | phma | (~phma@2001:5b0:210f:7648:8296:8922:28df:c299) (Read error: Connection reset by peer) |
2023-05-17 04:31:13 +0200 | phma | (~phma@host-67-44-208-197.hnremote.net) |
2023-05-17 04:31:16 +0200 | freeside | (~mengwong@103.252.202.151) |
2023-05-17 04:32:02 +0200 | captnemo | (~captnemo@193.32.127.232) (Ping timeout: 265 seconds) |
2023-05-17 04:35:31 +0200 | freeside | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-17 04:36:48 +0200 | cheater_ | (~Username@user/cheater) |
2023-05-17 04:39:31 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 240 seconds) |
2023-05-17 04:39:35 +0200 | cheater_ | cheater |
2023-05-17 04:40:01 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2023-05-17 04:46:31 +0200 | evincar | (~evincar@user/evincar) (Ping timeout: 240 seconds) |
2023-05-17 04:48:04 +0200 | byte` | byte |
2023-05-17 04:53:12 +0200 | fun-safe-math | (~fun-safe-@c-24-22-79-16.hsd1.wa.comcast.net) |
2023-05-17 04:54:40 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2023-05-17 04:54:45 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2023-05-17 04:55:20 +0200 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2023-05-17 05:00:48 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 240 seconds) |
2023-05-17 05:01:58 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-05-17 05:02:04 +0200 | captnemo | (~captnemo@193.32.127.232) |
2023-05-17 05:02:42 +0200 | freeside | (~mengwong@103.252.202.151) |
2023-05-17 05:06:18 +0200 | evincar | (~evincar@user/evincar) |
2023-05-17 05:07:01 +0200 | freeside | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-17 05:11:03 +0200 | captnemo | (~captnemo@193.32.127.232) (Quit: WeeChat 3.8) |
2023-05-17 05:11:42 +0200 | captnemo | (~captnemo@193.32.127.232) |
2023-05-17 05:13:57 +0200 | captnemo | (~captnemo@193.32.127.232) (Client Quit) |
2023-05-17 05:15:03 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) |
2023-05-17 05:15:47 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 264 seconds) |
2023-05-17 05:17:00 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-05-17 05:18:29 +0200 | <Inst> | are any 9.6.1 users having issues with semigroupoids? |
2023-05-17 05:18:55 +0200 | nate2 | (~nate@98.45.169.16) (Ping timeout: 265 seconds) |
2023-05-17 05:19:25 +0200 | rf | (~rf@2605:59c8:179c:f610:9cce:9bd8:c6af:4e85) (Quit: Leaving) |
2023-05-17 05:22:42 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 250 seconds) |
2023-05-17 05:24:20 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-05-17 05:29:52 +0200 | nehsou^ | (~nehsou@73.237.206.60) (Remote host closed the connection) |
2023-05-17 05:30:18 +0200 | drdo | (~drdo@bl8-153-185.dsl.telepac.pt) (Quit: Ping timeout (120 seconds)) |
2023-05-17 05:30:37 +0200 | drdo | (~drdo@bl8-153-185.dsl.telepac.pt) |
2023-05-17 05:34:39 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 256 seconds) |
2023-05-17 05:35:35 +0200 | rlj | (~rlj@194-218-34-180.customer.telia.com) |
2023-05-17 05:36:07 +0200 | <Inst> | hmmm, looks like it's lib related instead |
2023-05-17 05:38:25 +0200 | evincar | (~evincar@user/evincar) (Ping timeout: 240 seconds) |
2023-05-17 05:42:05 +0200 | vandita | (~vandit@80-95-82-22.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-05-17 05:44:14 +0200 | vandita | (~vandit@77-234-92-199.pool.digikabel.hu) |
2023-05-17 05:45:39 +0200 | motherfsck | (~motherfsc@user/motherfsck) |
2023-05-17 05:48:37 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2023-05-17 05:49:11 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2023-05-17 05:53:01 +0200 | tessier | (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 240 seconds) |
2023-05-17 05:55:38 +0200 | rlj | (~rlj@194-218-34-180.customer.telia.com) (Ping timeout: 245 seconds) |
2023-05-17 05:59:32 +0200 | tessier | (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) |
2023-05-17 06:04:18 +0200 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
2023-05-17 06:06:02 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-17 06:11:40 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2023-05-17 06:12:17 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2023-05-17 06:13:11 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds) |
2023-05-17 06:18:40 +0200 | hugo- | (znc@verdigris.lysator.liu.se) (Ping timeout: 248 seconds) |
2023-05-17 06:19:19 +0200 | Kamuela_ | (sid111576@id-111576.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
2023-05-17 06:20:00 +0200 | nick4 | (~nick@2600:8807:9103:b700:304f:94eb:f397:5ed) |
2023-05-17 06:23:16 +0200 | mizlan | (~mizlan@2607:f010:2a7:1005:f102:419e:a5cb:54b4) |
2023-05-17 06:27:55 +0200 | nick4 | (~nick@2600:8807:9103:b700:304f:94eb:f397:5ed) (Ping timeout: 256 seconds) |
2023-05-17 06:29:11 +0200 | tessier | (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 240 seconds) |
2023-05-17 06:30:37 +0200 | tessier | (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) |
2023-05-17 06:31:33 +0200 | hugo | (znc@verdigris.lysator.liu.se) |
2023-05-17 06:36:37 +0200 | captnemo | (~captnemo@193.32.127.232) |
2023-05-17 06:39:29 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
2023-05-17 06:45:53 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) |
2023-05-17 06:54:47 +0200 | motherfsck | (~motherfsc@user/motherfsck) (Ping timeout: 240 seconds) |
2023-05-17 06:56:52 +0200 | pyook | (~puke@user/puke) |
2023-05-17 06:58:23 +0200 | mbuf | (~Shakthi@49.207.178.186) |
2023-05-17 07:05:22 +0200 | freeside | (~mengwong@103.252.202.151) |
2023-05-17 07:11:11 +0200 | freeside | (~mengwong@103.252.202.151) (Ping timeout: 246 seconds) |
2023-05-17 07:18:48 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2023-05-17 07:19:16 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
2023-05-17 07:23:01 +0200 | ddellacosta | (~ddellacos@143.244.47.84) (Ping timeout: 240 seconds) |
2023-05-17 07:23:44 +0200 | mncheck | (~mncheck@193.224.205.254) |
2023-05-17 07:25:34 +0200 | gurkenglas | (~user@dynamic-046-114-182-067.46.114.pool.telefonica.de) |
2023-05-17 07:27:07 +0200 | captnemo | (~captnemo@193.32.127.232) (Quit: WeeChat 3.8) |
2023-05-17 07:28:05 +0200 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
2023-05-17 07:28:33 +0200 | tessier | (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 256 seconds) |
2023-05-17 07:32:24 +0200 | captnemo | (~captnemo@193.32.127.232) |
2023-05-17 07:33:42 +0200 | mizlan | (~mizlan@2607:f010:2a7:1005:f102:419e:a5cb:54b4) (Quit: mizlan) |
2023-05-17 07:36:13 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) |
2023-05-17 07:37:13 +0200 | freeside | (~mengwong@103.252.202.151) |
2023-05-17 07:37:31 +0200 | hugo | (znc@verdigris.lysator.liu.se) (Ping timeout: 240 seconds) |
2023-05-17 07:40:23 +0200 | fun-safe-math | (~fun-safe-@c-24-22-79-16.hsd1.wa.comcast.net) (Ping timeout: 264 seconds) |
2023-05-17 07:40:36 +0200 | tessier | (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) |
2023-05-17 07:41:30 +0200 | coot_ | (~coot@89-69-206-216.dynamic.chello.pl) |
2023-05-17 07:42:48 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) (Ping timeout: 240 seconds) |
2023-05-17 07:42:49 +0200 | coot_ | coot |
2023-05-17 07:43:28 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 240 seconds) |
2023-05-17 07:43:44 +0200 | bliminse | (~bliminse@user/bliminse) (Quit: leaving) |
2023-05-17 07:45:02 +0200 | evincar | (~evincar@user/evincar) |
2023-05-17 07:46:04 +0200 | bliminse | (~bliminse@user/bliminse) |
2023-05-17 07:48:52 +0200 | chomwitt | (~chomwitt@2a02:587:7a0a:e700:1ac0:4dff:fedb:a3f1) |
2023-05-17 07:49:24 +0200 | trev | (~trev@user/trev) |
2023-05-17 07:50:25 +0200 | hugo | (znc@verdigris.lysator.liu.se) |
2023-05-17 07:58:08 +0200 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
2023-05-17 08:05:48 +0200 | chomwitt | (~chomwitt@2a02:587:7a0a:e700:1ac0:4dff:fedb:a3f1) (Remote host closed the connection) |
2023-05-17 08:11:51 +0200 | fun-safe-math | (~fun-safe-@c-24-22-79-16.hsd1.or.comcast.net) |
2023-05-17 08:13:39 +0200 | dsrt^ | (~dsrt@73.237.206.60) |
2023-05-17 08:14:58 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2023-05-17 08:16:21 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) |
2023-05-17 08:23:00 +0200 | yaroot_ | (~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c) |
2023-05-17 08:24:16 +0200 | yaroot | (~yaroot@p3099038-ipngn6001souka.saitama.ocn.ne.jp) (Ping timeout: 250 seconds) |
2023-05-17 08:24:16 +0200 | yaroot_ | yaroot |
2023-05-17 08:24:17 +0200 | <dminuoso> | geekosaur: With the sheer amount of fromIntegral and realToFrac you generally sprinkle all over numeric code, it makes you wonder why we bother having all these different types anyway. |
2023-05-17 08:24:33 +0200 | <dminuoso> | We should just have a generic IEEE 754 `Number` type and use it for everything! |
2023-05-17 08:26:57 +0200 | <jade[m]> | that'd be terrible if you had no way to represent exact number types |
2023-05-17 08:27:35 +0200 | vandita | (~vandit@77-234-92-199.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-05-17 08:27:44 +0200 | <jade[m]> | I agree that the structure we currently have is not very good, but using IEEE754 everywhere would.be much worse |
2023-05-17 08:27:59 +0200 | <jade[m]> | s//*/, s//*/, s/./ / |
2023-05-17 08:29:29 +0200 | vandita | (~vandit@84-236-1-64.pool.digikabel.hu) |
2023-05-17 08:30:38 +0200 | vglfr | (~vglfr@209.198.137.226) (Read error: Connection reset by peer) |
2023-05-17 08:32:18 +0200 | byte | (~byte@user/byte) (Read error: Connection reset by peer) |
2023-05-17 08:33:53 +0200 | byte | (~byte@user/byte) |
2023-05-17 08:35:02 +0200 | vglfr | (~vglfr@209.198.137.226) |
2023-05-17 08:35:12 +0200 | jinsun | (~jinsun@user/jinsun) (Read error: Connection reset by peer) |
2023-05-17 08:46:26 +0200 | <probie> | Would using doubles be that much worse? How often are your integers bigger than 2^54 and used in the same context as "real" numbers? |
2023-05-17 08:49:31 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2023-05-17 08:50:49 +0200 | CiaoSen | (~Jura@dynamic-046-114-218-079.46.114.pool.telefonica.de) |
2023-05-17 08:51:19 +0200 | <dminuoso> | jade[m]: Yeah it would be terrible. One cannot conceive such a language achieving worlds dominance |
2023-05-17 08:51:33 +0200 | <dminuoso> | Such a language would die in its infancy. |
2023-05-17 08:51:35 +0200 | tessier | (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 240 seconds) |
2023-05-17 08:53:59 +0200 | <dminuoso> | Just on the off chance my sarcasm wasnt obvious, JavaScript does exactly that. |
2023-05-17 08:56:07 +0200 | phma | (~phma@host-67-44-208-197.hnremote.net) (Read error: Connection reset by peer) |
2023-05-17 08:56:10 +0200 | <dminuoso> | probie: Yes, because it introduces all kinds of issues. Say you have a wallet of money, and want to divide it amongst 3 users. You can easily be tempted to just divide `wallet / num_users`. Nothing guards you against it. |
2023-05-17 08:56:31 +0200 | phma | (phma@2001:5b0:210f:7648:8296:8922:28df:c299) |
2023-05-17 08:57:02 +0200 | <jade[m]> | dminuoso: ah yeah, I know, I thought you were being serious and that made me really confused😅 |
2023-05-17 08:57:22 +0200 | acidjnk | (~acidjnk@p200300d6e7072f36108c5a383809f7d0.dip0.t-ipconnect.de) |
2023-05-17 08:58:22 +0200 | <dminuoso> | Which is why monetary computation in JavaScript usually goes the crazy route and uses string-based numeric libraries. |
2023-05-17 08:58:48 +0200 | <dminuoso> | Performance be damned. |
2023-05-17 09:03:06 +0200 | <probie> | dminuoso: and if I use an `Integer`, Nothing guards against me going ``wallet `div` num_users`` and having some of the money just disappear |
2023-05-17 09:04:03 +0200 | oo_miguel | (~Thunderbi@77.252.47.78) |
2023-05-17 09:04:44 +0200 | <dminuoso> | probie: Sure, but then you made a concious choice to use `div` |
2023-05-17 09:05:01 +0200 | <probie> | dminuoso: didn't I make a conscious choice before to use `/`? |
2023-05-17 09:05:08 +0200 | <dminuoso> | Whereas with `/` it's *not* even close to obvious what this will do if you hold something in the hand that *looks* like an integer. |
2023-05-17 09:05:42 +0200 | <dminuoso> | Say I pose the question: What does `10 / 3` equal if you have an intrinsic assumption that 10 and 3 are integers. |
2023-05-17 09:06:15 +0200 | <dminuoso> | In Haskell you would get this: |
2023-05-17 09:06:20 +0200 | <dminuoso> | % 10 / 3 :: Integer |
2023-05-17 09:06:20 +0200 | <yahb2> | <interactive>:133:4: error: ; • No instance for (Fractional Integer) arising from a use of ‘/’ ; • In the expression: 10 / 3 :: Integer ; In an equation for ‘it’: it = 10 / 3 :: Integer |
2023-05-17 09:10:00 +0200 | <dminuoso> | probie: You get into evil traps with IEEE 754 so quickly. |
2023-05-17 09:10:04 +0200 | <dminuoso> | Consider this trivial example: |
2023-05-17 09:10:17 +0200 | <dminuoso> | % 1980 * 0.1 / 1.1 :: Float |
2023-05-17 09:10:17 +0200 | <yahb2> | 180.0 |
2023-05-17 09:11:09 +0200 | <dminuoso> | % 1980 * 0.1 / 1.1 :: Double |
2023-05-17 09:11:09 +0200 | <yahb2> | 179.99999999999997 |
2023-05-17 09:11:38 +0200 | <dminuoso> | probie: The thing is, you stare at something that has a comma and you *usually* tend to assume this be a Rational. |
2023-05-17 09:11:54 +0200 | <dminuoso> | And if there was some automatic Rational promotion, that probably wouldnt be too horrible unless you cared about performance much |
2023-05-17 09:12:15 +0200 | <dminuoso> | But you start doing the simplest of things, you get behavior that is close, but not quite like rational behavior. |
2023-05-17 09:12:16 +0200 | <probie> | Perhaps you should get a compiler warning if you write (0.1 :: Double), the same way you do if you write (300 :: Word8)? |
2023-05-17 09:12:42 +0200 | <dminuoso> | probie: We were talking about a context where the only type you ever had was say IEEE Double like in javascript |
2023-05-17 09:12:42 +0200 | <c_wraith> | Rational can be shockingly bad for performance if you use it in a numerical algorithm |
2023-05-17 09:13:05 +0200 | <dminuoso> | probie: Try typing `(1980 * 0.1) / 1.1` in your browsers JavaScript console. |
2023-05-17 09:13:16 +0200 | <jade[m]> | dminuoso: Am I too blind to see the issue? |
2023-05-17 09:14:22 +0200 | <dminuoso> | c_wraith: And unconsciou IEEE 754 can be shocking bad for program integrity. |
2023-05-17 09:14:23 +0200 | gurkenglas | (~user@dynamic-046-114-182-067.46.114.pool.telefonica.de) (Ping timeout: 240 seconds) |
2023-05-17 09:14:30 +0200 | <dminuoso> | s/shocking/shockingly/ |
2023-05-17 09:14:56 +0200 | <c_wraith> | especially if you're a C programmer and think -ffast-math sounds like a cool and obvious thing that you certainly want |
2023-05-17 09:15:31 +0200 | <dminuoso> | That compiler flag has such a treacherous name, to be honest. |
2023-05-17 09:15:44 +0200 | <dminuoso> | `fast-but-incorrect-math` might have been better, but then it wouldn't have sold as much. |
2023-05-17 09:16:15 +0200 | <c_wraith> | it's incorrect in really sneaky ways, too. Not just a little occasional rounding error. |
2023-05-17 09:16:26 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2023-05-17 09:17:06 +0200 | <dminuoso> | `Sets the options -fno-math-errno, -funsafe-math-optimizations, -ffinite-math-only, -fno-rounding-math, -fno-signaling-nans, -fcx-limited-range and -fexcess-precision=fast. ` |
2023-05-17 09:17:14 +0200 | <probie> | meanwhile with `Int` we get gems like |
2023-05-17 09:17:20 +0200 | <probie> | > abs (minBound :: Int) |
2023-05-17 09:17:22 +0200 | <lambdabot> | -9223372036854775808 |
2023-05-17 09:17:42 +0200 | <dminuoso> | Oh that's a nice one |
2023-05-17 09:17:55 +0200 | <c_wraith> | probie: to be fair, that still better than what C does when you do that... |
2023-05-17 09:18:00 +0200 | evincar | (~evincar@user/evincar) (Ping timeout: 250 seconds) |
2023-05-17 09:18:10 +0200 | <c_wraith> | *that's |
2023-05-17 09:18:49 +0200 | <dminuoso> | Im not sure what the best behavior would be here. |
2023-05-17 09:19:42 +0200 | <dminuoso> | `error` would be disgusting to deal with, moving abs into a separate typeclass with unsigned numeric types only would be very inconvenient |
2023-05-17 09:19:45 +0200 | <c_wraith> | C just declares INT_MIN * -1 to be UB |
2023-05-17 09:20:13 +0200 | <c_wraith> | accidentally multiply signed integers without checking for that first? Your program is invalid. |
2023-05-17 09:20:24 +0200 | <dminuoso> | % abs (minBound :: Int) * signum (minBound :: Int) |
2023-05-17 09:20:24 +0200 | <yahb2> | -9223372036854775808 |
2023-05-17 09:20:31 +0200 | <dminuoso> | At least that law is preserved. |
2023-05-17 09:20:33 +0200 | <dminuoso> | So there's that. |
2023-05-17 09:20:55 +0200 | <c_wraith> | ok, that's actually really funny. |
2023-05-17 09:21:14 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-17 09:21:24 +0200 | <dminuoso> | (I really want someone to explain that to me) |
2023-05-17 09:21:57 +0200 | <dminuoso> | Im sure I can construct a violation of distributivity with that |
2023-05-17 09:22:59 +0200 | <c_wraith> | explain which part? Why it preserves the law? because negate minBound === minBound * (-1) |
2023-05-17 09:23:00 +0200 | <dminuoso> | But perhaps thats the reality of numeric types that are carried out in fixed-width registers in ALUs. You have to give up some of the nice mathematical properties. |
2023-05-17 09:23:43 +0200 | <dminuoso> | c_wraith: Ohh hold on, this works out because its modular arithmatic right? |
2023-05-17 09:24:05 +0200 | <c_wraith> | dminuoso: no, it's because it's the exact same issue that results in abs minBound being negative in the first place. |
2023-05-17 09:24:16 +0200 | <c_wraith> | You multiply it by -1 again, and it remains negative |
2023-05-17 09:24:40 +0200 | <dminuoso> | Sure, but that too is sort of modular arithmatic. |
2023-05-17 09:24:40 +0200 | vglfr | (~vglfr@209.198.137.226) (Read error: Connection reset by peer) |
2023-05-17 09:25:03 +0200 | <c_wraith> | You could probably find a consistent way to cast it that way, but... I wouldn't bother :) |
2023-05-17 09:25:09 +0200 | vglfr | (~vglfr@2a0d:3344:1b4f:9e10:5170:30b5:f532:c977) |
2023-05-17 09:25:54 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
2023-05-17 09:26:14 +0200 | gurkenglas | (~user@dynamic-046-114-182-067.46.114.pool.telefonica.de) |
2023-05-17 09:26:36 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) |
2023-05-17 09:27:22 +0200 | vglfr | (~vglfr@2a0d:3344:1b4f:9e10:5170:30b5:f532:c977) (Read error: Connection reset by peer) |
2023-05-17 09:27:33 +0200 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) |
2023-05-17 09:27:57 +0200 | vglfr | (~vglfr@2a0d:3344:1b4f:9e10:5170:30b5:f532:c977) |
2023-05-17 09:27:59 +0200 | <dminuoso> | c_wraith: Well you could define it in terms of some equivalence to `my_abs x = go x 0 where go 0 c = c; go x c = go (-1) (c+1)` |
2023-05-17 09:28:04 +0200 | <dminuoso> | (well and some signum check) |
2023-05-17 09:28:15 +0200 | tessier | (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) |
2023-05-17 09:28:15 +0200 | <dminuoso> | Then all would be good. |
2023-05-17 09:28:28 +0200 | <dminuoso> | But I guess you cant quite do that, because nobody quite knows what Num is for. |
2023-05-17 09:28:34 +0200 | <dminuoso> | It's more than just integral types |
2023-05-17 09:29:12 +0200 | <c_wraith> | have you looked at signum for Complex? Now that's just silly |
2023-05-17 09:29:38 +0200 | chomwitt | (~chomwitt@2a02:587:7a0a:e700:1ac0:4dff:fedb:a3f1) |
2023-05-17 09:30:15 +0200 | <dminuoso> | What is that o.o |
2023-05-17 09:30:32 +0200 | <dminuoso> | signum z@(x:+y) = x/r :+ y/r where r = magnitude z |
2023-05-17 09:31:04 +0200 | <dminuoso> | c_wraith: I suppose that is one solution to satisfy `abs x * signum x == x`? |
2023-05-17 09:31:06 +0200 | <probie> | What's wrong with that? |
2023-05-17 09:31:25 +0200 | <c_wraith> | probie: signum is usually expected to return a result in the set {-1, 0, 1} |
2023-05-17 09:31:31 +0200 | <c_wraith> | dminuoso: yes |
2023-05-17 09:31:41 +0200 | <dminuoso> | quite.. arbitrary. |
2023-05-17 09:31:48 +0200 | <dminuoso> | Perhaps `abs` really does not belong into Num. |
2023-05-17 09:31:55 +0200 | <probie> | c_wraith: Sure, but that's because most numbers are on a line, not a plane |
2023-05-17 09:32:06 +0200 | <probie> | It's giving you a point on the unit circle |
2023-05-17 09:32:08 +0200 | vglfr | (~vglfr@2a0d:3344:1b4f:9e10:5170:30b5:f532:c977) (Ping timeout: 240 seconds) |
2023-05-17 09:32:27 +0200 | <dminuoso> | "on a line"? |
2023-05-17 09:33:00 +0200 | <c_wraith> | probie: I'm well aware of what it's doing. It's just that operation is not signum |
2023-05-17 09:33:31 +0200 | <[Leary]> | The angle / point on the unit circle is the complex number equivalent of sign ... seems like the obvious implementation to me. |
2023-05-17 09:34:40 +0200 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-05-17 09:34:43 +0200 | <probie> | dminuoso: as in there's only 1 dimension of movement |
2023-05-17 09:35:20 +0200 | <dminuoso> | probie: So? Very very roughly Num is the typeclass of rings. |
2023-05-17 09:35:36 +0200 | <dminuoso> | It has nothing to do with how you conceptualize numbers, and whether you think of them as 1-dimensional or 2-dimensional |
2023-05-17 09:36:18 +0200 | <dminuoso> | Though Num has extra baggage, that makes what it captures somewhat unclear |
2023-05-17 09:36:50 +0200 | <jade[m]> | dminuoso: it doesn't enforce any laws though |
2023-05-17 09:37:21 +0200 | <dminuoso> | laws are not enforced either way, even if the haskell report demands them. |
2023-05-17 09:37:32 +0200 | <jade[m]> | yes, that's what I mean though |
2023-05-17 09:37:40 +0200 | <dminuoso> | For Num the usual ring laws are expected to hold though. |
2023-05-17 09:37:52 +0200 | <dminuoso> | The haddock on Num even describes that |
2023-05-17 09:38:01 +0200 | tessier | (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 240 seconds) |
2023-05-17 09:38:25 +0200 | <jade[m]> | customarily expected yeah |
2023-05-17 09:38:56 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2023-05-17 09:41:37 +0200 | <probie> | How can it be customarily expected when one of the most used `Num` instances (`Double`) breaks the laws? :p |
2023-05-17 09:42:32 +0200 | <probie> | On a serious note, I wish it wasn't too late to cut `Num` up into several parts, so that the Ring parts were separate from noise like `fromInteger` or `abs`. |
2023-05-17 09:42:45 +0200 | <jade[m]> | numeric-prelude |
2023-05-17 09:43:11 +0200 | <merijn> | probie: The thing is, people say this all the time, but so far I've not seen any more principled approach that doesn't actually suck to use |
2023-05-17 09:43:12 +0200 | fun-safe-math | (~fun-safe-@c-24-22-79-16.hsd1.or.comcast.net) (Quit: Leaving) |
2023-05-17 09:43:29 +0200 | <merijn> | I will take unprincipled, but usable Num over "principled, but everything sucks" |
2023-05-17 09:44:39 +0200 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
2023-05-17 09:44:40 +0200 | zeenk | (~zeenk@2a02:2f04:a105:f00::7fe) |
2023-05-17 09:45:16 +0200 | <dminuoso> | I for one would like to see int-cast being integrated into base, and become the default/norm for average day use. |
2023-05-17 09:45:35 +0200 | <merijn> | Facts |
2023-05-17 09:45:40 +0200 | nschoe | (~q@2a01:e0a:8e:a190:3fe8:a9d6:8da8:beb7) |
2023-05-17 09:46:05 +0200 | <merijn> | In general death to lossy conversions :p |
2023-05-17 09:46:24 +0200 | <dminuoso> | Well lossy conversions can be fine, but they should be *manual* end *explicit* |
2023-05-17 09:46:45 +0200 | <probie> | merijn: Do you include the (0.1 :: Double) style of lossy conversions in things that should die? |
2023-05-17 09:47:11 +0200 | <dminuoso> | probie: That's not a lossy *conversion* |
2023-05-17 09:47:45 +0200 | vglfr | (~vglfr@209.198.137.226) |
2023-05-17 09:47:47 +0200 | <merijn> | probie: No* |
2023-05-17 09:47:57 +0200 | <dminuoso> | It's very much defined behavior. |
2023-05-17 09:48:04 +0200 | <merijn> | * - I do want compile time checks that literals are "in range" |
2023-05-17 09:48:55 +0200 | <merijn> | i.e. "1024 :: Word8" should be a compile error |
2023-05-17 09:49:23 +0200 | pyook | (~puke@user/puke) (Ping timeout: 246 seconds) |
2023-05-17 09:49:36 +0200 | <dminuoso> | So should: "Mötley Crüe" :: ByteString |
2023-05-17 09:49:54 +0200 | <merijn> | i.e. "fromInteger :: Num a => Integer -> a" should be "fromInteger :: Num a => Integer -> Maybe a" (or Either Error a) |
2023-05-17 09:50:50 +0200 | <merijn> | dminuoso: ByteString has a Lift instance now, so you can trivially implement Validate for it ;) |
2023-05-17 09:51:43 +0200 | vglfr | (~vglfr@209.198.137.226) (Read error: Connection reset by peer) |
2023-05-17 09:52:36 +0200 | <dminuoso> | merijn: I dont want to use TH for this. |
2023-05-17 09:52:40 +0200 | vglfr | (~vglfr@2a0d:3344:1b4f:9e10:5170:30b5:f532:c977) |
2023-05-17 09:52:48 +0200 | <merijn> | dminuoso: Sure, neither do I. I argued it should be in GHC |
2023-05-17 09:53:40 +0200 | <dminuoso> | Not quite sure what that would entail |
2023-05-17 09:54:04 +0200 | <dminuoso> | I suppose IsString could (perhaps optionally) allow for QQ or TH |
2023-05-17 09:54:18 +0200 | <dminuoso> | With GHC automatically doing the splicing behind the scenes. |
2023-05-17 09:54:21 +0200 | <dminuoso> | Cross compilation be damned. |
2023-05-17 09:54:50 +0200 | akegalj | (~akegalj@78-1-10-173.adsl.net.t-com.hr) |
2023-05-17 09:55:02 +0200 | <dminuoso> | merijn: Or we would need some new infrastructure to do compile time validation of such literals that doesnt allow unlimited TH, because I think cross-compilation breakage is the biggest problem |
2023-05-17 09:55:52 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-05-17 09:57:54 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2023-05-17 09:59:20 +0200 | <merijn> | dminuoso: It needs some new infrastructure yes, but that got shot down |
2023-05-17 10:00:03 +0200 | <merijn> | dminuoso: Apparently I even wrote out a proposal :O |
2023-05-17 10:00:05 +0200 | <merijn> | dminuoso: https://mail.haskell.org/pipermail/ghc-devs/2015-February/008239.html |
2023-05-17 10:00:43 +0200 | mmhat | (~mmh@p200300f1c7066882ee086bfffe095315.dip0.t-ipconnect.de) |
2023-05-17 10:03:11 +0200 | captnemo | (~captnemo@193.32.127.232) (Quit: WeeChat 3.8) |
2023-05-17 10:03:50 +0200 | ft | (~ft@p4fc2a88b.dip0.t-ipconnect.de) (Quit: leaving) |
2023-05-17 10:04:23 +0200 | <dminuoso> | merijn: Mmm, is it possible that information from trac got lost? |
2023-05-17 10:04:34 +0200 | <dminuoso> | On gitlab there's only the initial proposal, but nothing to suggest it got shot down |
2023-05-17 10:04:46 +0200 | <dminuoso> | Skimming the mailing list, there seemed to have mostly just positive opinions |
2023-05-17 10:08:03 +0200 | <merijn> | dminuoso: The mailing list in the end was just "implement it as a library first and we'll see" and then it was forgotten forever :p |
2023-05-17 10:08:10 +0200 | titibandit | (~titibandi@user/titibandit) |
2023-05-17 10:17:59 +0200 | vandita | (~vandit@84-236-1-64.pool.digikabel.hu) (Ping timeout: 256 seconds) |
2023-05-17 10:19:23 +0200 | vglfr | (~vglfr@2a0d:3344:1b4f:9e10:5170:30b5:f532:c977) (Ping timeout: 264 seconds) |
2023-05-17 10:19:47 +0200 | vandita | (~vandit@84-236-3-77.pool.digikabel.hu) |
2023-05-17 10:20:03 +0200 | vglfr | (~vglfr@2a0d:3344:1b4f:9e10:cd0d:e437:4fb2:dbb) |
2023-05-17 10:20:37 +0200 | michalz | (~michalz@185.246.204.75) |
2023-05-17 10:21:59 +0200 | <chiselfuse> | hello i'm a newb. in lambda calculus, is there any significance of \z.\j.(\x.\y.y) z j vs \x.\y.y |
2023-05-17 10:24:12 +0200 | <merijn> | define significance |
2023-05-17 10:24:30 +0200 | <merijn> | after beta reducing the first one you get something equivalent to the second (modula alpha renaming) |
2023-05-17 10:24:51 +0200 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) |
2023-05-17 10:25:37 +0200 | titibandit | (~titibandi@user/titibandit) (Remote host closed the connection) |
2023-05-17 10:29:03 +0200 | Everything | (~Everythin@46.185.124.65) (Quit: leaving) |
2023-05-17 10:29:36 +0200 | <merijn> | dminuoso: I'm still not really happy with the way Validate works for polymorphic literals, but I can't really think of a way to improve it :\ |
2023-05-17 10:30:04 +0200 | Everything | (~Everythin@static.208.206.21.65.clients.your-server.de) |
2023-05-17 10:31:36 +0200 | MajorBiscuit | (~MajorBisc@145.94.40.195) |
2023-05-17 10:32:18 +0200 | titibandit | (~titibandi@user/titibandit) |
2023-05-17 10:32:53 +0200 | user____3 | (~user@dynamic-046-114-182-067.46.114.pool.telefonica.de) |
2023-05-17 10:33:16 +0200 | gurkenglas | (~user@dynamic-046-114-182-067.46.114.pool.telefonica.de) (Killed (tantalum.libera.chat (Nickname regained by services))) |
2023-05-17 10:33:16 +0200 | user____3 | gurkenglas |
2023-05-17 10:33:19 +0200 | <chiselfuse> | idk i'm not sure, still trying to figure out what i don't understand |
2023-05-17 10:34:46 +0200 | <merijn> | chiselfuse: I mean, the simplest method in this example would be to just write out the beta reduction of the left one and ask someone to check if you got it right :) |
2023-05-17 10:36:08 +0200 | <chiselfuse> | well you gave me terms like 'beta reduction' and 'modula alpha renaming' that i'm looking into now, good enough :) |
2023-05-17 10:37:18 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:b97c:3991:b4ea:4289) (Remote host closed the connection) |
2023-05-17 10:37:28 +0200 | <merijn> | chiselfuse: beta reduction is roughly just "evaluating the expression by one or more steps" and alpha renaming means that "renaming a variable (without accidentally colliding with an existing name in scope) |
2023-05-17 10:37:47 +0200 | <merijn> | chiselfuse: i.e \x.x and \y.y are "the same" in the sense that they compute the same thing |
2023-05-17 10:38:23 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds) |
2023-05-17 10:38:24 +0200 | <merijn> | chiselfuse: So "equivalent modulo alpha renaming" = computes the same thing in the same way, but some of the variables may be named differently |
2023-05-17 10:38:26 +0200 | <chiselfuse> | right, i heard 'alpha-equivalence' before |
2023-05-17 10:38:59 +0200 | <merijn> | chiselfuse: yeah, alpha-equivalence is also a common nam,e |
2023-05-17 10:40:05 +0200 | MajorBiscuit | (~MajorBisc@145.94.40.195) (Ping timeout: 256 seconds) |
2023-05-17 10:40:15 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2023-05-17 10:40:34 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2023-05-17 10:43:10 +0200 | remexre_ | (~remexre@mail.sift.net) |
2023-05-17 10:44:23 +0200 | remexre | (~remexre@user/remexre) (Ping timeout: 240 seconds) |
2023-05-17 10:44:25 +0200 | shriekingnoise | (~shrieking@186.137.175.87) (Ping timeout: 240 seconds) |
2023-05-17 10:44:26 +0200 | remexre_ | remexre |
2023-05-17 10:47:22 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2023-05-17 10:48:00 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
2023-05-17 10:48:12 +0200 | codaraxis | (~codaraxis@user/codaraxis) |
2023-05-17 10:48:27 +0200 | MajorBiscuit | (~MajorBisc@145.94.153.200) |
2023-05-17 10:49:43 +0200 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Ping timeout: 256 seconds) |
2023-05-17 10:50:14 +0200 | Lord_of_Life_ | Lord_of_Life |
2023-05-17 11:00:31 +0200 | mon_aaraj | (~montchncs@2001:470:69fc:105::8e6b) (Remote host closed the connection) |
2023-05-17 11:06:19 +0200 | ubert | (~Thunderbi@2001:871:263:e49d:f69b:2e8c:6b6:bbcf) |
2023-05-17 11:09:14 +0200 | <merijn> | ah, upgrading to GHC 9.0.2 segfaults my code...that's not worrying at all... |
2023-05-17 11:09:20 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2023-05-17 11:11:19 +0200 | <ocharles[m]> | merijn: well the good news is you have at least two upgrades that might fix it 😄 |
2023-05-17 11:14:04 +0200 | jitrs[m] | (~jitrsmatr@2001:470:69fc:105::3:400c) (Remote host closed the connection) |
2023-05-17 11:14:30 +0200 | <merijn> | Time to break out gdb >.> |
2023-05-17 11:19:46 +0200 | <merijn> | let's see if ghc's -g produces none useless output in gdb nowadays |
2023-05-17 11:22:50 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-17 11:24:39 +0200 | <merijn> | "internal error: Evaluated a CAF (0xcd9e28) that was GC'd!" |
2023-05-17 11:24:43 +0200 | <merijn> | Well...that's not right |
2023-05-17 11:26:47 +0200 | mauke | (~mauke@user/mauke) (Ping timeout: 240 seconds) |
2023-05-17 11:27:07 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
2023-05-17 11:29:20 +0200 | <merijn> | Welp, looks like I don't even have to bother supporting ghc 9.0 and 9.2 on account of them being completely broken on this code :p |
2023-05-17 11:32:10 +0200 | __monty__ | (~toonn@user/toonn) |
2023-05-17 11:32:54 +0200 | <probie> | merijn: is your code doing anything particularly weird that would trip them up? |
2023-05-17 11:33:03 +0200 | <merijn> | No |
2023-05-17 11:33:17 +0200 | <merijn> | Seems to be this bug: https://gitlab.haskell.org/ghc/ghc/-/issues/20959 |
2023-05-17 11:33:22 +0200 | mauke | (~mauke@user/mauke) |
2023-05-17 11:37:42 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:4c1f:3b38:25a9:d6c3) |
2023-05-17 11:39:51 +0200 | <merijn> | but that seems pretty solidly in "GHC fucking up" territory and not really anything I can work around |
2023-05-17 11:42:18 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:4c1f:3b38:25a9:d6c3) (Ping timeout: 250 seconds) |
2023-05-17 11:43:35 +0200 | MajorBiscuit | (~MajorBisc@145.94.153.200) (Ping timeout: 240 seconds) |
2023-05-17 11:47:11 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) (Ping timeout: 240 seconds) |
2023-05-17 11:47:26 +0200 | cfricke | (~cfricke@user/cfricke) |
2023-05-17 11:48:15 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) |
2023-05-17 11:50:23 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) (Excess Flood) |
2023-05-17 11:50:35 +0200 | jero98772 | (~jero98772@2800:484:1d84:9000::2) (Ping timeout: 264 seconds) |
2023-05-17 11:50:54 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) |
2023-05-17 11:51:06 +0200 | MajorBiscuit | (~MajorBisc@145.94.153.200) |
2023-05-17 11:57:04 +0200 | titibandit | (~titibandi@user/titibandit) (Ping timeout: 268 seconds) |
2023-05-17 11:57:17 +0200 | Pickchea | (~private@user/pickchea) |
2023-05-17 11:59:08 +0200 | razetime | (~quassel@117.193.3.16) |
2023-05-17 11:59:35 +0200 | <merijn> | ah, looks like 9.2 might actually work *fingers crossed* |
2023-05-17 12:02:20 +0200 | jero98772 | (~jero98772@2800:484:1d84:9000::2) |
2023-05-17 12:07:23 +0200 | xff0x | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 264 seconds) |
2023-05-17 12:10:27 +0200 | wagle | (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
2023-05-17 12:10:38 +0200 | wagle | (~wagle@quassel.wagle.io) |
2023-05-17 12:13:23 +0200 | wagle | (~wagle@quassel.wagle.io) (Client Quit) |
2023-05-17 12:13:35 +0200 | mauke | (~mauke@user/mauke) (Ping timeout: 240 seconds) |
2023-05-17 12:14:10 +0200 | wagle | (~wagle@quassel.wagle.io) |
2023-05-17 12:15:13 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2023-05-17 12:16:06 +0200 | titibandit | (~titibandi@user/titibandit) |
2023-05-17 12:18:09 +0200 | mauke | (~mauke@user/mauke) |
2023-05-17 12:20:49 +0200 | cheater | (~Username@user/cheater) |
2023-05-17 12:25:05 +0200 | MajorBiscuit | (~MajorBisc@145.94.153.200) (Ping timeout: 240 seconds) |
2023-05-17 12:25:42 +0200 | vglfr | (~vglfr@2a0d:3344:1b4f:9e10:cd0d:e437:4fb2:dbb) (Ping timeout: 265 seconds) |
2023-05-17 12:30:28 +0200 | vandita | (~vandit@84-236-3-77.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-05-17 12:31:59 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Ping timeout: 240 seconds) |
2023-05-17 12:32:26 +0200 | vandita | (~vandit@85-238-77-47.pool.digikabel.hu) |
2023-05-17 12:34:11 +0200 | raym | (~ray@user/raym) (Quit: Server Maintenance) |
2023-05-17 12:36:26 +0200 | vglfr | (~vglfr@2a0d:3344:1b4f:9e10:11d0:74b0:153c:eb2e) |
2023-05-17 12:37:35 +0200 | CiaoSen | (~Jura@dynamic-046-114-218-079.46.114.pool.telefonica.de) (Ping timeout: 240 seconds) |
2023-05-17 12:48:00 +0200 | razetime | (~quassel@117.193.3.16) (Remote host closed the connection) |
2023-05-17 12:48:00 +0200 | barcisz | (~barcisz@79.191.229.20.ipv4.supernova.orange.pl) |
2023-05-17 12:50:28 +0200 | vglfr | (~vglfr@2a0d:3344:1b4f:9e10:11d0:74b0:153c:eb2e) (Ping timeout: 240 seconds) |
2023-05-17 12:54:33 +0200 | vglfr | (~vglfr@209.198.137.226) |
2023-05-17 12:56:39 +0200 | vglfr | (~vglfr@209.198.137.226) (Read error: Connection reset by peer) |
2023-05-17 12:57:22 +0200 | vglfr | (~vglfr@2a0d:3344:1b4f:9e10:11d0:74b0:153c:eb2e) |
2023-05-17 12:58:20 +0200 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
2023-05-17 13:00:03 +0200 | jero98772 | (~jero98772@2800:484:1d84:9000::2) (Ping timeout: 256 seconds) |
2023-05-17 13:02:49 +0200 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
2023-05-17 13:06:33 +0200 | xff0x | (~xff0x@ai098135.d.east.v6connect.net) |
2023-05-17 13:08:14 +0200 | mei | (~mei@user/mei) (Ping timeout: 265 seconds) |
2023-05-17 13:11:16 +0200 | jero98772 | (~jero98772@2800:484:1d84:9000::2) |
2023-05-17 13:17:56 +0200 | MajorBiscuit | (~MajorBisc@145.94.40.195) |
2023-05-17 13:19:09 +0200 | ubert | (~Thunderbi@2001:871:263:e49d:f69b:2e8c:6b6:bbcf) (Quit: ubert) |
2023-05-17 13:19:21 +0200 | ub | (~Thunderbi@188-23-67-228.adsl.highway.telekom.at) |
2023-05-17 13:22:47 +0200 | gurkenglas | (~user@dynamic-046-114-182-067.46.114.pool.telefonica.de) (Ping timeout: 268 seconds) |
2023-05-17 13:23:25 +0200 | ub | (~Thunderbi@188-23-67-228.adsl.highway.telekom.at) (Ping timeout: 240 seconds) |
2023-05-17 13:24:39 +0200 | Tewuzij[m] | (~tewuzijtc@2001:470:69fc:105::2:eddc) |
2023-05-17 13:25:06 +0200 | ubert | (~Thunderbi@2001:871:263:e49d:a042:6bf0:8ad9:6525) |
2023-05-17 13:35:37 +0200 | ubert | (~Thunderbi@2001:871:263:e49d:a042:6bf0:8ad9:6525) (Quit: ubert) |
2023-05-17 13:37:57 +0200 | titibandit | (~titibandi@user/titibandit) (Remote host closed the connection) |
2023-05-17 13:46:15 +0200 | akegalj | (~akegalj@78-1-10-173.adsl.net.t-com.hr) (Quit: leaving) |
2023-05-17 13:49:29 +0200 | byte | (~byte@user/byte) (Ping timeout: 246 seconds) |
2023-05-17 13:50:29 +0200 | acidjnk | (~acidjnk@p200300d6e7072f36108c5a383809f7d0.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2023-05-17 13:53:04 +0200 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.8) |
2023-05-17 13:55:04 +0200 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
2023-05-17 13:57:13 +0200 | titibandit | (~titibandi@user/titibandit) |
2023-05-17 13:57:37 +0200 | chele | (~chele@user/chele) |
2023-05-17 14:09:25 +0200 | vandita | (~vandit@85-238-77-47.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-05-17 14:11:32 +0200 | vandita | (~vandit@94-21-55-76.pool.digikabel.hu) |
2023-05-17 14:12:20 +0200 | cfricke | (~cfricke@user/cfricke) |
2023-05-17 14:13:29 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2023-05-17 14:16:35 +0200 | codaraxis__ | (~codaraxis@user/codaraxis) |
2023-05-17 14:17:25 +0200 | codaraxis___ | (~codaraxis@user/codaraxis) |
2023-05-17 14:18:23 +0200 | codaraxis___ | (~codaraxis@user/codaraxis) (Max SendQ exceeded) |
2023-05-17 14:18:27 +0200 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-05-17 14:20:08 +0200 | codaraxis | (~codaraxis@user/codaraxis) (Ping timeout: 240 seconds) |
2023-05-17 14:21:01 +0200 | codaraxis__ | (~codaraxis@user/codaraxis) (Ping timeout: 240 seconds) |
2023-05-17 14:21:39 +0200 | nek0 | (~nek0@2a01:4f8:222:2b41::12) (Ping timeout: 256 seconds) |
2023-05-17 14:25:01 +0200 | elain4 | (~textual@2601:5c1:4402:cd30:7198:8fd2:4f69:971) |
2023-05-17 14:36:25 +0200 | codaraxis___ | (~codaraxis@user/codaraxis) |
2023-05-17 14:38:27 +0200 | elain4 | (~textual@2601:5c1:4402:cd30:7198:8fd2:4f69:971) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2023-05-17 14:40:07 +0200 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2023-05-17 14:41:21 +0200 | nek0 | (~nek0@2a01:4f8:222:2b41::12) |
2023-05-17 14:42:10 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-05-17 14:42:10 +0200 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-05-17 14:42:10 +0200 | wroathe | (~wroathe@user/wroathe) |
2023-05-17 15:03:32 +0200 | <texasmynsted> | How do you _find_ useful functions and type classes? I just learned about interact a few days ago and it is in Prelude. |
2023-05-17 15:03:44 +0200 | <texasmynsted> | Is there cool-function-opedia or something? |
2023-05-17 15:03:59 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2023-05-17 15:05:43 +0200 | <sm> | texasmynsted: there is typeclassopaedia, certainly |
2023-05-17 15:06:00 +0200 | <sm> | reading through all of base is a great idea also |
2023-05-17 15:06:48 +0200 | <mmynsted[m]> | yes typeclassopedia is nice but what about beyond that? |
2023-05-17 15:07:23 +0200 | <sm> | are there are type classes that matter beyond that ? |
2023-05-17 15:08:40 +0200 | gurkenglas | (~user@dynamic-046-114-182-067.46.114.pool.telefonica.de) |
2023-05-17 15:11:22 +0200 | Pickchea | (~private@user/pickchea) |
2023-05-17 15:15:02 +0200 | <byorgey> | The cool-function-opedia is hosted at https://hackage.haskell.org/package/base =) |
2023-05-17 15:16:37 +0200 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
2023-05-17 15:17:30 +0200 | codaraxis__ | (~codaraxis@user/codaraxis) |
2023-05-17 15:21:43 +0200 | codaraxis___ | (~codaraxis@user/codaraxis) (Ping timeout: 256 seconds) |
2023-05-17 15:21:56 +0200 | <mmynsted[m]> | Heheh. Okay fair enough byorgey |
2023-05-17 15:23:06 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-17 15:23:34 +0200 | <mmynsted[m]> | sm: what about an invariant functor like https://hackage.haskell.org/package/invariant-0.6.1/docs/Data-Functor-Invariant.html ? Unless you knew what to look for you wound not find it. |
2023-05-17 15:23:35 +0200 | Feuermagier | (~Feuermagi@user/feuermagier) (Ping timeout: 240 seconds) |
2023-05-17 15:24:08 +0200 | bontaq | (~user@ool-45779b84.dyn.optonline.net) |
2023-05-17 15:25:43 +0200 | Feuermagier | (~Feuermagi@user/feuermagier) |
2023-05-17 15:27:12 +0200 | <sm> | yes, Haskell library/concept space is so large you'll never know everything to look for |
2023-05-17 15:27:23 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
2023-05-17 15:28:43 +0200 | <sm> | (who is looking for invariant functors ? not many) |
2023-05-17 15:34:35 +0200 | elain4 | (~textual@static-71-251-226-194.rcmdva.fios.verizon.net) |
2023-05-17 15:38:31 +0200 | cheater_ | (~Username@user/cheater) |
2023-05-17 15:39:27 +0200 | <kuribas> | We have some code in Python which is calculating different timeseries, where some series depend on others. |
2023-05-17 15:39:28 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 240 seconds) |
2023-05-17 15:39:41 +0200 | cheater__ | (~Username@user/cheater) |
2023-05-17 15:39:41 +0200 | cheater__ | cheater |
2023-05-17 15:39:44 +0200 | <merijn> | texasmynsted: Hanging out here, asking for advice, the haskell reddit, lurking on haskell-cafe... |
2023-05-17 15:39:58 +0200 | <kuribas> | I wonder how you would do this in haskell, making it easy to test. |
2023-05-17 15:40:15 +0200 | <merijn> | texasmynsted: Here, let me contribute my own useful library :p |
2023-05-17 15:40:22 +0200 | <merijn> | @hackage validated-literals |
2023-05-17 15:40:22 +0200 | <lambdabot> | https://hackage.haskell.org/package/validated-literals |
2023-05-17 15:40:39 +0200 | <kuribas> | In Python you have vcr, which is basically saving timeseries so they can be tested later without having to fetch the data every time. |
2023-05-17 15:41:12 +0200 | <kuribas> | Maybe describing the timeseries graph with an applicative effect, where the effect can be changed for testing? |
2023-05-17 15:41:22 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:4c1f:3b38:25a9:d6c3) |
2023-05-17 15:42:47 +0200 | cheater_ | (~Username@user/cheater) (Ping timeout: 240 seconds) |
2023-05-17 15:43:04 +0200 | <kuribas> | And actually computing the whole graph would be the identity functor then? |
2023-05-17 15:43:32 +0200 | ddellacosta | (~ddellacos@143.244.47.100) |
2023-05-17 15:43:48 +0200 | <kuribas> | Or a free monad... |
2023-05-17 15:43:50 +0200 | <merijn> | byorgey: I thought the cool-function-opedia was ghc-prim? :p |
2023-05-17 15:44:19 +0200 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.8) |
2023-05-17 15:45:47 +0200 | gurkenglas | (~user@dynamic-046-114-182-067.46.114.pool.telefonica.de) (Ping timeout: 264 seconds) |
2023-05-17 15:45:50 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:4c1f:3b38:25a9:d6c3) (Ping timeout: 250 seconds) |
2023-05-17 15:46:39 +0200 | chomwitt | (~chomwitt@2a02:587:7a0a:e700:1ac0:4dff:fedb:a3f1) (Ping timeout: 256 seconds) |
2023-05-17 15:47:44 +0200 | <ncf> | that's the cursed-functionomicon |
2023-05-17 15:48:58 +0200 | <byorgey> | haha |
2023-05-17 15:49:42 +0200 | <merijn> | ghc-prim has all the functions *I* think are cool :p |
2023-05-17 15:49:59 +0200 | <byorgey> | hmm, you're right, why didn't anyone ever tell me about panicError :: Addr# -> a before? |
2023-05-17 15:50:11 +0200 | <byorgey> | I've wanted that function so many times |
2023-05-17 15:50:28 +0200 | <merijn> | byorgey: I've always had a soft spot for reallyUnsafePtrEquality# |
2023-05-17 15:50:52 +0200 | <merijn> | I like how they felt it necessary to add the "really" to emphasise this is next level unsafe ;) |
2023-05-17 15:51:41 +0200 | <byorgey> | Yes, that one is nice. I especially like the implementation https://hackage.haskell.org/package/ghc-prim-0.10.0/docs/src/GHC.Prim.html#reallyUnsafePtrEquality… : |
2023-05-17 15:51:44 +0200 | <byorgey> | reallyUnsafePtrEquality# = reallyUnsafePtrEquality# |
2023-05-17 15:51:59 +0200 | <merijn> | byorgey: That's the implementation of everything in ghc-prim, though |
2023-05-17 15:52:06 +0200 | <byorgey> | I know ;-) |
2023-05-17 15:52:51 +0200 | <byorgey> | I assume they are magically replaced by magical calls to runtime functions or something |
2023-05-17 15:53:09 +0200 | <merijn> | that or compiler intrinsics |
2023-05-17 16:03:41 +0200 | <geekosaur> | they're not even replaced; the file is only used for documentation, the compiler generates them directly instead of calling into GHC.Prim |
2023-05-17 16:03:58 +0200 | <geekosaur> | many of them compile to machine instructions, the rest to Cmm |
2023-05-17 16:04:10 +0200 | <merijn> | geekosaur: iirc that's incorrect, the file exists for type checking too |
2023-05-17 16:04:32 +0200 | <geekosaur> | mm, probably |
2023-05-17 16:04:45 +0200 | <geekosaur> | but it certainly doesn't exist for code |
2023-05-17 16:06:00 +0200 | bitdex_ | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2023-05-17 16:11:03 +0200 | <mmynsted[m]> | <merijn> "texasmynsted: Here, let me..." <- okay, I am game. Which libraries? |
2023-05-17 16:11:55 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2023-05-17 16:12:41 +0200 | <merijn> | mmynsted[m]: It was linked the next message :p |
2023-05-17 16:14:15 +0200 | <texasmynsted> | oooh. That did not come through the Matrix bridge. |
2023-05-17 16:15:49 +0200 | hamzam3 | (~hamzam3@2a01:e0a:1ee:8c60:a849:db6d:3c76:bf9d) |
2023-05-17 16:16:29 +0200 | <texasmynsted> | nice! |
2023-05-17 16:16:47 +0200 | <texasmynsted> | looks useful |
2023-05-17 16:17:05 +0200 | vandita | (~vandit@94-21-55-76.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-05-17 16:17:17 +0200 | <merijn> | I like it/am proud of it because it manages to do one super useful and powerful thing easily with, like, 0 dependencies :p |
2023-05-17 16:19:38 +0200 | vglfr | (~vglfr@2a0d:3344:1b4f:9e10:11d0:74b0:153c:eb2e) (Ping timeout: 265 seconds) |
2023-05-17 16:20:36 +0200 | <hamzam3> | Hey, nice work on your library ! |
2023-05-17 16:20:45 +0200 | <hamzam3> | But what is the $$ operator ? |
2023-05-17 16:21:24 +0200 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-05-17 16:22:03 +0200 | mmynsted[m] | (~mmynstedm@2001:470:69fc:105::3:474b) () |
2023-05-17 16:23:01 +0200 | <[exa]> | hamzam3: template haskell splice (think macro) |
2023-05-17 16:24:01 +0200 | <[exa]> | oh actually the double $ is a _typed_ expression splice, cool |
2023-05-17 16:24:06 +0200 | <[exa]> | see below here https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/template_haskell.html |
2023-05-17 16:24:30 +0200 | vandita | (~vandit@89-186-118-204.pool.digikabel.hu) |
2023-05-17 16:24:45 +0200 | <merijn> | hamzam3: typed TH splice |
2023-05-17 16:25:28 +0200 | <merijn> | Typed TH runs after type checking so you can smuggle the type information from the expression into the TH splice, so it can infer what you're trying to convert to |
2023-05-17 16:25:41 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6) |
2023-05-17 16:26:11 +0200 | vglfr | (~vglfr@209.198.137.226) |
2023-05-17 16:27:06 +0200 | <merijn> | I'm always too lazy to remember/lookup how to write relevant TH code, whereas writing "a -> Maybe b" is easy and for most things you can use the default Lift instance, so you don't have to know any TH :) |
2023-05-17 16:28:59 +0200 | hamzam3 | (~hamzam3@2a01:e0a:1ee:8c60:a849:db6d:3c76:bf9d) (Ping timeout: 264 seconds) |
2023-05-17 16:30:45 +0200 | acidjnk | (~acidjnk@p200300d6e7072f360c76d857e5b4f035.dip0.t-ipconnect.de) |
2023-05-17 16:32:17 +0200 | byte | (~byte@user/byte) |
2023-05-17 16:32:18 +0200 | shriekingnoise | (~shrieking@186.137.175.87) |
2023-05-17 16:33:34 +0200 | <texasmynsted> | yes. very nice |
2023-05-17 16:37:02 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 265 seconds) |
2023-05-17 16:38:55 +0200 | hamzam3 | (~hamzam3@2a01:e0a:1ee:8c60:a421:e2fa:f46b:39b8) |
2023-05-17 16:41:19 +0200 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
2023-05-17 16:43:24 +0200 | mikoto-chan | (~mikoto-ch@ip-213-49-58-19.dsl.scarlet.be) |
2023-05-17 16:44:05 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2023-05-17 16:49:06 +0200 | <hamzam3> | Oh okay, I don't know about this |
2023-05-17 16:49:16 +0200 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:35aa:1a22:57ad:710) |
2023-05-17 16:50:51 +0200 | <merijn> | hamzam3: TemplateHaskell is basically just "Haskell code that is run at compile time and produces as output Haskell code (well, an AST) that the compiler then splices into the source" (so, as [exa] mentioned basically, macros if the language you wrote macros in was Haskell ;)) |
2023-05-17 16:51:29 +0200 | use-value1 | (~Thunderbi@2a00:23c6:8a03:2f01:78df:d984:be91:da33) |
2023-05-17 16:53:05 +0200 | <hamzam3> | Okay, I'm reading something on it. Can you explain to me something I don't understand ? |
2023-05-17 16:53:26 +0200 | <hamzam3> | What is happening here ? |
2023-05-17 16:53:29 +0200 | <hamzam3> | tupleReplicate :: Int -> Q Exp |
2023-05-17 16:53:29 +0200 | <hamzam3> | tupleReplicate n = do id <- newName "x" |
2023-05-17 16:53:29 +0200 | <hamzam3> | return $ LamE (VarP id) |
2023-05-17 16:53:29 +0200 | <hamzam3> | (TupE $ replicate n $ VarE id) |
2023-05-17 16:53:35 +0200 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:35aa:1a22:57ad:710) (Ping timeout: 246 seconds) |
2023-05-17 16:53:35 +0200 | use-value1 | use-value |
2023-05-17 16:53:42 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
2023-05-17 16:54:08 +0200 | <merijn> | hamzam3: Q is the monad for Quasiquotation, which runs at compile time and it's returning an Exp (haskell expression) |
2023-05-17 16:54:28 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 240 seconds) |
2023-05-17 16:54:37 +0200 | <merijn> | hamzam3: newName "x" creates a new variable name that doesn't exist (to prevent accidentally refering to some variable in the surrounding code) |
2023-05-17 16:54:47 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2023-05-17 16:55:19 +0200 | <merijn> | hamzam3: And it retuns LamE (lambda expression) who's variable is a VarP (variable pattern) with name 'id' (the newly generated name we created) |
2023-05-17 16:55:21 +0200 | <c_wraith> | Oh. I see why that can't just use a quote. n-ary tuple! |
2023-05-17 16:56:03 +0200 | <merijn> | hamzam3: And the return value of that lambda is a TupE (tuple expression) consisting of "replicate n" VarE id |
2023-05-17 16:56:33 +0200 | <merijn> | hamzam3: So basically, that produces the code: "\x -> (x, x, ..., x)" where the number of 'x' in the tuple is 'n' (the input) |
2023-05-17 16:56:57 +0200 | <merijn> | so 'tupleReplicate 3' produces an AST mapping to "\x -> (x, x, x)" |
2023-05-17 16:57:07 +0200 | <c_wraith> | what does TupE do if its argument has 0 or 1 elements? |
2023-05-17 16:57:51 +0200 | <merijn> | No clue? :p |
2023-05-17 16:58:42 +0200 | <c_wraith> | I mean, I know what it'll do if the list is too long.. same compile error you get if you try to do a tuple literal that's too long. |
2023-05-17 16:58:58 +0200 | <hamzam3> | Ah I was searching for that |
2023-05-17 16:59:13 +0200 | <hamzam3> | Okay nice thank you very much |
2023-05-17 16:59:44 +0200 | <hamzam3> | And so the $$ makes the AST generated dependent on the type of output |
2023-05-17 16:59:51 +0200 | <merijn> | hamzam3: But you can have it generate, pretty much arbitrary Haskell even based on, say, input files read at compile time |
2023-05-17 17:00:06 +0200 | <merijn> | hamzam3: Well, regular TemplateHaskell can produce ASTs/code that doesn't typecheck |
2023-05-17 17:00:48 +0200 | titibandit | (~titibandi@user/titibandit) (Remote host closed the connection) |
2023-05-17 17:01:04 +0200 | <merijn> | "Q Exp" <- no indication of the type of the expression and thus you end up with functions like "Exp -> Exp -> Q Exp" that may or may not produce valid Haskell (if not, that's just a compile error after the TH runs) |
2023-05-17 17:01:33 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-05-17 17:01:59 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2023-05-17 17:02:16 +0200 | <merijn> | hamzam3: The idea behind Typed TH is that all the TH expressions are typed and checked that the result AST/code actually typechecks, so you get "Q (TExp Bool)" <- this produces a TH expression of type Bool and "TExp Bool -> TExp Int -> Q (TExp Bool)" (for example, so that everything always typechecks |
2023-05-17 17:03:04 +0200 | <merijn> | hamzam3: So a splice with $$() has typing information what type the expression is *supposed* to have and then uses Validate to handle the conversion to that type, at compile time |
2023-05-17 17:03:37 +0200 | <ski> | MetaML/MetaOCaml does typed splices in typed quasiquotations |
2023-05-17 17:04:52 +0200 | Tuplanolla | (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
2023-05-17 17:05:51 +0200 | <hamzam3> | And so the secret of your lib is the liftResult function ? |
2023-05-17 17:06:05 +0200 | <hamzam3> | What does it do ? |
2023-05-17 17:06:34 +0200 | <merijn> | hamzam3: Lift turns a value into "an AST corresponding to that" |
2023-05-17 17:07:14 +0200 | <merijn> | hamzam3: You have to keep in mind there's two levels here there's "values running in the TH code at compile time" and "values (i.e. Haskell ASTs) that will be compiled into the final code when TH is done" |
2023-05-17 17:07:24 +0200 | <merijn> | hamzam3: Lift turns the former into the latter |
2023-05-17 17:08:01 +0200 | MajorBiscuit | (~MajorBisc@145.94.40.195) (Ping timeout: 240 seconds) |
2023-05-17 17:08:13 +0200 | <merijn> | i.e. it turns a "compile runtime 'Even 4' value into an AST that gets compiled into the surrounding source" |
2023-05-17 17:08:14 +0200 | <ski> | (in MetaML, you can also have quasiquotation pattern, even matching a (meta-) variable against the body of e.g. a lambda. it's looke like e.g. `fun getBody <fn x => ~(f <x>)> = SOME f | getBody _ = NONE', which would define a function of signature val getBody : <'a -> 'b> -> (<'a> -> <'b>) option that tries to extract the body (as a meta-function, depending on the input variable, substituting given code in |
2023-05-17 17:08:20 +0200 | <ski> | its place), if it's given (code for) a lambda expression) |
2023-05-17 17:13:41 +0200 | <hamzam3> | Basically TH is about running code at compile time ? |
2023-05-17 17:14:01 +0200 | <hamzam3> | And you have used that feature to create subtyping ? |
2023-05-17 17:14:37 +0200 | <merijn> | hamzam3: Not really subtyping |
2023-05-17 17:14:48 +0200 | <hamzam3> | At least subtyping |
2023-05-17 17:14:52 +0200 | <merijn> | hamzam3: TH is indeed all about "running code at compile time to produce other code" |
2023-05-17 17:15:08 +0200 | <merijn> | hamzam3: More like, that library runs partial conversions at compile time |
2023-05-17 17:16:01 +0200 | <c_wraith> | merijn: GHC 9 made a mess of the types of typed TH. I guess it's still Q (TExp Foo) under the hood, but that's no longer the surface type |
2023-05-17 17:16:54 +0200 | <hamzam3> | So the only part of the type is included in the new Validate types. That's subtyping, I wanted to do that for dive into that for a long time. |
2023-05-17 17:17:17 +0200 | <merijn> | hamzam3: I think the even example is a nice one. Imagine you want a type-safe "Even" newtype, the easiest way is to write a function like "mkEven :: Integer -> Maybe Even". But what if I want to write an "Even" literal? Sure, you can just write "fromJust (mkEven 4)" or something or even just "Even 3" if the constructor is exposed, but that has two problems: 1) conversion happens at runtime (which can be |
2023-05-17 17:17:23 +0200 | <merijn> | undesirable if it's an expensive one), and 2) if it fails, it will fail *at runtime*, but since it's a literal that means it will enver work |
2023-05-17 17:17:46 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:4c1f:3b38:25a9:d6c3) |
2023-05-17 17:17:56 +0200 | <merijn> | hamzam3: I mean, you can do any pure function you want, tbh |
2023-05-17 17:18:18 +0200 | <merijn> | Is converting a String into an Integer subtyping? |
2023-05-17 17:18:31 +0200 | <merijn> | I wouldn't say so, but you certainly can with that |
2023-05-17 17:18:36 +0200 | <hamzam3> | Ah no |
2023-05-17 17:18:51 +0200 | <ski> | TH is a form of meta-programming |
2023-05-17 17:18:58 +0200 | <merijn> | hamzam3: Another useful example might be something like the URI datatype from network-uri and wanting to write a URI in your source code |
2023-05-17 17:19:25 +0200 | <merijn> | hamzam3: with Validate you could use network-uri's code to parse a string into a URI at compile time and throw an error (at compile time!) if it fails |
2023-05-17 17:19:57 +0200 | <hamzam3> | I see the interest of this |
2023-05-17 17:20:03 +0200 | <merijn> | hamzam3: Basically, anytime you wanna do "Foo -> Maybe Bar" where Foo is a compile time constant and you want the failure to happen *at compile time* you can use this |
2023-05-17 17:20:27 +0200 | <merijn> | because handling "Nothing" for a compile time constant is nonsensical |
2023-05-17 17:22:17 +0200 | <hamzam3> | Wow that seems like a fundamental feature. Maybe it can be added in Haskell directly by default. |
2023-05-17 17:22:43 +0200 | <EvanR> | nah verifying the general validity of a url constant in the code should happen after the entire server stack is redeployed to production |
2023-05-17 17:23:02 +0200 | <EvanR> | and someone, end user tries to access it |
2023-05-17 17:23:22 +0200 | <hamzam3> | For subtyping, I was thinking only about a -> a particularly. |
2023-05-17 17:23:32 +0200 | <hamzam3> | But it is more general indeed. |
2023-05-17 17:24:07 +0200 | <hamzam3> | EvanR: Why ? |
2023-05-17 17:24:11 +0200 | <ski> | hm, how does `liftResult' differ from the usual `lift' ? |
2023-05-17 17:24:34 +0200 | <hamzam3> | (It's sarcasm ?) |
2023-05-17 17:24:36 +0200 | <EvanR> | yes |
2023-05-17 17:24:38 +0200 | <merijn> | ski: the default implementation is just Lift |
2023-05-17 17:25:01 +0200 | <merijn> | ski: But some types aren't liftable and then you can fake it by redoing the conversion with a fromJust at runtime |
2023-05-17 17:25:08 +0200 | <ski> | hamzam3 : i still see no subtyping around here |
2023-05-17 17:25:22 +0200 | <hamzam3> | Even is a subtype of Integer no ? |
2023-05-17 17:25:24 +0200 | <merijn> | ski: Look at the ByteString example in the repo (which is outdated now, because BS has Lift now) |
2023-05-17 17:25:28 +0200 | <ski> | (unless you mean in an informal sense, i guess) |
2023-05-17 17:25:48 +0200 | <hamzam3> | ski: You do a from literal that only does a test |
2023-05-17 17:25:52 +0200 | <merijn> | ski: https://github.com/merijn/validated-literals/blob/master/examples/ByteString.hs |
2023-05-17 17:26:01 +0200 | <EvanR> | the set of even integers is a subset of the set of integers, but is it a subtype. In the sense that an even number works in any code where an integer works |
2023-05-17 17:26:18 +0200 | <EvanR> | where an integer is required |
2023-05-17 17:26:21 +0200 | <ski> | hamzam3 : yes .. but's not really similar to how subtyping type systems work |
2023-05-17 17:26:44 +0200 | <hamzam3> | ski: how do they usually work ? |
2023-05-17 17:27:14 +0200 | <ski> | subtyping would be allowing the use of `Even' where an `Integer' is expected |
2023-05-17 17:27:15 +0200 | <hamzam3> | EvanR: Ah like it will not fit into an Integer -> Integer function ? |
2023-05-17 17:27:23 +0200 | <hamzam3> | Oh okay I see |
2023-05-17 17:27:31 +0200 | <EvanR> | that's a good example probably |
2023-05-17 17:27:31 +0200 | <hamzam3> | How can we get it to there ? |
2023-05-17 17:27:42 +0200 | <ski> | here you're going in the other direction, and, moreover, you're not passing in a `Integer', you're passing in a compiler-time `Integer' *literal* |
2023-05-17 17:28:47 +0200 | <EvanR> | you might be served nicely by just putting a trivial conversion from Even to Integer where there is a mismatch |
2023-05-17 17:28:50 +0200 | <hamzam3> | Yes but it's nearly there. |
2023-05-17 17:29:38 +0200 | <hamzam3> | Yeah. But for instance for the url example. |
2023-05-17 17:29:54 +0200 | <hamzam3> | There are function that use url that expect it to be a string. |
2023-05-17 17:30:07 +0200 | <EvanR> | any url can be converted to a string |
2023-05-17 17:30:09 +0200 | <hamzam3> | so once the url is checked how can we use it ? |
2023-05-17 17:30:19 +0200 | <hamzam3> | But the compiler will not accept it |
2023-05-17 17:31:26 +0200 | <EvanR> | are you talking about the reverse direction, going from string to URL (which might fail) |
2023-05-17 17:31:26 +0200 | <hamzam3> | if we have Url as a type for x. x has to enter String functions. How can we get there ? |
2023-05-17 17:31:58 +0200 | <hamzam3> | Else we'll have to do conversions everywhere we use it no ? |
2023-05-17 17:32:10 +0200 | <EvanR> | if you just want to use string functions, you can prepend a Url -> String |
2023-05-17 17:32:13 +0200 | <c_wraith> | yes, you will. and that's good. It keeps the types straight. |
2023-05-17 17:32:29 +0200 | <c_wraith> | A string might contain anything. A URL will contain a url. |
2023-05-17 17:32:42 +0200 | <hamzam3> | But we know Url is a String |
2023-05-17 17:32:46 +0200 | <c_wraith> | no, it's not |
2023-05-17 17:32:48 +0200 | <hamzam3> | Is there a feature ? |
2023-05-17 17:32:55 +0200 | <ski> | merijn : i'm wondering if it would be better to have `liftResult' in a superclass of `Validate', avoiding the `Proxy' argument (btw, couldn't that be `proxy a' ?) |
2023-05-17 17:33:02 +0200 | <EvanR> | all urls can be converted to a string |
2023-05-17 17:33:03 +0200 | <hamzam3> | It should be viewed as one in the majority of contexts |
2023-05-17 17:33:06 +0200 | <c_wraith> | a url can be serialized as a string, but it's actually a structured data type |
2023-05-17 17:33:17 +0200 | <hamzam3> | There is no Haskell feature for that ? |
2023-05-17 17:33:33 +0200 | <c_wraith> | No. Different things are different. That's really important for Haskell. |
2023-05-17 17:33:51 +0200 | <c_wraith> | like, that's the single most important thing in Haskell. |
2023-05-17 17:33:58 +0200 | <hamzam3> | okok. other than that it's pretty cool and interesting |
2023-05-17 17:34:02 +0200 | <EvanR> | when anything can be anythinged, you get javascript |
2023-05-17 17:34:16 +0200 | <EvanR> | in which case the compiler can't tell you anything is wrong |
2023-05-17 17:34:19 +0200 | <hamzam3> | Oh okay. But if we control anythingations |
2023-05-17 17:34:31 +0200 | <c_wraith> | even javascript prevents some things. you get perl. :P |
2023-05-17 17:34:31 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2023-05-17 17:34:37 +0200 | <ski> | "It should be viewed as one in the majority of contexts" -- i'm certainly not convinced that would be appropriate. and even if it was viewed as that, i don't know if that really buys that much |
2023-05-17 17:35:00 +0200 | <EvanR> | stringly typed data |
2023-05-17 17:35:08 +0200 | <ski> | @quote stark |
2023-05-17 17:35:08 +0200 | <lambdabot> | AlanPerlis says: The string is a stark data structure and everywhere it is passed there is much duplication of process. It is a perfect vehicle for hiding information. |
2023-05-17 17:35:37 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 268 seconds) |
2023-05-17 17:36:01 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2023-05-17 17:36:03 +0200 | <hamzam3> | What should be viewed as one ? |
2023-05-17 17:36:16 +0200 | <ski> | URL viewed as a string |
2023-05-17 17:36:48 +0200 | nick4 | (~nick@2600:8807:9103:b700:9410:acda:ffad:e096) |
2023-05-17 17:37:00 +0200 | <EvanR> | I hear in TCL everything can be viewed as a string |
2023-05-17 17:37:07 +0200 | <hamzam3> | Ah. Well it would prevent a lot conversion bloating. |
2023-05-17 17:37:18 +0200 | <EvanR> | conversions don't necessarily need to cost anything at runtime |
2023-05-17 17:37:22 +0200 | <hamzam3> | And who is Alan Perlis ? |
2023-05-17 17:37:27 +0200 | <EvanR> | like newtype unwrapped, is free |
2023-05-17 17:37:33 +0200 | <EvanR> | unwrapping |
2023-05-17 17:38:01 +0200 | <EvanR> | which would be a good way to implement the Even integer |
2023-05-17 17:38:11 +0200 | <hamzam3> | But the maintenance. A lot of people complain about maintenance. |
2023-05-17 17:38:19 +0200 | <ski> | "Alan Jay Perlis (April 1, 1922 – February 7, 1990) was an American computer scientist and professor at Purdue University, Carnegie Mellon University and Yale University. He is best known for his pioneering work in programming languages and was the first recipient of the Turing Award." -- <https://en.wikipedia.org/wiki/Alan_Perlis> |
2023-05-17 17:38:24 +0200 | <EvanR> | in haskell a lot of people praise the maintenance |
2023-05-17 17:38:29 +0200 | mei | (~mei@user/mei) |
2023-05-17 17:38:36 +0200 | <EvanR> | (and perhaps curse the initial writing of the code at first) |
2023-05-17 17:38:45 +0200 | <hamzam3> | I thought it was a person here |
2023-05-17 17:38:56 +0200 | <EvanR> | refactoring later is helped greatly by the type system |
2023-05-17 17:39:20 +0200 | <hamzam3> | Ah ? I thought it was the opposite. |
2023-05-17 17:39:31 +0200 | <hamzam3> | Like a defect of Haskell is maintenance |
2023-05-17 17:39:33 +0200 | <ski> | "In 1982, he wrote an article, "Epigrams on Programming", for the Association for Computing Machinery's (ACM) SIGPLAN journal, describing in one-sentence distillations many of the things he had learned about programming over his career. The epigrams have been widely quoted.",<https://cpsc.yale.edu/epigrams-programming> |
2023-05-17 17:39:37 +0200 | <EvanR> | compared to refactoring a large mass of untyped unknown code, it's a dream |
2023-05-17 17:40:10 +0200 | <EvanR> | if it type checks, ship it! (ok not really) |
2023-05-17 17:40:37 +0200 | <hamzam3> | I would view that theoretically. i would need to deal with a huge app in Haskell to verify that |
2023-05-17 17:40:42 +0200 | <ski> | you thought what was a person, hamzam3 ? |
2023-05-17 17:40:59 +0200 | <EvanR> | of course |
2023-05-17 17:41:03 +0200 | <hamzam3> | ski: like this it's an IRC guy |
2023-05-17 17:41:16 +0200 | <ski> | well. maybe you are. i don't know |
2023-05-17 17:41:20 +0200 | <ski> | you might be a bot |
2023-05-17 17:41:25 +0200 | <ski> | (we might all be ?!) |
2023-05-17 17:41:31 +0200 | <hamzam3> | Lol why not |
2023-05-17 17:41:51 +0200 | <hamzam3> | Maybe this is a post human world and we all pretend to be. |
2023-05-17 17:42:40 +0200 | <hamzam3> | But Evan did you actually refactor stuff in mass in Haskell ? |
2023-05-17 17:42:46 +0200 | <ski> | anyway, the second link above has more epigrams by Alan Perlis |
2023-05-17 17:43:09 +0200 | <EvanR> | yes |
2023-05-17 17:43:32 +0200 | <hamzam3> | How hard was it ? |
2023-05-17 17:43:38 +0200 | <EvanR> | real useful programs in haskell tend to become large |
2023-05-17 17:43:52 +0200 | <EvanR> | which is fine because we have the tools to manage it |
2023-05-17 17:43:58 +0200 | <hamzam3> | EvanR: And did you do it with another language and how does it compare ? |
2023-05-17 17:44:18 +0200 | <hamzam3> | EvanR: What tools ? |
2023-05-17 17:44:34 +0200 | <EvanR> | it compares favorably |
2023-05-17 17:45:02 +0200 | econo | (uid147250@user/econo) |
2023-05-17 17:46:03 +0200 | gurkenglas | (~user@dynamic-046-114-182-067.46.114.pool.telefonica.de) |
2023-05-17 17:46:10 +0200 | <hamzam3> | Okay then |
2023-05-17 17:46:23 +0200 | <hamzam3> | Anyways, incredible conversation, didn't expect to gain so much |
2023-05-17 17:46:30 +0200 | <hamzam3> | See you later everyone ! |
2023-05-17 17:47:36 +0200 | <ski> | have fun |
2023-05-17 17:51:48 +0200 | abrar | (~abrar@pool-98-115-98-253.phlapa.fios.verizon.net) (Ping timeout: 240 seconds) |
2023-05-17 17:52:11 +0200 | evincar | (~evincar@user/evincar) |
2023-05-17 18:00:02 +0200 | general_j[m] | (~generaljm@2001:470:69fc:105::3:463b) (Remote host closed the connection) |
2023-05-17 18:01:02 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) |
2023-05-17 18:01:33 +0200 | naine[m] | (~naine-env@2001:470:69fc:105::3:2e57) (Remote host closed the connection) |
2023-05-17 18:02:57 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:4c1f:3b38:25a9:d6c3) (Remote host closed the connection) |
2023-05-17 18:05:00 +0200 | hamzam3 | (~hamzam3@2a01:e0a:1ee:8c60:a421:e2fa:f46b:39b8) (Ping timeout: 265 seconds) |
2023-05-17 18:11:50 +0200 | shapr | (~user@76.29.230.19) |
2023-05-17 18:18:26 +0200 | <kuribas> | funny, I hear many people claim the programming language doesn't matter. |
2023-05-17 18:18:52 +0200 | <kuribas> | Then people say that a good programmer can write in any language, but both claims are not the same claim. |
2023-05-17 18:20:47 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds) |
2023-05-17 18:21:55 +0200 | mbuf | (~Shakthi@49.207.178.186) (Quit: Leaving) |
2023-05-17 18:22:17 +0200 | <int-e> | . o O ( The programming language doesn't matter as long as it's Java ) |
2023-05-17 18:23:09 +0200 | chomwitt | (~chomwitt@ppp-94-67-217-123.home.otenet.gr) |
2023-05-17 18:23:40 +0200 | ski | . o O ( "Real Programmers can write FORTRAN programs in any language." ) |
2023-05-17 18:24:14 +0200 | waleee | (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 246 seconds) |
2023-05-17 18:24:45 +0200 | oo_miguel | (~Thunderbi@77.252.47.78) (Quit: oo_miguel) |
2023-05-17 18:25:16 +0200 | chele_ | (~chele@user/chele) |
2023-05-17 18:25:27 +0200 | oo_miguel | (~Thunderbi@77.252.47.78) |
2023-05-17 18:25:34 +0200 | chele | (~chele@user/chele) (Ping timeout: 268 seconds) |
2023-05-17 18:26:15 +0200 | ski | throws a major John towards int-e, if it's all equal to them |
2023-05-17 18:26:23 +0200 | <EvanR> | I can delete a program in any language and rewrite it in haskell |
2023-05-17 18:26:25 +0200 | hamzam3 | (~hamzam3@2a01:e0a:1ee:8c60:c1e6:5627:a434:622f) |
2023-05-17 18:26:37 +0200 | <EvanR> | so language doesn't matter |
2023-05-17 18:27:35 +0200 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 240 seconds) |
2023-05-17 18:28:20 +0200 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
2023-05-17 18:28:22 +0200 | int-e | deletes EvanR's GPU driver |
2023-05-17 18:28:56 +0200 | <EvanR> | that's not fair |
2023-05-17 18:29:43 +0200 | chele_ | (~chele@user/chele) (Read error: Connection reset by peer) |
2023-05-17 18:29:47 +0200 | <int-e> | I actually had to think a bit to come up with an inconvenient example. |
2023-05-17 18:29:51 +0200 | gurkenglas | (~user@dynamic-046-114-182-067.46.114.pool.telefonica.de) (Ping timeout: 256 seconds) |
2023-05-17 18:30:13 +0200 | ski | . o O ( "Is Haskell fast?" by augustss in 2009-02-06 at <http://augustss.blogspot.com/2009/02/is-haskell-fast-lets-do-simple.html>,follow-up in 2009-02-07 at <http://augustss.blogspot.com/2009/02/more-basic-not-that-anybody-should-care.html> ) |
2023-05-17 18:30:31 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) (Ping timeout: 240 seconds) |
2023-05-17 18:31:03 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) |
2023-05-17 18:31:57 +0200 | <EvanR> | that blog post is blowing me away |
2023-05-17 18:32:10 +0200 | <EvanR> | the BASIC front end gets compiled away entirely? |
2023-05-17 18:32:37 +0200 | zeenk | (~zeenk@2a02:2f04:a105:f00::7fe) (Quit: Konversation terminated!) |
2023-05-17 18:32:58 +0200 | evincar | (~evincar@user/evincar) (Ping timeout: 268 seconds) |
2023-05-17 18:34:05 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2023-05-17 18:34:18 +0200 | <c_wraith> | EvanR: What do you mean by front end? |
2023-05-17 18:34:37 +0200 | <EvanR> | DSL |
2023-05-17 18:34:56 +0200 | <int-e> | it's an EDSL, so if you implement that well ghc can inline and simplify everything so that it becomes the tail-recursive loop that you want. |
2023-05-17 18:35:03 +0200 | <c_wraith> | EvanR: the majority of what's going on there is a clever choice of data type and providing an instance of Num for functions returning that type |
2023-05-17 18:36:14 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
2023-05-17 18:36:30 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2023-05-17 18:40:25 +0200 | wiosna | (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
2023-05-17 18:43:37 +0200 | gurkenglas | (~user@dynamic-046-114-182-067.46.114.pool.telefonica.de) |
2023-05-17 18:47:14 +0200 | ft | (~ft@p4fc2a88b.dip0.t-ipconnect.de) |
2023-05-17 18:52:16 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds) |
2023-05-17 18:56:01 +0200 | <c_wraith> | Ok. I've finally spent enough time in the pipes docs to figure out what's bugging me about them. All the categories the docs talk about are on the Kleisli category of Proxy, not on Proxy itself. |
2023-05-17 19:03:26 +0200 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
2023-05-17 19:04:15 +0200 | <c_wraith> | As a side effect of this, connecting Proxies together often seems to involve (\_ -> ..) to make things fit together. |
2023-05-17 19:04:34 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
2023-05-17 19:08:45 +0200 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
2023-05-17 19:14:53 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:4c1f:3b38:25a9:d6c3) |
2023-05-17 19:19:03 +0200 | oac | (~oac@50.80.159.170) |
2023-05-17 19:19:11 +0200 | oac | (~oac@50.80.159.170) (Remote host closed the connection) |
2023-05-17 19:22:47 +0200 | slack1256 | (~slack1256@186.11.24.106) |
2023-05-17 19:24:44 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2023-05-17 19:24:46 +0200 | gurkenglas | (~user@dynamic-046-114-182-067.46.114.pool.telefonica.de) (Ping timeout: 268 seconds) |
2023-05-17 19:26:11 +0200 | acidjnk | (~acidjnk@p200300d6e7072f360c76d857e5b4f035.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-05-17 19:31:09 +0200 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-05-17 19:35:57 +0200 | slack1256 | (~slack1256@186.11.24.106) (Remote host closed the connection) |
2023-05-17 19:35:59 +0200 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds) |
2023-05-17 19:38:25 +0200 | SoF | (~skius@user/skius) (Ping timeout: 240 seconds) |
2023-05-17 19:42:26 +0200 | SoF | (~skius@user/skius) |
2023-05-17 19:47:34 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-05-17 19:52:32 +0200 | acidjnk | (~acidjnk@p200300d6e7072f3698d7d69d6b2b3686.dip0.t-ipconnect.de) |
2023-05-17 19:53:04 +0200 | MajorBiscuit | (~MajorBisc@2001:1c00:2492:e200:489e:cf85:c4bc:d8d3) |
2023-05-17 19:57:32 +0200 | evincar | (~evincar@user/evincar) |
2023-05-17 19:59:01 +0200 | nick4 | (~nick@2600:8807:9103:b700:9410:acda:ffad:e096) (Ping timeout: 240 seconds) |
2023-05-17 20:01:29 +0200 | gurkenglas | (~user@dynamic-046-114-182-067.46.114.pool.telefonica.de) |
2023-05-17 20:02:00 +0200 | Pickchea | (~private@user/pickchea) |
2023-05-17 20:02:34 +0200 | nschoe | (~q@2a01:e0a:8e:a190:3fe8:a9d6:8da8:beb7) (Quit: Switching off) |
2023-05-17 20:06:28 +0200 | <texasmynsted> | programming skill and programming language skill are not the same |
2023-05-17 20:07:01 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:4c1f:3b38:25a9:d6c3) (Remote host closed the connection) |
2023-05-17 20:07:49 +0200 | stef204 | (~stef204@user/stef204) |
2023-05-17 20:09:59 +0200 | Pickchea | (~private@user/pickchea) (Ping timeout: 240 seconds) |
2023-05-17 20:21:59 +0200 | vandita | (~vandit@89-186-118-204.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2023-05-17 20:23:55 +0200 | vandita | (~vandit@84-236-97-17.pool.digikabel.hu) |
2023-05-17 20:24:22 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:4c1f:3b38:25a9:d6c3) |
2023-05-17 20:24:24 +0200 | MajorBiscuit | (~MajorBisc@2001:1c00:2492:e200:489e:cf85:c4bc:d8d3) (Quit: WeeChat 3.6) |
2023-05-17 20:25:41 +0200 | <joyfulmantis[m]> | I asked on the matrix group, but am asking here too, as it seems a bit quieter. Does anyone know the new way to define a constructor for a list of maybe types in yesod's persistent (Template Haskell)? "answer [Maybe(Tone)]", where answer is the field, and the Type is "[Maybe(Tone)]" used to work, but does no longer. |
2023-05-17 20:27:17 +0200 | cheater_ | (~Username@user/cheater) |
2023-05-17 20:27:59 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 240 seconds) |
2023-05-17 20:28:01 +0200 | cheater_ | cheater |
2023-05-17 20:31:38 +0200 | rf | (~rf@142.99.241.246) |
2023-05-17 20:32:43 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) |
2023-05-17 20:38:32 +0200 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
2023-05-17 20:41:01 +0200 | vglfr | (~vglfr@209.198.137.226) (Read error: Connection reset by peer) |
2023-05-17 20:41:08 +0200 | mei | (~mei@user/mei) (Remote host closed the connection) |
2023-05-17 20:41:39 +0200 | vglfr | (~vglfr@2a0d:3344:1b4f:9e10:9416:6da7:c1c7:480b) |
2023-05-17 20:43:33 +0200 | mei | (~mei@user/mei) |
2023-05-17 20:46:45 +0200 | evincar | (~evincar@user/evincar) (Ping timeout: 240 seconds) |
2023-05-17 20:48:18 +0200 | hamzam3 | (~hamzam3@2a01:e0a:1ee:8c60:c1e6:5627:a434:622f) (Ping timeout: 250 seconds) |
2023-05-17 21:02:40 +0200 | hamzam3 | (~hamzam3@2a01:e0a:1ee:8c60:43b0:e076:b9fe:f46) |
2023-05-17 21:05:59 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2023-05-17 21:06:27 +0200 | codaraxis__ | (~codaraxis@user/codaraxis) (Remote host closed the connection) |
2023-05-17 21:06:51 +0200 | codaraxis__ | (~codaraxis@user/codaraxis) |
2023-05-17 21:08:06 +0200 | codaraxis__ | (~codaraxis@user/codaraxis) (Max SendQ exceeded) |
2023-05-17 21:09:06 +0200 | codaraxis__ | (~codaraxis@user/codaraxis) |
2023-05-17 21:09:57 +0200 | codaraxis__ | (~codaraxis@user/codaraxis) (Remote host closed the connection) |
2023-05-17 21:09:59 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2023-05-17 21:14:56 +0200 | gmg | (~user@user/gehmehgeh) |
2023-05-17 21:15:35 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) |
2023-05-17 21:19:23 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) |
2023-05-17 21:23:49 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2023-05-17 21:26:10 +0200 | simendsjo | (~user@84.211.91.241) |
2023-05-17 21:26:38 +0200 | freeside_ | (~mengwong@103.252.202.151) |
2023-05-17 21:26:58 +0200 | hamzam3 | (~hamzam3@2a01:e0a:1ee:8c60:43b0:e076:b9fe:f46) (Quit: Leaving) |
2023-05-17 21:31:01 +0200 | freeside_ | (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
2023-05-17 21:33:35 +0200 | mncheck | (~mncheck@193.224.205.254) (Ping timeout: 240 seconds) |
2023-05-17 21:34:42 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) |
2023-05-17 21:37:20 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds) |
2023-05-17 21:37:24 +0200 | evincar | (~evincar@user/evincar) |
2023-05-17 21:39:35 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2023-05-17 21:42:04 +0200 | mei | (~mei@user/mei) (Read error: Connection reset by peer) |
2023-05-17 21:43:28 +0200 | pavonia | (~user@user/siracusa) |
2023-05-17 21:43:43 +0200 | chomwitt | (~chomwitt@ppp-94-67-217-123.home.otenet.gr) (Remote host closed the connection) |
2023-05-17 21:44:31 +0200 | mei | (~mei@user/mei) |
2023-05-17 21:45:02 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-05-17 21:53:40 +0200 | Lycurgus | (~juan@user/Lycurgus) |
2023-05-17 21:53:56 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2023-05-17 21:57:27 +0200 | CalculusCats | (NyaaTheKit@user/calculuscat) (Quit: Meow Meow Meow Meow Meow Meow Meow Meow) |
2023-05-17 22:00:09 +0200 | dhil | (~dhil@78.45.150.83.ewm.ftth.as8758.net) |
2023-05-17 22:00:11 +0200 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 246 seconds) |
2023-05-17 22:01:00 +0200 | mei | (~mei@user/mei) (Remote host closed the connection) |
2023-05-17 22:03:17 +0200 | CalculusCats | (NyaaTheKit@user/calculuscat) |
2023-05-17 22:03:25 +0200 | mei | (~mei@user/mei) |
2023-05-17 22:06:44 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:4c1f:3b38:25a9:d6c3) (Remote host closed the connection) |
2023-05-17 22:09:14 +0200 | Pickchea | (~private@user/pickchea) |
2023-05-17 22:09:35 +0200 | Lycurgus | (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
2023-05-17 22:14:13 +0200 | danrh | (~danrh@199.7.157.70) |
2023-05-17 22:20:31 +0200 | simendsjo | (~user@84.211.91.241) (Ping timeout: 240 seconds) |
2023-05-17 22:21:39 +0200 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection) |
2023-05-17 22:24:13 +0200 | danrh | (~danrh@199.7.157.70) (Read error: Connection reset by peer) |
2023-05-17 22:35:31 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) |
2023-05-17 22:37:47 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
2023-05-17 22:38:23 +0200 | manwithluck | (manwithluc@hoeven.dossingday.ml) (Ping timeout: 240 seconds) |
2023-05-17 22:38:25 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) |
2023-05-17 22:42:53 +0200 | manwithluck | (manwithluc@hoeven.dossingday.ml) |
2023-05-17 22:43:57 +0200 | captnemo | (~captnemo@193.32.127.232) |
2023-05-17 22:48:13 +0200 | manwithl- | (manwithluc@2406:da14:b37:1300:8c42:7d16:8950:6c74) |
2023-05-17 22:49:35 +0200 | manwithluck | (manwithluc@hoeven.dossingday.ml) (Ping timeout: 240 seconds) |
2023-05-17 22:50:07 +0200 | vandita | (~vandit@84-236-97-17.pool.digikabel.hu) (Ping timeout: 268 seconds) |
2023-05-17 22:51:47 +0200 | vandita | (~vandit@84-236-122-0.pool.digikabel.hu) |
2023-05-17 22:59:25 +0200 | manwithluck | (manwithluc@hoeven.dossingday.ml) |
2023-05-17 23:00:14 +0200 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
2023-05-17 23:00:31 +0200 | manwithl- | (manwithluc@2406:da14:b37:1300:8c42:7d16:8950:6c74) (Ping timeout: 240 seconds) |
2023-05-17 23:00:47 +0200 | coot | (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
2023-05-17 23:05:34 +0200 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:4c1f:3b38:25a9:d6c3) |
2023-05-17 23:07:59 +0200 | byte | (~byte@user/byte) (Quit: Quitting...) |
2023-05-17 23:08:32 +0200 | byte | (~byte@user/byte) |
2023-05-17 23:09:11 +0200 | merijn | (~merijn@c-001-001-015.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2023-05-17 23:10:39 +0200 | byte | (~byte@user/byte) (Client Quit) |
2023-05-17 23:11:17 +0200 | byte | (~byte@user/byte) |
2023-05-17 23:15:15 +0200 | waleee | (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) |
2023-05-17 23:15:58 +0200 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
2023-05-17 23:17:56 +0200 | trev | (~trev@user/trev) (Quit: bedtime tahehehe) |
2023-05-17 23:18:43 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2023-05-17 23:19:35 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2023-05-17 23:26:48 +0200 | jjb | (~jjb@user/jjb) (Ping timeout: 240 seconds) |
2023-05-17 23:28:49 +0200 | jjb | (~jjb@user/jjb) |
2023-05-17 23:29:08 +0200 | dhil | (~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 240 seconds) |
2023-05-17 23:30:14 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2023-05-17 23:34:12 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2023-05-17 23:34:43 +0200 | rf | (~rf@142.99.241.246) (Ping timeout: 256 seconds) |
2023-05-17 23:35:04 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2023-05-17 23:43:13 +0200 | mmhat | (~mmh@p200300f1c7066882ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2023-05-17 23:43:35 +0200 | mmhat | (~mmh@p200300f1c7066882ee086bfffe095315.dip0.t-ipconnect.de) |
2023-05-17 23:48:50 +0200 | elain4 | (~textual@static-71-251-226-194.rcmdva.fios.verizon.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2023-05-17 23:51:35 +0200 | mikoto-chan | (~mikoto-ch@ip-213-49-58-19.dsl.scarlet.be) (Ping timeout: 240 seconds) |
2023-05-17 23:52:58 +0200 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:78df:d984:be91:da33) (Remote host closed the connection) |
2023-05-17 23:53:16 +0200 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:78df:d984:be91:da33) |
2023-05-17 23:53:46 +0200 | mikoto-chan | (~mikoto-ch@85-76-145-81-nat.elisa-mobile.fi) |