Good. Perhaps this is appropriate as a template for others.

On Wednesday, June 29, 2016 at 6:24:35 PM UTC-4, Yaakov Borstein wrote:
>
>
>
> 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