2014-03-04 23:33:43 +0000 <carter> someetimes i want to send computation around
2014-03-04 23:33:48 +0000 <hyperthunk> carter: indeed
2014-03-04 23:34:00 +0000 <carter> so it should be
2014-03-04 23:34:02 +0000 <hyperthunk> that's fairly common
2014-03-04 23:34:02 +0000 <carter> "send Data"
2014-03-04 23:34:05 +0000 <carter> vs "send computation"
2014-03-04 23:34:15 +0000 <carter> computation coudl be thunky in a local setting
2014-03-04 23:34:17 +0000 <hyperthunk> carter: sure, no problem with that
2014-03-04 23:34:26 +0000 <carter> or descriptive "run this plan"
2014-03-04 23:34:42 +0000 <hyperthunk> carter: still not seeing the parallel here. what's this got to do with unsafeSend &co?
2014-03-04 23:34:55 +0000 <carter> whats the type for unsafe send
2014-03-04 23:34:58 +0000 <carter> i can't find the docs
2014-03-04 23:36:08 +0000 <hyperthunk> in distributed-process it's the same as send, (Serializable m => m -> Process ()) and in distributed-process-platform's send and unsafeSend it is similar: (NFSerializable m => m -> Process ())
2014-03-04 23:36:17 +0000 <carter> ok
2014-03-04 23:36:23 +0000 <hyperthunk> But you do know that NFData means nothing right!?
2014-03-04 23:36:30 +0000 <carter> it means what you choose it to mean :)
2014-03-04 23:36:33 +0000 <carter> and thats OK :)
2014-03-04 23:36:42 +0000 <hyperthunk> I mean, there's no guarantee that a Binary and NFData instance will agree on what "fully evaluated" means
2014-03-04 23:36:47 +0000 <carter> thats OK :)
2014-03-04 23:37:01 +0000 <hyperthunk> what we'd really like is to define our own class that subsumes those and make it impossible to write one by hand
2014-03-04 23:37:08 +0000 <carter> nope
2014-03-04 23:37:09 +0000 <hyperthunk> then provide a generic derivation for it
2014-03-04 23:37:17 +0000 <hyperthunk> which does both the binary and NFData for you
2014-03-04 23:37:19 +0000 <carter> you want that for the strict send
2014-03-04 23:37:25 +0000 <carter> you don't need any amgic for that
2014-03-04 23:37:35 +0000 <carter> just a Data a constraint
2014-03-04 23:37:38 +0000 <carter> and you'll get that
2014-03-04 23:37:46 +0000 <hyperthunk> what does `Data a` do?
2014-03-04 23:37:56 +0000 <carter> it means you can write a generic traversal :)
2014-03-04 23:38:06 +0000 <hyperthunk> ah, you're talking about Data.Data from base?
2014-03-04 23:38:10 +0000 <carter> yes
2014-03-04 23:38:33 +0000 <hyperthunk> gfoldl and so on.
2014-03-04 23:38:34 +0000 <hyperthunk> yes ok
2014-03-04 23:38:49 +0000 <carter> nb, why is this a problem
2014-03-04 23:38:58 +0000 <carter> if its serialized period, thats tacitly solved