OCamlでc
等しいリストのすべての要素を置き換えるにはどうすればよいですか?t
私はList.filter
成功せずに試しました:
List.fold_right (fun c -> t) (List.filter c myLst) []
List
モジュールにはこのタスクの機能が含まれていますか?
OCamlでc
等しいリストのすべての要素を置き換えるにはどうすればよいですか?t
私はList.filter
成功せずに試しました:
List.fold_right (fun c -> t) (List.filter c myLst) []
List
モジュールにはこのタスクの機能が含まれていますか?
以下を使用できます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
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が返される可能性があります。