Описание тега polyvariadic

Поливариадическая функция - это функция с переменным числом аргументов, которая может иметь полиморфные или просто разные типы. Примером поливариадической функции является обычная функция printf, поскольку последние аргументы могут быть любого типа.
1 ответ

Printf-подобная функция

Я пытаюсь написать функцию с произвольным числом аргументов. Эти аргументы могут быть Int или String. И у меня есть проблема с Ints. По какой-то причине (которую я не понимаю) значение 1 становится источником неоднозначности. Как бороться с этой оши…
2 ответа

В Haskell, как я могу взять m-арный предикат и n-арный предикат и построить (m+n)-арный предикат?

Сегодня я играл с использованием классов типов для индуктивного конструирования функций предиката любой арности, принимая в качестве входных данных любую комбинацию любых типов, которая возвращала другие предикаты того же типа, но с применением неко…
03 окт '12 в 20:29
4 ответа

Поливариадная функция Хаскеля с IO

Возможно ли иметь функцию, которая принимает вызов внешней функции, где некоторые из аргументов сторонней функции являются CString, и возвращает функцию, которая принимает вместо нее String? Вот пример того, что я ищу: foreign_func_1 :: (CDouble -&g…
11 авг '11 в 17:46
1 ответ

Поливариадная функция Хаскеля без аргументов

Я пытаюсь создать поливариадную функцию в Haskell, я использовал этот ответ, чтобы создать базовую функцию. Вот код функции: class SumRes r where sumOf :: Integer -> r instance SumRes Integer where sumOf = id instance (Integral a, SumRes r) =>…
5 ответов

Как создать поливариадную функцию haskell?

Мне нужна функция, которая принимает произвольное количество аргументов (все одного типа), что-то делает с ними и впоследствии возвращает результат. Список аргументов неосуществим в моем конкретном случае. Просматривая библиотеки на Haskell, я увиде…
1 ответ

Почему эта поливариадная функция требует аннотации типа?

Вот простая поливариадная функция, смоделированная Text.Printf.printf: {-# LANGUAGE FlexibleInstances #-} sumOf :: SumType r => r sumOf = sum' [] class SumType t where sum' :: [Integer] -> t instance SumType (IO a) where sum' args = print (sum…
01 окт '13 в 16:44
1 ответ

Составление функции с помощью Text.Printf.printf

Я хотел бы определить функцию журнала, как myPutStrLn = putStrLn . (++) "log: " main = do myPutStrLn "hello" что хорошо Теперь я хочу отформатировать предоставленную строку с printf, как это myPutStrLn $ printf "test %d" (23 :: Int) Большой! Так как…
25 авг '12 в 15:04
0 ответов

Неопределенная переменная типа в поливариадном определении карри

Итак, я пытаюсь реализовать поливариадный ZipWithN, как описано здесь. К сожалению, код Paczesiowa, похоже, был скомпилирован с устаревшими версиями как ghc, так и HList, поэтому, пытаясь понять, как он работает, я также портировал его до самых посл…
15 авг '14 в 03:28
2 ответа

Функция Haskell с другим количеством аргументов

Я пытаюсь создать функцию Haskell с классом, чтобы заставить эту функцию работать с различным количеством аргументов. {-# Language FlexibleInstances #-} class Titles a where titleTeX :: String -> a instance Titles String where titleTeX str = titl…
23 ноя '18 в 01:20
1 ответ

Как определить произвольную функцию арности в Haskell, которая включает арность 0?

Мой текущий подход к определению функции произвольной арности приведен ниже: A - это аккумулятор, E - тип входного аргумента, а R - тип результата. combine :: A -> E -> A class X r where foo :: A -> E -> r instance X R where foo :: A -&g…
11 июл '11 в 04:50
2 ответа

Поливариадные функции с полиморфным значением результата

Я пытаюсь реализовать Паскаль-стиль write процедура в Haskell как поливариадная функция. Вот упрощенная версия с мономорфным типом результата (IO в этом случае), который работает нормально: {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamT…
26 мар '18 в 13:15
3 ответа

Haskell "Применить"?

Возможный дубликат: Почему такое определение функции не разрешено в haskell? Я новичок в мире Haskell, перебираюсь из Lisp. Я пытаюсь приспособиться к принципиально другому мировоззрению Хаскелла, и одна из многих вещей, которые я нахожу новым и зах…
26 май '12 в 15:15
1 ответ

Помощь в объявлении переменного количества аргументов

Высокие парни, Я должен определить полиморфный тип данных для дерева, которое может иметь несколько узлов. Каждый узел может иметь любое количество дочерних элементов и vlaue. Этот тип всегда будет иметь хотя бы один узел. Я новичок в Haskell, поэто…
03 дек '10 в 01:57
1 ответ

Поливариадная обобщенная сумма

Этот ответ демонстрирует поливариадную функцию, которая суммирует свои аргументы: class SumRes r where sumOf :: Integer -> r instance SumRes Integer where sumOf = id instance (Integral a, SumRes r) => SumRes (a -> r) where sumOf x = sumOf …
30 апр '13 в 19:19
2 ответа

Haskell, поливариадная функция и вывод типа

При поиске примеров поливариадных функций я нашел этот ресурс: Stackru: как создать поливариадную функцию haskell? и был фрагмент ответа, подобный этому: class SumRes r where sumOf :: Integer -> r instance SumRes Integer where sumOf = id instance…
25 окт '15 в 18:49
1 ответ

Как работает Haskell printf?

Безопасность типов в Haskell не имеет себе равных только в языках с зависимой типизацией. Но с Text.Printf происходит какая-то глубокая магия, которая кажется довольно шаткой. > printf "%d\n" 3 3 > printf "%s %f %d" "foo" 3.3 3 foo 3.3 3 Какая…
2 ответа

Как я могу превратить этот парсер в аппликативный, поливариадный?

Я пытаюсь разобрать даты, такие как 09/10/2015 17:20:52: {-# LANGUAGE FlexibleContexts #-} import Text.Parsec import Text.Parsec.String import Text.Read import Control.Applicative hiding (many, (<|>)) data Day = Day { mo :: Int , dy :: Int , y…
3 ответа

Поливариадные функции в Хаскеле

Прочитав эту статью о написании поливариадных функций на Хаскеле, я попытался написать несколько своих. Сначала я подумал, что попытаюсь обобщить это, чтобы у меня была функция, которая возвращала бы функции с переменным числом, сворачивая аргументы…
28 янв '10 в 16:45
2 ответа

Вариантные общие аргументы в Go

Допустим, я хочу сделать эквивалент JavaScript Array.splice Функция в Go, для ломтиков. У меня есть следующий код: func splice(slice []int, index, amount int, elements ...int) []int { newslice := make([]int, 0) for i := 0; i < index; i++ { newsli…
06 дек '12 в 22:14
2 ответа

haskell - связывает элементы с ассоциативной бинарной операцией

Я промежуточный интриган, но только начинающий на хаскеле. Вот моя проблема: Предположим, у вас есть ассоциативная бинарная операция, говорит (>>=), Есть ли поливариадная функция p такой, что p (>>=) h g f e = h >>= g >>= f &…