xacid: (Default)
2017-08-06 10:23 pm
Entry tags:

Dotty / Scala 3.0 forAll

Поиграл немного с недавней 0.2.0-RC1 dotty и кроме того что там еще всё сыро (это конечно ожидаемо) обнаружил еще один для меня лично достаточно неприятный факт который можно проиллюстрировать вот этой ссылкой

https://github.com/lampepfl/dotty/issues/2500

Проблема заключается в том что несмотря на то что в дотти уже реализованно частичное применение типов и даже на первый взгляд вроде бы нормальные лямбды на уровне типов (в дотти это одно и то же, кстати Одерский на эту тему написал целый пейпер) , практическое применение этой привлекательной и потенциально полезной возможности остается по большей части не ясным по причине все еще отсутствия в дотти нормальных же полиморфных значений с квантификатором forAll, а при попытке какого либо использования частично примененного типа или его лямбды компилятор начинает либо требовать полного применения типа либо просто жалуется что не найден параметр типа. Выше ссылка на предложение таки добавить логичное forAll чтобы это начало нормально работать однако не заметно чтобы это предложение нашло поддержку со стороны Одерского и судя по всему нет уверенности что таки это както решится (хотя конечно хочется в это верить). А жаль :(

С другой стороны конечно я возможно чего нибудь пока не понимаю в этом вопросе :)
xacid: (Default)
2017-08-04 01:25 am
Entry tags:

Typed Lambda Calculus in Java

public interface Typed {

    interface Fun<A, B> {
        B $(A a);
    }

    interface Pair<A, B, C> extends Fun<Fun<A, Fun<B, C>>, C> {
        static <A, B, C> Pair<A, B, C> $(final A a, final B b) {
            return p -> p.$(a).$(b);
        }

        static <A, B> A first(final Pair<A, B, A> p) {
            return p.$(a -> b -> a);
        }

        static <A, B> B second(final Pair<A, B, B> p) {
            return p.$(a -> b -> b);
        }
    }

Read more... )

    Expr<Integer> expr = fun("a", (Expr<Integer> a) ->
            fun("b", (Expr<Integer> b) -> plus(a, b))
                    .$(1)).$(2);

    // (a -> (b -> a + b) 1) 2 = 3

    static void main(final String[] args) {

        System.out.println(showEval(expr)
                .$(s -> e -> s + " = " + e));
    }
}
xacid: (Default)
2017-07-30 03:54 pm
Entry tags:

Untyped Lambda Calculus in Java


import java.util.Objects;

public interface Untyped {

    interface Lambda {
        Lambda $(Lambda f);
Read more... )

    Lambda I = x -> x;
    Lambda K = x -> y -> x;
    Lambda S = x -> y -> z -> x.$(z).$(y.$(z));

    Lambda pair = p -> a -> b -> p.$(a).$(b);
    Lambda first = p -> p.$(a -> b -> a);
    Lambda second = p -> p.$(a -> b -> b);

    static void main(String[] args) {

        print(S.$(K).$(K).$("x").equals(I.$("x")));

        pair.$("x").$("y").$(first).$(print);

        second.$("x").$("y").$(print);

        $("x").$("y").$(first).$(print);

        $("x").$("y").$(K.$(print));
    }
}

xacid: (Default)
2017-05-26 02:09 am
Entry tags:

Политика

Проект Big-data.

Скрам, код-ревью, код-стайл, гайды, ворк-шопы, все дела.

Первый коммит благополучно прошедший все инстанции - читаем всю базу в память.

Не вру.
xacid: (Default)
2017-05-21 05:41 pm
Entry tags:

Flare: Native Compilation for Heterogeneous Workloads in Apache Spark

https://arxiv.org/pdf/1703.08219.pdf

We present Flare: a new back-end for Spark that brings performance closer to the best SQL engines, without giving up the added expressiveness of Spark. We demonstrate order of magnitude speedups both for relational workloads such as TPC-H, as well as for a range of machine learning kernels that combine relational and iterative functional processing.
Flare achieves these results through (1) compilation to native code, (2) replacing parts of the Spark runtime system, and (3) extending the scope of optimization and code generation to large classes of UDFs.
xacid: (Default)
2017-05-21 05:23 pm
Entry tags:

Redox - OS in Rust

https://www.redox-os.org

Redox is a Unix-like Operating System written in Rust, aiming to bring the innovations of Rust to a modern microkernel and full set of applications.
xacid: (Default)
2017-05-15 12:15 am

Жизнь

Ночное насекомое мотылек летая кругами не задает себе вопросов зачем оно это делает и куда вообще летит - это просто его состояние жизни, лучшее что с ним вообще может случиться
xacid: (Default)
2017-03-15 10:17 am
Entry tags:

Scala Native 0.1

http://www.scala-native.org/en/latest/

самое приятное - работает!
xacid: (Default)
2017-03-14 10:00 pm

Дочка

Кстати, я както не сказал еще - у меня вторая дочка родилась месяц назад :)