haskell-jp / questions #105 at 2024-04-12 18:54:22 +0900

型レベルリストを扱う上ではヘテロジニアスリストを一般化したような
type BenriList :: (k -> Type) -> [k] -> Type
data BenriList f xs where
  BNil :: BenriList f '[]
  BCons :: f x -> BenriList f xs -> BenriList f (x ': xs)
-- f = Identity だと HList と同型

というデータ型を用意すると便利なことがありますが、これは何と呼ぶのが良いでしょうか?ちなみにvinylだと https://hackage.haskell.org/package/vinyl-0.14.3/docs/Data-Vinyl-Core.html#t:Rec です。
Hiromi ISHII / mr_konn
業務で高階な Extensible Record のバックエンドとして似たような機構を内製して使ってますね(定数アクセスが欲しいので配列と unsafeCoerce で押し通っていますが)。素直に Higher-kinded HList (や Higher-kinded record)と呼んで Data.HList.HigherKinded みたいな名前のモジュールで提供しています
Haskellの型レベルリストの元祖をOlegさんのHListとするなら、HListでしょうかね。
https://hackage.haskell.org/package/HList
Hiromi ISHII / mr_konn
ぼくも HList をはじめて見たのは Oleg さんのどれかの論文(多分 HList package から)だったと思いますが、単純な HList の存在は mod_poppo さんが最初に heterogeneous list という名前に言及しているように前提だと思います。
mod_poppo さんの質問は、単純に順に a, b, c の型の値からなる HList '[a, b, c] のような型は通常 heterogeneous list (略して HList) と呼ばれるけれども、これを高階にして f a, f b, f c を要素にもつような HList f '[a, b, c] のような型を、単純な HList と区別する特別な名前はついているのか?というものだと理解しています。
Hiromi ISHII / mr_konn
なので、「高階だから higher-kinded HList でいいんじゃないの」と答えたんですが、私の方で何か見落としてますでしょうか。
いえ、僕が質問を理解してなかっただけです。
すいません。