
Ilya
25.09.2017
16:10:21
Точнее, на bash скрипт.

Alexey
25.09.2017
17:25:20
Я думаю такие вопросы лучше в projvm

Grigory
25.09.2017
18:21:11

Google

Pavel
25.09.2017
18:45:02
play еще не перевели на сбт 1.0?

Grigory
25.09.2017
19:04:28

folex
25.09.2017
19:45:35
Жалко они в превью статус не пишут

Igor
25.09.2017
19:52:17
подскажите, что тут с типами не так и как исправить
def combinations(occurrences: List[(Char, Int)]): List[List[(Char, Int)]] = {
def createCombination(occ: List[(Char, Int)]): List[List[(Char, Int)]] = {
if (occ == Nil || occ.isEmpty) List(List())
else {
val readyCombs = createCombination(occ.tail)
for {
i <- 1 to occ.head._2
readyComb <- readyCombs
} yield ((occ.head._1, i) :: readyComb) ::: readyCombs
}
}
createCombination(occurrences)
}

Михаил
25.09.2017
20:05:33
1 to occ.head._2
возвращает не список, а Range

Oleksandr
25.09.2017
20:06:37
ну и yield возвращает нечто спископодобное

Igor
25.09.2017
20:07:09
ага, понятно. теперь выдает вот такое
откуда вообще этот Product вылез?

Михаил
25.09.2017
20:08:03

Igor
25.09.2017
20:10:19

Google

Oleksandr
25.09.2017
20:10:25
метод не tailrec, если важно

Igor
25.09.2017
20:28:47
метод не tailrec, если важно
а такое будет эквивалентно?
def combinations(occurrences: List[(Char, Int)]): List[List[(Char, Int)]] = {
def createCombination(occ: List[(Char, Int)], accum: List[List[(Char, Int)]]): List[List[(Char, Int)]] = {
if (occ == Nil || occ.isEmpty) accum
else {
createCombination(occ.tail,
(for {
i <- (1 to occ.head._2).toList
readyComb <- accum
} yield (occ.head._1, i) :: readyComb) ::: accum)
}
}
createCombination(occurrences, List(List()))
}


Oleksandr
25.09.2017
20:35:48
а такое будет эквивалентно?
def combinations(occurrences: List[(Char, Int)]): List[List[(Char, Int)]] = {
def createCombination(occ: List[(Char, Int)], accum: List[List[(Char, Int)]]): List[List[(Char, Int)]] = {
if (occ == Nil || occ.isEmpty) accum
else {
createCombination(occ.tail,
(for {
i <- (1 to occ.head._2).toList
readyComb <- accum
} yield (occ.head._1, i) :: readyComb) ::: accum)
}
}
createCombination(occurrences, List(List()))
}
не у ноута, поставь @tailrec аннотацию, компилятор скажет

Igor
25.09.2017
20:36:27

Oleksandr
25.09.2017
20:39:44
scalacheck, точнее
квикчек в хаскеле

Igor
25.09.2017
20:41:39
Ну базовые тесты вроде прошло :)

Oleksandr
25.09.2017
20:42:15
скалачековские или свои?

Igor
25.09.2017
20:46:57
со скалачеком завтра поразбираюсь уже

Oleksandr
25.09.2017
20:48:47

Daniel
26.09.2017
06:32:05
https://twitter.com/rolandkuhn/status/912253045978931200

Stanislav
26.09.2017
07:04:20
Приветствую всех) в проекте возникла необходимость заюзать ibm websphere mq из scala-приложения. Оказалось, что дрова ibm для mq столь проприетарны, что их нет в публичных репозиториях) используем jms и alpakka. Может кто знает, как малой кровью настроить ibm mq и без боли jms-ть в нее?

Oleg
26.09.2017
07:06:47
в ентерпрайзе малой крови не бывает. Ты должен доказать, что ты достоин столь дорогих продуктов

Stanislav
26.09.2017
07:08:13

Daniel
26.09.2017
07:13:35
вроде ж были
но могу путать, я 2 года назад с этим связывался и примерно тогда же выпилил, потому что у дров текли потоки (при переподключении не всегда убивались старые)

Stanislav
26.09.2017
07:15:43

Daniel
26.09.2017
07:16:49
не, мне повезло, что на другом конце очереди не научились с ней работать быстро и схема интеграции через mq была закопана

Stanislav
26.09.2017
07:17:31

Andry
26.09.2017
09:25:08
Коллеги, а тните носом почему вот енто
val i: Any = 1
i.asInstanceOf[Long]
Выдает ошибку ClassCastException

Google

Aleksey
26.09.2017
09:26:04

