Я не совсем понимаю все расширения, которые мне нужно было включить, но вы можете определить экземпляр ReadArgs.ArgumentTuple a
(даже если это не совсем семантически правильное имя) следующим образом:
{-# LANGUAGE FlexibleInstances, UndecidableInstances,
OverlappingInstances, ScopedTypeVariables #-}
import ReadArgs
instance (Argument a) => ArgumentTuple a where
parseArgsFrom ss = do
a :& () <- parseArgsFrom ss
return a
usageFor a = usageFor (a :& ())
main = do
(foo :: Int) <- readArgs
print foo
Кроме того, я не совсем уверен, есть ли какие-либо проблемы с этим экземпляром, хотя он работает для примера, который вы представили. Я предполагаю, что есть причина, по которой его нет в библиотеке, но я могу ошибаться.
Обновлять
Попробовав несколько вещей, чтобы убедиться, что они все еще работают (например, следующий пример), я совершенно убежден, что это не вызывает никаких проблем, поэтому, возможно, его (или что-то подобное) существование было просто недосмотром.
main = do
(foo :: Int, bar :: Int) <- readArgs
print foo
print bar
person
Adam Wagner
schedule
06.01.2012
(1) is just 1
--так что, вероятно, проблема в этом. - person Tikhon Jelvis   schedule 06.01.2012LANGUAGE
прагма мне нужна и почему. Я хотел иметь возможность анализировать все типыRead
able, но специально обрабатыватьString
иChar
(чтобы не требовалось цитирование). - person rampion   schedule 06.01.2012