Skip to content

ElixirCourse/task-one

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

Задача 1

Към хранилището трябва да направите поне два отделни commit-а, всеки от тях трябва да добавя към хранилището един от следните файлове:

  • answers.md
  • task.exs

Въпроси и отговори

Във файла answers.md, трябва да има следните въпроси придружени с отговор:

  • Коя специалност и кой курс сте? (ако не учите във ФМИ го оставете без отговор)
  • Защо записахте (посещавате) курса?
  • Колко уверен се чувствате в използването на git? (число в интервала [0;10])
  • Колко често проверявате мейла си? (едно от: никога, веднъж месечно, веднъж седмично, всеки ден)

Примерен отговор би изглеждал така:

Коя специалност и кой курс сте?

Компютърни науки, пети курс.

Защо записахте (посещавате) курса?

 Една от основните причини да посещавам курса е, че участвам
 в организацията му. По-значимата причина е защото смятам, че
 Elixir е един от най-интерсените езици, с които съм се
 сблъсквал. Това че е функционален, конкурентният му модел
 и нестандартните конструкции в езика, засилват интереса ми
 към Elixir още повече.

Колко увере се чувствате в използването на git?

6.5/10

Колко често проверявате мейла си?

Всеки ден (толкова често, че от gmail понякога ме блокират)

Същинската задача

Във файла task.exs трябва да има 2 анонимни функции, които са свързани със следните имена:

  • if_else - симулираща действието на if клауза в императивните езици. Тя трябва да приема 3 аргумента. Първият аргумент е произволна стойност - ако тя се интерпретира като истина, то резултатът от функцията трябва да е вторият ѝ аргумент. Aко обаче първият аргумент се интерпретира като лъжа, то резултатът трябва да е третият аргумент на функцията. Например:
iex> if_else.(true, "yes", "no")
"yes"
iex> if_else.(:false, "yes", "no")
"no"
  • if_else_lazy - подобно на предната функция приема 3 аргумента с разликата, че вторият и третият аргумент са функции на 0 аргумента, като съответната функция трябва да бъде изпълнена само ако нейният резултат трябва да бъде върнат. Например:
iex> truth = fn() ->
...>   IO.puts "You are right."
...>   "yes"
...> end
#Function<20.52032458/0 in :erl_eval.expr/5>
iex> lie = fn() ->
...>   IO.puts "You are lying to me!"
...>   "no"
...> end
#Function<20.52032458/0 in :erl_eval.expr/5>
iex> if_else_lazy.(:true, truth, lie)
You are right.
"yes"
iex> if_else_lazy.(false, truth, lie)
You are lying to me!
"no"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages