Re[25]: Metaprogramming & higher-order functions dualis
От: VoidEx  
Дата: 28.03.11 10:23
Оценка:
Здравствуйте, VoidEx, Вы писали:

Я посмотрел остальные макры, там и правда с location работы мало, но в operators.n частенько встречается ручная работа. Мне вот интересно, там неужто везде такой специфичный код, что надо руками Location протягивать?
Re[25]: Metaprogramming & higher-order functions dualis
От: WolfHound  
Дата: 28.03.11 10:35
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Я думал на её примере станет понятно, зачем ещё. Но на нет и суда нет.

А где пример то? И что словами сказать не можешь?

VE>Не-не, ты мне тут, псевдокодом убери.

Осталось всего два (loc, n)
    def loc = expr2.Location;
    def makeMemberAccess(n) { PExpr.Member(loc,  <[ e1 ]>, Splicable.Name(loc, n)) }
    def makeComplation  (n) { PExpr.Member(loc,  <[ e1 ]>, Splicable.HalfId(loc, n)) }
    def e2 = 
      match (expr2)
      {
        | Ref(n)                    => makeMemberAccess(n)
        | Call(Ref(n), parms)       => PExpr.Call(loc, makeMemberAccess(n), parms)
        | Indexer(Ref(n), parms)    => PExpr.Indexer(loc, makeMemberAccess(n), parms)
        | ToComplete(n)             => makeComplation(n)
        | Call(ToComplete(n), _)    => makeComplation(n)
        | Indexer(ToComplete(n), _) => makeMemberAccess(n)
        | _ => Message.FatalError(expr2.Location, $"The expression of this ($(expr2.GetType())) type not supported with operator '?.'");
      };
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[26]: Metaprogramming & higher-order functions dualis
От: WolfHound  
Дата: 28.03.11 10:35
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Я посмотрел остальные макры, там и правда с location работы мало, но в operators.n частенько встречается ручная работа. Мне вот интересно, там неужто везде такой специфичный код, что надо руками Location протягивать?

Почти все Location используются в сообщениях об ошибках.
И только в двух операторах Location используется для чегото еще.
И таки да. Работа с Location всегда очень специфична.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[27]: Metaprogramming & higher-order functions dualis
От: VoidEx  
Дата: 28.03.11 10:42
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, VoidEx, Вы писали:


VE>>Я посмотрел остальные макры, там и правда с location работы мало, но в operators.n частенько встречается ручная работа. Мне вот интересно, там неужто везде такой специфичный код, что надо руками Location протягивать?

WH>Почти все Location используются в сообщениях об ошибках.
WH>И только в двух операторах Location используется для чегото еще.
WH>И таки да. Работа с Location всегда очень специфична.

В таком случае беру слова обратно. Мне поначалу показалось, что location'ы как-то комбинируются.
Re[24]: Metaprogramming & higher-order functions dualis
От: __lambda__ Россия http://zen-hacker.blogspot.com/
Дата: 28.03.11 11:27
Оценка:
Здравствуйте, WolfHound, Вы писали:

VE>>При том, что повторяющийся код убирают далеко не только за тем, чтобы сократить.

WH>А зачем еще? И каким боком тут сортировка?

Хотя бы для того случая, когда мы исправили ошибку в одном месте, но забыли ее исправить в тех местах, где этот код повторяется. Это же азы. Суть не в том, чтобы написать как можно короче. Самый короткий код, не всегда самый лучший, я лучше предпочту более длинный, но за то более понятный код.
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.