Так що я "новачок в Haskell і я намагаюся визначити список, який становить максимум 4 елемента довго. до сих пір у мене type IntL = [Int,Int,Int,Int]
але я думав, що має бути кращий / правильний спосіб зробити це. Є там?
Відповіді:
6 за відповідь № 1Це проблематично в Haskell, тому що розміри кодування фантомних типів потребують належної підтримки компіляторів (інакше це дуже дратує використання), і тип nats в GHC з'явився дещо недавно.
Це сумно бібліотеки існувати, тільки щоб дати вам ідею.
Крім того, просто використовуйте кортеж.
5 для відповіді № 2
це може виглядати нерозумно, і це, звичайно, не масштабується, але що
data Max4 a
= Empty
| One a
| Two a a
| Three a a a
| Four a a a a
з type IntL = Max4 Int
? Це основне, ви повинні бути в змозі зрозуміти його, і ви можете багато чому навчитися, виконуючи операції над ним.
-1 для відповіді № 3
Основні типи Haskell не настільки потужнікодувати максимальну довжину списку. Для цього ви повинні розраховувати на такі розширення, як GADT і Phantom Types, але це не просто.
Якщо ви дійсно новачок, я раджу вам дізнатися інші основні поняття, як Монади, IO та інші ідіоми.
Цей сайт є дуже хорошим читанням для початкового підходу до Haskell: