Re[10]: Возможно ли такое сделать в немерли?
От: Аноним  
Дата: 17.05.13 06:33
Оценка:
Здравствуйте, _NN_, Вы писали:

Не работает так реальный пример с множественной вложенностью типов.

примерно так выглядит

mul(a,b) -> return (a.x*b.x-a.y*b.y.............)

причем конечный тип есть A[A[A[A[A[A[A[A[A[A[A[double]]]]]]]]]]]
разворот всего дает слишком много кода
Re[11]: Возможно ли такое сделать в немерли?
От: hardcase Пират http://nemerle.org
Дата: 17.05.13 07:22
Оценка:
Здравствуйте, Аноним, Вы писали:

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


А>Не работает так реальный пример с множественной вложенностью типов.


Ничего не понял в сообщении. Попробуйте донести мысль полнее.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[12]: Возможно ли такое сделать в немерли?
От: Аноним  
Дата: 17.05.13 14:55
Оценка:
Здравствуйте, hardcase, Вы писали:

А>>Не работает так реальный пример с множественной вложенностью типов.


H>Ничего не понял в сообщении. Попробуйте донести мысль полнее.


kvar[T]
{
  x,y,z,t:T;
}

macro mul(a,b:T){T(a.x*b.x+a.y*b.y+a.z*b.z-a.t*b.t,.....,.....,.....)}


в коде создаеться
kvar[kvar[kvar[kvar[kvar[kvar[kvar[kvar[kvar[kvar[kvar[kvar[kvar[double]]]]]]]]]]
макрос разворачивается в кучу кода
Re[13]: Возможно ли такое сделать в немерли?
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 17.05.13 15:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>kvar[T]

А>{
А>x,y,z,t:T;
А>}

А>macro mul(a,b:T){T(a.x*b.x+a.y*b.y+a.z*b.z-a.t*b.t,.....,.....,.....)}


А>в коде создаеться

А>kvar[kvar[kvar[kvar[kvar[kvar[kvar[kvar[kvar[kvar[kvar[kvar[kvar[double]]]]]]]]]]
А>макрос разворачивается в кучу кода

> macro mul(a,b:T)


И это компилируется? Вообще, в "macro mul(a,b)", a и b имеют тип PExpr.

using Nemerle.Compiler;
using Nemerle.Compiler.Parsetree;

macro cross(t, u, v)
{
    <[
        def u = $u;
        def v = $v;
        $t
            ( u.y * v.z - u.z * v.y
            , u.z * v.x - u.x * v.z
            , u.x * v.y - u.y * v.x
            )
    ]>
}

[ Record ]
class V3
{
    public x : double;
    public y : double;
    public z : double;

    public override ToString() : string
    {
        $"[$x $y $z]"
    }
}

System.Console.WriteLine(cross(V3, V3(1,2,3), V3(4,5,6)));

[-3 6 -3]


ILSpy:
// Test
public static void Main()
{
    V3 v = new V3((double)1, (double)2, (double)3);
    V3 v2 = new V3((double)4, (double)5, (double)6);
    Console.WriteLine(new V3(v.y * v2.z - v.z * v2.y, v.z * v2.x - v.x * v2.z, v.x * v2.y - v.y * v2.x));
}
Ce n'est que pour vous dire ce que je vous dis.
Re[2]: Возможно ли такое сделать в немерли?
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.13 23:12
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>А какая цель была этого сравнения ?


Какой-то школьник пришел пенисом помериться, а вы перед ним распинаетесь.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Возможно ли такое сделать в немерли?
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.13 23:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Не работает так реальный пример с множественной вложенностью типов.


Какие типы? Перед вынесением суждений нужно в предмете разобраться. Это макрос. Он с типами не работает.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Возможно ли такое сделать в немерли?
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 17.05.13 23:27
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Какой-то школьник пришел пенисом помериться, а вы перед ним распинаетесь.


Может, автору темы это и не важно, зато кто другой прочитает и узнает что-то новое.
Ce n'est que pour vous dire ce que je vous dis.
Re[4]: Возможно ли такое сделать в немерли?
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.13 23:53
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Может, автору темы это и не важно, зато кто другой прочитает и узнает что-то новое.


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

Что можно узнать из пенесометрии?

Сам понимаешь, чтобы оценить Немерл, нужно хотя бы поверхностно вникнуть в его концепции.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.