【发布时间】:2021-06-23 04:04:41
【问题描述】:
我正在尝试制作这样的功能
eval(X, Map = #{}) ->
%% expression
.
X 应该是一个包含三个元素的元组,第一个是描述。其他值可以是整数,也可以是原子 a 或 b,或另一个元组。第二个参数应该是一个映射,它将 X 中的任何潜在原子 a 或 b 映射到一个值。示例输入可以是
eval({add, a, b}, #{a => 1, b => 2})
eval({add, a, 2}, #{a => 1})
eval({mul, {add, a, 3}, b}, #{a => 1, b => 2}).
我一辈子都找不到 Map 的方法,将 X 中的任何潜在原子 a 或 b 映射到输入中给出的值。任何人都有关于如何实现的建议,以便将任何原子 a 或 b 映射到 Map 中给出的值?
【问题讨论】:
-
“有一个 Map 将 X 中的任何潜在原子 a 或 b 映射到输入中给出的值”是什么意思?除了让人们尝试破译那个受折磨的句子之外,给每个示例的输出示例提供一个示例要容易得多吗?
-
这是我的问题,但我意识到我并不清楚我想要回答什么。由于我无法删除我的问题,我觉得我别无选择,只能写一个新问题来更好地描述我想要回答的问题。这个输入 eval({mul, {add, a, 3}, b}, #{a => 1, b => 2}) 将作为输出 8,就像在我的程序中通过 eval 函数一样 4*2 ({mul, {add, 1, 3}, 2}, #{a => 1, b => 2}) 在我的程序中是 (3+1)*2
标签: tuples erlang pattern-matching