【发布时间】:2014-02-25 19:31:22
【问题描述】:
我一直在尝试使用 Javascript haskell-js 库,但我偶然发现了 coffeescript REPL 的一个奇怪行为。
使用节点,以下示例按预期工作:
$ node
require('haskell');
> [1,2,3].map('+1');
[ 2, 3, 4 ]
但是使用coffeescript,它失败了:
$ coffee -v
CoffeeScript version 1.6.1
$ coffee
require 'haskell'
[1,2,3].map('+1')
TypeError: +1 is not a function
at Array.map (native)
at repl:3:15
at REPLServer.replDefaults.eval (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/repl.js:27:28)
at repl.js:239:12
at Interface.<anonymous> (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/repl.js:55:9)
at Interface.EventEmitter.emit (events.js:95:17)
at Interface._onLine (readline.js:202:10)
at Interface._line (readline.js:531:8)
at Interface._ttyWrite (readline.js:760:14)
at ReadStream.onkeypress (readline.js:99:10)
但是,当我从文件中运行它时,它又可以工作了:
$ cat test.coffee
require 'haskell'
console.log([1,2,3].map('+1'))
$ coffee test.coffee
[ 2, 3, 4 ]
编译为 test.js 会产生以下文件:
$ coffee -c test.coffee && cat test.js
// Generated by CoffeeScript 1.6.1
(function() {
require('haskell');
console.log([1, 2, 3].map('+1'));
}).call(this);
现在我很困惑。这不是我测试的吗? (console.log 包装器在 REPL 中也没有任何区别。)
你能帮我理解为什么它在coffeescript REPL中不起作用吗?
【问题讨论】:
标签: javascript coffeescript read-eval-print-loop