LINUX.ORG.RU

История изменений

Исправление Bioreactor, (текущая версия) :

Процедурного?

Может «императивного»?

Императивное программирование - вычисления есть изменение состояния.

В функциональном программировании нет т.н. «побочных эффектов».

Выходные данные зависят только от входных данных.

Однако, изучение Ъ-функциональных языков требует высокой математической подготовки и высокого «порога вхождения».

Понять без подготовки, что означает

def mc(m:Map[_,Int],a:Int,f:(Int,Int)=>Boolean):Map[_,Int]=m.filter({case(k,e)=>f(e,a)})

кодерочку сложно.

Зато легко использовать:

// Некоторая карта (ассоциативный массив)
val mm = Map("A" -> 100, "B" -> 101, "C" -> 201)

// В типаже (трейте) определим
val ===  = (a: Int, b: Int) => a == b
val >   = (a: Int, b: Int) => a > b
val <   = (a: Int, b: Int) => a < b
val <=  = (a: Int, b: Int) => a <= b
val >=  = (a: Int, b: Int) => a >= b
val !== = (a: Int, b: Int) => a != b

// Пример использования
print (mc(mm, 101, !==))
// Выведет: Map(A -> 100, C -> 201)

Это один из простеньких примерчиков, который обычно на собеседовании задают.

Простая проверка на «вшивость».

(Попробуйте то же самое не только с Int, но и в обобщённом виде.)

Соискатели со знанием Spark, Lagom, Akka и т.п. востребованы.

Весьма востребованы в enterpriZe.

Это профи своего дела, а не доморощенные форумные болтуны типа Jopich1-куна

Про собеседования ...

Про собеседования ... (комментарий)

Исходная версия Bioreactor, :

Процедурного?

Может «императивного»?

Императивное программирование - вычисления есть изменение состояния.

В функциональном программировании нет т.н. «побочных эффектов».

Выходные данные зависят только от входных данных.

Однако, изучение Ъ-функциональных языков требует высокой математической подготовки и высокого «порога вхождения».

Понять без подготовки, что означает

def mc(m:Map[_,Int],a:Int,f:(Int,Int)=>Boolean):Map[_,Int]=m.filter({case(k,e)=>f(e,a)})

кодерочку сложно.

Зато легко использовать:

// Некоторая карта (ассоциативный массив)
val mm = Map("A" -> 100, "B" -> 101, "C" -> 201)

// В типаже (трейте) определим
val ===  = (a: Int, b: Int) => a == b
val >   = (a: Int, b: Int) => a > b
val <   = (a: Int, b: Int) => a < b
val <=  = (a: Int, b: Int) => a <= b
val >=  = (a: Int, b: Int) => a >= b
val !== = (a: Int, b: Int) => a != b

// Пример использования
print (mc(mm, 101, !==))
// Выведет: Map(A -> 100, C -> 201)

Это один из простеньких примерчиков, который обычно на собеседовании задают.

Простая проверка на «вшивость».

Соискатели со знанием Spark, Lagom, Akka и т.п. востребованы.

Весьма востребованы в enterpriZe.

Это профи своего дела, а не доморощенные форумные болтуны типа Jopich1-куна

Про собеседования ...

Про собеседования ... (комментарий)