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

Как работают именованные образцы?

04.03.2021, 21:18. Показов 2363. Ответов 10

Студворк — интернет-сервис помощи студентам
Haskell
1
highAndLow @(x:xs:y) = [x] ++ " "++ [y]
Почему нельзя написать так? И как написать так?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.03.2021, 21:18
Ответы с готовыми решениями:

Именованные и не именованные константы
Доброй ночи. Скажите пожалуйста чем отличаются именованные и неименованные константы. Я прогуглил все вдоль и поперек, но нашел лишь...

Как объединить именованные диапазоны в один?
Здравствуйте! Я не программист, но влюбился в эти возможности. К сожалению, не знаю в этом деле основ, и в самых простых ситуациях...

Что современная Россия как СССР продолжает далее технико-технологически упрощать иностранные образцы техники?
Что современная Россия как когда-то СССР продолжает далее технико-технологически упрощать иностранные образцы техники, полученные ей на...

10
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38168 / 21103 / 4307
Регистрация: 12.02.2012
Сообщений: 34,692
Записей в блоге: 14
04.03.2021, 21:36
Egor2287678888, хотите разбить список на первый элемент, середину и последний?
0
26 / 26 / 1
Регистрация: 10.09.2018
Сообщений: 241
04.03.2021, 21:41  [ТС]
Да.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38168 / 21103 / 4307
Регистрация: 12.02.2012
Сообщений: 34,692
Записей в блоге: 14
04.03.2021, 21:45
Цитата Сообщение от Egor2287678888 Посмотреть сообщение
Почему нельзя написать так?
- тип результата должен быть строкой, тогда надо писать так:

Haskell
1
f (x:xs:y) = [x] ++ " "++ y
Поскольку такой шаблон разбивает строку так:
x - первый символ;
xs - второй;
y - остаток, начиная с третьего.

Собака не здесь не нужна. Но если написать:

Haskell
1
f xxx@(x:xs:y) = [x] ++ " "++ y
то в коде будет доступна вся исходная строка (xxx)
3
Модератор
 Аватар для Curry
5155 / 3475 / 536
Регистрация: 01.06.2013
Сообщений: 7,535
Записей в блоге: 9
04.03.2021, 21:48
Лучший ответ Сообщение было отмечено Egor2287678888 как решение

Решение

Цитата Сообщение от Egor2287678888 Посмотреть сообщение
Почему нельзя написать так?
Потому что в образцах можно выделить только сколько то элементов из головы списка. А выделить от хвоста нельзя.
А это, в свою очередь, потому что доступ к элементам вначале списка быстрее.
То что вы хотите можно сделать так
Haskell
1
2
3
highAndLow :: String -> String
highAndLow (x:xs) = x:' ': [last xs]
highAndLow _ = ""
3
26 / 26 / 1
Регистрация: 10.09.2018
Сообщений: 241
04.03.2021, 22:06  [ТС]
Ваше выражение почему-то не возвращает отрицательные числа(
0
Модератор
 Аватар для Curry
5155 / 3475 / 536
Регистрация: 01.06.2013
Сообщений: 7,535
Записей в блоге: 9
04.03.2021, 22:13
Цитата Сообщение от Egor2287678888 Посмотреть сообщение
Ваше выражение почему-то не возвращает отрицательные числа(
В моём примере никаких чисел нет, только строки.

Сформулируйте вопрос.
0
26 / 26 / 1
Регистрация: 10.09.2018
Сообщений: 241
04.03.2021, 22:14  [ТС]
Ну строка с отрицательными числами, возвращается как положительное
0
Модератор
 Аватар для Curry
5155 / 3475 / 536
Регистрация: 01.06.2013
Сообщений: 7,535
Записей в блоге: 9
04.03.2021, 22:22
Egor2287678888Приведите пример программы.
0
26 / 26 / 1
Регистрация: 10.09.2018
Сообщений: 241
04.03.2021, 22:25  [ТС]
Строка: "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
Результат: "4 6"
0
Модератор
 Аватар для Curry
5155 / 3475 / 536
Регистрация: 01.06.2013
Сообщений: 7,535
Записей в блоге: 9
05.03.2021, 00:07
Возвращается первый и последний символ строки с пробелом между ними. Чисел тут нет.
Вы выше написали
Цитата Сообщение от Egor2287678888 Посмотреть сообщение
[x] ++ " "++ [y]
А так можно только если x и y символы.

Добавлено через 1 час 33 минуты
А если не символы, и вы их хотите превратить в строки разделённые пробелом, то
Haskell
1
2
3
highAndLow :: Show a => [a] -> String
highAndLow (x:xs) = show x ++ " " ++ show (last xs)
highAndLow _ = ""
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.03.2021, 00:07
Помогаю со студенческими работами здесь

Образцы БД
Ребят помогите с БД в ado.net VB! скиньте образцы бд, а то тяжко разбираться! ну или что-нить готовенькое только. и Есть какие нить...

Образцы функций
Напишите мне задачу по теми функции с++ не очень сложною (можно несколько) Жду

Не работают задние USB а передние работают как по маслу в чем дело.
Здравствуйте.Включил комп и заметил что не работает принтер подумал что отключил от питания а оказалось что не работают задние usb,передние...

Образцы американских IT резюме
Если кому интересно, то есть в сети коллекция резюме по 25 профессиям (http://www.portnov.com/keyboard/resume_main.html). По каждой...

Записать сведения в файле g, используя образцы
2) Дан символьный файл f, содержащий сведения о сотрудниках учреждения, записанные по следующему образцу: фамилия__имя__отчество,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru