Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- open System
- type LanguageEnums = Lithuanian=0 | English= 1;;
- type E<'a> = Breakfast of Name : string * Language : LanguageEnums * Translation : string | Lunch of Name : string * Language : LanguageEnums * Translation : string | Dinner of Name : string * Language : LanguageEnums * Translation : string;;
- let BC = Breakfast (Name = "Omelet", Language = LanguageEnums.Lithuanian, Translation = "Kiaušinienė");;
- let FC = Breakfast (Name = "Kiaušiniai", Language = LanguageEnums.Lithuanian, Translation = "Eggs");;
- let HB = Breakfast (Name= "Dešrelė", Language=LanguageEnums.Lithuanian, Translation="Sausage");;
- let HC = Breakfast (Name="Vafliai", Language=LanguageEnums.Lithuanian, Translation="Waffles");;
- let RC = Breakfast (Name="Blynai",Language=LanguageEnums.Lithuanian, Translation="Pancakes");;
- let TEN = Lunch (Name="Steak", Language=LanguageEnums.Lithuanian, Translation="Kepsnys");;
- let SAC = Lunch (Name="Salotos", Language=LanguageEnums.Lithuanian, Translation="Salad");;
- let BOX = Lunch (Name="Vištiena", Language=LanguageEnums.Lithuanian, Translation="Chicken");;
- let KEB = Lunch (Name="Kebabų Valgymas", Language=LanguageEnums.Lithuanian, Translation="Competetive Kebab Eating");;
- let IIG = Lunch (Name="Sėmkių Valgymas", Language=LanguageEnums.Lithuanian, Translation="Competetive Eating of sunflower seeds");;
- let KEBA = Dinner (Name="Banana", Language=LanguageEnums.Lithuanian, Translation="Bananas");;
- let PICA = Dinner (Name="Piculė", Language=LanguageEnums.Lithuanian, Translation="Pizza");;
- let FALA = Dinner (Name="Falafelis", Language=LanguageEnums.Lithuanian, Translation="Falafel");;
- let CHIP = Dinner (Name="Bulvių Traškučiai", Language=LanguageEnums.Lithuanian, Translation="Potato Chips");;
- let SEMA = Dinner (Name="Semkės", Language=LanguageEnums.Lithuanian, Translation="Sunflower seeds");;
- let translationList = [BC;FC;HB;HC;RC;TEN;SAC;BOX;KEB;IIG;KEBA;PICA;FALA;CHIP;SEMA];;
- // Translate Function Starts
- let translate (word:string) =
- let mutable isTranslated = false;
- for i in translationList do
- match i with
- | Breakfast (f1,f2,f3) -> if f1.ToLower() = word.ToLower() then
- printfn "'%s' is a Breakfast Meal, which is '%s' in %A \n" word f3 f2
- isTranslated <- true
- | Lunch (f1,f2,f3) -> if f1.ToLower() = word.ToLower() then
- printfn "'%s' is a lunch meal, which is '%s' in %A \n" word f3 f2
- isTranslated <- true
- | Dinner (f1,f2,f3) -> if f1.ToLower() = word.ToLower() then
- printfn "'%s' is a meal for the evening, which is'%s' in %A \n" word f3 f2
- isTranslated <- true
- if (not isTranslated) then printfn "Sorry, your word is not in the dictionary (at least not in our) '%s' \n" word;;
- let interpreterAgent = MailboxProcessor.Start(fun translation->
- //processing function
- let rec translateLoop() = async{
- //read input
- let! word = translation.Receive()
- printfn "Looking for a translation for: %s" word
- //call translate to process input
- translate word
- return! translateLoop()
- }
- translateLoop()
- );;
- interpreterAgent.Post "omelet"
- interpreterAgent.Post "Steak"
- interpreterAgent.Post "BANANA"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement