ias*_*uff 0 ocaml functional-programming
我有一个OCaml函数,我从帖子中获得:在Ocaml中列出逆转
let rev_list l =
      let rec rev_acc acc = function
        | [] -> acc
        | hd::tl -> rev_acc (hd::acc) tl
      in 
      rev_acc [] l
我测试了这个,它显然有效,但我不明白为什么.在main函数中,在定义时rev_acc,它表示它只接受参数acc.但是,然后用两个参数调用该函数.为什么我们允许这样做?
另外,为什么我们说let rec rev_acc acc = function,"=函数"是什么意思,为什么我们不使用匹配?我假设这与不必指定某些参数有关; 我确实在课程的最后部分记住了一些内容,这只是简单介绍的内容.它与currying有什么关系吗?
对不起,如果这些都是愚蠢的问题; 如果不是很明显的话,我对函数式编程比较陌生.
任何帮助是极大的赞赏.谢谢.
Ocaml有一个特殊的function语法,它接受一个隐式参数并自动将其插入到匹配表达式中
rev_acc程序中的函数是使用function
let rec rev_acc acc = function
  | [] -> acc
  | hd::tl -> rev_acc (hd::acc) tl
这相当于
let rec rev_acc acc xs =
  match xs with
    | [] -> acc
    | hd::tl -> rev_acc (hd::acc) tl 
上面,每个版本都rev_acc接受两个参数
| 归档时间: | 
 | 
| 查看次数: | 85 次 | 
| 最近记录: |