首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用纯语言定义地图融合?

如何用纯语言定义地图融合?
EN

Stack Overflow用户
提问于 2015-04-28 07:17:43
回答 1查看 86关注 0票数 2

我正在试验基于术语重写的纯净语言。

我想使用一个等式来定义“地图融合”,如下所示:

代码语言:javascript
复制
> map f (map g list) = map (f . succ . g) list;

( succ是用来验证规则是否生效的。)

然而,它似乎不起作用:

代码语言:javascript
复制
> map id (map id [2,3,4]);
[2,3,4]

纯人工

表达式使用“最左-最内”的缩减策略进行计算。

所以我想现在发生的事情是,最内部的map id [2,3,4]表达式是先减少的,所以我的规则永远不会生效。

那么,如何使地图融合工作呢?

这是一个相关的实验。第一条规则并不适用:

代码语言:javascript
复制
> a (b x) = "foo";
> b x = "bar";
> a (b 5);
a "bar"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-28 19:45:10

我应该更仔细地阅读手册。我需要做的是使用def关键字将模式转换为宏。它的工作方式如下:

代码语言:javascript
复制
> def map f (map g list) = map (f . succ . g) list;
> map id (map id [2,3,4]);
[3,4,5]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29912758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档