Jan. 18th, 2013

juan_gandhi: (VP)
look them up if they still are not discovered
juan_gandhi: (VP)
Как мы все знаем, в современном, э, либеральном дискурсе все культуры равны. В нашей фауне. Ещё Леви-Стросс учил.

Ну так и хорошо, ну и чо. Ну тогда и над Диснейлендом смеяться не надо; мыш этот, Микки Маус, он тоже олицетворяет и выражает, и надо его тоже уважать, что ли. И сериалы, вплоть до мексиканских. И нечего к ним свысока относиться, а какую-нибудь деревянную свистульку из Бизерты рассматривать, охая и цокая.

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

Пока для вас женщина не вполне человек, вы и сами, господин хороший, не вполне человек, и никак уж нам не ровня. Мне, по крайней мере.

Презирать их надо, и это, вроде бы, прямо следует из признания равенства всех людей. Если все равны, то те, кто не признаёт равенства, не равны. Чисто из уважения к их взглядам надо их считать не вполне людьми.

Правильно?
juan_gandhi: (VP)
(или "какая польза от вашего хаскеля")
juan_gandhi: (VP)
Тайпкласс, как я сейчас понимаю - это алгебраическая теория. Точнее, представление алгебраической теории в каком-нибудь языке программирования. Инстансы тайпклассов - это модели теории.

(Вся эта хрень расписана в теории моделей, которую надо будет подзубрить, ну или освежить.)

Особенно любопытен маппинг алгебраических теорий на ооп, как это расписано здесь. Т.е., в принципе, маппится. Но самый фокус - в использовании имплиситов.

trait Monoid [A] {
  def binary_op (x :A,y :A): A
  def identity :             A
}

def acc [A] (l :List[A]) (implicit m:Monoid [A]):A = 
    l.foldLeft (m.identity) ((x,y) ⇒ m.binary_op (x,y))

object A {
  implicit object sumMonoid extends Monoid [Int] {
    def binary_op (x :Int,y :Int) = x+y
    def identity = 0
  }

  def sum (l :List[Int]):Int = acc (l)
}

object B {
  implicit object prodMonoid extends Monoid [Int] {
    def binary_op (x :Int,y :Int) = x ∗ y
    def identity = 1
  }
  def product (l :List[Int]):Int = acc (l)
}

val test :(Int,Int,Int) = {
  import A._
  import B._
  val l = List (1,2,3,4,5)
  (sum (l),product (l),acc (l) (prodMonoid))
}

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

August 2025

S M T W T F S
      12
3456789
10 11 12 13141516
171819 20212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 23rd, 2025 10:09 pm
Powered by Dreamwidth Studios