Andry
26.09.2017
09:26:58
Лех подробней можно?

Daniel
26.09.2017
09:28:18
scala> 1.isInstanceOf[Long]
res2: Boolean = false

Andry
26.09.2017
09:29:11
Тогда почему вот это работает?
val i = 1
i.asInstanceOf[Long]

Sergey
26.09.2017
09:29:37
потому что это уже Int а не Any

Oleg
26.09.2017
09:30:18
в скале два asInstanceOf, один работает как джавовые касты объектов, второй как касты примитивов

Daniel
26.09.2017
09:30:19
из инта в лонг идет имплиситная конвертация
но из any в лонг нет

Oleg
26.09.2017
09:30:30
не, там не юзаются имплиситы

Daniel
26.09.2017
09:31:02
это не имплисит как фича языка, а не явное приведение согласно спеке

Aleksey
26.09.2017
09:31:10
Тогда почему вот это работает?
val i = 1
i.asInstanceOf[Long]
Any это как Object. А Object это ссылка. То есть в i должна лежать ссылка на объект который соотвествет значению 1. Это назывется boxing. То есть у тебя будет BoxedInt. Когда ты делаешь приведение ты приводишь к BoxedLong. BoxedInt и BoxedLong это разные типы.

Oleg
26.09.2017
09:31:47

Andry
26.09.2017
09:31:47
Гм ну т.е. если ко мне прилетает Any, то хрен его как привести к другому формату кроме как патерматчинга?

Oleksandr
26.09.2017
09:31:48

Aleksey
26.09.2017
09:32:04
case class MyBoxedInt(x: Int)
case class MyBoxedLong(x: Int)
val i = MyBoxedInt(1)
i.asInstanceOf[MyBoxedLong]

Oleg
26.09.2017
09:32:08

Oleksandr
26.09.2017
09:32:44

Aleksey
26.09.2017
09:32:57

Oleg
26.09.2017
09:32:58
кинт спеку, я найду
https://issues.scala-lang.org/browse/SI-4437
вот тебе спека

Google

Oleg
26.09.2017
09:34:24
The test x.asInstanceOf[T] is treated specially if T is a numeric value type (�12.2).
In this case the cast will be translated to an application of a conversion method x.toT (�12.2.1).

Andry
26.09.2017
09:35:28

Oleksandr
26.09.2017
09:35:44
хотя, в принципе, можно вывести, из наличия Boxed*

Oleg
26.09.2017
09:36:02
да никто не знал, это ж на ходу всё придумывают

Aleksey
26.09.2017
09:36:43

Oleksandr
26.09.2017
09:39:43
тут либо матчить, либо (лучше) присылать нормальный тип

Andry
26.09.2017
10:12:45
Вот кстати в исходниках Верблюда есть такой метод
public <T> T getIn(Class<T> type) {
Message in = getIn();
// eager same instance type test to avoid the overhead of invoking the type converter
// if already same type
if (type.isInstance(in)) {
return type.cast(in);
}
// fallback to use type converter
return context.getTypeConverter().convertTo(type, this, in);
}
ну понятное дело что тут они еще конверторы регистрируют

Oleksandr
26.09.2017
10:16:17
а проект на акке ? (у неё есть, говорят, хорошая интеграция с камелом)

Andry
26.09.2017
10:16:56
Не на как раз на Верблюде...

Oleksandr
26.09.2017
10:18:18
ну тогда вариантов кроме патмата по базовым числовым типам и ошибки при _ я не вижу

Andry
26.09.2017
10:20:17
Угу... эх... а как было бы клево...

Alexey
26.09.2017
10:21:19
Ну как бы n: Number => n.longValue()
если оно всё равно забоксено

Denis
26.09.2017
13:48:02
Яндекс? )

Pavel
26.09.2017
13:48:35
не похоже

Denis
26.09.2017
13:48:53
Похоже на красную розу просто, значит обознался

Google

Pavel
26.09.2017
13:49:13
ты из Яндекса?

Denis
26.09.2017
13:49:29
нет )
Но рядом офис

Dmitry
26.09.2017
13:52:16
Дф?

KrivdaTheTriewe
26.09.2017
13:53:28
имхо это трёхгорка какая

Marmalade
26.09.2017
14:00:45
Лол, чатиком промахнулся.

Vladimir
26.09.2017
14:04:51
э, а ответ?

Marmalade
26.09.2017
14:05:21
Ответ?

Vladimir
26.09.2017
14:09:52
что за место на размытом фоне?

Marmalade
26.09.2017
14:14:53
Телеграмм не платит геометки?
>постит
fix
Ну это Гамбург.
Загниваем тут с пауками.