Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.50 KB | None | 0 0
  1. open System
  2.  
  3. type LanguageEnums = Lithuanian=0 | English= 1;;
  4.  
  5. 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;;
  6.  
  7. let BC = Breakfast (Name = "Omelet", Language = LanguageEnums.Lithuanian, Translation = "Kiaušinienė");;
  8. let FC = Breakfast (Name = "Kiaušiniai", Language = LanguageEnums.Lithuanian, Translation = "Eggs");;
  9. let HB = Breakfast (Name= "Dešrelė", Language=LanguageEnums.Lithuanian, Translation="Sausage");;
  10. let HC = Breakfast (Name="Vafliai", Language=LanguageEnums.Lithuanian, Translation="Waffles");;
  11. let RC = Breakfast (Name="Blynai",Language=LanguageEnums.Lithuanian, Translation="Pancakes");;
  12.  
  13. let TEN = Lunch (Name="Steak", Language=LanguageEnums.Lithuanian, Translation="Kepsnys");;
  14. let SAC = Lunch (Name="Salotos", Language=LanguageEnums.Lithuanian, Translation="Salad");;
  15. let BOX = Lunch (Name="Vištiena", Language=LanguageEnums.Lithuanian, Translation="Chicken");;
  16. let KEB = Lunch (Name="Kebabų Valgymas", Language=LanguageEnums.Lithuanian, Translation="Competetive Kebab Eating");;
  17. let IIG = Lunch (Name="Sėmkių Valgymas", Language=LanguageEnums.Lithuanian, Translation="Competetive Eating of sunflower seeds");;
  18.  
  19. let KEBA = Dinner (Name="Banana", Language=LanguageEnums.Lithuanian, Translation="Bananas");;
  20. let PICA = Dinner (Name="Piculė", Language=LanguageEnums.Lithuanian, Translation="Pizza");;
  21. let FALA = Dinner (Name="Falafelis", Language=LanguageEnums.Lithuanian, Translation="Falafel");;
  22. let CHIP = Dinner (Name="Bulvių Traškučiai", Language=LanguageEnums.Lithuanian, Translation="Potato Chips");;
  23. let SEMA = Dinner (Name="Semkės", Language=LanguageEnums.Lithuanian, Translation="Sunflower seeds");;
  24.  
  25.  
  26. let translationList = [BC;FC;HB;HC;RC;TEN;SAC;BOX;KEB;IIG;KEBA;PICA;FALA;CHIP;SEMA];;
  27.  
  28. // Translate Function Starts
  29. let translate (word:string) =
  30. let mutable isTranslated = false;
  31. for i in translationList do
  32. match i with
  33. | Breakfast (f1,f2,f3) -> if f1.ToLower() = word.ToLower() then
  34. printfn "'%s' is a Breakfast Meal, which is '%s' in %A \n" word f3 f2
  35. isTranslated <- true
  36. | Lunch (f1,f2,f3) -> if f1.ToLower() = word.ToLower() then
  37. printfn "'%s' is a lunch meal, which is '%s' in %A \n" word f3 f2
  38. isTranslated <- true
  39. | Dinner (f1,f2,f3) -> if f1.ToLower() = word.ToLower() then
  40. printfn "'%s' is a meal for the evening, which is'%s' in %A \n" word f3 f2
  41. isTranslated <- true
  42. if (not isTranslated) then printfn "Sorry, your word is not in the dictionary (at least not in our) '%s' \n" word;;
  43.  
  44. let interpreterAgent = MailboxProcessor.Start(fun translation->
  45.  
  46. //processing function
  47. let rec translateLoop() = async{
  48.  
  49. //read input
  50. let! word = translation.Receive()
  51. printfn "Looking for a translation for: %s" word
  52.  
  53. //call translate to process input
  54. translate word
  55.  
  56. return! translateLoop()
  57. }
  58.  
  59. translateLoop()
  60. );;
  61.  
  62. interpreterAgent.Post "omelet"
  63. interpreterAgent.Post "Steak"
  64. interpreterAgent.Post "BANANA"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement