18:35:58 <HugoDaniel> hi
18:36:07 <HugoDaniel> how does acid state differ from stm ?
18:37:02 <HugoDaniel> it seems to have all the acid properties
18:37:27 <HugoDaniel> except for durability
18:37:28 <HugoDaniel> :)
18:45:00 <edwardk> durability is kinda the point of acid-state, no?
18:46:41 <HugoDaniel> yeah true
18:46:51 <HugoDaniel> it seems to be implemented with mvars instead of stm
18:47:03 <HugoDaniel> oh no, sorry, stm for the loggin yeah
18:47:04 <HugoDaniel> cool
19:02:57 <donri> the memory backend is basically stm
19:06:29 <donri> HugoDaniel: btw i had an idea, maybe you could serialize functions as TH ASTs?
19:09:08 <HugoDaniel> oh cool
19:19:13 <donri> update state $ SaveFunction [| \x -> x * x |]; func <- query state GetFunction; return $ $(func) 5
19:19:15 <donri> something like that
19:20:15 <donri> deriveSafeCopy 0 'base ''Exp -- etc. no idea if will work
19:24:32 <HugoDaniel> very good
19:24:33 <HugoDaniel> yes
19:35:37 <HugoDaniel> :D
19:37:40 <donri> stepcut: maybe we could use this trick for queries without makeAcidic... query state [| \ix -> ix @= Keyword "acid-state" @< Updated oneMonth |]
19:38:15 <stepkut> hmm
19:38:30 <donri> though, server-side must be able to read oneMonth
19:38:35 <stepkut> right
19:38:38 <donri> i think that's the problem the "static" keyword in cloud haskell solves
19:38:50 <HugoDaniel> cloud haskell ?
19:39:00 <HugoDaniel> dropbox haskell ?
19:39:05 <stepkut> i think that could work as long as [| |] does not have an free variables
19:39:15 <donri> we could do, [| Updated $(oneMonth) |] -- maybe
19:39:30 <stepkut> yeah
19:40:08 <stepkut> that seems worth pursuing
19:40:09 <donri> @hackage distributed-process -- HugoDaniel
19:40:09 <lambdabot> http://hackage.haskell.org/package/distributed-process -- HugoDaniel
19:41:06 <donri> in particular http://hackage.haskell.org/package/distributed-static
19:42:07 <donri> stepkut: hm i think this could even be implemented as an acid-state event itself, no need for changing acid-state?
19:42:29 <stepkut> yeah
19:43:02 <donri> i don't know how safe this will be, but my main use case is debugging. connect to a remote acid-state in ghci, inspect the state arbitrarily
19:43:11 <stepkut> hmm
19:43:26 <stepkut> I am not sure how you would unserialize that though
19:43:32 <stepkut> I think that would have to happen at compile time
19:43:47 <HugoDaniel> this could be useful for indices
19:43:49 <donri> hmmm right, $() takes a Q Exp, not just a Exp?
19:43:54 <stepkut> right
19:43:54 <donri> and we can't use the Q monad at runtime?
19:44:19 <stepkut> yeah
19:44:21 <donri> :(
19:44:24 <stepkut> there is a runQ, but it can't do everything
19:44:58 <donri> oh right, hm
19:45:25 <stepkut> the unserialize function would have to do $() at runtime or something
19:46:00 <HugoDaniel> hmm
19:46:20 <donri> oh yea it's the same problem as that you can't use $() with stuff defined in the same module
19:46:36 <stepkut> well.. it is even worse.. than that
19:46:44 <donri> sure, but similar issue :)
19:46:44 <stepkut> the only way to do $() at runtime is to have the compiler around
19:46:47 <stepkut> so..
19:46:48 <donri> it has to be "already compiled"
19:46:58 <donri> NEW PLAN we embed hint in acid-state!!
19:47:05 <stepkut> you could actually do this.. but you would need to use the GHC API/plugins to compile and load the code
19:47:24 <donri> yea... hint is just wrapping the GHC API
19:47:39 <stepkut> http://homepages.inf.ed.ac.uk/stg/workshops/TFP/book/DuBois/duboismhaskell/cameraready.pdf
19:47:48 <HugoDaniel> i love to read you guys flowing :)
19:48:18 <donri> this is one thing i miss coming from python. for example when a python web app in development raises an exception, you're dropped into a python interpreter, in the browser, where you can inspect values, run code, etc, all live
19:48:28 <donri> but we could do that with hint in haskell
19:49:01 <donri> http://flask.pocoo.org/docs/_images/debugger5.png
19:49:16 <donri> (of course, that particular exception wouldn't happen in a haskell app ;P)
19:49:27 <stepkut> :p
19:49:58 <stepkut> that reminds me of the erlang video where they show how they fix some error in the running phone system with out having to stop and restart it -- but what they fix is a type error that Haskell would have caught ;)
19:50:09 <donri> hehehe
19:50:20 <donri> still, wouldn't be useless for haskell
19:50:24 <stepkut> for the uninitiated, http://www.youtube.com/watch?v=uKfKtXYLG78
19:50:35 <HugoDaniel> :)
19:50:37 <HugoDaniel> thanks
19:51:32 <donri> "This is the best Monty Python sketch ever!" lol
19:51:53 <donri> "my left ear loved this" :D
19:52:15 <stepkut> :)
19:52:53 <donri> nice phones
19:53:08 <donri> why are they british? ericsson is swedish!
19:54:01 <HugoDaniel> :D
19:54:02 <HugoDaniel> true
19:54:27 <HugoDaniel> if this were haskell simon peyton jones would show up with that shirt he always wears :)
19:54:31 <donri> i like how phone numbers are 3 digits
19:54:37 <donri> haha yea
19:55:52 <stepkut> and everything would be comic sans
19:55:57 <donri> hahahaha
19:56:00 <donri> does that make sense?
19:56:28 <stepkut> not quite sure what you mean
19:56:54 <donri> he always says that
19:57:00 <stepkut> ah right
19:57:08 <donri> often twice in a row :)
19:57:08 <stepkut> I can hear it in his voice now :)
19:57:12 <donri> :D
20:01:23 <donri> ok that video was the awesomest thing i have ever watched, i think
20:02:48 <donri> so what is this mobile haskell thing, sounds like cloud haskell
20:03:07 <stepkut> but cooler!
20:03:40 <stepkut> mobile haskell could send partially evaluated thunks around the network and evaluate them on different machines
22:34:01 <donri> stepkut: ivanm discovered that hsx2hs and new hsp don't work together
22:34:20 <donri> hsp expects Text, hsx2hs generates strings with :: String type annotations
23:29:00 <HugoDaniel> donri: can it work with overloaded strings ?
23:29:25 <donri> no, the type annotations prevent that