Issue #15329 has been updated by Andrew  Parker.

Henrik Lindberg wrote:
> Nothingness is a quite complicated topic - here is how nothingness is handled 
> in Scala: <http://oldfashionedsoftware.com/2008/08/20/a-post-about-nothing/>
> 

The billion dollar mistake: 
<http://qconlondon.com/london-2009/presentation/Null+References:+The+Billion+Dollar+Mistake>

> In Puppet DSL, the semantics are quite `undef` as `undef` serves both as a 
> symbolic "nil", has no value, and as anti-matter (annihilates the expression).
> 
> To keep sanity it is probably also required to modify the auto type 
> conversion to boolean. Currently some type of emptiness (string is empty) is 
> true, but not other forms. Is nil true or false? (IMO neither). Auto 
> conversion to boolean is just a source of WAT.
> 
> Without too much exploration, I think the best approach could be to introduce 
> "nil" (or "null") as a new Literal with the same semantics as Java or Ruby 
> null/nil (i.e. somewhat ambiguous), as the much more sophisticated 
> Nothingness definitions available in Scala is not all that useful in a 
> semi-untyped language.
>

I don't really like the idea of heading down the path that creates the 
incredible confusion in Javascript with null vs. undefined 
(<http://saladwithsteve.com/2008/02/javascript-undefined-vs-null.html>). 
 
> Think first step towards doing something about this is to clearly define 
> "undef" and "nil" and perform a thorough analysis.


----------------------------------------
Bug #15329: Puppet lacks a proper "undefined" value
https://projects.puppetlabs.com/issues/15329#change-74414

Author: Pieter van de Bruggen
Status: Accepted
Priority: Normal
Assignee: Henrik Lindberg
Category: 
Target version: 
Affected Puppet version: 
Keywords: backlog
Branch: 


    $y = undef
    notice($y == "")  # true
    notice($x == $y)  # true
    notice($x == "")  # true

Recent changes in the Puppet DSL made equality commutative (good!), but in 
doing so broke work-arounds for actually testing for the difference between an 
undefined and "empty" value.  The most logical fix would be to equate Puppet's 
`undef` with Ruby's `nil`.


-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.

Reply via email to