1. ActionScript / Говнокод #10215

    −159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    appendExclamation("one")("two")("three")("four")("five");
    function appendExclamation(str:String):Function{
      trace(str + "! ");
      return appendExclamation;
    }
    /* outputs:
    one!
    two!
    three!
    four!
    five!
    */

    как-то натолкнулся на одном из блогов

    Запостил: lammar, 08 Мая 2012

    Комментарии (9) RSS

    • каррирование же!
      Ответить
      • И что, разве это удобно?
        Вспоминается очень старый прикол про "АрВид" - "Наконец-то специалисты добились воспроизведения видео с АрВид-а". (Школоте не понять!)
        Ответить
    • И вот тут, внезапно, хаскель слился :) JS такой код позволяет сделать, а он - нет.
      Ответить
      • 1. Код в разделе экшонСкрипт, на что намякае
        >(str:String):Function{
        2. Уверен что в хаскиле можно.
        Ведь даже в убогой, антифункциональной жабе за 10-20 минут можно используя паттерны стратегия, интерпретатор и интерфейс с флюент-методoм call:
        inteface Func(){
        public Func call(String s);
        }
        наваять похожее.
        Результирующий вызов примерно такой:
        func.call("1").call("2").call("3")....
        Ответить
        • 1. Упс, сорри, думал что это js.

          2. В языке с динамической типизацией такое запросто можно запилить.

          А вот у хаскеля (да собственно и у с\с++) проблема с выводом типа для этой функции - он не может вывести тип для функции, которая может вернуть сама себя.

          P.S. Флюент-метод не совсем то, с ним то почти в любом языке можно запилить. Тут прикол как раз в том, чтобы не юзать call и передавать параметр результату предыдущего вызова :)
          Ответить

    Добавить комментарий