<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:ru_deptypes</id>
  <title>Программирование с зависимыми типами</title>
  <subtitle>Программирование с зависимыми типами</subtitle>
  <author>
    <name>Программирование с зависимыми типами</name>
  </author>
  <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom"/>
  <updated>2010-11-17T18:51:19Z</updated>
  <lj:journal userid="14991410" username="ru_deptypes" type="community"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://ru-deptypes.livejournal.com/data/atom" title="Программирование с зависимыми типами"/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:10555</id>
    <author>
      <name>Max Taldykin</name>
    </author>
    <lj:poster user="zelych" userid="6807712"/>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/10555.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=10555"/>
    <title>coq затык</title>
    <published>2010-11-17T18:51:19Z</published>
    <updated>2010-11-17T18:51:19Z</updated>
    <content type="html">Подскажите, пожалуйста.&lt;br /&gt;Вот у меня есть индуктивный предикат:&lt;br /&gt;&lt;pre&gt;
  Inductive last (a: A): list A -&amp;gt; Prop :=
  | last_one: last a (a :: nil)
  | last_many: forall (l: list A) (x: A), last a l -&amp;gt; last a (x :: l).
&lt;/pre&gt;&lt;br /&gt;Очевидно&lt;sup&gt;?&lt;/sup&gt;, что &lt;tt&gt;last a nil&lt;/tt&gt; быть не может. Как тогда доказать что-нибудь типа такого?&lt;br /&gt;&lt;pre&gt;
  Lemma last_nil: forall (a: A), last a nil -&amp;gt; False.
