3 people like it.
Like the snippet!
Small quiz-game
Small quiz-game with World Bank TypeProvider (from FSharp.Data Nuget-package):
Which country has the capital city of (random capital)?
(Three options)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
|
#if INTERACTIVE
#r "../packages/FSharp.Data.2.0.5/lib/net40/FSharp.Data.dll"
#else
module QuizGame
#endif
open System
open FSharp.Data
let bank = WorldBankData.GetDataContext()
let countries = bank.Regions.World.Countries
|> Seq.filter(fun i -> i.CapitalCity <> "")
|> Seq.map(fun i -> i.Name, i.CapitalCity)
let corrects = countries |> Seq.toArray
let rnd = Random()
let questionItem() = corrects.[rnd.Next(corrects.Length)]
let generateQuiz() =
let correct, capitalCity = questionItem()
capitalCity, [correct; fst(questionItem()); fst(questionItem())] |> List.sort
let checkAnswer country capitalCity =
corrects |> Array.exists(fun (cou, cap) -> cou = country && cap = capitalCity)
|
namespace System
Multiple items
namespace FSharp
--------------------
namespace Microsoft.FSharp
Multiple items
namespace FSharp.Data
--------------------
namespace Microsoft.FSharp.Data
val bank : WorldBankData.ServiceTypes.WorldBankDataService
Full name: Script.bank
type WorldBankData =
static member GetDataContext : unit -> WorldBankDataService
nested type ServiceTypes
Full name: FSharp.Data.WorldBankData
<summary>Typed representation of WorldBank data. See http://www.worldbank.org for terms and conditions.</summary>
WorldBankData.GetDataContext() : WorldBankData.ServiceTypes.WorldBankDataService
val countries : seq<string * string>
Full name: Script.countries
property WorldBankData.ServiceTypes.WorldBankDataService.Regions: WorldBankData.ServiceTypes.Regions
property WorldBankData.ServiceTypes.Regions.World: WorldBankData.ServiceTypes.Region
The data for region 'World'
property WorldBankData.ServiceTypes.Region.Countries: WorldBankData.ServiceTypes.Countries
<summary>The indicators for the region</summary>
module Seq
from Microsoft.FSharp.Collections
val filter : predicate:('T -> bool) -> source:seq<'T> -> seq<'T>
Full name: Microsoft.FSharp.Collections.Seq.filter
val i : WorldBankData.ServiceTypes.Country
property Runtime.WorldBank.Country.CapitalCity: string
val map : mapping:('T -> 'U) -> source:seq<'T> -> seq<'U>
Full name: Microsoft.FSharp.Collections.Seq.map
property Runtime.WorldBank.Country.Name: string
val corrects : (string * string) []
Full name: Script.corrects
val toArray : source:seq<'T> -> 'T []
Full name: Microsoft.FSharp.Collections.Seq.toArray
val rnd : Random
Full name: Script.rnd
Multiple items
type Random =
new : unit -> Random + 1 overload
member Next : unit -> int + 2 overloads
member NextBytes : buffer:byte[] -> unit
member NextDouble : unit -> float
Full name: System.Random
--------------------
Random() : unit
Random(Seed: int) : unit
val questionItem : unit -> string * string
Full name: Script.questionItem
Random.Next() : int
Random.Next(maxValue: int) : int
Random.Next(minValue: int, maxValue: int) : int
property Array.Length: int
val generateQuiz : unit -> string * string list
Full name: Script.generateQuiz
val correct : string
val capitalCity : string
val fst : tuple:('T1 * 'T2) -> 'T1
Full name: Microsoft.FSharp.Core.Operators.fst
Multiple items
module List
from Microsoft.FSharp.Collections
--------------------
type List<'T> =
| ( [] )
| ( :: ) of Head: 'T * Tail: 'T list
interface IEnumerable
interface IEnumerable<'T>
member Head : 'T
member IsEmpty : bool
member Item : index:int -> 'T with get
member Length : int
member Tail : 'T list
static member Cons : head:'T * tail:'T list -> 'T list
static member Empty : 'T list
Full name: Microsoft.FSharp.Collections.List<_>
val sort : list:'T list -> 'T list (requires comparison)
Full name: Microsoft.FSharp.Collections.List.sort
val checkAnswer : country:string -> capitalCity:string -> bool
Full name: Script.checkAnswer
val country : string
type Array =
member Clone : unit -> obj
member CopyTo : array:Array * index:int -> unit + 1 overload
member GetEnumerator : unit -> IEnumerator
member GetLength : dimension:int -> int
member GetLongLength : dimension:int -> int64
member GetLowerBound : dimension:int -> int
member GetUpperBound : dimension:int -> int
member GetValue : [<ParamArray>] indices:int[] -> obj + 7 overloads
member Initialize : unit -> unit
member IsFixedSize : bool
...
Full name: System.Array
val exists : predicate:('T -> bool) -> array:'T [] -> bool
Full name: Microsoft.FSharp.Collections.Array.exists
val cou : string
val cap : string
More information