我只是想知道是否可以使用函数式编程语言的模式匹配工具(Haskell/F#/Caml)多次匹配相同的值。
只需考虑以下示例:
plus a a = 2 * a
plus a b = a + b
当使用两个类似的值调用函数时(将存储在a中),将调用第一个变量。
一个更有用的应用程序应该是这个(简化AST)。
simplify (Add a a) = Mult 2 a
但是Haskell拒绝这些代码,并警告我a的定义相互矛盾--我必须进行显式的大小写/if检查,以确定函数是否得到了相同的值。是否有任何技巧来指示我想要匹配的变量将多次发生?
我听说我们可以注释ocaml prog。根据它们的类型。论坛上的一个老帖子建议使用的ocaml模式
我一直在使用Tuareg模式,该模式建议使用"c-c c-t“来检索类型。tuareg.el中的这段代码
(when tuareg-with-caml-mode-p
;; Trigger caml-types
(define-key map [?\C-c ?\C-t] 'caml-types-show-type)
;; To prevent misbehavior in case of error during exploration.
在浏览Caml Light库以获取编程示例时,我无意中发现了以下代码,这些代码摘自Caml Light queue.ml文件:
type 'a queue_cell =
Nil
| Cons of 'a * 'a queue_cell ref
;;
type 'a t =
{ mutable head: 'a queue_cell;
mutable tail: 'a queue_cell }
;;
let add x = function
{ head = h; tail = Nil as t } ->
我正在用Emacs编写Ocaml代码,目前if缩进的设置给出了以下内容:
if cond1 then e1 else
if cond2 then e2 else
if cond3 then e3 else
e4
我想实现与相同的格式
if cond1 then e1 else
if cond2 then e2 else
if cond3 then e3 else
e4
有人能告诉我哪个参数与此相关吗?谢谢
Edit1:这是我的
正如标题所说:在SharePoint2010中,我需要以编程方式创建一个视图,让我可以过滤列表(人员列表)上的项目。在这个人员列表中,我有一个引用另一个列表(项目)的查找字段:我只需要显示在确定的项目中工作的人员(作为字符串传递)
我已经使用以下代码创建了一个示例视图:
class Program
{
static void Main(string[] args)
{
using (SPSite site = new SPSite("http://dev_seventeen:999"))
{
我习惯于在print_int中使用标准函数OCaml,但当我按照“真实世界”( Real )一书中的建议,打开简街的图书馆Base时,我会得到一个不推荐的警告:
utop # print_int;;
- : int -> unit = <fun>
utop # open Base;;
utop # print_int;;
Line 1, characters 0-9:
Alert deprecated: Base.print_int
- : int -> unit = <fun>
更糟糕的是,当我用dune构建它时,正如书中所建议的那样,警告变成了错误。我该
我试图学习函数式编程,并在功能上表达文件解析任务时遇到困难。假设我有一个具有以下格式的文本文件:
val_0: <--- "header"
key_0_0 <--- these keys should be set to the "header" or val0
key_0_1
key_0_2
...
...
val_n:
...
key_n_m
如何才能得到一个哈希表,并将所有键设置为它们的关联值?
编辑:我的解决方案。有人能改进吗?
open Core.Std
let contains s1 s2 =