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 [] 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