Path: csiph.com!usenet.pasdenom.info!gegeweb.org!usenet-fr.net!feeder1-2.proxad.net!proxad.net!feeder2-2.proxad.net!newsfeed.arcor.de!newsspool1.arcor-online.net!news.arcor.de.POSTED!not-for-mail Content-Type: text/plain; charset="UTF-8" Message-ID: <7836422.gBDQCprLM3@PointedEars.de> From: Thomas 'PointedEars' Lahn Reply-To: Thomas 'PointedEars' Lahn Organization: PointedEars Software (PES) Date: Tue, 03 Sep 2013 01:59:17 +0200 User-Agent: KNode/4.10.5 Content-Transfer-Encoding: 8Bit X-Face: %i>XG-yXR'\"2P/C_aO%~;2o~?g0pPKmbOw^=NT`tprDEf++D.m7"}HW6.#=U:?2GGctkL,f89@H46O$ASoW&?s}.k+&. <0.c54068976de565cd12fc.20130902215206BST.877gezuetl.fsf@bsb.me.uk> <1513771.HS4XPLjgls@PointedEars.de> <0.cf0106c707f704dac5bd.20130902231902BST.87zjruuasp.fsf@bsb.me.uk> MIME-Version: 1.0 Lines: 59 NNTP-Posting-Date: 03 Sep 2013 01:59:19 CEST NNTP-Posting-Host: 47227e13.newsspool3.arcor-online.net X-Trace: DXC=khl>D?UNo3eIkjb;<8iR=aMcF=Q^Z^V3h4Fo<]lROoRa8kF Thomas 'PointedEars' Lahn writes: >> Ben Bacarisse wrote: >>> If HAS returns o.p when o.hasOwnProperty('p'), then you can avoid the >>> conditional >>> >>> HAS(o, 'p') || >> >> Incorrect. There is a difference between an object having a property and >> converting the result of a property access to Boolean. Assuming you >> meant >> >> function HAS (o, p) >> { >> if (o.hasOwnProperty(p)) return o[p]; >> } >> >> (where “HAS” is a very unwise identifier), if the value of o[p] was a >> false- value, the result of >> >> HAS(o, 'p') || >> >> would be >> >> > > Yes, good point. I've used something similar, but in situations where > this problem would be unlikely. I was too hasty, though I suppose it's > possible that || works in all the OP's use cases. I do not think there is a use-case here. That is the very nature of code- golfing, because it is more play than work: trying to find the shortest equivalent expression, however unreadable, to solve a *theoretical* problem. You would never used golfed code in production: it is probably inefficient, likely error-prone, and definitely hard to maintain. >>> Anything that uses functions to wrap EXPR for delayed execution suffers >>> from the fact the ECMAScript uses such a long keyword, and that the >>> syntax requires empty parentheses. (I take it that one of the rules of >>> this golf game is that the expression should be short.) >> >> Harmony (ECMAScript Edition 6) is going to fix that with foo(bar => baz): >> >> > > Nice. The return is no longer needed in simple cases too. It's always > seemed to me that the early designers never expected the wide use that > function expressions would get. ISTM that this particular syntax for lambda expressions was borrowed from C#, which in turn might have shortened that of Python. I learned it when I first used LINQ extension methods about a year ago. -- PointedEars Twitter: @PointedEars2 Please do not Cc: me. / Bitte keine Kopien per E-Mail.