这是我的“转换”方法的签名:
let rec transform (f: -> 'a -> 'b) (l: 'a list): 'b list =
begin match l with
| [] -> []
| hd :: rest -> (f hd) :: (transform f rest)
end
这个想法是我想找到一个核苷酸的补体。G与C互补,A与T互补。
这就是我实现函数的方式,但我想知道是否有比一堆嵌套 if 语句更有效的方法。
type nucleotide = G | C | A | T
type helix = nucleotide list
let complementary_helix_f: nucleotide -> nucleotide =
fun (n: nucleotide) -> if n = G then C
else if n = C then G
else if n = A then T
else A