169 похожих чатов

Data Nat = Z | S Nat data Vec (n ::

Nat) a
= n ~ Z => VNil n a
| forall m. n ~ S m => VCons a (Vec m a)

Expected a type, but ‘n’ has kind ‘Nat’
как такое решить?

22 ответов

13 просмотров

Взять Idris?)

/home/slavonchick> sudo
Взять Idris?)

я конечно ждал такого ответа, и идрис или даже gadts в хаскель это решит, но мой вопрос был именно в пределах обычного адт

покажи VNil

запись VNil n a означает конструктор VNil с 2 полями данных. первое данное имеет тип n. но ты же не сможешь подсунуть сюда данное типа n

Zygohistomorphic Prepromorphism🇺🇦
я конечно ждал такого ответа, и идрис или даже gad...

это будет семантически гадт, но в синтаксисте обычного адт

ты же какую-то чушь написал {-# LANGUAGE KindSignatures, DataKinds, GADTs #-} data Nat = Z | S Nat data Vec n a = n ~ Z => VNil | forall m. n ~ S m => VCons a (Vec m a)

кана
ты же какую-то чушь написал {-# LANGUAGE KindSign...

знаю) я уже написал причину, спать надо больше

А в чем преимущества Haskell перед другими языками/технологиями? Например, читаешь такой код, и думаешь - как такое можно понять? И чем это лучше кода на других языка? Просто интересно

Vyacheslav Koval
А в чем преимущества Haskell перед другими языками...

Например, читаешь такой код, и думаешь - как такое можно понять? Потом прочитал любое введение — и понял.

Vyacheslav Koval
А в чем преимущества Haskell перед другими языками...

преимущества в сопровождаемости. даже если вообще не знаешь, как устроена программа, можно править код, а компилятор сообщит, где возникают противоречия

Vyacheslav Koval
А в чем преимущества Haskell перед другими языками...

data Vec len a where Nil :: Vec 0 a Cons :: a -> Vec len a -> Vec (len + 1) a Так лучше?

TOV_MULTIMASSO
data Vec len a where Nil :: Vec 0 a Cons :: a...

чуть лучше) я так понимаю, тут создается вектор Vec с длиной a? или в len подставляется длина, а в a подставляется элемент?

TOV_MULTIMASSO
len - длина, a - тип элемента

а куда кладется сам элемент?

Vyacheslav Koval
чуть лучше) я так понимаю, тут создается вектор Ve...

Но это наивная реализация. Не-наиваной будет вектор с type-indexed обёрткой.

Vyacheslav Koval
а куда кладется сам элемент?

Cons :: a -> Vec len a -> Vec (len + 1) a первый аргумент конструктора - a, это и есть элемент второй аргумент - хвост Cons :: a -> Vec len a -> Vec (len + 1) a а на выходе будет значение типа Cons :: a -> Vec len a -> Vec (len + 1) a

Vyacheslav Koval
а куда кладется сам элемент?

Первый параметр у конструктора Cons

Vyacheslav Koval
а куда кладется сам элемент?

сначала прочийте любое введение в Хаскель, например, http://learnyouahaskell.com, чтобы понимать основы

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта