haskell existential аналог printf

yroslavasako

Хочется чего-то похожего на
unwords ( map show ["Any type",0,True] )
понятное дело - список не годится, нужно объявлять forall type, как это сделать с наименьшими неудобствами в использовании?

alfadred

Хочется чего-то похожего на
unwords ( map show ["Any type",0,True] )
понятное дело - список не годится, нужно объявлять forall type, как это сделать с наименьшими неудобствами в использовании?
Для гетерогенных списков есть HList. Неудобства есть, но небольшие:
import Data.HList

data ShowType = Show

instance (Show a) => Apply ShowType a String where
apply Show x = show x

testHList = "One" .*. 1 .*. True .*. hNil

test = hMapOut Show testHList

Там еще нужна прагма LANGUAGE с чем-то.
Идея отсюда: http://www.haskell.org/pipermail/haskell-cafe/2006-October/0...

apl13

Насчет аналогов printf сейчас в хакадже вижу только http://hackage.haskell.org/package/xformat, хотя мне казалось, был и тру-принтф.

alfadred

Text.Printf по умолчанию есть в GHC, но вроде по описанию проблемы это не совсем то, что надо.

apl13

Text.Printf по умолчанию есть в GHC
О, а я не мог вспомнить, как он называется.

yroslavasako

ну если быть более точным, мне нужно sprintf

apl13

Text.Printf его и делает, читай GHC Libraries.
Оставить комментарий
Имя или ник:
Комментарий: