|
|
open System
|
|
|
|
|
|
let getResponse (language: string) =
|
|
|
match language.ToLower() with
|
|
|
| "f#" | "fsharp" -> "Ты подлиза! Думаешь, это поможет тебе получить хорошую оценку?"
|
|
|
| "prolog" -> "Ты подлиза! И мазохист, видимо. Кто вообще любит Prolog?"
|
|
|
| "python" -> "Ух ты, как оригинально! Еще один фанат змеиного синтаксиса и отступов вместо скобок."
|
|
|
| "javascript" -> "JavaScript? Серьезно? Язык, где null не равен null, но равен undefined? Удачи с этим."
|
|
|
| "java" -> "Java... Любишь писать 20 строк кода там, где хватило бы 2, да? Фанат многословия?"
|
|
|
| "c++" -> "C++, где каждая ошибка - это пять новых багов и утечка памяти. Смелый выбор!"
|
|
|
| "rust" -> "О, хипстер программирования! Любишь рассказывать всем про заимствования и время жизни?"
|
|
|
| "haskell" -> "Хаскель? Ты, наверное, любишь объяснять монады через аналогии с космосом?"
|
|
|
| "c#" -> "C#... Мечтал стать разработчиком в Microsoft, но не прошел собеседование?"
|
|
|
| "go" -> "Go - когда хочешь писать на C, но без всех сложных функций, которые делают его полезным."
|
|
|
| "ruby" -> "Ruby? В 2010-м позвонили, просят их язык обратно."
|
|
|
| "php" -> "PHP - доказательство того, что даже плохо спроектированный язык может прожить десятилетия."
|
|
|
| "swift" -> "Swift? Нравится платить Apple дань за возможность разрабатывать для их устройств?"
|
|
|
| "kotlin" -> "Kotlin - когда Java настолько плоха, что пришлось изобрести новый язык."
|
|
|
| "scala" -> "Scala? Любишь когда код выглядит как иероглифы из древнего манускрипта?"
|
|
|
| "pascal" | "delphi" -> "Ого, динозавры еще не вымерли! Какой музей тебя выпустил?"
|
|
|
| "cobol" -> "COBOL? Ты, наверное, миллионер, обслуживающий банковские системы 60-х годов?"
|
|
|
| "fortran" -> "Фортран? Ты, наверное, ровесник первых ЭВМ?"
|
|
|
| "basic" -> "BASIC? Где ты нашел машину времени, чтобы вернуться в 80-е?"
|
|
|
| "lisp" -> "LISP? (Слишком (много (скобок (не (находишь?))))"
|
|
|
| "assembly" | "asm" -> "Ассемблер? Ты либо гений, либо просто любишь страдать."
|
|
|
| "matlab" -> "MATLAB? Твои графики, наверное, красивее, чем твой код."
|
|
|
| "r" -> "R? Статистика настолько скучна, что потребовался целый язык?"
|
|
|
| "perl" -> "Perl - когда хочешь, чтобы никто не мог прочитать твой код, даже ты сам через неделю."
|
|
|
| "lua" -> "Lua? Язык для тех, кто не дорос до настоящего программирования."
|
|
|
| "typescript" -> "TypeScript? JavaScript с дополнительной головной болью!"
|
|
|
| "objective-c" -> "Objective-C? Ты либо мазохист, либо застрял в 2007 году."
|
|
|
| "erlang" -> "Erlang? Ценишь непонятный синтаксис и отсутствие документации?"
|
|
|
| "clojure" -> "Clojure? Лисп в JVM - странный выбор для мучений."
|
|
|
| "sql" -> "SQL? Это не настоящий язык программирования, но ладно, притворимся."
|
|
|
| "bash" | "shell" -> "Bash? Скриптовое программирование - это же не настоящее программирование!"
|
|
|
| "powershell" -> "PowerShell? Windows-админ, который думает, что умеет программировать?"
|
|
|
| _ -> $"Что это за {language}? Настолько непопулярный, что я даже шутку не могу придумать!"
|
|
|
|
|
|
let readInput () = Console.ReadLine()
|
|
|
let printPrompt () =
|
|
|
Console.OutputEncoding <- Text.Encoding.UTF8
|
|
|
printfn "Какой язык программирования у тебя любимый?"
|
|
|
let printResponse (response: string) = printfn "%s" response
|
|
|
|
|
|
// Оператор суперпозиции (композиции функций)
|
|
|
let (>>) f g x = g (f x)
|
|
|
|
|
|
// Оператор каррирования (частичное применение)
|
|
|
let apply f x = f x
|
|
|
|
|
|
[<EntryPoint>]
|
|
|
let main argv =
|
|
|
printfn "Выберите режим:"
|
|
|
printfn "1 - Использовать суперпозицию"
|
|
|
printfn "2 - Использовать каррирование"
|
|
|
|
|
|
let mode = Console.ReadLine()
|
|
|
|
|
|
match mode with
|
|
|
| "1" ->
|
|
|
printfn "\n--- Режим суперпозиции ---"
|
|
|
|
|
|
let result =
|
|
|
printPrompt >>
|
|
|
(fun _ -> readInput()) >>
|
|
|
getResponse >>
|
|
|
printResponse
|
|
|
|
|
|
result ()
|
|
|
|
|
|
| "2" ->
|
|
|
printfn "\n--- Режим каррирования ---"
|
|
|
|
|
|
Console.OutputEncoding <- Text.Encoding.UTF8
|
|
|
printfn "Какой язык программирования у тебя любимый?"
|
|
|
|
|
|
let userInput = apply readInput ()
|
|
|
|
|
|
let responseFunction = apply getResponse
|
|
|
let response = responseFunction userInput
|
|
|
|
|
|
let printFunction = apply printResponse
|
|
|
printFunction response
|
|
|
|
|
|
| _ ->
|
|
|
printfn "Неверный выбор режима. Пожалуйста, выберите 1 или 2."
|
|
|
|
|
|
0 |