&lt;/pre&gt;&lt;br /&gt;Спасибо.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:10334</id>
    <author>
      <name>beroal</name>
    </author>
    <lj:poster user="beroal" userid="4821330"/>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/10334.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=10334"/>
    <title>кортежи с именованными компонентами как dependent product</title>
    <published>2010-07-20T01:10:26Z</published>
    <updated>2010-07-20T01:10:26Z</updated>
    <content type="html">Рассмотрим типизированные кортежи с именованными компонентами. Множество имён компонентов KS одно для всех кортежей, но кортеж может иметь не все компоненты. Есть функция typeof, которая отображает имя компонента на тип компонента. Множество функций с зависимым типом, у которых зависимость типа результата от значения аргумента задаётся typeof, и есть множество кортежей с компонентами из KS.&lt;br /&gt;&lt;br /&gt;KS0 ⊆ KS ∧ KS1 ⊆ KS. Если истинно KS0 ⊆ KS1, то существует проекция, которая берёт кортеж с именами KS1 и возвращает кортеж с именами KS0. Проекция всего лишь выбрасывает те компоненты кортежа, имена которых ∈ KS1 и ∉ KS0, потому я назвал её проекцией. KS0 ⊆ KS1 можно превратить как каноническую инъекцию inj : KS0 → KS1. Тогда интуитивно это описывается как «инъекция превращается в проекцию». Если построить категорию (обозначим её (P KS)) из ЧУМ подмножеств KS, имею контравариантный функтор D : P KS → Set (и &lt;a href="http://ru.wikipedia.org/wiki/Пучок_(математика)" rel="nofollow"&gt;пучок&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Как доказать свойства D из свойств &lt;a href="http://ncatlab.org/nlab/show/dependent+product" rel="nofollow"&gt;dependent product&lt;/a&gt;? typeof использовать не получится, вместо typeof имеем &lt;a href="http://ncatlab.org/nlab/show/bundle" rel="nofollow"&gt;bundle&lt;/a&gt; для каждого KS0, KS0 ⊆ KS. pullback functor inj* должен отображать bundle для KS1 в bundle для KS0, bundle-ы разумеется связаны. Морфизм KS0→1 (назову его (final KS0)) (1 — это singleton, я работаю в Set) задаёт функтор Π (final KS0), который берёт bundle для KS0 и возвращает собственно множество кортежей с именами KS0. &lt;br /&gt;&lt;br /&gt;Дальше затык. Информация по dependent product у меня очень скудная.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:10135</id>
    <author>
      <name>beroal</name>
    </author>
    <lj:poster user="beroal" userid="4821330"/>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/10135.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=10135"/>
    <title>сайт вопросов и ответов, посвящённый информатике</title>
    <published>2010-07-15T23:38:25Z</published>
    <updated>2010-07-15T23:38:25Z</updated>
    <content type="html">то бишь computer science. &lt;a href="http://area51.stackexchange.com/proposals/8766/theoretical-computer-science?referrer=lgdP8B2oBjuB49QQOgt7xA2" rel="nofollow"&gt;Здесь собирают подписи.&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:9805</id>
    <author>
      <name>Max Taldykin</name>
    </author>
    <lj:poster user="zelych" userid="6807712"/>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/9805.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=9805"/>
    <title>coq-загадка</title>
    <published>2010-07-06T19:30:25Z</published>
    <updated>2010-07-08T18:13:00Z</updated>
    <content type="html">А вот если выразить логические связки в таком виде:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Definition and (p q : Prop) := forall a : Prop, (p -&amp;gt; q -&amp;gt; a) -&amp;gt; a.&lt;br /&gt;Definition or (p q : Prop) := forall a : Prop, (p -&amp;gt; a) -&amp;gt; (q -&amp;gt; a) -&amp;gt; a.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;то для них, наверное, можно доказать какие-нибудь простые свойства:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Lemma or_distr : forall p q r, or p (and q r) -&amp;gt; and (or p q) (or p r).&lt;br /&gt;Lemma or_assoc : forall p q r, or (or p q) r -&amp;gt; or p (or q r).&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Только у меня почему-то, хоть убей, не получается.&lt;br /&gt;&lt;br /&gt;Думал на хаскеле будет привычнее, перевёл &lt;tt&gt;or_assoc&lt;/tt&gt; на него -- тоже не решается:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;{-# LANGUAGE RankNTypes #-}&lt;br /&gt;&lt;br /&gt;type OR p q = (forall a. (p -&amp;gt; a) -&amp;gt; (q -&amp;gt; a) -&amp;gt; a)&lt;br /&gt;&lt;br /&gt;or_assoc :: OR (OR p q) r -&amp;gt; OR p (OR q r)&lt;br /&gt;or_assoc h1 h2 h3 = undefined&lt;br /&gt;&lt;br /&gt;h1 :: OR (OR p q) r  -- ((forall b . (p -&amp;gt; b) -&amp;gt; (q -&amp;gt; b) -&amp;gt; b) -&amp;gt; a) -&amp;gt; (r -&amp;gt; a) -&amp;gt; a&lt;br /&gt;h1 or_pq ra = undefined&lt;br /&gt;&lt;br /&gt;h2 :: p -&amp;gt; a&lt;br /&gt;h2 = undefined&lt;br /&gt;&lt;br /&gt;h3 :: OR q r -&amp;gt; a&lt;br /&gt;h3 or_qr = undefined&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Отгадка для &lt;tt&gt;or_distr&lt;/tt&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;На коке:&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
Lemma or_inl : forall p q : Prop, p -&amp;gt; or p q.
Proof.
  unfold or. 
  intros.
  apply (H0 H).
Qed.

Lemma or_inr : forall p q : Prop, q -&amp;gt; or p q.
Proof.
  unfold or.
  intros.
  apply (H1 H).
Qed.

Lemma and_r : forall p q : Prop, and p q -&amp;gt; q.
Proof.
  intros.
  apply H.
  exact (fun _ q =&amp;gt; q).
Qed.

Lemma or_distr1 : forall p q r, or p (and q r) -&amp;gt; or p q.
Proof.
  intros p q r H.
  intros a lpa lqa.
  apply H.
  assumption.
  intros.
  apply H0.
  exact (fun q r =&amp;gt; lqa q).
Qed.

Lemma or_distr : forall p q r, or p (and q r) -&amp;gt; and (or p q) (or p r).
Proof.
  intros.
  unfold and.
  intros.
  apply H0.
  apply or_distr1 in H.
  assumption.
  apply H.
  apply or_inl.
  intros.
  apply and_r in H1. 
  apply or_inr with p r in H1.
  apply H1.
Qed.
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;На хаскеле:&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
or_distr :: OR p (AND q r) -&amp;gt; AND (OR p q) (OR p r)
or_distr h h0 = h0 (or_distr1 h) (h or_inl (or_inr . and_r))
  where
    or_inl :: p -&amp;gt; OR p q
    or_inl p pa _ = pa p

    or_inr :: q -&amp;gt; OR p q
    or_inr q _ qa = qa q

    and_r :: AND p q -&amp;gt; q
    and_r h = h $ \_ q -&amp;gt; q

    or_distr1 :: OR p (AND q r) -&amp;gt; OR p q
    or_distr1 h lpa lqa = h lpa $ \h1 -&amp;gt; h1 $ \q p -&amp;gt; lqa q
&lt;/pre&gt;&lt;br /&gt;&lt;a name='cutid1-end'&gt;&lt;/a&gt;&lt;br /&gt;Отгадка для &lt;tt&gt;or_assoc&lt;/tt&gt;&lt;a name="cutid2"&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;На хаскеле:&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
or_assoc :: OR (OR p q) r -&amp;gt; OR p (OR q r)
or_assoc h = h caseL caseR
  where  
    caseL :: OR p q -&amp;gt; OR p (OR q r)
    caseL h1 = h1 caseL' caseR'
      where
        caseL' :: p -&amp;gt; OR p (OR q r)
        caseL' p = \l r -&amp;gt; l p

        caseR' :: q -&amp;gt; OR p (OR q r)
        caseR' q = \l1 r1 -&amp;gt; r1 $ \l2 r2 -&amp;gt; l2 q

    caseR :: r -&amp;gt; OR p (OR q r)
    caseR r  = \l1 r1 -&amp;gt; r1 $ \l2 r2 -&amp;gt; r2 r
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Отгадка на коке&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;
Definition or_inl : forall p q : Prop, p -&amp;gt; OR p q :=
  fun p q p0 a (pa : p -&amp;gt; a) _ =&amp;gt; pa p0.

Definition or_inr : forall p q : Prop, q -&amp;gt; OR p q :=
  fun p q q0 a _ (qa : q -&amp;gt; a) =&amp;gt; qa q0.

Lemma or_assoc : forall p q r, or (OR p q) r -&amp;gt; OR p (OR q r).
Proof.
  intros.
  apply H.
  intros.
  apply H0.
  apply or_inl.
  exact (fun q0 =&amp;gt; or_inr p (OR q r) (or_inl q r q0)).
  exact (fun r0 =&amp;gt; or_inr p (OR q r) (or_inr q r r0)).
Qed.
&lt;/pre&gt;&lt;br /&gt;&lt;a name='cutid2-end'&gt;&lt;/a&gt;&lt;br /&gt;&lt;s&gt;Подскажите что-нибудь, пожалуйста.&lt;/s&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:8587</id>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/8587.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=8587"/>
    <title>She.</title>
    <published>2010-04-03T16:09:20Z</published>
    <updated>2010-04-03T16:09:20Z</updated>
    <category term="Хаскель"/>
    <category term="Эпиграмм"/>
    <content type="html">She is &lt;a href="http://personal.cis.strath.ac.uk/~conor/pub/she/" rel="nofollow"&gt;the Strathclyde Haskell Enhancement&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Препроцессор, добавляющий в Хаскель полезные вещи из области зависимых типов. Например, типы, индексированные данными.&lt;br /&gt;&lt;br /&gt;Написан Конором МакБрайдом на его пути к Эпиграмму.&lt;br /&gt;&lt;br /&gt;Узнал об этом через &lt;a href="http://fprog.ru/planet/" rel="nofollow"&gt;PFP Planet&lt;/a&gt;, из записи &lt;span class='ljuser ljuser-name_nealar' lj:user='nealar' style='white-space:nowrap'&gt;&lt;a href='http://nealar.livejournal.com/profile'&gt;&lt;img src='http://l-stat.livejournal.com/img/userinfo.gif?v=92.2' alt='[info]' width='16' height='16' style='vertical-align: bottom; border: 0; padding-right: 1px;'/&gt;&lt;/a&gt;&lt;a href='http://nealar.livejournal.com/'&gt;&lt;b&gt;nealar&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:7563</id>
    <author>
      <name>alexey_rom</name>
    </author>
    <lj:poster user="alexey_rom" userid="14090310"/>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/7563.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=7563"/>
    <title>Окончательная версия Coq 8.2</title>
    <published>2009-02-14T21:31:11Z</published>
    <updated>2009-02-14T21:31:11Z</updated>
    <category term="coq"/>
    <content type="html">Сабж вышел.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:7377</id>
    <author>
      <name>beroal</name>
    </author>
    <lj:poster user="beroal" userid="4821330"/>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/7377.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=7377"/>
    <title>observational type theory</title>
    <published>2009-02-09T17:56:00Z</published>
    <updated>2009-02-09T17:56:00Z</updated>
    <content type="html">Кто-нибудь раскусил, что такое &amp;laquo;observational type theory&amp;raquo; и с чем её едят? (См. пример задачи ниже.) Иль её не едят, ею любуются? ;) P.&amp;nbsp;S. Статьи просматривал, голова всё равно осталась пустой.&lt;br /&gt;&lt;br /&gt;Например, нужно записать высказывание &amp;laquo;у морфизма m:a→b есть прообраз по функтору F&amp;raquo;. Должно получиться ∃a0.F a0 = a → ∃b0.F b0 = b → ∃m0:a0→b0.F m0 = m. Проблема в том, что в равенстве F m0 = m правая и левая части имеют разные типы, а именно: F m0:F a0→F b0 и m:a→b. Чтобы приравнять типы, надо применить равенства F a0 = a и F b0 = b.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:6971</id>
    <author>
      <name>alexey_rom</name>
    </author>
    <lj:poster user="alexey_rom" userid="14090310"/>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/6971.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=6971"/>
    <title>Вышел Release Candidate Coq 8.2</title>
    <published>2009-01-24T22:32:38Z</published>
    <updated>2009-01-24T22:32:38Z</updated>
    <category term="coq"/>
    <content type="html">Изменения:&lt;br /&gt;Классы типов (!)&lt;br /&gt;Более производительные и новые библиотеки для арифметики&lt;br /&gt;Много других изменений&lt;br /&gt;&lt;br /&gt;&lt;a href="http://logical.saclay.inria.fr/coq/distrib/V8.2rc1/CHANGES" rel="nofollow"&gt;Полное описание изменений&lt;/a&gt;&lt;br /&gt;&lt;a href="http://logical.saclay.inria.fr/coq/?q=node/66" rel="nofollow"&gt;Качать&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:6807</id>
    <author>
      <name>Николай Иваныч</name>
    </author>
    <lj:poster user="nivanych" userid="13864607"/>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/6807.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=6807"/>
    <title>Знающие люди, подскажите!</title>
    <published>2008-12-26T08:24:16Z</published>
    <updated>2008-12-27T12:19:12Z</updated>
    <content type="html">Категорная модель higher order типов -- это топос.&lt;br /&gt;Категорная модель зависимых типов -- это Local CCC.&lt;br /&gt;&lt;br /&gt;Естественно, что все-все возможные системы&lt;br /&gt;с зависимыми типами на практике не нужны.&lt;br /&gt;Какие-то из них вполне впихиваются в топосы.&lt;br /&gt;&lt;br /&gt;Так вот, меня взяло сомнение, а все ли "полезные"&lt;br /&gt;системы типов могут упихаться в некоторый топос?...&lt;br /&gt;Есть ли какая очень нужная и полезная система&lt;br /&gt;с зависимыми типами, которая не описывается топосом&lt;br /&gt;(топосом из топосов и функторов между ними)?...&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;"Полезные" системы определю так --&lt;br /&gt;те, которыми можно описать основную функциональность&lt;br /&gt;"обычного" процессора, описать все алгоритмы&lt;br /&gt;в императивном (!) стиле, которые имеют&lt;br /&gt;экспоненциальную сложность, сформулировать теоремы&lt;br /&gt;про ExpTime/ExpSpace-сложность этих алгоритмов и доказательства.&lt;br /&gt;По моему мнению, система, в которой можно&lt;br /&gt;делать такие вещи, уже будет "полезная".&lt;br /&gt;&lt;br /&gt;Почему в императивном, а только для того,&lt;br /&gt;чтобы можно было производить reasoning&lt;br /&gt;по поводу низкоуровневой оптимизации.&lt;br /&gt;Думаю, за глаза хватит уникальных типов.&lt;br /&gt;&lt;a name='cutid1-end'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;P.S.&lt;br /&gt;Надеюсь, это не оффтопик.&lt;br /&gt;Есличо, подскажите, куда лучше запостить?...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:6411</id>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/6411.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=6411"/>
    <title>Это не совсем про зависимые типы данных.</title>
    <published>2008-12-23T22:09:47Z</published>
    <updated>2008-12-23T22:09:47Z</updated>
    <category term="Хаскель"/>
    <category term="hindley-milner"/>
    <category term="комбинаторы"/>
    <content type="html">&lt;a href="http://www.itu.dk/people/mir/typesafepatterns.pdf" rel="nofollow"&gt;Type safe pattern matching combinators&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;При чтении этой статьи у меня всё время было стойкое чувство, что я это видел в районе generic programming with dependent types.&lt;br /&gt;&lt;br /&gt;К тому же там есть пример написания функции наподобие taut на этих комбинаторах.&lt;br /&gt;&lt;br /&gt;Вот taut:&lt;pre&gt;boolPower : {n : Nat} -&amp;gt; Set
boolPower Zero = Bool
boolPower (Succ n) = Bool -&amp;gt; boolPower n

taut : {n : Nat} -&amp;gt; boolPower n -&amp;gt; Bool
taut Zero v = v
taut (Succ n) f = taut n (f true) &amp;&amp; taut n (f false)
&lt;/pre&gt;Иными словами, функция, принимающая на вход функцию с произвольным числом аргументов.&lt;br /&gt;&lt;br /&gt;И используемый в статье Хаскель очень простой, даже, по-моему, Haskell 98.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:6162</id>
    <author>
      <name>Олег</name>
    </author>
    <lj:poster user="zamotivator" userid="7327447"/>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/6162.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=6162"/>
    <title>Теория языков</title>
    <published>2008-12-15T09:21:15Z</published>
    <updated>2008-12-15T09:51:07Z</updated>
    <content type="html">Простите, пожалуйста, за некоторую сумбурность изложения - надеюсь, по моим невнятным полуинтуитивным наброскам уважаемые сообщники смогут понять, что же я ищу, и дадут наводки.&lt;br /&gt;Вопрос тут не только по зависимым типам, но чтобы не терять контекста и целостности (плохой целостности но тем не менее) я сделал копию поста, из &lt;span class='ljuser ljuser-name_ru_lambda' lj:user='ru_lambda' style='white-space:nowrap'&gt;&lt;a href='http://ru-lambda.livejournal.com/profile'&gt;&lt;img src='http://l-stat.livejournal.com/img/community.gif?v=92.2' alt='[info]' width='16' height='16' style='vertical-align: bottom; border: 0; padding-right: 1px;'/&gt;&lt;/a&gt;&lt;a href='http://ru-lambda.livejournal.com/'&gt;&lt;b&gt;ru_lambda&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;На часть вопросов там уже дали ответ.&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;Есть эквивалент тьюринг-счислению (корректно ведь употреблять такую фразу?) - лямбда-исчисление.&lt;br /&gt;В рамках лямбда исчисления существуют правила нормализации термов.&lt;br /&gt;Из лямбда-исчисления порождаются комбинаторы - в моём понимании,  это эквивалентная форма, которая куда ближе к тьюринг-счислению, чем лямбда счисление.&lt;br /&gt;Также есть система типизации поверх лямбда счисления.&lt;br /&gt;Есть доказательства корректности программ (знаю понаслышке (:).&lt;br /&gt;&lt;br /&gt;Меня привлекают эти формализмы своей строгостью и чистотой.&lt;br /&gt;&lt;br /&gt;Дальше идут некоторые мои предположения, касательно их применимости к некоторым моим рабочим задачам, и вопросы.&lt;br /&gt;Поправьте, пожалуйста, как предыдущие выкладки, так и нижеследующие.&lt;br /&gt;&lt;br /&gt;1) Задача вычислимости (гарантия, что программа вычислиться, и вычислиться корректно) в общей постановке неразрешима. С каким именно классом задач, в каких пределах, лямбда исчисления с типизацией поверх позволяет проверить корректность?&lt;br /&gt;&lt;br /&gt;2) Системы типизаций описываются лямбда-кубом. В частности, в рамках куба описываются три вида полиморфизма - parametric (generic), ad-hoc, и ещё один (название забыл).&lt;br /&gt;Лямбда куб можно расширить ещё несколькими измерениями (тип типа, тип типа типа).&lt;br /&gt;А каким образом я могу на одном и том же языке, построенном поверх лямбда исчисления, построить &lt;b&gt;несколько&lt;/b&gt; различных типизаций? Каким образом я могу установить некоторые правила допустимости сочетания этих самых нескольких типов (из разных систем типизаций) для некоторой переменной?&lt;br /&gt;Обратите внимания - речь идёт не о суперклассе в рамках одной системы типизации, а именно о смешивании нескольких типизаций ("паралелльных").&lt;br /&gt;Как простой пример: пусть у нас есть типизация "тип данных" (прошу прощения за тавталогию).&lt;br /&gt;Пусть есть типизация "допустимость состояния NULL" - "Nullable" - переменная может принимать состояние NULL, и "NotNullable" - переменная не может принимать состояние NULL.&lt;br /&gt;Я хочу описать, что переменная типа "PredicateBool" (True,False,Unknow) типизируется только "NotNullable", а "Nullable PredicateBool" - некорректный тип.&lt;br /&gt;Пример немного в вакууме, но в моём рабочем проекте есть более сложные схемы - типизированность набора кортежей по сортированности или группированности, типизация по владению "записями" (генераторы данных), типизация по контейнерному признаку, и так далее.&lt;br /&gt;Грубо говоря - я пытаюсь понять, каким именно образом я могу выстроить иерархию типизаций (дерево, граф) с некоторыми ограничениями типа приведенного выше примера.&lt;br /&gt;&lt;br /&gt;Я хочу навести порядок в голове на тему типизаций, типизаций типизаций, их построений, и описания ограничений (наподобие описанного выше).&lt;br /&gt;&lt;br /&gt;3) Паттерн-матчинг. Каки именно формализмом он описывается?&lt;br /&gt;&lt;br /&gt;4) Монады. Есть ли математический формализм для их описания?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ещё вопросы по иной теме (не теоретической, но инженерной):&lt;br /&gt;&lt;br /&gt;5) Как вышеупомянутые формализмы влияют на вопросы распределения памяти при компиляции некоторого языка, на каких именно моделях можно построить формальный алгоритм управления памятью (static reference counting, scoped counter).&lt;br /&gt;6) Каким образом вышеперечисленное влияет на проблему pointer aliasing?&lt;br /&gt;7) ... на проблему fusion?&lt;br /&gt;&lt;br /&gt;Большое спасибо. Извиняюсь ещё раз за сумбурность и неточность как изложения, так и вопросов.&lt;a name='cutid1-end'&gt;&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:5926</id>
    <author>
      <name>geniepro</name>
    </author>
    <lj:poster user="geniepro" userid="11792726"/>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/5926.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=5926"/>
    <title>ATS -- новый фаворит на Great Language Shootout</title>
    <published>2008-09-22T09:46:55Z</published>
    <updated>2008-09-22T09:46:55Z</updated>
    <content type="html">&lt;a href='http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&amp;lang=all' rel='nofollow'&gt;http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&amp;lang=all&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ats-lang.org/" rel="nofollow"&gt;ATS&lt;/a&gt; -- язык с зависимыми типами и си-подобным синтаксисом. По &lt;a href="http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&amp;amp;lang=ats&amp;amp;lang2=gcc" rel="nofollow"&gt;тестам&lt;/a&gt; на этом Шутауте программы на ATS в среднем на 20% шустрее, чем аналогичные на Си, причём разрыв доходит до 6.2 раза. Лишь а одном тесте программа на Си оказалась на 10% быстрее, чем на ATS.&lt;br /&gt;&lt;br /&gt;Кто что думает об этом интересном проекте? Не это ли возможное будущее языков Си-семейства?&lt;br /&gt;&lt;br /&gt;ЗЫ. Маленькое обсуждение на Реддите: &lt;a href='http://www.reddit.com/r/programming/comments/72hmw/language_shootout_ats_is_the_new_top_gunslinger/' rel='nofollow'&gt;http://www.reddit.com/r/programming/comments/72hmw/language_shootout_ats_is_the_new_top_gunslinger/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Комментарий автора языка:&lt;br /&gt;...&lt;br /&gt;Many people somehow think that ATS is fast because of its support for advanced types such as dependent types and linear types.&lt;br /&gt;&lt;br /&gt;Actually, types are primarily for enhancing safety rather than speed. The efficiency of ATS is largely rooted in its data representation (flat instead of boxed) and its support for tail-call optimization, which is vital for a functional language.&lt;br /&gt;&lt;br /&gt;To put it from a different angle, simply adding advanced types into an existing language can hardly improve its efficiency (but it can of course enhance its safety).&lt;br /&gt;&lt;br /&gt;--Hongwei</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:5885</id>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/5885.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=5885"/>
    <title>Релизация функторной категории на Coq.</title>
    <published>2008-09-05T13:15:41Z</published>
    <updated>2008-09-05T13:15:41Z</updated>
    <category term="теория категорий"/>
    <category term="coq"/>
    <content type="html">&lt;a href='http://beroal.livejournal.com/9878.html'&gt;http://beroal.livejournal.com/9878.html&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:5539</id>
    <author>
      <name>hash_map</name>
    </author>
    <lj:poster user="hash_map" userid="1576261"/>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/5539.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=5539"/>
    <title>warez</title>
    <published>2008-08-29T08:05:44Z</published>
    <updated>2008-08-29T08:05:44Z</updated>
    <content type="html">Наткнулся на варезную эл. книжку по Coq, авторства его создателей.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.avaxhome.ws/ebooks/science_books/math/Interactiv_Theorem.html" rel="nofollow"&gt;link&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Interactive-Theorem-Proving-Program-Development/dp/3540208542/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1219997033&amp;amp;sr=1-1" rel="nofollow"&gt;Страничка на Амазоне&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:5340</id>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/5340.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=5340"/>
    <title>Страничка Альфа Норелла, создателя Агды.</title>
    <published>2008-08-01T15:11:29Z</published>
    <updated>2008-08-01T15:11:29Z</updated>
    <category term="agda"/>
    <category term="cистемы программирования"/>
    <content type="html">&lt;a href='http://www.cs.chalmers.se/~ulfn/' rel='nofollow'&gt;http://www.cs.chalmers.se/~ulfn/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Дизайн Агды описан вот тут: &lt;a href="http://www.cs.chalmers.se/~ulfn/papers/thesis.pdf" rel="nofollow"&gt;Ulf Norell. Towards a practical programming language based on dependent type theory. PhD Thesis.&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:4951</id>
    <author>
      <name>beroal</name>
    </author>
    <lj:poster user="beroal" userid="4821330"/>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/4951.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=4951"/>
    <title>Epigram: в tutorial одно, на экране другое</title>
    <published>2008-07-10T14:37:04Z</published>
    <updated>2008-07-10T14:37:04Z</updated>
    <content type="html">Объясните, пожалуйста, как набить в Epigram простейший пример из tutorial-а? Не могу связать то, что я вижу в tutorial, с тем, что я вижу на экране. Tutorial написан так, будто я должен знать синтаксические подробности, но я не знаю и не знаю, откуда эту информацию можно получить, кроме tutorial-а. Правда, emacs я вижу второй раз в жизни&amp;hellip; :-) Но с другой стороны, в интернете я читал, что вся функциональность редактирования принадлежит Epigram, возможности xemacs не используются. &lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Также написано в tutorial, что синтаксис Epigram похож на натуральный=естественный вывод. Какой конкретно: диаграммы Фитча &lt;a href="http://www.danielclemente.com/logica/dn.en.html" rel="nofollow"&gt;(высказывания записываются в столбик)&lt;/a&gt; или генценовский (дерево с корнем внизу, &lt;a href="http://en.wikipedia.org/wiki/Natural_deduction#Hypothetical_derivations" rel="nofollow"&gt;например как здесь&lt;/a&gt;)?&lt;a name='cutid1-end'&gt;&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:4807</id>
    <author>
      <name>hash_map</name>
    </author>
    <lj:poster user="hash_map" userid="1576261"/>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/4807.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=4807"/>
    <title>Newbie question</title>
    <published>2008-05-31T17:45:01Z</published>
    <updated>2008-05-31T17:47:52Z</updated>
    <content type="html">Мне всегда казалось, что в системах с ЗТД обязательно должны присутствовать проверки типов во время исполнения (как пример, та же зависимо-типизированная printf должна в рантайме выдавать ошибку, если мы ей дали на вход мусор).&lt;br /&gt;Однако в статье про Cayenne[1, глава 6.1] Августссон пишет, что это не так, к чему приводит доказательство, которое мне сейчас не постичь.&lt;br /&gt;&lt;br /&gt;Может мне кто-нибудь объяснить на пальцах, как будет работать зависимо-типизированная printf без проверок во время исполнения?&lt;br /&gt;&lt;br /&gt;[1] &lt;a href='http://citeseer.ist.psu.edu/augustsson98cayenne.html' rel='nofollow'&gt;http://citeseer.ist.psu.edu/augustsson98cayenne.html&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:4497</id>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/4497.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=4497"/>
    <title>Перегрузка в заваисимых типах данных.</title>
    <published>2008-05-23T00:43:16Z</published>
    <updated>2008-05-23T00:43:16Z</updated>
    <category term="типы классов"/>
    <category term="coq"/>
    <content type="html">&lt;a href="http://sneezy.cs.nott.ac.uk/~npo/classes.pdf" rel="nofollow"&gt;First-Class Type Classes&lt;/a&gt;, draft, Nicolas Oury, Matthieu Sozeau.&lt;blockquote&gt;Type Classes have met a large success in Haskell and Isabelle, as a solution for sharing notations by overloading and for specifying with abstract structures by quantification on contexts. However, both systems are limited by second-class implementations of these constructs, and these limitations are only overcomed by ad-hoc extensions to the respective systems. We propose an embedding of type classes into a dependent type theory that is first-class and supports some of the most popular extensions right away. The implementation is correspondingly cheap, general and very well integrated inside the system, as we have experimented in Coq. We show how it can be used to help structured programming and proving by way of examples.&lt;/blockquote&gt;&lt;a href="http://sneezy.cs.nott.ac.uk/~npo/index.html" rel="nofollow"&gt;Страничка автора статьи&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Как-то задавался вопросом, &lt;span class='ljuser ljuser-name_nealar' lj:user='nealar' style='white-space:nowrap'&gt;&lt;a href='http://nealar.livejournal.com/profile'&gt;&lt;img src='http://l-stat.livejournal.com/img/userinfo.gif?v=92.2' alt='[info]' width='16' height='16' style='vertical-align: bottom; border: 0; padding-right: 1px;'/&gt;&lt;/a&gt;&lt;a href='http://nealar.livejournal.com/'&gt;&lt;b&gt;nealar&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; &lt;a href="http://community.livejournal.com/ru_deptypes/2734.html?thread=16302#t16302"&gt;ответил&lt;/a&gt;. Как я понимаю, идея в статье совпадает с его вариантом реализации.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:4237</id>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/4237.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=4237"/>
    <title>Статья про различные варианты зависимых типов.</title>
    <published>2008-05-16T21:21:55Z</published>
    <updated>2008-05-16T21:21:55Z</updated>
    <category term="full dependent types"/>
    <category term="type families"/>
    <category term="idris"/>
    <category term="gadt"/>
    <content type="html">Разбираются: GADT, type families и полностью зависимые типы (full dependent types) на примере языка &lt;a href="http://www.dcs.st-and.ac.uk/~eb/Idris/" rel="nofollow"&gt;Idris&lt;/a&gt;. Это только докуда я дочитал.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dcs.st-and.ac.uk/~eb/drafts/tfp08.pdf" rel="nofollow"&gt;Lightweight invariants with full dependent types&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:3843</id>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/3843.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=3843"/>
    <title>Выложил презентацию про зависимые типы данных.</title>
    <published>2008-05-09T21:14:34Z</published>
    <updated>2008-05-09T21:39:44Z</updated>
    <category term="mskhug"/>
    <category term="доклад"/>
    <content type="html">&lt;a href='http://mskhug.ru/wiki/deptypes' rel='nofollow'&gt;http://mskhug.ru/wiki/deptypes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Чего-то особого ждать не советую. Я постарался сделать ее достаточно легкой.&lt;br /&gt;&lt;br /&gt;Если возникнут вопросы, я постараюсь обьяснить в меру своих знаний.&lt;br /&gt;&lt;br /&gt;Да, название navdoavlitddt означает - да вы уж сами догадались, поди! - Not A Very Deep Or A Very Long Introduction To Dependent Data Types. ;)&lt;br /&gt;&lt;br /&gt;Спасибо &lt;span class='ljuser ljuser-name_zelych' lj:user='zelych' style='white-space:nowrap'&gt;&lt;a href='http://zelych.livejournal.com/profile'&gt;&lt;img src='http://l-stat.livejournal.com/img/userinfo.gif?v=92.2' alt='[info]' width='16' height='16' style='vertical-align: bottom; border: 0; padding-right: 1px;'/&gt;&lt;/a&gt;&lt;a href='http://zelych.livejournal.com/'&gt;&lt;b&gt;zelych&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; за хостинг и за то, что подтолкнул ее сделать. ;)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:3486</id>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/3486.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=3486"/>
    <title>Чем хотел поделиться.</title>
    <published>2008-04-24T16:19:36Z</published>
    <updated>2008-04-24T16:19:36Z</updated>
    <category term="компиляторы"/>
    <category term="coq"/>
    <category term="верификация программ"/>
    <category term="доказательство корректности"/>
    <content type="html">&lt;a href="http://compcert.inria.fr/download.html" rel="nofollow"&gt;CompCert&lt;/a&gt;, a verified compiler from subset of C to PowerPC.&lt;br /&gt;&lt;br /&gt;Ссылка идет прямо на исходники.&lt;br /&gt;&lt;br /&gt;Требует Coq.&lt;br /&gt;&lt;br /&gt;(утянул по ссылкам &lt;a href="http://lambda-the-ultimate.org/node/2783" rel="nofollow"&gt;отсюда&lt;/a&gt;, там примечателен дайджест большой войны в защиту верификации программ;)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:3134</id>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/3134.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=3134"/>
    <title>The Types Project</title>
    <published>2008-04-21T15:42:40Z</published>
    <updated>2008-04-21T15:42:40Z</updated>
    <category term="арифметика"/>
    <category term="литература"/>
    <category term="плавающая запятая"/>
    <category term="проект"/>
    <content type="html">Он здесь: &lt;a href='http://www.cs.chalmers.se/Cs/Research/Logic/Types/index.html' rel='nofollow'&gt;http://www.cs.chalmers.se/Cs/Research/Logic/Types/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;А вот, что я там обнаружил: &lt;a href='http://www.cs.chalmers.se/Cs/Research/Logic/TypesSS05/Extra/thery.pdf' rel='nofollow'&gt;http://www.cs.chalmers.se/Cs/Research/Logic/TypesSS05/Extra/thery.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Формализация арифметики с плавающей запятой.&lt;br /&gt;&lt;br /&gt;(когда я все это прочитаю?..)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:2948</id>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/2948.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=2948"/>
    <title>Вопрос по выводу в конструктивной логике.</title>
    <published>2008-04-08T21:42:30Z</published>
    <updated>2008-04-08T21:42:30Z</updated>
    <category term="ttfp"/>
    <category term="конструктивная логика"/>
    <content type="html">(источник вопроса: &lt;a href="http://www.cs.kent.ac.uk/people/staff/sjt/TTFP/ttfp.pdf" rel="nofollow"&gt;TTFP&lt;/a&gt;, страница 87(100))&lt;br /&gt;&lt;br /&gt;В конструктивной логике отрицание &amp;not;A заменено выводом A&amp;rArr;&amp;perp;. Двойное отрицание, получается, (A&amp;rArr;&amp;perp;)&amp;rArr;&amp;perp;. Само &amp;perp; может быть использовано в доказательствах при помощи правила&lt;pre&gt;
     &amp;perp;
