我经常在互联网上看到各种各样的抱怨,其他人的currying例子并不是currying,但实际上只是部分应用.
我没有找到关于部分应用是什么的合理解释,或者它与currying有何不同.似乎存在普遍的混淆,在某些地方将等效的例子描述为currying,在其他地方描述为部分应用.
有人可以向我提供这两个术语的定义,以及它们如何区别的细节吗?
language-agnostic terminology definition currying partial-application
Y-combinator是一种来自事物"功能"方面的计算机科学概念.大多数程序员对组合器一无所知,如果他们甚至听说过它们的话.
theory computer-science functional-programming combinators definition
一位同事从未听说过这一点,我无法提供真正的定义.对我来说,它总是一个'我知道 - 当我看到它'的例子.
奖金问题,谁来源于这个词?
有人可以解释软件设计和软件架构之间的区别吗?
进一步来说; 如果你告诉别人告诉你"设计" - 你期望他们出现什么?"架构"也是如此.
我目前的理解是:
如我错了请纠正我.我已经提到维基百科有关于http://en.wikipedia.org/wiki/Software_design和http://en.wikipedia.org/wiki/Software_architecture的文章,但我不确定我是否正确理解它们.
我们最近遇到了一个问题,即在发生一系列提交后,后端进程无法运行.现在,我们都是优秀的小男孩和女孩,并rake test
在每次办理登机手续后都跑了,但由于Rails图书馆装载中的一些奇怪现象,它只发生在我们直接从生产模式中的Mongrel运行时.
我追踪了这个错误,这是因为一个新的Rails gem以一种破坏运行时Rails代码中一个狭隘用法的方式覆盖了String类中的一个方法.
无论如何,长话短说,有没有办法在运行时询问Ruby在哪里定义了一个方法?这样的whereami( :foo )
回归/path/to/some/file.rb line #45
?在这种情况下,告诉我它是在类String中定义的将是无益的,因为它被某些库重载.
我不能保证源代码存在于我的项目中,因此grepping 'def foo'
不一定会给我我需要的东西,更不用说我是否有很多东西 def foo
,有时候直到运行时我才知道我可能正在使用哪一个.
假设我的Web服务位于,http://localhost:8080/foo/mywebservice
我的WSDL位于http://localhost:8080/foo/mywebservice?wsdl
.
是http://localhost:8080/foo/mywebservice
一个端点,即它是否与我的Web服务的URI相同,或者SOAP消息收到和解组的位置是什么?
你能否向我解释它是什么以及它的目的是什么?
什么是弱头范式(WHNF)是什么意思?什么是头标准型(HNF)和范式(NF)是什么意思?
熟悉的seq函数将表达式计算为我们称之为head normal form(缩写为HNF)的表达式.它一旦到达最外面的构造函数("头部")就会停止.这与正常形式(NF)不同,其中表达式被完全评估.
您还将听到Haskell程序员引用弱头正常形式(WHNF).对于正常数据,弱头正常形式与头部正常形式相同.差异只出现在功能上,而且我们在这里无关紧要.
我已经阅读了一些资源和定义(Haskell Wiki和Haskell邮件列表和自由词典),但我没有得到它.有人可能举一个例子或提供外行定义吗?
我猜它会类似于:
WHNF = thunk : thunk
HNF = 0 : thunk
NF = 0 : 1 : 2 : 3 : []
Run Code Online (Sandbox Code Playgroud)
如何做seq
和($!)
与WHNF和HNF有关?
我还是很困惑.我知道有些答案会忽略HNF.通过阅读各种定义,似乎WHNF和HNF中的常规数据之间没有区别.但是,它似乎与功能有所区别.如果没有差异,为什么还seq
需要foldl'
?
另一个混淆点来自Haskell Wiki,它指出seq
减少到WHNF,并且对以下示例不做任何处理.然后他们说他们必须seq
用来强迫评估.那不是强迫它到HNF吗?
常见的新手堆栈溢出代码:
Run Code Online (Sandbox Code Playgroud)myAverage = uncurry (/) . foldl' (\(acc, len) x -> (acc+x, len+1)) (0,0)
了解seq和弱头正常形式(whnf)的人可以立即明白这里出了什么问题.(acc + x,len + 1)已经在whnf中,所以seq将值减少到whnf,对此无效.这段代码将像原始的foldl示例一样构建thunks,它们只是在元组内部.解决方案只是强制元组的组件,例如
Run Code Online (Sandbox Code Playgroud)myAverage …
我正在阅读CLRS的"算法简介".在第2章中,作者提到了"循环不变量".什么是循环不变量?
我一直试图找到一个好的定义,并了解一个线程到底是什么.
似乎我必须遗漏一些明显的东西,但每当我读到一个线程是什么时,它几乎是一个循环定义,一个"线程是一个执行线程"或"一种分为运行任务的方法".呃呃.咦?
从我所读到的看来,线程并不是真正具体的东西,就像进程一样.它实际上只是一个概念.从我所理解的这种工作方式,处理器为程序(这已被称为一个执行一些命令执行的线程),那么当它需要切换到处理一些其他节目了一下,它存储状态的它正在某个地方执行的程序(线程本地存储),然后开始执行其他程序的指令.而来回.这样,一个线程实际上只是当前正在运行的程序的"执行路径之一"的概念.
与流程不同,流程确实是某种东西 - 它是资源的集合等.
作为一个定义的例子并没有真正帮助我...
来自维基百科:
"计算机科学中的一个线程是执行线程的缩写.线程是程序将(称为"拆分")本身划分为两个或多个同时(或伪同时)运行任务的一种方式.线程和进程不同于一个操作系统到另一个,但通常,一个线程包含在进程内,同一进程中的不同线程共享相同的资源,而同一多任务操作系统中的不同进程则不共享.
我是对的吗?错误?真的是什么线程?
编辑:显然,一个线程也给出了自己的调用堆栈,所以这是有点的具体事情.
我在我的C#代码中使用了一个特定的命令,该代码运行良好.但是,据说在"非托管"代码中行为不端.
什么是托管代码或非托管代码?
definition ×10
terminology ×4
.net ×1
algorithm ×1
architecture ×1
boilerplate ×1
c# ×1
clrs ×1
combinators ×1
currying ×1
endpoint ×1
haskell ×1
managed ×1
methods ×1
process ×1
ruby ×1
runtime ×1
strictness ×1
theory ×1
unmanaged ×1
web-services ×1