Pertanyaan ini tidak subyektif. Kata kerja yang sangat spesifik digunakan dalam buku yang direferensikan, dan saya ingin memahami apa implikasi dari ungkapan itu, karena saya khawatir saya salah memahami sesuatu.
Dari Learn You a Haskell , paragraf berikut adalah paragraf ketiga dan terakhir yang mengandung "kami berasumsi *".
data Barry t k p = Barry { yabba :: p, dabba :: t k }Dan sekarang kami ingin menjadikannya sebagai contoh
Functor.Functoringin jenis yang baik* -> *tetapiBarrytidak terlihat seperti itu. Jenis apa ituBarry? Yah, kita lihat itu membutuhkan tiga tipe parameter, jadi itu akan menjadisomething -> something -> something -> *. Aman untuk mengatakan bahwa itupadalah jenis beton dan dengan demikian memiliki jenis*. Karenak, kami menganggap*dan dengan ekstensi,tmemiliki semacam* -> *. Sekarang mari kita ganti jenis-jenis itu dengansomethinghuruf yang kita gunakan sebagai placeholder dan kita lihat ada jenisnya(* -> *) -> * -> * -> *.
Mengapa kita mengasumsikan sesuatu sama sekali? Setelah membaca "kita menganggap X (yaitu kita menganggap bahwa X adalah benar)" adalah wajar bagi saya untuk berpikir bahwa kita juga harus mempertimbangkan kasus bahwa X salah. Dalam kasus spesifik dari contoh, tidak tdapat dari jenis (* -> *) -> *dan kjenis (* -> *)? Jika ini masalahnya, apa pun tdan ksebenarnya, t kmasih akan menjadi tipe yang konkret, bukan?
Saya melihat bahwa seluruh garis penalaran kemudian diperiksa terhadap kompiler, tetapi saya tidak berpikir kompilator mengasumsikan . Jika ya, saya ingin tahu apa, jika tidak lagi saya khawatir saya kehilangan makna paragraf.
k :: Luntuk jenis apa sajaL, asalkant :: L -> *. Namun seorang kompiler di sini harus memilih beberapa yang spesifikL, atau menggunakan polkind. Polykind akan menjadi pilihan paling umum, tetapi di sini GHC memilihL = *(Haskell dasar tidak memiliki polykind, mereka harus dinyalakan sebagai ekstensi). Karena ia memilih sesuatu yang agak sewenang-wenang, LYAH menggunakan kata "menganggap" (AFAICT).