дыбр

Jun. 11th, 2017 10:09 pm
juan_gandhi: (Default)
[personal profile] juan_gandhi
Так как вчера вечером болела раненая камнем нога, съел таблетку болеутоляющего какого-то и таблетку мелатонина. Продрых до девяти.

Вообще-то хотел подзамазывать стенку, да был занят пазлом - как сделать МГК на path-dependent types и тайпклассах.

Вот мой ответ. Никак. Потому что рекурсия невозможна с path-dependent types. Точка. Завязал (отложил эту бранчь).

Ну и вот, и пошел замазал стенку (сохнет); стал думать, что там дальше. Саммон dimension reduction, I guess. Там куда ни глянь, везде Брегман. Ха, у Брегмана я этой хрени и учился. Он такой, классный. Резкий, быстрый, излагает ясно; одно удовольствие было учиться.

Сосед через дорогу спилил большое дерево, частично сгнившее. Вообще у нас на местности какой-то дурдом, все что-то спиливают.

Вечером сходили погуляли по холмам. Холодрынь; я капюшон аж напялил. Ветер дует. Погода чисто архангельская. Не то чтоб я жаловался, на что жаловаться-то, если чувствуешь себя как в детстве. Бегать с деревянным автоматом, играть в десять палочек, жечь костры...

Сбацал новый пакидж в моей библиотеке - dimreduction. Туда сложу все из https://en.wikipedia.org/wiki/Nonlinear_dimensionality_reduction#Methods_based_on_proximity_matrices - что успею; вообще-то на той неделе надо на спарк переключаться, освежить. Спарк, конечно, параша, но что поделаешь, не со своим же самоваром в эту Тулу.

Все пока. Еще попинаю код.

Ну чо там у москвичей?

Ой, шо в Москве будет

Date: 2017-06-12 05:28 am (UTC)
From: [personal profile] andy_ivanov
На Тверской будет прогулка, Мальцев арестован. Боюсь постреливать будут.

Date: 2017-06-12 07:59 am (UTC)
From: [personal profile] epimorphisms_split
Кто такое МГК? Метод главных компонент? и почему рекурсия невозможна?

Date: 2017-06-12 09:24 pm (UTC)
From: [personal profile] epimorphisms_split
Вроде бы не с именем, а с собственно переменной, это разные вещи. Можно пример кода, который из-за этого не работает?

Date: 2017-06-13 11:55 am (UTC)
From: [personal profile] epimorphisms_split
Чего-то не вполне понятно, зачем в Space живет объект под названием subspace того же типа Space? Я бы сделал что-то такое

class Space[Tag] {
  case class SubspaceTag ()
  case class V(v: Vector[Double])
  val subspace : Space[SubspaceTag] = ...
  def injectIntoSpace(vec: subspace.V): V = ...
}


Если я вообще правильно понимаю, о чем речь.

Date: 2017-06-14 06:36 am (UTC)
From: [personal profile] epimorphisms_split
Это я, похоже, тормознул здесь. Vector вложен в Space, поэтому space.Vector и space.subspace.Vector будут разными типами. Метить их тегами, как я сделал, вроде и не нужно.

Но тогда непонятно, где бага. Что именно компилируется, что не должно? Или наоборот, что не компилируется, что должно? Из приведенного фрагмента непонятно. Нужен MCVE.

Date: 2017-06-15 01:35 pm (UTC)
From: [personal profile] epimorphisms_split
Это я все понимаю, я не понимаю, что именно не работает здесь. То, что я показывал, должно точно работать, там типы разные 146%. Но если тип Vector вложен в тип Space, то по идее должно работать и без тегированных типов. Вот я и спрашиваю, что конкретно не работает. Я не так хорошо знаю Скалу, чтобы самому написать осмысленный пример, а в чужом хотелось бы разобраться.

Date: 2017-06-16 11:06 am (UTC)
From: [personal profile] epimorphisms_split
Я это все понимаю. Я не понимаю, что именно не работает.

Возьмем пример из The Neophyte's Guide to Scala Part 13: Path-dependent Types

class Franchise(name: String) {
  case class Character(name: String)
  def createFanFictionWith(
    lovestruck: Character,
    objectOfDesire: Character): (Character, Character) = (lovestruck, objectOfDesire)
}

val starTrek = new Franchise("Star Trek")
val starWars = new Franchise("Star Wars")

val quark = starTrek.Character("Quark")
val jadzia = starTrek.Character("Jadzia Dax")

val luke = starWars.Character("Luke Skywalker")
val yoda = starWars.Character("Yoda")

и все замечательно работает именно так, как описано.

starTrek.createFanFictionWith(lovestruck = quark, objectOfDesire = jadzia) // ok
starWars.createFanFictionWith(lovestruck = luke, objectOfDesire = yoda)    // ok
starWars.createFanFictionWith(lovestruck = luke, objectOfDesire = jadzia)  // fail

Отдельно стоящая функция с первого раза не заводится

def failTest[F <: Franchise](c1: F#Character, c2: F#Character) {)
failTest(yoda, luke)  // ok
failTest(luke, quark) // ok, wtf?

Надо делать так:

def passTestf: Franchise)(c1: f.Character, c2: f.Character) {)
passTest(starWars)(yoda, luke)  // ok
passTest(starWars)(luke, quark) // fail

