Re[4]: Uniform Function Call Syntax in C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.01.22 20:31
Оценка:
Здравствуйте, Хэлкар, Вы писали:

Х>Нет, не решает. А должно? Если вы зайдете в список предложенных фич для C#, то увидите, что их там тысячи. Понятно, что все они никогда не будут реализованны. Данная фича хороша, но для большинства не критична.


Надо реализовать 1+2 фичи позволяющие людям создавать свои синтаксические расширения, а остальное возложить на пистелей библиотек.

MS тратит десятки лет, чтобы потом изобрести то, что существует уже почти 20 лет.

Немерлу этот оператор перекрутили сразу же как о нем узнали.
https://github.com/rsdn/nemerle/blob/db4bc9078f1b6238da32df1519c1957e74b6834a/testsuite/positive/pipe.n
    def x(p : int)
      WriteLine(p)

    def y(p : int)
      p + 1

    1 |> x
    x <| 2

    3 |> fun(p)
      WriteLine(p)

    (fun(p) { WriteLine(p) }) <| 4

    4 |> y |> x
    x <| (y <| 5)

/* 
BEGIN-OUTPUT
1
2
3
4
5
6
END-OUTPUT
*/


Собственно определяется он как оператор в стандартной библиотеке:
[assembly: Nemerle.Internal.OperatorAttribute ("Nemerle.Core", "|>",    false, 227, 228)]
...
namespace Nemerle.Builtins
{
  ...
  public static @|> (a : 'p1, fac : 'p1 -> 'r) : 'r
  {
    fac(a)
  }
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.