![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Паттерн-матчинг в Haskell всё наворачивают.
А вот почему не сделают как в Прологе - если два идентификатора в паттерне совпадают, значит по этим позициям должны быть равные значения.
аналогично более сложному
И ещё! Не нравится мне, что при использовании многострочном объявлении функции приходится писать её название несколько раз.
А как было бы чудесно (объединяя оба примера)
Подчерк как повторение имени функции здесь условность, можно придумать что нибудь другое.
Это неважно.
А вот почему не сделают как в Прологе - если два идентификатора в паттерне совпадают, значит по этим позициям должны быть равные значения.
isDup (x:x:_) = True
isDup _ = False
аналогично более сложному
isDup (x:y:_) | x == y = True
isDup _ = False
И ещё! Не нравится мне, что при использовании многострочном объявлении функции приходится писать её название несколько раз.
А как было бы чудесно (объединяя оба примера)
isDup (x:x:_) = True
_ _ = False
Подчерк как повторение имени функции здесь условность, можно придумать что нибудь другое.
Это неважно.
no subject
Date: 2007-01-24 04:36 pm (UTC)Иногда, говорят, мешает. Вот конкретно с числами это мешает переделать систему типов классов в более математическом стиле.
no subject
Date: 2007-01-24 04:49 pm (UTC)Кстати, Eq там не обязателен. Пусть это будет аналогично сравнению с образцом, который не деривит Eq.
no subject
Date: 2007-01-24 05:01 pm (UTC)Вот. Соответственно, Num нужем всюду, где есть числа, и Prelude требует серъёзной переделки для избавления от этого. Возможно, вместе с ghc.
Попробуй представсь себе полиморфный код, но без Eq.
f (x:x:_) = x
f [1,2]
f "Hello"
f [Just $ Data.Set.Set.fromList "Hello",Just $ Data.Set.Set.fromList "Hello"] ;)
Получится структурное сравнение, то же, что и получается при deriving Eq. ;)
no subject
Date: 2007-01-24 05:09 pm (UTC)no subject
Date: 2007-01-24 05:32 pm (UTC)Lone Starr: Listen! We're not just doing this for money... We're doing it for a SHIT LOAD of money!
Barf: Oh, you're right. And when you're right, you're right. And you - you're always right.
http://imdb.com/rg/title-tease/quotes/title/tt0094012/quotes
;)
no subject
Date: 2007-01-24 08:12 pm (UTC)no subject
Date: 2007-01-24 08:34 pm (UTC)На Lucky Starr не тяну, хотя и очень охота. ;)
no subject
Date: 2007-01-24 11:38 pm (UTC)no subject
Date: 2007-01-25 10:41 am (UTC)no subject
Date: 2007-01-25 10:51 am (UTC)