-
Notifications
You must be signed in to change notification settings - Fork 14
/
ex01.ex
99 lines (72 loc) · 3.35 KB
/
ex01.ex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
ExUnit.start
Code.load_file "support.ex"
defmodule Ex01 do
use ExUnit.Case
import Support
##############################################################################
# 1: 5 questions, 30 points available #
##############################################################################
# Rubric (per question): #
# #
# Does it pass tests?. . . . . . . . . . . . . . . . 60% #
# #
# Was is written using the given constraints? Is . . 20% #
# it free of any errors not found by the tests #
# #
# Is it written in a functional, Elixir style? . . . 20% #
##############################################################################
@moduledoc """
All the exercises should be solved using anonymous functions.
You can try your answers first in iex.
You can run the tests on your functions using
elixir ex01.ex
"""
##################
# 1.1: 5 points #
##########################################################
# Write a function that adds two numbers using fn syntax #
##########################################################
sum2a = your_anonymous_function(1, 2)
assert sum2a.(1, 2) == 3
assert sum2a.(-1, 100) == 99
##################
# 1.2: 5 points #
##########################################################
# Write a function that adds two numbers using & syntax #
##########################################################
sum2b = your_anonymous_function(1, 2)
assert sum2b.(1, 2) == 3
assert sum2b.(-1, 100) == 99
##################
# 1.3: 5 points #
#####################################################################
# Write a function that adds three numbers. Use the fn syntax, and #
# use the sum2() function you defined above inside it (so there are #
# no explicit + operators in your function #
#####################################################################
sum3a = your_anonymous_function(1, 2, 3)
assert sum3a.(1, 3, 5) == 9
assert sum3a.(1, -3, 5) == 3
##################
# 1.4: 5 points #
####################################
# Do the same using the & notation #
####################################
sum3b = your_anonymous_function
assert sum3b.(1, 3, 5) == 9
assert sum3b.(1, -3, 5) == 3
##################
# 1.5: 10 points #
########################################################################
# Write a function then takes a numeric parameter, and returns another #
# function. This second function also takes a numeric parameter. When #
# you call the second function with a parameter, it returns the #
# sum of that parameter and the parameter passed to the first #
# function. The examples below will make this clearer :) #
########################################################################
create_adder = your_anonymous_function(1)
add_2 = create_adder.(2)
add_99 = create_adder.(99)
assert add_2.(3) == 5
assert add_99.(3) == 102
end