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

Условные выражения

20.10.2017, 19:25. Показов 2444. Ответов 13

Студворк — интернет-сервис помощи студентам
Функцию value с числовым списком произвольной длины в качестве аргумента; если первый элемент списка 0, то функция возвращает пару, первым элементом которой является строка “Production”, а вторым число - произведение остальных элементов, если 1 – “Summa” и их сумму, если другое число, то возвращает сообщение “I don’t know” и 0.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.10.2017, 19:25
Ответы с готовыми решениями:

Условные выражения
Вычислить значение функции в заданной точке: /x-1/,x<=-1 ...

Условные выражения
Помогите новичку пожайлуста :scratch: 1) Вычислить начение функции в заданой точке F(x)= (1-x^2, при -1<x<1),...

Арифметиеские выражения и условные операторы
С помощью оператора if определить, находится ли точка на плоскости в замкнутой области. Если находится, то вычислить значение функции f1...

13
Модератор
 Аватар для Curry
5158 / 3484 / 536
Регистрация: 01.06.2013
Сообщений: 7,557
Записей в блоге: 9
20.10.2017, 20:12
Haskell
1
2
3
4
value :: (Num a, Eq a) => [a] -> (String,a) 
value (0:xs@(_:_)) = ("Production", product xs)
value (1:xs@(_:_)) = ("Summa", sum xs)
value _ = ("I don't know", 0)
Если список состоит из менее чем 2-х элементов, то тоже возвращается ("I don't know", 0).
3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38178 / 21113 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
20.10.2017, 20:45
Haskell
1
2
3
4
5
6
7
task xs = case h of
          0 -> ("Production",p)
          1 -> ("Summa", s)
          _ -> ("I dont know",0)
          where h = head xs
                p = (product . tail) xs
                s = (sum . tail) xs
3
20.10.2017, 21:15

Не по теме:

Catstail, мне кажется, Вы, последнее время злоупотребляете where. Например, тут, очевидно, в основном выражении всё помещается, т.к. h,p,s используются по разу. Полагаете что так методически правильно или просто дело вкуса?

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38178 / 21113 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
20.10.2017, 21:37
KolodeznyDiver, не "последнее время", а - увы - всегда! Ваша правда!
1
20.10.2017, 21:44

Не по теме:

Catstail, ну, в этом же нет ничего противозаконного. Я просто так поинтересовался.

0
20.10.2017, 22:37

Не по теме:

KolodeznyDiver, я стараюсь учиться у Вас. За что Вам - спасибо!

0
21.10.2017, 00:15

Не по теме:

Catstail, ох уж эти комплименты ("что Вы, что Вы, только после Вас"). Нашли у кого учиться.

0
21.10.2017, 14:57

Не по теме:

Нет ничего приятнее, чем наблюдать, как гуры обмениваются любезностями! :)

0
0 / 0 / 0
Регистрация: 31.08.2017
Сообщений: 13
25.10.2017, 21:01  [ТС]
как я понял это (Num a, Eq a) обозначают классы сложения и умножения, сравнения?
а эта xs@(_:_) конструкция обозначает декомпозиция не пустого списка?

Добавлено через 15 секунд
как я понял это (Num a, Eq a) обозначают классы сложения и умножения, сравнения?
а эта xs@(_:_) конструкция обозначает декомпозиция хвоста не пустого списка?
0
Модератор
 Аватар для Curry
5158 / 3484 / 536
Регистрация: 01.06.2013
Сообщений: 7,557
Записей в блоге: 9
25.10.2017, 21:10
Alekca, пренебрегая точностью определений да.
https://www.stackage.org/haddo... html#t:Num
https://www.stackage.org/haddo... .html#t:Eq
xs@(_:_) - справа от @ декомпозиция обязательно непустого списка, что бы образцу удовлетворял только непустой список. А слева от @ список до декомпозиции.
1
0 / 0 / 0
Регистрация: 31.08.2017
Сообщений: 13
25.10.2017, 21:10  [ТС]
Можете пожалуйста объяснить как работает эта (Num a, Eq a) конструкция
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38178 / 21113 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
25.10.2017, 21:50
Сигнатура функции
Haskell
1
value :: (Num a, Eq a) => [a] -> (String,a)
читается так: функция value принимает на вход список произвольного типа a, принадлежащему классам типов Num и Eq (самые общие числовые типы, значения которых можно сравнивать на равенство). Возвращает функция кортеж, первым элементом которого является строка, а вторым - значение типа a.
2
Модератор
 Аватар для Curry
5158 / 3484 / 536
Регистрация: 01.06.2013
Сообщений: 7,557
Записей в блоге: 9
25.10.2017, 23:47
Цитата Сообщение от Alekca Посмотреть сообщение
Можете пожалуйста объяснить как работает эта (Num a, Eq a) конструкция
Она означает что а (имя произвольно, лишь бы начиналось с маленькой буквы) - это (при вызове функции value) должен быть какой то тип для которого определены экземпляры классов типов Num и Eq. То есть для него определены функции и операторы (в Haskell это одно и тоже) которые определены (являются членами) этих классов типов, и, по этому,
компилятор разрешит их использовать внутри функции.

На низком уровне (реализации) и Num a, и Eq a становятся указателями на таблицы функций классов типов реализованных для конкретных типов.
То есть, если мы вызовем value для [Int], то в эти невидимые (в исходном коде) аргументы будут подставлены таблицы реализаций этих классов типов для Int.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.10.2017, 23:47
Помогаю со студенческими работами здесь

Условные операторы и логические выражения
Записать логические выражения, используя условные операторы, операции отношений и логические операции алгоритмического языка. График...

Арифметические выражения и условные операторы
С помощью условного оператора определить, находится ли точка на плоскости в замкнутой области. Если находится, то вычислить значение...

Условные переходы. Вычислить значение выражения
Составьте программу, предназначенную для вычисления значения переменной y, где y=(под корнем)x-6 при четных значениях x; y=x2 – 6 при...

Условные выражения включающие вызов функции с типом bool
Есть такой код, который определяет является ли число простым: #include <iostream> #include <math.h> bool simple(int); ...

Напишите программу, которая во входной последовательности символов типа pastext выделяет и классифицирует бинарные условные выражения вида A Ө B
Напишите программу, которая во входной последовательности символов типа pastext выделяет и классифицирует бинарные условные выражения вида ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере 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 На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru