This source code will serve as a reference for common set operations that have been partially implemented for a BlackJack game.
Feedback is welcomed within the comments section as I continue learning this mythical language.
module Core type Suit = | Spades | Clubs | Diamonds | Hearts type Face = | Two | Three | Four | Five | Six | Seven | Eight | Nine | Ten | Jack | Queen | King | Ace type Card = {Face:Face; Suit:Suit} type Deal = | Hand of Card * Card | Hit of Card let private suits = [Spades; Clubs; Diamonds ; Hearts] let private faces = [Two; Three; Four; Five; Six; Seven; Eight; Nine; Ten; Jack; Queen; King; Ace] let deck = [for suit in suits do for face in faces do yield {Face=face; Suit=suit}] let hitPlayer (deck:Card list) = (deck.Head, deck.Tail) let deal = function | card1::card2::remaining -> Some(card1, card2), remaining | _ -> None, [] let shuffle xs = let swap i j (array : _[]) = let tmp = array.[i] array.[i] <- array.[j] array.[j] <- tmp let rnd = System.Random() let xArray = Seq.toArray xs let n = Array.length xArray for i in [0..(n-2)] do let j = rnd.Next(i, n-1) swap i j xArray xArray |> Seq.toList let hand, deckRemaining = deal (shuffle deck);; let cardsLeft = Seq.length deckRemaining;;
One Reply to “Learning F# – BlackJack”