Hum, nice. Thanks.

On Tue, Jan 28, 2014 at 11:11 PM, Stefan Karpinski <[email protected]>wrote:

> You can use the fact that open returns the value of the block:
>
> f = open("f.jld", "r") do file
>     deserialize(file)
> end
>
>
>
> On Tue, Jan 28, 2014 at 5:20 PM, Cristóvão Duarte Sousa <[email protected]
> > wrote:
>
>> Thanks Ivar for pointing that error of mine. I'd previously written the
>> deserialize in the main scope and got the same "function f not defined on
>> process 1", but then I rewrite it inside the `do` block without noticing it
>> introduces another scope.
>>
>> So the real ERROR is the one you presented.
>>
>> Meanwhile I worked around this issue by serializing not the function but
>> its Expression which is evaluated after the deserialization.
>> However, I still wonder if it is possible to do something like what I was
>> trying.
>>
>>
>> On Tuesday, January 28, 2014 10:25:37 AM UTC, Ivar Nesje wrote:
>>>
>>> This does not solve your problem, but you will get closer if you declare
>>> f as global so that you do not write to a local variable that will go out
>>> of scope as soon as it gets declared.
>>>
>>> open("f.jld", "r") do file
>>>     global f = deserialize(file)
>>> end
>>> f(1)
>>> ERROR: function f not defined on process 1
>>> in error at error.jl:21
>>> in anonymous at serialize.jl:353
>>>
>>> I am not sure how deserialization of functions is intended to work, so
>>> this is all I could do.
>>>
>>>
>>> kl. 07:32:29 UTC+1 tirsdag 28. januar 2014 skrev Cristóvão Duarte Sousa
>>> følgende:
>>>>
>>>> Hi,
>>>>
>>>> I would like to do something like
>>>>
>>>> f(x) = x+1
>>>> open("f.jld", "w") do file
>>>>     serialize(file, f)
>>>> end
>>>>
>>>> then, close julia, open it again and do
>>>>
>>>> open("f.jld", "r") do file
>>>>     f = deserialize(file)
>>>> end
>>>> f(1)
>>>>
>>>> but that gives "ERROR: f not defined"
>>>>
>>>>
>>>> Is serialization supposed to be able to do this?
>>>> If yes, which is the right way to code it?
>>>>
>>>> Thanks
>>>>
>>>
>

Reply via email to