-----------
abort&lt;sub&gt;A&lt;/sub&gt; : A&lt;/pre&gt;То есть, получение &amp;perp; в доказательстве приводит к его останову (abort&lt;sub&gt;A&lt;/sub&gt;), однако этот останов имеет тип A и может быть использован как значение типа A в доказательствах.&lt;br /&gt;&lt;br /&gt;Теперь начинаются, собственно, вопросы.&lt;br /&gt;&lt;br /&gt;Правильно ли я понимаю, что значение abort&lt;sub&gt;A&lt;/sub&gt; может быть использовано дальше в доказательстве?&lt;br /&gt;&lt;br /&gt;И как доказать A&amp;rArr;&amp;not;&amp;not;A? Вообще, имеет ли смысл такое доказательство? Если раскрыть отрицания, то получается, что A&amp;rArr;((A&amp;rArr;&amp;perp;)&amp;rArr;&amp;perp;). Скобки, как я понимаю, можно раскрыть, тогда получится A&amp;rArr;A&amp;rArr;&amp;perp;&amp;rArr;&amp;perp; &amp;equiv; A&amp;rArr;&amp;perp;&amp;rArr;&amp;perp;. Но дальше получается совсем странное - что делать с &amp;perp;&amp;rArr;&amp;perp;? Непонятно.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:2734</id>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/2734.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=2734"/>
    <title>Обобщенное программирование в зависимых типах.</title>
    <published>2008-03-22T17:39:31Z</published>
    <updated>2008-03-22T17:39:31Z</updated>
    <category term="зависимые типы"/>
    <category term="обобщенное программирование"/>
    <content type="html">&lt;a href="http://strictlypositive.org/generic/" rel="nofollow"&gt;Generic Programming Within Dependently Typed Programming&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Цитата: &lt;i&gt;In this paper we show that &lt;b&gt;dependently typed programming&lt;/b&gt; can already express generic operations - we need only to implement a library.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;"Как это им удается?" (C) South Park - Bigger, Longer and Uncut.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:ru_deptypes:2553</id>
    <link rel="alternate" type="text/html" href="http://ru-deptypes.livejournal.com/2553.html"/>
    <link rel="self" type="text/xml" href="http://ru-deptypes.livejournal.com/data/atom/?itemid=2553"/>
    <title>Idris, a fully dependent typed language.</title>
    <published>2008-03-10T16:31:14Z</published>
    <updated>2008-03-10T16:31:14Z</updated>
    <category term="языки программирования"/>
    <content type="html">&lt;a href='http://www.cs.st-and.ac.uk/~eb/Idris/' rel='nofollow'&gt;http://www.cs.st-and.ac.uk/~eb/Idris/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://edwinb.wordpress.com/2008/03/09/idris-a-language-with-dependent-types/" rel="nofollow"&gt;Постинг&lt;/a&gt; его автора, &lt;a href="http://www.cs.st-and.ac.uk/~eb/" rel="nofollow"&gt;Эдвина Брэди&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Язык даже умеет Hello, world! ;)</content>
  </entry>
</feed>

