- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
final HCons<String, HCons<Integer, HCons<Boolean, HNil>>> a =
nil().extend(true).extend(3).extend("Foo");
final HCons<Double, HCons<String, HCons<Integer[], HNil>>> b =
nil().extend(new Integer[]{1, 2}).extend("Bar").extend(4.0);
// A lot of type annotation
final HAppend<HNil, HCons<Double, HCons<String, HCons<Integer[], HNil>>>,
HCons<Double, HCons<String, HCons<Integer[], HNil>>>> zero = append();
final HAppend<HCons<Boolean, HNil>, HCons<Double, HCons<String, HCons<Integer[], HNil>>>,
HCons<Boolean, HCons<Double, HCons<String, HCons<Integer[], HNil>>>>> one = append(zero);
final HAppend<HCons<Integer, HCons<Boolean, HNil>>, HCons<Double, HCons<String, HCons<Integer[], HNil>>>,
HCons<Integer, HCons<Boolean, HCons<Double, HCons<String, HCons<Integer[], HNil>>>>>> two = append(one);
final HAppend<HCons<String, HCons<Integer, HCons<Boolean, HNil>>>,
HCons<Double, HCons<String, HCons<Integer[], HNil>>>,
HCons<String, HCons<Integer, HCons<Boolean, HCons<Double, HCons<String, HCons<Integer[], HNil>>>>>>>
three = append(two);
// And all of that lets us append one list to the other.
final HCons<String, HCons<Integer, HCons<Boolean, HCons<Double, HCons<String, HCons<Integer[], HNil>>>>>>
x = three.append(a, b);
// And we can access the components of the concatenated list in a type-safe manner
System.out.println(x.head()); // Foo
System.out.println(x.tail().tail().tail().tail().head()); // Bar
Это вот такая она, функциональщина, упрощающая жизнь.
http://functionaljava.googlecode.com/svn/artifacts/3.0/demo/1.5/HList_append.java
3.14159265 05.10.2012 19:57 # 0
>x.tail().tail().tail().tail().head()
Но это какая-то хацкильная ересь, а не православные car & cdr?
LispGovno 06.10.2012 00:35 # 0
LispGovno 06.10.2012 00:37 # +1
wvxvw 05.10.2012 20:18 # +1
roman-kashitsyn 05.10.2012 21:31 # 0
Lure Of Chaos 06.10.2012 11:44 # 0
roman-kashitsyn 05.10.2012 23:46 # +3
Не скажу, что это говно, но и жизнь не облегчает. Так, забавный финт ушами.
LispGovno 06.10.2012 01:27 # +2
А вот я вижу здесь говно и это не только я.
Не следует применять фичи из чужого языка, если они впихиваются в используемый язык из под шконки.
Не пользуйся ты недотуплами, возми классы.
3.14159265 08.10.2012 13:09 # +2
Объявление типа кортежа больше, чем сам код, который его использует. Говнище.
Отчасти из-за того что автовывод типов очень хуёвый. И нет всяких var или auto, как у конкурентов.
LispGovno выше всё абсолютно правильно сказал. Ну создай ты класс с полями, нет хочу городить громоздкий пиздец.
zim 06.10.2012 08:54 # +2
roman-kashitsyn 06.10.2012 09:18 # +3
Lure Of Chaos 06.10.2012 11:45 # 0
use Scala, π
guest 06.10.2012 12:10 # +1
Lure Of Chaos 06.10.2012 12:12 # 0
roman-kashitsyn 06.10.2012 13:24 # +3
LispGovno 06.10.2012 19:06 # 0
eth0 06.10.2012 20:05 # +5
На взгляд-то он хорош,
Да зелен — ягодки нет зрелой:
Тотчас оскомину набьешь.
LispGovno 06.10.2012 12:20 # 0