関数型プログラミング言語Haskell Part26
■ このスレッドは過去ログ倉庫に格納されています
0105デフォルトの名無しさん
2014/08/30(土) 09:34:01.69ID:eQyqwaUCimport GHC.TypeLits
import Data.Proxy
type family F a :: Nat where F ([] ([] b)) = 1 + F ([] b) ; F a = 1
proxy :: [a] -> Proxy (F [a])
proxy xs = Proxy
depth :: KnownNat (F [a]) => [a] -> Integer
depth = natVal . proxy
main = print $ depth [([]::[()])]
値としての()は消えるが型アノーテーションが必要になり余計に面倒臭くなった
■ このスレッドは過去ログ倉庫に格納されています