Logs: liberachat/#haskell
| 2021-06-04 18:16:13 | → | ddellacosta joins (~ddellacos@86.106.121.209) |
| 2021-06-04 18:17:28 | × | theodorc quits (theodorc@cassarossa.samfundet.no) (Read error: Connection reset by peer) |
| 2021-06-04 18:18:58 | → | taeaad joins (~taeaad@user/taeaad) |
| 2021-06-04 18:20:26 | → | teddyc joins (theodorc@cassarossa.samfundet.no) |
| 2021-06-04 18:20:47 | × | taeaad quits (~taeaad@user/taeaad) (Client Quit) |
| 2021-06-04 18:21:18 | × | ddellacosta quits (~ddellacos@86.106.121.209) (Ping timeout: 264 seconds) |
| 2021-06-04 18:21:58 | → | taeaad joins (~taeaad@user/taeaad) |
| 2021-06-04 18:26:07 | → | winircuser-780 joins (~winircuse@170.250.221.149) |
| 2021-06-04 18:27:44 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
| 2021-06-04 18:29:27 | → | bfrk joins (~Thunderbi@mue-88-130-48-143.dsl.tropolys.de) |
| 2021-06-04 18:31:16 | × | Guest38 quits (~textual@188-182-241-27-dynamic.dk.customer.tdc.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 2021-06-04 18:31:53 | → | ServerStatsDisco joins (~serversta@2001:470:69fc:105::1a) |
| 2021-06-04 18:32:04 | → | peterhil joins (~peterhil@dsl-hkibng32-54f849-252.dhcp.inet.fi) |
| 2021-06-04 18:32:45 | × | mccoyb quits (~textual@2601:182:d000:3b50:6d20:ecfa:c38a:3ddb) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 2021-06-04 18:34:02 | → | Guest38 joins (~textual@188-182-241-27-dynamic.dk.customer.tdc.net) |
| 2021-06-04 18:34:28 | × | dyeplexer quits (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
| 2021-06-04 18:34:37 | × | winircuser-780 quits (~winircuse@170.250.221.149) (Quit: Powered by WinIRC) |
| 2021-06-04 18:43:15 | × | fresheyeball quits (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9) |
| 2021-06-04 18:46:20 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 2021-06-04 18:54:42 | → | vicfred joins (~vicfred@user/vicfred) |
| 2021-06-04 18:54:55 | → | fr33domlover joins (~fr33domlo@angeley.es) |
| 2021-06-04 18:55:11 | × | tinwood quits (~tinwood@canonical/tinwood) (Remote host closed the connection) |
| 2021-06-04 18:55:15 | → | Baloo_ joins (~Baloo_@141.98.255.150) |
| 2021-06-04 18:57:31 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 2021-06-04 18:58:10 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a54f:2e66:1417:26d8) |
| 2021-06-04 18:58:16 | → | tinwood joins (~tinwood@general.default.akavanagh.uk0.bigv.io) |
| 2021-06-04 18:58:16 | × | tinwood quits (~tinwood@general.default.akavanagh.uk0.bigv.io) (Changing host) |
| 2021-06-04 18:58:16 | → | tinwood joins (~tinwood@canonical/tinwood) |
| 2021-06-04 19:03:37 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds) |
| 2021-06-04 19:03:46 | <eggplantade> | Is there a name for the algorithm technique of updating objects by replacing them with a pointer to newer data? It's used in garbage collection, unification, and lazy evaluation |
| 2021-06-04 19:04:28 | <lucky> | eggplantade: uh, it's not the right term but maybe as a pointer since it's a related idea? copy-on-write |
| 2021-06-04 19:13:59 | → | mpt joins (~tom@p57a566da.dip0.t-ipconnect.de) |
| 2021-06-04 19:14:39 | <dminuoso> | eggplantade: Can you name an example where updating objects by replacing them with a pointer occurs in lazy evaluation? |
| 2021-06-04 19:16:51 | × | a6a45081-2b83 quits (~aditya@106.212.70.132) (Quit: Konversation terminated!) |
| 2021-06-04 19:17:06 | × | haltux quits (~haltux@a89-154-181-47.cpe.netcabo.pt) (Ping timeout: 264 seconds) |
| 2021-06-04 19:17:25 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds) |
| 2021-06-04 19:19:29 | → | Guest10 joins (~Guest10@187.83.249.216.dyn.smithville.net) |
| 2021-06-04 19:19:43 | <eggplantade> | A thunk can be implemented as storage for either a closure or a pointer to the closure's evaluated result. The first time the thunk is evaluated, the closure is replaced by a pointer to the evaluated result. |
| 2021-06-04 19:19:51 | → | gaura- joins (~gaura@49.205.120.227) |
| 2021-06-04 19:22:23 | → | MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com) |
| 2021-06-04 19:22:59 | <gaura-> | What is the best way to install haskell on windows 10? |
| 2021-06-04 19:23:10 | <maerwald> | gaura-: chocolatey |
| 2021-06-04 19:23:21 | <maerwald> | or you beta-test ghcup |
| 2021-06-04 19:23:24 | <maerwald> | or you use stack |
| 2021-06-04 19:23:24 | × | bfrk quits (~Thunderbi@mue-88-130-48-143.dsl.tropolys.de) (Ping timeout: 244 seconds) |
| 2021-06-04 19:23:28 | <Guest10> | is there an idiomatic way to reorder a monadic computation based on runtime/term-level information? |
| 2021-06-04 19:23:30 | <Guest10> | basically, I have something like "do (a <- monadMa; b <- monadMb; return (f a b))" but I may need to reverse the order of running a & b, and there may be many more steps in the calculation |
| 2021-06-04 19:23:56 | → | Guest9 joins (~Guest9@103.240.170.183) |
| 2021-06-04 19:24:47 | <dminuoso> | Guest10: You can use a free monad representation to re-manipulate the structure I guess |
| 2021-06-04 19:25:28 | × | mpt quits (~tom@p57a566da.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 2021-06-04 19:26:13 | <dminuoso> | Though, you cant do this in the general case |
| 2021-06-04 19:28:13 | → | mastarija joins (~mastarija@46.188.137.31) |
| 2021-06-04 19:28:37 | × | gaura- quits (~gaura@49.205.120.227) () |
| 2021-06-04 19:29:21 | <Guest10> | i'm looking into free monads; do you mean that this won't generalize naturally to larger numbers of steps? |
| 2021-06-04 19:30:46 | <maerwald> | free monads aren't really free |
| 2021-06-04 19:30:59 | <maerwald> | they come with a performancy cost :p |
| 2021-06-04 19:31:13 | <dminuoso> | Guest10: No rather that you can't arbitrarily manipulate the structure, but you can generate it easily based on runtime information |
| 2021-06-04 19:31:15 | <monochrom> | Guest10, it is not the size, but the data dependency. |
| 2021-06-04 19:31:29 | <dminuoso> | And then run some interpreter on that |
| 2021-06-04 19:31:41 | <monochrom> | You will have a hard time reordering ma >>= \a -> f a |
| 2021-06-04 19:31:42 | × | MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Read error: Connection reset by peer) |
| 2021-06-04 19:32:17 | <dminuoso> | My phrasing "re-manipulate" was poorly chosen. It allows you to express the shape of the monadic computation as data itself, making it easy to express it as a runtime value |
| 2021-06-04 19:32:30 | <dminuoso> | This lets you decouple generating the shape from running it |
| 2021-06-04 19:32:42 | <Guest10> | oh i see |
| 2021-06-04 19:33:08 | <Guest10> | actually that gives me an idea...maybe i could just generate all possible permutations of the calculation order and pick one at runtime? |
| 2021-06-04 19:33:09 | <dminuoso> | You might not even need a full blown free monad, consider whether perhaps a simple command interpreter is enough |
| 2021-06-04 19:33:45 | <dminuoso> | I dont know enough about your problem domain to say |
| 2021-06-04 19:34:21 | × | AgentM quits (~agentm@pool-162-83-130-212.nycmny.fios.verizon.net) (Quit: Leaving.) |
| 2021-06-04 19:34:41 | <dminuoso> | eggplantade: Im not well versed in STG, I thought the closure wasnt replaced, but rather that the entry code was rewritten to return a value written inside that same closure. |
| 2021-06-04 19:34:54 | <dminuoso> | such that the outside pointer remains unchanged |
| 2021-06-04 19:36:38 | <monochrom> | No, no code is ever rewritten/overwritten. |
| 2021-06-04 19:36:40 | <eggplantade> | Data in the STG is a closure that returns itself, isn't it? |
| 2021-06-04 19:37:03 | <dminuoso> | monochrom: How does the self update work then? |
| 2021-06-04 19:37:30 | <monochrom> | But, you can always in-place change "Closure ptr_to_code ptr_to_param" to "Value ptr_to_value_on_heap" |
| 2021-06-04 19:38:21 | <monochrom> | And when the next GC happens, the "Value ptr_to_value_on_heap" is eliminated. |
| 2021-06-04 19:38:33 | <monochrom> | (because it's a middle-person) |
| 2021-06-04 19:39:28 | <dminuoso> | Guess its time to download stgi. |
| 2021-06-04 19:39:33 | <dminuoso> | See if it still builds :) |
| 2021-06-04 19:39:42 | → | arjun joins (~user@user/arjun) |
| 2021-06-04 19:39:50 | → | bfrk joins (~Thunderbi@200116b845d01a0023133a647a2f786d.dip.versatel-1u1.de) |
| 2021-06-04 19:40:05 | <monochrom> | Did you know of https://github.com/takenobu-hs/haskell-ghc-illustrated ? |
| 2021-06-04 19:40:43 | <dminuoso> | I think I have seen it a long long time ago. Probably when I was really new to Haskell |
| 2021-06-04 19:40:49 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2021-06-04 19:42:11 | <monochrom> | I think it's very valuable to revisit it now. You are now in a position to understand everything it says. :) |
| 2021-06-04 19:42:17 | → | ubert1 joins (~Thunderbi@p200300ecdf259df0e6b318fffe838f33.dip0.t-ipconnect.de) |
| 2021-06-04 19:42:25 | × | boxscape quits (~boxscape@user/boxscape) (Ping timeout: 245 seconds) |
| 2021-06-04 19:42:31 | <monochrom> | It does have one slide "Thunk and update" for this one. |
| 2021-06-04 19:43:03 | <arjun> | that looks like a nice weekend read monochrom |
| 2021-06-04 19:43:19 | <monochrom> | I think the slide set is very good preparation before reading the STG papers etc. |
| 2021-06-04 19:43:35 | × | ubert quits (~Thunderbi@p200300ecdf259d40e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 2021-06-04 19:43:35 | ubert1 | is now known as ubert |
| 2021-06-04 19:44:13 | <monochrom> | You can also use it as reference material. (I do.) You skim it to know which questions it answers. Then put it aside. When one day you really need an answer, go again. |
| 2021-06-04 19:45:15 | <monochrom> | E.g., I didn't learn the thread stuff until I really had an urge to. |
| 2021-06-04 19:45:17 | → | fluffyballoon joins (~fluffybal@pat-verona-h.epic.com) |
| 2021-06-04 19:45:42 | <monochrom> | I'll use this analogy. |
| 2021-06-04 19:46:17 | → | lavaman joins (~lavaman@98.38.249.169) |
| 2021-06-04 19:46:32 | <monochrom> | the academic papers and even some of GHC wiki : sheet music, the full score of a two-hour-bloody-long symphony |
| 2021-06-04 19:46:37 | → | boxscape joins (~boxscape@user/boxscape) |
| 2021-06-04 19:46:50 | <monochrom> | those slides : a performance of that music |
| 2021-06-04 19:47:12 | <monochrom> | For most of us, it makes sense to listen to a performance before reading the score. :) |
All times are in UTC.