什么是组合器?
它是"没有自由变量的函数或定义"(在SO上定义)?
或者如何:根据John Hughes在他着名的关于Arrows的论文中,"组合器是一个从程序片段构建程序片段的函数",这是有利的,因为"......使用组合器的程序员构建了大部分所需的自动编程,而不是手工编写每个细节".他接着说,map和filter是这样的组合子的两个常见的例子.
一些符合第一个定义的组合器:
一些符合第二个定义的组合器:
我对第一个定义不感兴趣 - 那些不能帮我写一个真正的程序(如果你说服我错了,那就是+1). 请帮我理解第二个定义.我认为map,filter和reduce非常有用:它们允许我在更高级别编程 - 更少的错误,更短更清晰的代码.以下是关于组合器的一些具体问题:
更新
感谢@CA McCann,我现在对组合器有了更好的理解.但有一个问题对我来说仍然是一个棘手的问题:
用大量使用组合器写的函数程序和没有写的函数程序有什么区别?
我怀疑答案是组合器重型版本更短,更清晰,更通用,但如果可能的话,我希望进行更深入的讨论.
我也在寻找更多关于复杂组合器的例子和解释(比复杂的组合fold语言).
我一直在考虑这个问题,但实际上无法在Google上找到答案以及Stackoverflow上的类似问题.如果有重复,我很抱歉.
许多人似乎都说,在函数式语言(如OCaml和Haskell)中编写编译器和其他语言工具比使用命令式语言编写它们更有效,更容易.
这是真的?如果是这样的话 - 为什么用函数式语言而不是像C这样的命令式语言来编写它们是如此高效和容易?另外 - 在一些函数式语言中,语言工具不是像C这样的低级语言吗?
char c = '\u0000';
Run Code Online (Sandbox Code Playgroud)
当我打印c时,它在命令行窗口中显示"a".
那么char类型字段的默认值是什么?
有人说'\ u0000'在unicode中表示无效; 是对的吗?
我需要在jQuery和GWT之间为我的新项目做出决定.
我有一段时间没用JavaScript编程,过去几天我一直在研究GWT.它看起来非常棒,为不同的浏览器和所有浏览器生成所有不同的JS,但是:
我一直在为我的大多数项目使用jQuery而且非常好.
我想说服客户端jQuery更适合这个项目,我需要更多的参数来支持这个.
在python中使用户定义的类可排序和/或可清除时,需要覆盖/实现哪些方法?
有什么值得注意的?
我输入dir({})我的解释器以获取内置dicts的方法列表.其中,我假设我需要实现一些子集
['__cmp__', '__eq__', '__ge__', '__gt__', '__hash__', '__le__', '__lt__', '__ne__']
Run Code Online (Sandbox Code Playgroud)
与Python2相比,Python3必须实现哪些方法有区别?
当我做:
lib = require('lib.js')(app)
Run Code Online (Sandbox Code Playgroud)
在app实际歌厅通过呢?
在lib.js中:
exports = module.exports = function(app){}
Run Code Online (Sandbox Code Playgroud)
似乎没有,因为当我尝试做的不仅仅是(app),而是做:
lib = require('lib.js')(app, param2)
Run Code Online (Sandbox Code Playgroud)
和:
exports = module.exports = function(app, param2){}
Run Code Online (Sandbox Code Playgroud)
我没有params2.
我试图通过以下方式进行调试:
params = {}
params.app = app
params.param2 = "test"
lib = require("lib.js")(params)
Run Code Online (Sandbox Code Playgroud)
但在lib.js中,当我尝试JSON.stringify收到此错误时:
"DEBUG: TypeError: Converting circular structure to JSON"
Run Code Online (Sandbox Code Playgroud) 这是我试过的:
$ easy_install-2.6 -d /home/user/lib/python2.6 MySQLdb
Searching for MySQLdb
Reading http://pypi.python.org/simple/MySQLdb/
Couldn't find index page for 'MySQLdb' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading http://pypi.python.org/simple/
No local packages or download links found for MySQLdb
error: Could not find suitable distribution for Requirement.parse('MySQLdb')
Run Code Online (Sandbox Code Playgroud) Eeek!GHCi在我的代码中发现了Skolems!
...
Couldn't match type `k0' with `b'
because type variable `b' would escape its scope
This (rigid, skolem) type variable is bound by
the type signature for
groupBy :: Ord b => (a -> b) -> Set a -> Set (b, [a])
The following variables have types that mention k0
...
Run Code Online (Sandbox Code Playgroud)
这些是什么?他们对我的计划有什么要求?为什么他们试图逃脱(忘恩负义的小战士)?
假设我有两个模块:
a.py:
import b
print __name__, __file__
Run Code Online (Sandbox Code Playgroud)
b.py:
print __name__, __file__
Run Code Online (Sandbox Code Playgroud)
我运行"a.py"文件.这打印:
b C:\path\to\code\b.py
__main__ C:\path\to\code\a.py
Run Code Online (Sandbox Code Playgroud)
问题:如何__main__从"b.py"库中获取模块的路径(在本例中为"a.py")?