Logs: liberachat/#haskell
| 2021-08-11 06:45:45 | lep- | is now known as lep |
| 2021-08-11 06:46:10 | → | jneira joins (~jneira@212.8.115.226) |
| 2021-08-11 06:53:20 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 2021-08-11 06:54:40 | → | vysn joins (~vysn@user/vysn) |
| 2021-08-11 06:58:10 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
| 2021-08-11 06:58:51 | → | Pickchea joins (~private@user/pickchea) |
| 2021-08-11 07:00:38 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:fe6f:ef7e:c421:8ab8) |
| 2021-08-11 07:01:22 | → | acidjnk_new joins (~acidjnk@p200300d0c72b9574c56a490b8c03a837.dip0.t-ipconnect.de) |
| 2021-08-11 07:03:51 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 2021-08-11 07:13:04 | → | epolanski joins (uid312403@id-312403.brockwell.irccloud.com) |
| 2021-08-11 07:14:18 | → | curiousgay joins (~curiousga@77-120-186-48.kha.volia.net) |
| 2021-08-11 07:14:24 | → | MorrowM joins (~Morrow@176.12.208.59) |
| 2021-08-11 07:17:10 | → | thyriaen joins (~thyriaen@dynamic-078-054-169-242.78.54.pool.telefonica.de) |
| 2021-08-11 07:18:14 | × | shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit) |
| 2021-08-11 07:28:01 | → | Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es) |
| 2021-08-11 07:30:11 | → | adam1 joins (~adam@2001-b011-4007-0cae-c534-472f-0009-0a8c.dynamic-ip6.hinet.net) |
| 2021-08-11 07:34:40 | → | Boomerang joins (~Boomerang@xd520f68c.cust.hiper.dk) |
| 2021-08-11 07:34:47 | × | bitmapper quits (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
| 2021-08-11 07:37:27 | → | Matthias_ joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) |
| 2021-08-11 07:37:41 | <Axman6> | macos might have other tools, like otool or something |
| 2021-08-11 07:38:57 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2021-08-11 07:39:45 | × | azeem quits (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) (Ping timeout: 248 seconds) |
| 2021-08-11 07:40:16 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 2021-08-11 07:40:50 | × | Matthias1 quits (~Matthias1@2603-8001-b545-4900-c870-813e-66c7-5f1f.res6.spectrum.com) (Ping timeout: 258 seconds) |
| 2021-08-11 07:42:22 | → | azeem joins (~azeem@dynamic-adsl-84-220-236-17.clienti.tiscali.it) |
| 2021-08-11 07:42:57 | × | MorrowM quits (~Morrow@176.12.208.59) (Ping timeout: 248 seconds) |
| 2021-08-11 07:49:58 | × | Guest71 quits (~Guest71@46.97.169.79) (Ping timeout: 246 seconds) |
| 2021-08-11 07:54:16 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 2021-08-11 07:54:41 | × | Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 248 seconds) |
| 2021-08-11 07:54:50 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 2021-08-11 07:59:50 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
| 2021-08-11 08:02:09 | → | Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) |
| 2021-08-11 08:04:17 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 2021-08-11 08:05:27 | → | hendursa1 joins (~weechat@user/hendursaga) |
| 2021-08-11 08:06:29 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 2021-08-11 08:08:30 | × | hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds) |
| 2021-08-11 08:10:41 | → | yoctocell joins (~user@h87-96-130-155.cust.a3fiber.se) |
| 2021-08-11 08:11:32 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds) |
| 2021-08-11 08:17:37 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 2021-08-11 08:17:37 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 2021-08-11 08:17:40 | allbery_b | is now known as geekosaur |
| 2021-08-11 08:19:05 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 2021-08-11 08:19:32 | → | amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
| 2021-08-11 08:19:43 | <kuribas> | Is it bad to write a function memoize :: (a -> IO b) -> IO (a -> b)? |
| 2021-08-11 08:19:57 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 2021-08-11 08:20:24 | <Taneb> | A little |
| 2021-08-11 08:20:30 | <kuribas> | as opposed to (a -> IO b) -> IO (a -> IO b)? |
| 2021-08-11 08:20:50 | <Taneb> | It pretty much forces you to have effects happen in pure code |
| 2021-08-11 08:21:22 | <merijn> | kuribas: You can't write that function |
| 2021-08-11 08:21:29 | <merijn> | kuribas: I know, because I have tried |
| 2021-08-11 08:21:36 | <kuribas> | hmm |
| 2021-08-11 08:21:37 | <merijn> | Over and over and over and over and over and over and over |
| 2021-08-11 08:21:51 | <kuribas> | hehe |
| 2021-08-11 08:21:53 | <merijn> | Which makes sense |
| 2021-08-11 08:22:03 | <merijn> | because the IO can depend on the value of the input 'a' |
| 2021-08-11 08:22:12 | <merijn> | So you can't "do the IO first" and get back a function |
| 2021-08-11 08:22:25 | <merijn> | That requires proving the IO in "a -> IO b" doesn't depend on 'a' |
| 2021-08-11 08:22:34 | <merijn> | And I dunno the abstraction for that |
| 2021-08-11 08:22:36 | <kuribas> | I can use unsafePerformIO? |
| 2021-08-11 08:22:41 | <merijn> | How? |
| 2021-08-11 08:22:53 | <merijn> | I mean, sure |
| 2021-08-11 08:23:00 | <kuribas> | ah wait... |
| 2021-08-11 08:23:14 | <merijn> | You can do "\f -> return (\x -> unsafePerformIO (f x))" but that's not what you meant, right? |
| 2021-08-11 08:23:35 | <merijn> | Might as well skip the return if you do that :p |
| 2021-08-11 08:24:08 | × | thyriaen quits (~thyriaen@dynamic-078-054-169-242.78.54.pool.telefonica.de) (Remote host closed the connection) |
| 2021-08-11 08:24:37 | <kuribas> | that's what I meant... |
| 2021-08-11 08:25:30 | → | spirit_ joins (~spirit@122.164.113.81) |
| 2021-08-11 08:26:11 | × | jneira quits (~jneira@212.8.115.226) (Quit: Client closed) |
| 2021-08-11 08:26:12 | <kuribas> | like this? https://gist.github.com/kuribas/6d63a4b9be2ac210162b4c9ee2ab10ca |
| 2021-08-11 08:27:48 | → | jneira joins (~jneira@212.8.115.226) |
| 2021-08-11 08:29:04 | × | jneira quits (~jneira@212.8.115.226) (Client Quit) |
| 2021-08-11 08:29:24 | → | jneira joins (~jneira@212.8.115.226) |
| 2021-08-11 08:29:28 | <merijn> | kuribas: Why even bother with the wrapping code returning IO at that point |
| 2021-08-11 08:29:39 | <merijn> | Just, like, unsafePerformIO the whole thing and call it a day |
| 2021-08-11 08:29:55 | <kuribas> | merijn: because it is still somewhat morally acceptable... |
| 2021-08-11 08:30:26 | <Taneb> | kuribas: I don't think it's that morally acceptable |
| 2021-08-11 08:30:45 | <kuribas> | Because IO is returning a function whos value depends on future IO. But there is no contract that says IO cannot do this right? |
| 2021-08-11 08:31:04 | <kuribas> | The contract is that a pure function should be pure, that is, return the same value for the same inputs. |
| 2021-08-11 08:31:05 | <merijn> | kuribas: Eh, yes there is |
| 2021-08-11 08:31:18 | <merijn> | kuribas: Like, this violates literally *every* part of purity in *many* horrific ways |
| 2021-08-11 08:31:26 | <kuribas> | No it doesn't? |
| 2021-08-11 08:31:28 | <Taneb> | If I use that I can now pass a pure function as an argument to another function, such that when I call the supposedly pure function IO effects might mysteriousl happen |
| 2021-08-11 08:31:28 | <kuribas> | IO isn't pure... |
| 2021-08-11 08:31:33 | <merijn> | kuribas: Yes it is |
| 2021-08-11 08:31:39 | <merijn> | kuribas: That's the entire freaking point of having IO |
| 2021-08-11 08:32:00 | <kuribas> | I mean, executing an IO action isn't pure... |
| 2021-08-11 08:32:21 | <merijn> | kuribas: executing IO is guaranteed to be ordered with respect to other |
| 2021-08-11 08:32:24 | <merijn> | *IO* |
| 2021-08-11 08:32:42 | <merijn> | You have completely ripped any sense of ordering out of the execution model |
| 2021-08-11 08:32:48 | <kuribas> | execpt if you have threads? |
| 2021-08-11 08:32:51 | <kuribas> | except for lazy IO? |
| 2021-08-11 08:32:58 | <merijn> | And made it so that a pure function "a -> b" can execute IO |
| 2021-08-11 08:33:08 | <kuribas> | I mean, IO code can call C that has a timer and does an action at a random time... |
| 2021-08-11 08:33:11 | <Taneb> | kuribas: memoize2 (\x -> putStrLn x >> length x) >>= \f -> print (f "hello" == f "hello"); what does this print |
| 2021-08-11 08:33:14 | <merijn> | kuribas: Lazy IO violates purity and there's a reason why it's called* *unsafe*InterleaveIO |
| 2021-08-11 08:33:20 | <merijn> | kuribas: Because lazy IO *is* unsafe |
| 2021-08-11 08:33:33 | <merijn> | kuribas: Threads are still well ordered with respect to IO in the same thread |
| 2021-08-11 08:33:34 | <Cajun> | isnt IO the way of purely (in the language representation) dealing with impure concepts? |
| 2021-08-11 08:34:04 | <kuribas> | yes |
| 2021-08-11 08:34:05 | <merijn> | Like, I don't mind people doing *wildly* unsafe things |
All times are in UTC.