Це питання не є суб'єктивним. Дуже специфічне дієслово використовується в посилальній книзі, і я хотів би зрозуміти, що означає це словосполучення, бо я боюся, що я щось нерозумію.
У розділі Learn You a Haskell наступний параграф - третій і останній, який містить "ми припускаємо *".
data Barry t k p = Barry { yabba :: p, dabba :: t k }А тепер ми хочемо зробити це екземпляром
Functor.Functorхоче типів,* -> *алеBarryне схожий на це. Що таке видBarry? Що ж, ми бачимо, що він має три типи параметрів, так що це будеsomething -> something -> something -> *. Можна з упевненістю сказати, щоpце конкретний тип і, таким чином, має свого роду*. Боkми, припустимо,*і так подовжуючи,tмає свого роду* -> *. Тепер давайте просто замінимо ці види на тіsomething, які ми використовували в якості заповнювачів, і ми бачимо, що вони мають такий тип(* -> *) -> * -> * -> *.
Чому ми взагалі щось припускаємо? Читаючи "ми припускаємо, що X (тобто ми припускаємо, що X є істинним)", мені природно думати, що ми також повинні розглядати випадок, що X є помилковим. У конкретному випадку прикладу, чи не могли tбути добрі (* -> *) -> *та kдобрі (* -> *)? Якби це було так, то все , що tі на kсамому справі були, по- t k, як і раніше буде тип бетону, немає?
Я бачу, що весь рядок міркувань потім перевіряється на компілятор, але я не думаю, що компілятор передбачає . Якщо це так, я хотів би знати, що, якщо цього не стане, я знову боюся, що я пропускаю значення параграфа.
k :: Lбудь-який видL, покиt :: L -> *. Однак компілятор повинен вибрати якийсь конкретнийLабо вдатися до полікінду. Полікінд був би найбільш загальним варіантом, але тут GHC вибираєL = *(базовий Haskell не має полікінди, вони повинні бути включені як розширення). Оскільки він обирає щось, що є досить довільним, LYAH використовує слово "припустити" (AFAICT).