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

Разработайте тип данных Prop, представляющий утверждения такого вида

20.05.2012, 23:26. Показов 3175. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с заданиям,очень надо.

Разработайте тип данных Prop, представляющий утверждения та-
кого вида. Определите следующие функции:
1) vars :: Prop -> [String], которая возвращает список
имен переменных (без повторений), встречающихся в утвер-
ждениях.
2) Пусть задан список имен переменных
и их значений типа Bool, например
[("x",True),("y",False)]. Определите функцию
truthValue :: Prop -> [(String,Bool)] -> Bool,
которая определяет, верно ли утверждение, если переменные
имеют заданные списком значения.
3) Определите функцию tautology :: Prop -> Bool, кото-
рая возвращает True, если утверждение верно при любых зна-
чениях переменных, встречающихся в нем (например, это вы-
полняется для утверждения (x | ~x)).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2012, 23:26
Ответы с готовыми решениями:

Разработать тип данных Prop, представляющий утверждения заданного вида
Помогите пожалуйста. Утверждением будем называть логическую формулу, имеющую одну из следующих форм: • p & q • p | q ...

Разработайте тип данных Prop
В общем существует такая задача: Утверждением будем называть логическую формулу, имеющую одну из следующих форм: • имя переменной...

Разработайте тип данных Prop
Утверждением будем называть логическую формулу, имеющую од- ну из следующих форм: • имя переменной (строка) • p & q • p | q •...

4
313 / 268 / 5
Регистрация: 03.04.2011
Сообщений: 456
20.05.2012, 23:29
Даже задание скопировать без ошибок (полностью) - непосильная задача?
Цитата Сообщение от Nameless One Посмотреть сообщение
в книжке "Programming in Haskell" за авторством Graham Hutton есть именно такой пример
0
0 / 0 / 0
Регистрация: 28.02.2012
Сообщений: 6
21.05.2012, 01:43  [ТС]
Цитата Сообщение от bokunopico Посмотреть сообщение
Даже задание скопировать без ошибок (полностью) - непосильная задача?
а может просто невнимательность! а чтоб не поязвить, без этого никак... супер книга на английском, зная немецкий....
0
313 / 268 / 5
Регистрация: 03.04.2011
Сообщений: 456
21.05.2012, 01:56
Цитата Сообщение от feniksa Посмотреть сообщение
а чтоб не поязвить, без этого никак
А чтоб наработки показать, без этого никак?
Цитата Сообщение от feniksa Посмотреть сообщение
супер книга на английском, зная немецкий
Код там тоже на английском?
0
313 / 268 / 5
Регистрация: 03.04.2011
Сообщений: 456
22.05.2012, 02:22
Для экспертов икспертов в области немецкого языка и для прочих посетителей форума позаимствовал решение у calabi-yau (опять >_<):
Haskell
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
import Data.List (nub)
 
data Prop = And Prop Prop | Or Prop Prop | Not Prop | Var String deriving Show 
 
vars :: Prop -> [String]
vars = nub . go where 
    go (And a b) = concat [go a, go b] 
    go (Or a b)  = concat [go a, go b]
    go (Not a)   = go a
    go (Var s)   = [s]
 
unsafeLookup :: Eq a => a -> [(a, b)] -> b
unsafeLookup x t = case lookup x t of Just x -> x
 
truthValue :: [(String, Bool)] -> Prop -> Bool
truthValue table = go where
    go (And a b) = go a && go b
    go (Or a b)  = go a || go b
    go (Not a)   = not (go a)
    go (Var a)   = unsafeLookup a table
 
gen :: [a] -> [b] -> [[(a, b)]]
gen []     _  = [[]]
gen (x:xs) ys = concat[(p:) `map` gen xs ys | p <- [(x, y) | y <- ys]]
 
tautology :: Prop -> Bool
tautology prop = all (flip truthValue prop) $ gen (vars prop) [True, False]
Haskell
1
2
3
4
*Main> tautology $ Or  (Var "x") (Not $ Var "x")
True
*Main> tautology $ And (Var "x") (Not $ Var "x")
False
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.05.2012, 02:22
Помогаю со студенческими работами здесь

Утверждения Prop
Утверждением будем называть логическую формулу, имеющую одну из следующих форм: имя переменной (строка) p &amp; q p | q ~p где p...

Определите тип данных, представляющий бинарные деревья поиска
Очень глупая ситуация, задание: Функции работы с бинарными деревьями поиска. Определите тип данных, представляющий бинарные деревья...

Определить тип данных, представляющий информацию об иерархии классов
Здравствуйте! Суть задачи: Определить тип данных, представляющий информацию об иерархии классов. Описать следующие функции: 1)...

Разработать тип данных ,представляющий различные требования к объектам недвижимости
Доброго времени суток,помогите с заданием по haskell,пожалуйста,совсем тяжко с ним.Желательно полный рабочий код и,если не трудно,то с...

Разработайте тип данных Product
Реализуйте с помощью функций высшего порядка: В современных web-магазинах часто продают книги, видеокассеты и компакт-диски. База данных...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru