(no subject)
Feb. 12th, 2006 21:45Сижу в четвёртой главе Grokking Nemerle.
Пока не очень понял, как делать функцию, принимающую саму себя в качества аргумента.
То есть типа такого:
Очевидным образом тип - циклический.
Вывести его невозможно, явно указать - тоже.
Видимо, так просто нельзя, и правильнее использовать порождающие функции.
Буду пробовать.
Update: Можно, конечно, вот так:
Но не с первого же дня такие злобные хаки...
Пока не очень понял, как делать функцию, принимающую саму себя в качества аргумента.
То есть типа такого:
module test1
{
public Main() : void
{
def test(cc) // cc - это test и есть.
{
()
}
test(test);
/*
def fib_(last1,last2,cur,cc)
{
if(cur<=0)
last2
else
cc(last2,last2+last1,cur-1,cc)
}
def t = fib_(0,1,5,fib_);
*/
}
}
Очевидным образом тип - циклический.
Вывести его невозможно, явно указать - тоже.
Видимо, так просто нельзя, и правильнее использовать порождающие функции.
Буду пробовать.
Update: Можно, конечно, вот так:
def cc_cast = cc :> int * int * int * object -> int; cc_cast(last2,last2+last1,cur-1,cc)
Но не с первого же дня такие злобные хаки...
no subject
Date: Feb. 12th, 2006 19:03 (UTC)no subject
Date: Feb. 12th, 2006 19:37 (UTC)А Nemerle - это язык, который скоро станет очень модным.
А вот тут - рассказ про его макросы.
no subject
Date: Feb. 12th, 2006 19:37 (UTC)no subject
Date: Feb. 12th, 2006 19:38 (UTC)no subject
Date: Feb. 12th, 2006 20:03 (UTC)Эту часть действительно стоит посмотреть более детально. На первый взгляд макросы Nemerle напоминают не только TH/camlp4, но и одновременно что-то вроде opencxx. Есть на подумать.
no subject
Date: Feb. 12th, 2006 20:17 (UTC)Причём camlp4 + scala, даже как-то так.
Впрочем, ничего из перечисленного я внимательно не смотрел, так что disclaimer.
no subject
Date: Feb. 12th, 2006 22:44 (UTC)зачем это нужно?
no subject
Date: Feb. 12th, 2006 23:08 (UTC)Немерле или передача функции ей же самой?
Если передача функции - интересно понять, как оно работает со сложными типами.
Скажем, с рекурсивными.
И как сделать генераторы и комбинаторы.
И как сделать pattern matching на сложных структурах.
no subject
Date: Feb. 13th, 2006 04:29 (UTC)no subject
Date: Feb. 13th, 2006 17:01 (UTC)Спасибо!