Я пытаюсь создать простой интерпретатор схемы на Haskell. В рамках этого я реализую некоторые примитивные операторы, такие как число ?, строка? и т.д.
У меня есть такой код:
isNumber :: [LispVal] -> LispVal
isNumber ([Number n]) = Bool True
isNumber _ = Bool False
isString :: [LispVal] -> LispVal
isString ([String n]) = Bool True
isString _ = Bool False
И я бы хотел что-то вроде
isType :: ?? -> [LispVal] -> LispVal
isType (typeName [typeName n]) = Bool True
isType _ = Bool False
Другими словами, я хотел бы создать эквивалент isNumber, сказав «isType Number». Возможно ли это как-нибудь? Я изо всех сил пытаюсь найти что-то подобное в Google, возможно, потому, что не знаю, как назвать ситуацию.