[ 
https://issues.apache.org/jira/browse/COUCHDB-1397?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13199425#comment-13199425
 ] 

Jason Smith commented on COUCHDB-1397:
--------------------------------------

Paul, tl;dr: I see your point but disagree because I love the old syntax. I 
also have a fixed JS server (i.e. the code couchjs runs) working in all (IMO) 
important cases. Would you care to at least see the patch?

Next I continue my plea to retain CouchDB's aesthetic decency...

After years of a relaxing API, why would CouchDB force us to stop writing 
perfectly valid functions and instead write valid programs? It is redundant. It 
is confusing. There is no obvious benefit to the user. It is Kafkaesque.

The current syntax that better matches our mental model is this:

{ "views": {
    "example": {
      "map": "function(doc) { emit(1, 2) }"
...

That is intuitively relaxing because it feels like Javascript:

doc =
{"views": {
  "example": {
    "map": function(doc) { emit(1, 2) }
...

Please re-read your own examples. How many new ways does it confuse the user? 
And for what? Because we can't' be bothered to do anything except the simplest 
possible implementation: just run it through eval(). What about this view 
object:

"Map": "function map(D) { emit(1,D) } // wrong JSON key"
"map": "function mapo(D) { emit(1, D) } // fat-fingered the function name"

Really, if CouchDB will insist that users begin writing *programs* and not just 
expressions, it makes more sense to eradicate the "map" and "reduce" fields and 
replace the whole object with a string.

{"views": {
  "people": "
    function map(D) {
      emit(D.name, 1)
    }

    function reduce(K, V, re) {
      return sum(K)
    }
  "}
}

OTOH, given a previously well-formed view definition and newer SpiderMonkey, 
couchjs should DTRT, do what it takes to make it work, as the user has already 
begun relaxing.
                
> Function expressions, evals in SpiderMonkey
> -------------------------------------------
>
>                 Key: COUCHDB-1397
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-1397
>             Project: CouchDB
>          Issue Type: Bug
>          Components: JavaScript View Server
>    Affects Versions: 1.2
>         Environment: All
>            Reporter: Jason Smith
>
> New SpiderMonkey releases do not eval() a sole anonymous function expression. 
> That is not a valid JavaScript statement, and so it is not a valid JavaScript 
> script.
> COUCHDB-1302 addressed this for 1.1 and the 1.1.x branch. This ticket is for 
> 1.2. (Sorry to spam COUCHDB-1302. I saw "Unassigned" and read "Unresolved.")

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to