Я хочу, чтобы скрыть некоторую информацию о типе в GADT, здесь забывая о key
типаGADT и доказательство равенства
data Query where
Query :: Ord key => Map.Map key String -> Query
one :: Ord key => key -> Query
one k =
let m = Map.insert k "hello" Map.empty
in Query m
Как я могу передать на некоторое равенство ограничений использовать его в другом месте, как и в:
other :: Ord key => key -> Query -> Maybe String
other k (Query ad) = Map.lookup k ad
Это своего рода информация о скрытии информации, которую вы не можете сделать, не так ли? – leftaroundabout
совершенно. но не забывая = забывая + имея доказательство равенства типа. и это то, что я хотел бы сделать, чтобы не переносить все эти параметры. в качестве клиента другим никогда не должно быть позволено видеть, какой тип он есть. но я пишу его также как разработчик, поэтому я хочу сохранить доказательство – nicolas
Не могли бы вы привести пример полного сценария, в котором вы собираетесь это сделать? – leftaroundabout