[
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