(lab 5) feat: task-12: Добавлена новая программа FavoriteLangFP с реализацией через операторы суперпозиции и каррирования

main
Artem-Darius Weber 3 weeks ago
parent 79112b02d4
commit 3da854fc13

@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<RootNamespace>FavoriteLangFP</RootNamespace>
</PropertyGroup>
<ItemGroup>
<Compile Include="Program.fs" />
</ItemGroup>
</Project>

@ -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
[<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
Loading…
Cancel
Save