Описание тега polyvariadic
Поливариадическая функция - это функция с переменным числом аргументов, которая может иметь полиморфные или просто разные типы. Примером поливариадической функции является обычная функция printf, поскольку последние аргументы могут быть любого типа.
1
ответ
Printf-подобная функция
Я пытаюсь написать функцию с произвольным числом аргументов. Эти аргументы могут быть Int или String. И у меня есть проблема с Ints. По какой-то причине (которую я не понимаю) значение 1 становится источником неоднозначности. Как бороться с этой оши…
04 сен '15 в 13:47
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) =>…
06 сен '17 в 15:05
5
ответов
Как создать поливариадную функцию haskell?
Мне нужна функция, которая принимает произвольное количество аргументов (все одного типа), что-то делает с ними и впоследствии возвращает результат. Список аргументов неосуществим в моем конкретном случае. Просматривая библиотеки на Haskell, я увиде…
12 авг '10 в 11:47
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 Какая…
19 окт '11 в 21:02
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…
12 сен '15 в 03:44
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 &…
17 сен '16 в 15:02