juan_gandhi: (Default)
[personal profile] juan_gandhi
See what people, I mean, [livejournal.com profile] dtm, can do with our Java::

  // Look, it's an anonymous recursive function!
  public void testY() {
    assertEquals(720,
        new Function<Function<Fii, Fii>, Fii>() {
          public Fii apply(final Function<Fii, Fii> f) {
            return new Branch() {
              public Fii apply(final Branch x) {
                return f.apply(new Fii() {
                  public Integer apply(Integer y) {
                    return x.apply(x).apply(y);
                  }
                });
              }
            }.apply(new Branch() {
              public Fii apply(final Branch x) {
                return f.apply(new Fii() {
                  public Integer apply(Integer y) {
                    return x.apply(x).apply(y);
                  }
                });
              }
            });
          }
        }.apply(new Function<Fii, Fii>() {
          public Fii apply(final Fii f) {
            return new Fii() {
              public Integer apply(Integer i) {
                return (i <= 0) ? 1 : i * f.apply(i - 1);
              }
            };
          }
        }).apply(6).intValue());
  }
}

Date: 2008-03-07 05:26 pm (UTC)
From: [identity profile] just-developer.livejournal.com
Methods extension, complexType, sequence and etc. have declaration like this:
 
public static XTExtension extension(XTNode... nodes);

Than we use
import static xsdgraph.model.XTUtil.*;


Also C-strXXX like style for setting arbitrary number of attributes:

public class XTElement {
    public XTElement minOccurs(int value) {
        minOccurs = value;
        return this;
    }
}

Date: 2008-03-07 05:41 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
Последнeе вроде с легкой руки М. Фоулера называется fluent interface.

Я вот думаю такой стиль для манипуляции с коллекциями использовать. Типа, select( new Predicate() {...}).orderedBy(new Predicate() {...}).groupedBy(...). А то

Date: 2008-03-07 05:58 pm (UTC)
From: [identity profile] just-developer.livejournal.com
идея не очень хорошая.
не будет оптимизации запроса.
В идеале - так строить запрос - а потом его прозрачно выполнять.
Вроде
select( new Predicate() {...}).orderedBy(new Predicate() {...}).groupedBy(...).go();

Есть пакет работы с матрицами с похожим подходом.

Date: 2008-03-07 06:14 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
Я так тоже думал. Только все эти "go()", "doit()", "execute()" и др. в коде задрали уже :)

Да и никакой оптимизации запросов я, если честно, не планировал. Просто хочется заменить все эти дурацкие циклы, имплементирующие подобную бизнес-логику (e.g. retrieve all purchased items along with their expiration date and group them by bundle id) на коллекциях, возвращаемых всякими веб-сервисами и прочими API, на что-то б.-м. читабельное. Ну и чтоб лепить эту логику быстрее.

Но, может, Вы и правы.

Date: 2008-03-07 06:00 pm (UTC)
From: [identity profile] just-developer.livejournal.com
C- strXXX методы придумали несколько раньше...

Date: 2008-03-07 06:15 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
Зато Фоулер им придумал звучное название :)

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

June 2025

S M T W T F S
1 234567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 3rd, 2025 05:57 am
Powered by Dreamwidth Studios