如何从列表中访问类型中的值

时间:2015-04-23 03:35:20

标签: functional-programming ocaml

这是我项目的结构

type A{
t1;
t2;
}

and B = var of A
and C = B list
type D = C list

现在我有一个只有D作为参数的函数。每次调用此函数时,我都需要为t2分配一个唯一值。

我想我不能直接为t2分配一个值,而是需要返回一个新值为t2的新类型。我认为这是函数式语言的工作原理

我的问题是我不知道如何使用此功能

来访问该值

我还在学习语法,如果有人能给我一个例子,那就太棒了

1 个答案:

答案 0 :(得分:2)

你的问题根本不清楚。

如果您想要成为可以更改字段的记录,则可以使用关键字mutable。 如果您有type a = { t1 : int ; mutable t2 : int },那么如果x的值为a类型,则可以使用语法x.t2 <- 9

如果我理解正确,你想做的是:

type a = { t1 : int ; mutable t2 : int }
type b = Var of a
type c = b list
type d = c list

let func d =
  List.iter (fun c -> List.iter (function (Var a) -> a.t2 <- a.t2 + 1) c) d

哪些可以改写(通过eta-conversions)

let func = List.iter (List.iter (function (Var a) -> a.t2 <- a.t2 + 1))

此函数将迭代c中的每个d = c list,并且每个{h}将迭代所有b Var a,并修改t2 {% if userprofile.is_autenticated %} <li><a href="{% url 'kerajinan.views.profile' %}"><i class="fa fa-user"></i>{{ user.get_username }}</a></li> <li><a href="{% url 'django.contrib.auth.views.logout' %}">Sign Out</a></li> {% else %} <li><a href="{% url 'django.contrib.auth.views.login' %}"><i class="fa fa-lock"></i> Login</a></li> {% endif %} <li><a href="{% url 'django.contrib.auth.views.login' %}"><i class="fa fa-lock"></i> Login</a></li> }。