- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
ZipWith[f_, vector1_, vector2_] := Table[ f[ vector1[[i]], vector2[[i]] ], {i, Min[Length[vector1], Length[vector2]] } ]
UnZip[list_] := {Map[First, list], Map[Rest, list]}
Zip[vector1_, vector2_] := ZipWith[{#1, #2} &, vector1, vector2]
ZipWithIndex[vector_] := Zip[vector, Range[1, Length[vector]]]
ZipWithIndexed[f_, vector1_, vector2_] := Map[f @@ # &, Map[Flatten, Zip[vector1, ZipWithIndex[vector2]]]]
Fold2[f_, initialState_, list1_ , list2_ ] := Fold[f @@ Prepend[#2, #1] &, initialState, Zip[list1, list2]]
ZipWith1[f_, {}, any_] := {}
ZipWith1[f_, any_, {}] := {}
ZipWith1[f_, {h1_, t1___}, {h2_, t2___}] := Prepend[ZipWith1[f, {t1}, {t2}], f[h1, h2]]; (*Extremal version, but recursion depth is 256 *)
GroupByIndex[list_, indexesOfGroup_] := (UnZip[#][[1]]) & /@ Gather[ZipWithIndex[list], (And @@ Map[(MemberQ[indexesOfGroup, #]) &, {#1[[2]], #2[[2]]}]) &]
guest 01.02.2013 10:52 # +1
guest 01.02.2013 12:25 # +5
guest 01.02.2013 12:42 # +2
absolut 01.02.2013 12:55 # +6
TarasB 01.02.2013 14:39 # 0
guest 01.02.2013 18:52 # 0
roman-kashitsyn 01.02.2013 21:55 # +2
defecate-plusplus 01.02.2013 22:01 # +2
LispGovno 02.02.2013 14:46 # −1
LispGovno 02.02.2013 15:04 # −4
Регулярно слышу, как хаскелисты себя называют математиками, но на самом деле хаскель - дешевый способ примазаться к области математики. Ведь для этого то всего лишь достаточно быть школьником и знать пару монад и всё - ты уже математик. Но не попадайтесь на эту удочку пасаны. Чтобы бы быть математиком, нужно знать весь курс матанализа, линейной алгебры, теории оптимизации, статистика, системы уравнений с частными производными и много много всего остального. Я считаю, если ты написал пару рекурсивных функций, но не знаешь всех этих разделов математики, то 265!
HaskellGovno 01.02.2013 15:36 # −1
guest 01.02.2013 18:50 # 0
Говногость 01.02.2013 18:56 # +1
guest 01.02.2013 18:53 # 0
Говногость 01.02.2013 18:55 # 0
LispGovno 02.02.2013 14:45 # +1
roman-kashitsyn 01.02.2013 21:56 # +3
LispGovno 01.02.2013 22:07 # −1
http://zvon.org/other/haskell/Outputprelude/unzip_f.html
На тебя сейчас заагрились настоящие математики всего мира, типа меня.
LispGovno 01.02.2013 22:14 # −1
Что-то тут не чисто.
UnZip отстегивает только первый элемент кортежа каждого элемента списка в отдельный список, а остальные элементы кортежа оставляет во втором списке. Хаски так не делает.
ZipWith вообще какаято императивная питушня с изменяющейся переменной i. Интересно, а как ZipWith реализуют в других нормальных языках? Выражают через другие функции высшего порядка?