Как применить динамическую полиморфную функцию к динамическому значению? - PullRequest
0 голосов
/ 28 февраля 2019

Я хотел бы создать динамическое значение из функции Just, чтобы иметь возможность применить его к toDyn (1 :: Int).

Моя первая трудность заключается в том, что мне нужна функция Typeable.Однако это не работает:

createMaybe :: (Typeable a) => a -> Maybe a
createMaybe = Just

toDyn createMaybe

Это не скомпилируется с No instance for (Typeable a0) arising from a use of ‘toDyn’

Есть ли способ обойти это?

1 Ответ

0 голосов
/ 28 февраля 2019

Как указано в в документах для Data.Dynamic,

A Dynamic может представлять только мономорфное значение;попытка создать значение типа Dynamic из выражения с полиморфной типизацией приведет к ошибке неоднозначности (см. toDyn).

Возможно, вы ищете что-то вроде одного изследующий?

toDynJust :: Typeable a => a -> Dynamic
toDynJust = toDyn . Just

или встроенный fromDynamic :: Typeable a => Dynamic -> Maybe a?

Возможно, если вы раскрыли больше того, что вы пытаетесь сделать, а не как выпытаясь сделать это, можно было бы лучше сказать, если это правильный подход.: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...