1

OCamlでc等しいリストのすべての要素を置き換えるにはどうすればよいですか?t

私はList.filter成功せずに試しました:

List.fold_right (fun c -> t) (List.filter c myLst) []

Listモジュールにはこのタスクの機能が含まれていますか?

4

2 に答える 2

3

以下を使用できますmap( List モジュールを参照):

open Printf;;

let l = ['a'; 'b'; 'c'; 'd'; 'c']
let l2 = List.map (fun x -> if (x = 'c') then 't' else x) l;;
List.iter (printf "%c ") l2;;

印刷する

a b t d t 
于 2013-03-10T13:01:51.030 に答える
1

List.fold_rightを使用する場合は、次の方法で使用できます。

let replace lst = List.fold_right (fun elmt accum -> 
    let e = if elmt = 'c' then 't' else elmt in
    e::accum
) lst [];;
      val replace : char list -> char list = <fun>
# replace ['a'; 'b'; 'c'];;
- : char list = ['a'; 'b'; 't']

注意:OCamlでは=の代わりに==を使用しないでください。意味が異なります。==物理的同等性をテストしますが、=意味的同等性をテストします。したがって、==を使用すると、2つの値が意味的に等しい場合でも、falseが返される可能性があります。

于 2013-03-10T14:55:30.093 に答える