Арифметика типов как следствие

Apr 21, 2012 02:57

А мы продолжаем передачу "теоркат для самых маленьких", в которой я рассказываю сам себе постигнутые азы. Сегодня мы увидим, как из нескольких категорных определений внезапно следуют привычные законы арифметики и как частный случай - арифметика типов. Теория категорий - это такая абстракция над теориями: мы берем какие-то теории, видим в них ( Read more... )

теоркат, fp

Leave a comment

Comments 49

gds April 20 2012, 20:17:07 UTC
> в которой я рассказываю сам себе постигнутые азы

ничего подобного про "сам себе", лично я внимательно читаю всё. И хочу ещё. И хочу, чтобы эти "азы" были в интернетах в такой понятной форме, чтобы было куда отправлять людишек.

А лингвистически, про копроизведение -- я давно догадывался! :]

Reply

109 April 20 2012, 20:49:42 UTC
копро-изведение?

Reply

gds April 20 2012, 21:05:24 UTC
ваистену!

Reply


maxim April 20 2012, 20:29:40 UTC
Да будет раскрыт педагогический потенциал CPL!

Reply


109 April 20 2012, 20:42:11 UTC
что-то я торможу. в сишарпе, тип (), он же void - это терминальный или инициальный объект?

Reply

gds April 20 2012, 20:44:23 UTC
если брать "морфизм = функция, объект = значение", то терминальный, его из любого объекта можно получить, применив "fun _ -> ()".

Reply

109 April 20 2012, 20:48:55 UTC
okay, a что в сишарпе инициальный объект?

Reply

gds April 20 2012, 21:11:57 UTC
а вот не знаю про C#. Обычно, если определять категорию как в моём каменте выше, это какой-то ненаселённый тип. Например, в окамле так:

# type uninh = [ ];
type uninh = [ ]
# value f (x : uninh) = match x with [ ];
value f : uninh -> 'a =
#
То есть, из значения ненаселённого типа можно единственным образом (применением ровно одной функции) получить любое значение любого типа. По крайней мере, теоретически никто не мешает. Да вот только не создать значение, имеющее ненаселённый тип, поэтому и в функцию передать особо нечего, поэтому и функция выполняться не будет, поэтому и не вернёт ничего.
Если в C# есть исключения, то можно рассмотреть тип функции, единственной работой которой будет бросить исключение, как инициальный объект, но я не знаю C# вообще, поэтому не могу гарантировать здравость этой идеи.

Reply


voidex April 20 2012, 20:57:44 UTC
Согласен с предыдущими ораторами. Огромное спасибо за статью.

Reply


udpn April 23 2012, 14:38:42 UTC
Лучше бы ты образовал себе месяцок свободного времени да написал учебник по теоркату c примерами на CPL. Он был бы куда популярнее всяких "категорий для программистов".

Reply

thedeemon April 23 2012, 15:14:22 UTC
Мне бы сперва самому чему-то научиться, на это не один месяцок уйдет. А CPL все же недостаточно выразительный, как упоминалось ранее, на нем даже pullback не описать.

Reply

udpn April 23 2012, 17:59:36 UTC
Тогда вопрос по теме.

Если из наличия экспоненциалов следует наличие дистрибутивности сложения относительно умножения, то из чего следует дистрибутивность умножения относительно сложения?

Reply

thedeemon April 23 2012, 18:51:09 UTC
В посте говорится про "дистрибутивность умножения относительно сложения" как раз. А обратное бывает где-то?

Reply


Leave a comment

Up