Я написал рекурсивную функцию doMoves, которая должна соответствовать каждому элементу списка и вызывать назначенную функцию.Тем не менее, я запустил список [Draw;Draw], в котором функция Draw была вызвана только один раз.Я не уверен, почему он не соответствует каждому элементу.
Я написал рекурсивную функцию, которая должна брать заголовок списка на каждом шаге и сопоставлять его с функцией
let officiate (cards:Card list) (moves:Move list) (goal:int) =
let mutable heldCards = []
let mutable deck = cards
let doNothing =
heldCards
let DrawCard =
lazy (
heldCards<-List.append heldCards [deck.Head]
List.length heldCards |> printfn "Length of Drawn heldCards: %d"
deck<-deck.Tail)
let rec doMoves movs =
match movs with
| [] -> doNothing
| x::xs ->
match x with
| Draw -> DrawCard.Force()
doMoves xs
doMoves moves
true
let moves = [Draw; Draw]
let cards = [(Jack,Clubs); (Num(8),Diamonds)]
let card = (Jack,Spades)
officiate cards moves 42
Я ожидал, что на выходе появится состояние
Length of Drawn heldCards: 1
Length of Drawn heldCards: 2
, но я получаю следующее:
Length of Drawn heldCards: 1