On Monday, March 21, 2016 at 1:56:34 AM UTC+2, Jeffrey Sarnoff wrote:
>
> Redis itself is written in C. They document GET key:
>
>> Get the value of key. If the key does not exist the special value nil is 
>> returned. 
>
> An error is returned if the value stored at key is not a string, because 
>> GET <http://redis.io/commands/get> only handles string values.
>
>  
>  digging deeper
>
>> The client library API should not return an empty string, but a nil 
>> object, when the server replies with a Null Bulk String. 
>
> For example a Ruby library should return 'nil' while a C library should 
>> return NULL (or set a special flag in the reply object), and so forth.
>
>
> Single elements of an Array may be Null. This is used in Redis replies in 
>> order to signal that this elements are missing and not empty strings. 
>
> This can happen with the SORT command when used with the GET *pattern* option 
>> when the specified key is missing.
>
> [For example, if the] second element is a Null. The client library should 
>> return something like this: ["foo", nil, "bar"]
>
>
> The Redis *nil* indicates a non-present value (missing or unavailable or, not 
> extant: a domain|-> range error).
>
> From a semiotic viewpoint, Julia's *nothing* is closer to "absence" than it 
> is to "an absent value"; of course
>
> the operational machinery supplies an actual entity to be *nothing* (a 
> singleton realization ofthe type Void).
>
>
> A much more contextual fit be the use of Nullable, although that may require 
> more of the client; a simpler way
>
> to handle the Redis *nil* without doing something with *nothing* is to use a 
> dedicated const symbol or a singleton
>
> to be that sentinel, perhaps:  
>
> *                                 const RedisNil = :RedisNil    # or*
>
>                                  *type RedisNIL end; RedisNil = RedisNIL()*
>
>
> *Somewhere there are lengthy and informative discussions about Julia and nil 
> / NULL / nothing.*
>
> *(I noted this thread to the Redis.jl project).*
>
>
>
>
>
>
>
> On Sunday, March 20, 2016 at 6:45:57 PM UTC-4, jock....@gmail.com wrote:
>>
>> Redis.jl returns nothing when requesting a the value of a key that 
>> doesn't exist:
>>
>> using Redis
>> conn = RedisConnection()
>> r = get(conn, "non_existent_key")
>> disconnect(conn)
>> r == nothing    # true
>>
>>
>> On Sunday, March 20, 2016 at 1:31:30 AM UTC+11, Milan Bouchet-Valat wrote:
>>>
>>> For now I don't know of a good solution to this pattern, but there's 
>>> been some discussion about it: 
>>> https://github.com/JuliaLang/julia/issues/15174 
>>>
>>> You should definitely use a Nullable instead of returning nothing. 
>>>
>>>
>>> Regards 
>>>
>>> Le samedi 19 mars 2016 à 02:58 -0700, Jeffrey Sarnoff a écrit : 
>>> > You may be misusing nothing.  It is unusual that a function would 
>>> > return nothing some of the time and something other times. 
>>> > Take a look at http://docs.julialang.org/en/latest/manual/faq/#nothin 
>>> > gness-and-missing-values 
>>> > If you have additional questions about this, please give an example 
>>> > of what get_a(...) is getting and why it would be nothing some of the 
>>> > time. 
>>> > 
>>> > > Hi All 
>>> > > 
>>> > > 
>>> > > I found my self writing code like this a lot: 
>>> > > 
>>> > > x = get_a(...) 
>>> > > 
>>> > > if x != nothing 
>>> > >     y::A = x 
>>> > >     do_sth(y, ...) 
>>> > > end 
>>> > > 
>>> > > In the above, I have to check for nothing first, and if it is not 
>>> > > nothing, then I do a type assert to make sure the type is what I 
>>> > > expected. 
>>> > > 
>>> > > Is there any function or macro in Julia that can help this? 
>>> > > 
>>> > > I know in F#, I have option.bind, so option.bind f x is equivalent 
>>> > > to a pattern match:  if x is None - > None; if x is something -> 
>>> > > f(something) 
>>> > > 
>>> > > Also in C#, I have "customers?[0]?.Orders?.Count();"  (as long as 
>>> > > there is null before ?, it returns null immediately) 
>>> > > 
>>> > > Does Julia have something similar? 
>>> > > 
>>> > > 
>>
>>
The latest merge resolves the issue of 'nil' in Redis.jl.

Reply via email to