← All posts tagged Scala

yelbota
akka Scala Смотрю сабж, не сказать, чтоб было интуитивно-понятно. Документация довольно толстая, некоторые моменты объяснены плохо, другие наоборот раздуты. Такие вот первые впечатления.
yelbota
Scala Беда. Мой код ни в какую не видит рантайм. На все ругается NoSuchMethodException. Рантайм (scala-library) я впихиваю непосредственно в жарку с собрынным проектом. То есть классы на месте. Кто-нибудь сталкивался? В чем может быть беда?
yelbota
Scala Я уже говорил вам, что Scala на столько крутая, что там можно класс отнаследовать от функционального типа? class MyFunc extends (Integer => String)? Нет, оно конечно понятно, почему так можно, но блин, я раньше нигде такого не видел (или просто не замечал?).
yelbota
Scala Erlang Сразу оговорюсь — я ни разу в жизни эрланг не видил. Я слышал, что потоки в эрланге принципиально не обмениваются ссылками. Каждле сообщение (можно ведь так назвать?) сереализуется, и десереализуется, чем достигается лютая безопасность. Я так понимаю, что этот этот механизм идеально подходит для гогизонтального масштабирования ПО (кластер), что предусмотренно непосредственно на уровне виртуальной машины (так?). Внимание вопрос: Scala умеет работать с Actors на разных машних?
yelbota
Maven Scala vasilisa Василиса пишется на Scala. Сейчас реализована трансляция исходного кода vsl в ситаксическое дерево и перевод этого деров в модель типов, а так же вализация этой модели. Код рассчитан на многопоточную обработку исходников. Для существующего функционала написаны тесты. Проект собирается мавеном.
yelbota
AS3 Scala vasilisa cgml Раз уж пошла такая пьяна, и сегодня вечером изрыгаю текст, что в обычные дни для меня не характерно, напишу ка я про свой новый чудо-проект: Рассово Русскуй Православный Дата Фреймворк Василиса. code.google.com Василиса это развитие идеи CGML, который из простого компактного сереализатора превратился в тул для связи данных из разных источников. К примеру у нас есть некий сравочник, который меняется редко и сложен по структуре, пользовательские данные, которые ссылаются на объекты из этого справочника и клиент-серверный протокол, который может ссылаться и на то и на другое. Сравочник в базе хранить смысла не имеет, передавать его на клиент по средством какого-то особого механизма тоже. Имеет смысл загружать этот справочник в память клиента и сервера, как блоб. Имеет смысл смысл хнанить пользовательские данные в БД. Вопрос: как все это дело связать в одное единое, хм.. пространство имен? Вот тут по и приходит на помощь Василиса. По сути это прострой язык для описания структур данных с поддержкой полиморфизма и множественного наследования. Из этого языка генерируются исходники для разных платформ. Исходники предствляют из себя модели (классы с геттерами и стеерами), структруры (классы с геетерами и конструкторами содеражщими параметры), и трейты (суть интерфейсы). Модели и структуры имеют методы выдачи и приемки данных. В случае с со структорой это функции приемки и выдачи полной информации, а с моделями еще приемка и отдача changeset. Эти методы принимают интерфейсы, реализация которых определят способ передачи или сохранения этих моделей/cтруктур (Worker). Worker'ы связываются в цепочки, что позволяет организовать связанность данных. Можно грабить корованы.
yelbota
Java Scala Одной возможности использовать функциональный подход явно не достаточно. На пример в Java мы легко можем определить функцию map, которая так часто используется для работы в ФП.

// функция map определенная в классе Lambda, где Function<A, B> итерфейс с едиственным методом B apply(A v)
public static <A, B> List<B> map(List<A> l, Function<A, B> f) {
 final List<B> r = new ArrayList<B>();
 for (A e: l)  r.add(f.apply(e));
 return r;
}

Вот пример ее использования
Lambda.map(mylist, new Function<Integer, String>() {
 @Override
 public String apply(Integer v) {
  return v.toString();
 }
});

Вывод: функциональный подход хорош только в тех случаях, когда язык специально приспособлен для этого, на пример, как в Scala: mylist.map( x => x.toString ).
yelbota
Scala Есть ли в стандартной билиотеке Scala объектная обортка для lazy val? Что-то типа

object makeLazy {
def apply(resolver) = new Lazy(resolver)
}

class Lazy [T] (private val resolver: Unit => T) {
lazy val t: T = resolver()
}
yelbota
Scala Есть ли что-то типа Actor, только параметризируемого? Мне как-то некомфортно от того, что в receive приходит Any.
yelbota
Scala Emacs В общем вчера вечером поставил и попользовал Ensime. Ощущения приятные. Во всяком случае, в отличии от идеевского плагина, все работает. Но как как только ребята допилят идеевский плагин, я сразу соскочу туда.
yelbota
Scala Emacs Короче смотрите, какая тема. github.com Я уже кидал наверно ссылку. Круто, поддерживает зависимости из мавен, всякие автокомплиты, подсветка ошибок. Выглядит серьезнее чем то, что есть в идее или эклипсе.
yelbota
ToDo Scala cgml Все ObS/RT будет последней новой фичей в CGML. Далее я сделаю автоматическую сборку с помощью ant-runner (для haxe есть ant task) и выложу билды для Linux/Win/OsX. Далее будут только багфиксы. Никаких новых целей, кортежей и прочего. В место этого я начну новый проект на Scala, название пока не придумал, но можно что нибудь красивое, типа Nimble Data Framework. Эта вещь будет иметь человекочитаемый синтаксис (в ущерб супер-компактности, которая есть в CGML), принцип "один тип, один файл", кортежи и множественное наследование. Будет протокол для отправки частичных изменений в объектах и коллекциях. Планирую битстриминг, что существенно повысит компактность (на которую я дрочу) и усложнит обратную инженерию (что так актуально для игр). Представьте: один бит для булева значения. Круто. Будет IDE Tools с рефакторингом, который будет распространяться не только на исходную спецификацию данных но и на код проекта. В перспективе плагины для IDEA и Eclipse. Выходить это дело будет в виде ант-таска, мавен плагина, CLI утилиты и GUI-обертки для нее. Многопоточность, двухчасовой доклад на Adobe MAX, преферанс и поэтессы. Как же круто. Все, я кончил.
yelbota
Scala cgml Кстати, я всем говорю, что в CGML есть поддержка Scala, но на самом деле ее там нет. Реализация генерилки для Scala уже устарела и способы вызвать ее отсутствуют. Надо востановить, но вот все руки никак не доходят.