嘿伙计们,我对OCaml和模式匹配都很陌生,所以我很难解决这个问题.
假设我有一个元组列表.我想要做的是根据元组中的第一个元素将参数与其中一个元组进行匹配,在这样做时,我想返回元组的第二个元素.所以,例如,我想做这样的事情:
let list = [ "a", 1; "b", 2; "c", 3; "d", 4 ] ;;
let map_left_to_right e rules = match e with
| first -> second
| first -> second
| first -> second
Run Code Online (Sandbox Code Playgroud)
如果我使用map_left_to_right"b"列表,我想得到2作为回报.因此,我想列出规则列表中的所有第一个元素,并将参数与这些元素中的一个匹配,但我不知道该怎么做.我在想我需要使用List.iter或List.for_all来做这样的事情.任何帮助,将不胜感激.谢谢!
无论我阅读什么教程/手册,OCaml类型总是让我很困惑.我需要定义一个类型,比方说test,它确实包含以下形式:
具有以下形式之一的类型('a,'b)测试:Empty,T t,N n,Seq [x1 ... xn]
我知道如何做前三个,但我完全不知道如何定义最后一个表格.这就是我所拥有的:
type ('nonterm, 'term) test =
| Empty
| T of 'term
| N of 'nonterm
| ????
Run Code Online (Sandbox Code Playgroud)
对于seq,我需要匹配子表达式x1到xn的实例.如果x = 0,那么这是空的.有人可以帮帮我吗?提前致谢.