Scheme 消息传递的概念
我试图确切地理解它(在scheme中)的作用,但它没有多大意义。有人能用简单的语言解释一下吗?非常感谢 问题 我们将通过使用这些参数来代表一个国家:数十亿美元的GDP 美元,面积以百万平方英里为单位,人口以百万为单位。编写一个消息传递过程 (使country mp gdp area population)返回响应以下消息的对象: •“国内生产总值”;简单地返回gdp •“区域”;只需返回该区域 •“人口”;简单地让人口回归 •“pop密度”;返回人口除以面积 •“人均国内生产总值”;返回gdp除以人口 •'更大;返回接收另一个国家/地区消息传递对象和 如果第一个县(原始县)的面积大于 第二个国家的区域(传入的国家),否则为false 旁注:对于大多数问题,我都有可用的代码,但我只想解释一下它是如何工作的。我所要做的就是遵循消息传递工作的一般形式,但我一点也不懂。给你Scheme 消息传递的概念,scheme,message,Scheme,Message,我试图确切地理解它(在scheme中)的作用,但它没有多大意义。有人能用简单的语言解释一下吗?非常感谢 问题 我们将通过使用这些参数来代表一个国家:数十亿美元的GDP 美元,面积以百万平方英里为单位,人口以百万为单位。编写一个消息传递过程 (使country mp gdp area population)返回响应以下消息的对象: •“国内生产总值”;简单地返回gdp •“区域”;只需返回该区域 •“人口”;简单地让人口回归 •“pop密度”;返回人口除以面积 •“人均国内生产总值”;返回gdp除
(define (make-country-mp gdp area population)
(define (dispatch msg)
(cond ((equal? msg 'gdp) gdp)
((equal? msg 'area) area)
((equal? msg 'population) population)
((equal? msg 'pop-density) (/ population area))
((equal? msg 'gdp-per-capita) (/ gdp population))
;((equal? msg 'is-bigger) ; unsure of the code here
(else (error "invalid option" msg))))
dispatch)
基本上,
make country mp
返回一个函数对象(在本例中是一个闭包,它会记住传递到make country mp
调用中的gdp
、area
和population
的值),您可以用一个参数调用该函数对象。该参数与符号gdp
,面积
,人口
,流行人口密度
,人均gdp
,更大
匹配,并在每种情况下返回相应的结果
如果您知道案例
,您可能会发现这更容易阅读:
(define (make-country-mp gdp area population)
(lambda (msg)
(case msg
((gdp) gdp)
((area) area)
((population) population)
((pop-density) (/ population area))
((gdp-per-capita) (/ gdp population))
((is-bigger) (lambda (rhs)
(> area (rhs 'area))))
(else (error "invalid option" msg)))))
隐马尔可夫模型。。。你能告诉我们更多的情况吗?通常,术语消息传递用于许多不同的情况。一般来说,它指。。。传递消息的组件。恐怕那没什么帮助。你说的更多?好的。因为我一点也不知道我在看什么,所以我只提供一个我收到的家庭作业问题的例子。当然,我不是在寻找答案,只是对这个概念的解释,考虑到这个问题,这可能对你更有意义。谢谢你的解释,我现在肯定能更好地理解它。然而,rhs在lambda中是什么意思?“rhs”通常指右手边。请注意,
rhs
用于获取(>area(rhs'area))
中的右侧参数。为了让右撇子更清楚,假设我们可以使用中缀符号,比如area>(rhs'area)
@user2789945来添加到c45207的注释中,为了使其更像中缀,可以将其看作是lambda-rhs:area>rhs.area()
(Python语法)。(是的,我确实想说的是右手边。)