Здесь что с рекурсией, что без рекурсии, все происходит именно так, как должно происходить. Можно добавить рекурсию в класс Franchise:

    var spinoffList : Array[Franchise] = new Array [Franchise](0)
    var characterList : Array[Character] = new Array [Character](0)

и наши функции откажутся работать со спиноффами:

  passTest(starWars)(starWars.characterList(0), starWars.spinoffList(0).characterList(0)) //fail


Это все можно скомпилировать. Если есть какой-то пример, который работает не так, как нужно, то я бы очень попросил запостить этот пример целиком без умолчаний и многоточий.
Edited Date: 2017-06-16 11:07 am (UTC)

Date: 2017-06-12 08:27 am (UTC)
kbb: (Default)
From: [personal profile] kbb
Тут всё хорошо. Погода, настроение, короче всё в порядке.

Date: 2017-06-12 09:50 am (UTC)
germes21: (Default)
From: [personal profile] germes21
Забавно. Понял с 50% слов :)))

Date: 2017-06-12 04:29 pm (UTC)
ny_quant: (Default)
From: [personal profile] ny_quant
Надо же, а нам Брегман ничего такого не читал.

Date: 2017-06-12 05:16 pm (UTC)
cema: (Default)
From: [personal profile] cema
У вас было десять палочек? У нас 12.

Date: 2017-06-12 06:01 pm (UTC)
dennisgorelik: (Default)
From: [personal profile] dennisgorelik
> Спарк, конечно, параша

Что не так со Спарком?

Выглядит лаконично:
http://sparkjava.com/

Date: 2017-06-12 09:22 pm (UTC)
From: [personal profile] sassa_nf
Looks typical JS or python style.

Date: 2017-06-12 09:50 pm (UTC)
dennisgorelik: (Default)
From: [personal profile] dennisgorelik
Is it bad or good?

Date: 2017-06-12 10:00 pm (UTC)
From: [personal profile] sassa_nf
It's not revolutionary.

Date: 2017-06-12 10:37 pm (UTC)
dennisgorelik: (Default)
From: [personal profile] dennisgorelik
Is it good or bad that Spark is not revolutionary?

Date: 2017-06-12 11:01 pm (UTC)
From: [personal profile] sassa_nf
If you haven't seen the API like that, it is worth studying.

Date: 2017-06-12 11:21 pm (UTC)
dennisgorelik: (Default)
From: [personal profile] dennisgorelik
Are you implying that if you actually saw API like that - then it does NOT worth studying?

Date: 2017-06-12 11:49 pm (UTC)
dennisgorelik: (Default)
From: [personal profile] dennisgorelik
Do you mean "all things being equal (such as salary) - you'd better use Scala over Spark"?

Date: 2017-06-13 12:18 am (UTC)
dennisgorelik: (Default)
From: [personal profile] dennisgorelik
1) I do not remember recruiters asking this kind of question.

2) What's wrong with that question?

3) "better use something else" is too generic. I try to make it more specific so we can reason about it.

Date: 2017-06-13 04:28 am (UTC)
dennisgorelik: (Default)
From: [personal profile] dennisgorelik
> Recruiters may not be very proficient

I am definitely not very proficient in this area too: I do not program on Java, Scala or Spark.

> you know the difference

I barely know the difference.
That's why I ask about your perspective.

> what's the point in these jokes

What specifically does look like joke to you?

> watch https://www.youtube.com/watch?v=_-GD8VJW8jU

That presentation is about Quark - yet another version of DSL. I guess it is very similar to Spark?

Date: 2017-06-13 05:43 am (UTC)
dennisgorelik: (Default)
From: [personal profile] dennisgorelik
1) Under "Spark engine" do you mean https://en.wikipedia.org/wiki/Apache_Spark AKA "Spark (cluster computing framework)"?

2) Is Spark programming language used in Spark engine?

Date: 2017-06-13 07:57 pm (UTC)
dennisgorelik: (Default)
From: [personal profile] dennisgorelik
Do you mean there is no relation between any of these?
"Spark engine" is different from "Spark (cluster computing framework)" and is different from "Spark programming language"?

Spark Language vs Apache Spark

Date: 2017-06-14 01:13 am (UTC)
dennisgorelik: (Default)
From: [personal profile] dennisgorelik
1) Confusion "Spark Language vs Apache Spark" is even worse than "Java vs Javascript" confusion.
2) How did you think I could learn that there are 2 different "Spark"s in software development?
3) How could I guess which "spark" you meant?
Edited Date: 2017-06-14 01:13 am (UTC)

Date: 2017-06-14 08:01 pm (UTC)
From: [personal profile] yussouf
не тот спарк - вот что не так

Date: 2017-06-15 12:27 am (UTC)
dennisgorelik: (Default)
From: [personal profile] dennisgorelik
Удивительно, что неправильный спарк выглядит лаконично, а правильный спарк - "параша".
Как так получилось?

Date: 2017-06-15 12:28 am (UTC)
From: [personal profile] yussouf
жізь такая

Date: 2017-06-12 09:15 pm (UTC)
From: [personal profile] sassa_nf
Any recursion or recursion that can't be shown to be well-founded?

Profile

juan_gandhi: (Default)
juan_gandhi

June 2017

S M T W T F S
     1 2 3
4 5 67 8 9 10
11 12 13 14 15 16 17
18 19 20 21 222324
252627282930 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 22nd, 2017 02:11 pm
Powered by Dreamwidth Studios