Статические языки, которые могут манипулировать свойствами объекта? - PullRequest
1 голос
/ 27 августа 2011

При работе с разнородными данными возникает изрядная потребность в частичной смене простых объектов, содержащих данные.Например, вы можете добавить, удалить или переименовать свойство или объединить два объекта.Это достаточно просто в динамических языках, но мне интересно, есть ли какие-нибудь умные решения, предложенные статическими языками?

Чтобы исправить идеи, есть ли языки, которые позволяют, возможно, с помощью некоторого статического синтаксического синтаксиса,что-то вроде этого (C #):

var hello = new { Hello = "Hello" };
var world = new { World = "World" };
var helloWorld = hello + world;
Console.WriteLine(helloWorld.ToString());
//outputs {Hello = Hello, World = World}

Это, конечно, кажется возможным, поскольку информация времени выполнения не используется.Существуют ли статические языки с такой возможностью?

Добавлено:

Ограниченная версия того, что я рассматриваю, - это выражение # 1010 * для копирования и обновления записи F # :

let myRecord3 = { myRecord2 with Y = 100; Z = 2 }

1 Ответ

1 голос
/ 27 августа 2011

То, что вы описываете, известно в исследовании языка программирования как конкатенация записей . Была проведена некоторая работа над системами статических типов для конкатенации записей, в основном в контексте автоматического вывода типов в стиле Haskell или ML. Насколько мне известно, это еще не оказало влияния ни на какие основные языки программирования.

...