diff --git a/lab 5/FavoriteLangFP/FavoriteLangFP.fsproj b/lab 5/FavoriteLangFP/FavoriteLangFP.fsproj
new file mode 100644
index 0000000..c614f8d
--- /dev/null
+++ b/lab 5/FavoriteLangFP/FavoriteLangFP.fsproj
@@ -0,0 +1,13 @@
+
+
+
+ Exe
+ net7.0
+ FavoriteLangFP
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lab 5/FavoriteLangFP/Program.fs b/lab 5/FavoriteLangFP/Program.fs
new file mode 100644
index 0000000..02cc4f8
--- /dev/null
+++ b/lab 5/FavoriteLangFP/Program.fs
@@ -0,0 +1,88 @@
+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
\ No newline at end of file