Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
2 / 2 / 0
Регистрация: 24.11.2013
Сообщений: 33
1

Работа с типом Expr

15.04.2014, 16:24. Показов 3115. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Работа с типом Expr. Используя тип Expr, определенный выше, реализуйте следующие функции (используйте для тестирования функцию parseExpr)

Определите функцию eval, которая принимает два параметра: выражение типа Expr и список пар типа (String,Integer), задающий соответствие имен переменных и их значений. Функция должна вычислять значение выражение с учетом заданных значений выражений. Например, выражение eval (Add (Var "x") (Var "y")) [("x",1),("y",2)] должно выдавать число 3.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2014, 16:24
Ответы с готовыми решениями:

Работа с типом Expr. Используя тип Expr, определенный выше, реализуйте следующие функции
Работа с типом Expr. Используя тип Expr, определенный выше в lab4.pdf, реализуйте следующие...

Работа с типом Expr
2) Определите функцию simplify, которая упрощает выражения типа Expr, применяя очевидные правила...

Работа с типом Expr
4) Определите функцию eval, которая принимает два параметра: выражение типа Expr и список пар типа...

Работа с типом Expr
Используя тип Expr data Expr = Const' Integer | Var String | Add Expr Expr | Mul Expr Expr deriving...

6
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,640
Записей в блоге: 13
15.04.2014, 17:23 2
Цитата Сообщение от Александр1115 Посмотреть сообщение
Используя тип Expr, определенный выше
- это где? Придется привести его определение.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,640
Записей в блоге: 13
18.04.2014, 19:53 3
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
data Expr = Const Integer | Add Expr Expr | Mult Expr Expr | Var String deriving (Eq,Show)
 
getVal :: [(String,Integer)] -> String -> Maybe Integer
getVal [] _ = Nothing
getVal (vl:vls) v | (v == fst vl) = Just $ snd vl
                  | otherwise = getVal vls v
 
fromJust :: Maybe a -> a
fromJust (Just a) = a
fromJust Nothing  = error "bad variable name"
                  
eval :: Expr -> [(String,Integer)] -> Integer
eval (Const x) vlist = x
eval (Add e1 e2) vlist = (eval e1 vlist) + (eval e2 vlist)
eval (Mult e1 e2) vlist = (eval e1 vlist) * (eval e2 vlist)
eval (Var v) vlist = fromJust $ getVal vlist v
 
-- Проверка:
 
Main> eval (Add (Var "x") (Var "y")) [("x",1),("y",2)]
3
Main> eval (Mult (Var "x") (Var "y")) [("x",1),("y",2)]
2
1
2 / 2 / 0
Регистрация: 24.11.2013
Сообщений: 33
20.04.2014, 16:11  [ТС] 4
что означает символ $? и возможно ли реализовать программу без него?
и объясните пожалуйста эту строчку getVal (vl:vls) v | (v == fst vl) = Just $ snd vl
| otherwise = getVal vls v
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,640
Записей в блоге: 13
20.04.2014, 16:49 5
Цитата Сообщение от Александр1115 Посмотреть сообщение
что означает символ $? и возможно ли реализовать программу без него?
- оператор аппликации. Можно и без него:

Haskell
1
eval (Var v) vlist = fromJust (getVal vlist v)
0
0 / 0 / 0
Регистрация: 13.04.2014
Сообщений: 6
23.04.2014, 16:25 6
можно реализовать функцию eval без предыдущих двух функций?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,640
Записей в блоге: 13
23.04.2014, 17:59 7
Цитата Сообщение от KoshkaM Посмотреть сообщение
без предыдущих двух функций?
- это каких?
0
23.04.2014, 17:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2014, 17:59
Помогаю со студенческими работами здесь

Работа с типом Expr
3) Определите функцию toString, преобразующую выражение типа Expr в строку. Например, результатом...

Работа предиката с составным типом
Читаю записи БД вида eee/rrrr/0/vvvvv (длина и состав могут быть произвольными): list(). В...

Кто иожет пояснить зачем access вставляет сам в некоторые запросы столбцы типа "Expr 1000", "Expr 1002" и т.п.?
:scratch:

Symfony2, работа с типом Collection, работа с базовой формой
Здравствуйте. Осваиваю создание CRUD приложения на Symfony 2, на примере. Однако, возникают...

Работа с типом Char
Здравствуйте. У меня есть три переменные типа Char, размерность каждой переменной - 20 символов....

работа с типом флоат
Здравствуйте, извините за дурацкий вопрос) я недавно начал учить С++, и столкнулся вот с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru