-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathTask1_1.hs
27 lines (22 loc) · 1.04 KB
/
Task1_1.hs
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
module Task1_1 where
import Todo(todo)
data Term = IntConstant{ intValue :: Int } -- числовая константа
| Variable{ varName :: String } -- переменная
| BinaryTerm{ lhv :: Term, rhv :: Term } -- бинарная операция
deriving(Show,Eq)
-- Для бинарных операций необходима не только реализация, но и адекватные
-- ассоциативность и приоритет
(|+|) :: Term -> Term -> Term
(|+|) l r = todo
(|-|) :: Term -> Term -> Term
(|-|) l r = todo
(|*|) :: Term -> Term -> Term
(|*|) l r = todo
-- Заменить переменную `varName` на `replacement`
-- во всём выражении `expression`
replaceVar :: String -> Term -> Term -> Term
replaceVar varName replacement expression = todo
-- Посчитать значение выражения `Term`
-- если оно состоит только из констант
evaluate :: Term -> Term
evaluate expression = todo