1
내 merge
함수가 해당 형식에 대해 불만을 표시하는 이유는 무엇입니까?2 지연 목록 형식 충돌을 병합
내 x
이 (가) type 'a seq
이 아닌가요?
type 'a seq = Stop | Cons of 'a * (unit -> 'a seq)
let rec linear start step= (*builds a seq starting with 'start'*)
Cons (start, fun() -> linear (start+step) step)
let rec take n seq = match seq with (*take first n elem from seq*)
| Stop -> []
| Cons (a, f) -> if n < 1 then [] else a::(take (n-1) (f()))
let rec merge seq1 seq2 = match seq1, seq2 with
| Stop, _ -> seq2
| _, Stop -> seq1
| Cons(h1, tf1), _ as x ->
Cons(h1, fun() -> merge (x) (tf1()))
let l1 = linear 1 1
let l2 = linear 100 100
let l3 = interleave l1 l2
제가
take 10 l3
INT리스트에 맞는 결과를보고 싶다 = 1; 100; 2; 200; 삼; 300; 4; 400; 5; (500)]
첫 merge
이 작동하지 않는 이유
let rec merge seq1 seq2 = match seq1 with
| Stop -> Stop
| Cons (h, tf) -> Cons(h, fun() -> merge seq2 (tf()))
하지만 난 그것을 얻을하지 않는 것 (작동) 내 함수를 작성하는 또 다른 방법.
감사합니다.