Мови логічного програмування були навколо протягом більш ніж двадцяти років. Незважаючи на очікуване переваг мови дуже високою рівень програмування на основі добре розвиненої теорії логіки в порівнянні зі звичайними мовами програмування (таких як C, C ++, Pascal і Ada) вони не мали істотного впливу на комп'ютерній індустрії.
Ртуть є нова логіка / функціональний мова програмування, який поєднує в собі чіткість і виразність декларативного програмування з передовими статичного аналізу та виявлення помилок можливостей.
Ртуть дуже оптимізований алгоритм виконання забезпечує ефективність значно перевищує існуючі системи логічного програмування, і близько з традиційними системами програмування.
Меркурій розглядаються проблеми розвитку великомасштабної програма, що дозволяє модульність, роздільна компіляція, а також численні оптимізації / час компроміси
Що нового У цьому випуску :.
- Це виправлення помилок виправлення збірки випуску проблем на Solaris і NetBSD і додає підтримку для вибору C # компілятор під час конфігурації.
- Різні інші незначні помилки були виправлені.
- Є також деякі незначні доповнення до стандартної бібліотеці.
Що нового у версії 13.05:
- Покоління 64-бітових виконуваних на вікнах тепер підтримується.
- раз компіляція для дуже великих програм були покращені.
- Кілька нових представництва тип оптимізації були додані.
- відладчик тепер має кращу підтримку для обробки кліки взаємно рекурсивних викликів в стек.
- зв'язування з бібліотекою GLFW був доданий в дистрибутив Доп.
- Агрегати, створені за допомогою C # серверної тепер може бути підписаний з сильним ім'ям.
Що нового у версії 11.01:
- Ми додали два нових види областей в мові.
- Сфера введений одним з нових ключових слів require_det, require_semidet, require_multi, require_nondet, require_cc_multi, require_cc_nondet, require_erroneous і require_failure, як випливає з назви, вимагає мети всередині рамки, щоб даний детермінізм.
- Обсяг введені з ключовими словами require_complete_switch вимагає мети всередині рамки, якщо це перемикач на змінної названої рамки, щоб бути повним перемикач, тобто мати зброю для всіх функціональних символів в типі включеному змінної.
- Ми додали semidet режими для hash_table.fold / 4 і version_hash_table.fold / 4.
- Ми додали нові предикати і функції модуля assoc_list. Предикати map_keys_only / 3 map_values_only / 3 і map_values / 3 доповнювати функції з тим же ім'ям. Предикати фільтр / 3, negated_filter / 3, фільтр / 4, злиття / 3, які також мають функціональні версії, виконуй завдання, дуже схожі на предикатів з тим же ім'ям в модулі Список, але робити відповідні операції на ключі, а цілих Список елементів.
- Ми переїхали ледачий модуль оцінки з розподілу Екстра і в новій стандартного модуля бібліотеки з ім'ям `ледачий. Це був також досягнутий між внутрішніми і агностиком.
- Ми внесли зміни в модулі Список стандартної бібліотеки:
- Ми додали новий предикат list.member_index0 / 3. Це як list.member / 2, за винятком, що він також приймає параметр, який представляє нуля індекс елемента в списку.
- Ми додали новий предикат list.map3_foldl / 7, яка відображає за списком виробництву три списки і один складений значення.
- Ми додали semidet режимів з унікальними акумуляторів для list.foldl3 / 8, list.foldl4 / 10, list.foldl5 / 12, і list.foldl6 / 14.
- Ми додали предикати розділити / 4 і divide_by_set / 4 до tree_bitset модуля стандартної бібліотеки.
- Ми додали предикати set_ctree234.member / 2 і set_ctree234.non_empty / 1. У нас є додати функцію set_ctree234.from_list / 1.
- Ми додали предикат set_bbbtree.count / 2 і функція set_bbbtree.count / 1. Ці замінити предикат set_bbbtree.size / 2, який в даний час засуджується.
- Ми додали предикат set_ordlist.non_empty / 1.
- Ми додали предикат set_tree234.non_empty / 1 і функція set_tree234.from_list / 1.
- Ми додали предикати set_unordlist.non_empty / 1 та set_unordlist.count / 2, а функція set_unordlist.count / 1.
- Всі модулі стандартної бібліотеки, які реалізують безліч ADT, (набір, set_ordlist, set_unordlist, set_bbbtree, set_tree234 і set_ctree234), тепер підтримують складаються над множинами з шістьма акумуляторів. Режими, які забезпечують унікальні і в основному-унікальні акумулятори для безлічі рази були також додані.
- Ми зробили такі зміни в модуль масиву стандартної бібліотеки:
- Ми додали функції unsafe_elem / 2 і додайте / 2.
- Ми додали предикати svset / 4, unsafe_svset / 4, foldl2 / 4, foldl2 / 6, foldr / 4, foldr2 / 6, map_foldl / 5, map_corresponding_foldl / 6, і член / 2.
- Ми додали предикати version_array.foldl2 / 6, version_array.foldr / 4, і version_array.foldr2 / 6 до стандартної бібліотеці.
- Ми додали semidet режимів з унікальними і в основному унікальний акумуляторів для наступних предикатів:
- bimap.foldl2 / 6
- bimap.foldl3 / 8
- cord.foldl_pred / 4
- cord.map_foldl / 5
- list.map_corresponding_foldl2 / 8
- list.map_corresponding_foldl3 / 10
- list.map_corresponding3_foldl / 7
- map.foldl3 / 8
- Ми додали предикат unsorted_aggregate2 / 6 до модуля рішень стандартної бібліотеки.
- Ми додали кілька предикатів і функцій Вимагати модуля стандартної бібліотеки. Предикати шкода / 2 і шкода / 3 Звіт відсутність ознаки, в той час як предикати несподівані / 2 і несподівані / 3 Доповідь внутрішня помилка в програмі; всі мають функціональні версії теж. Предикат очікувати / 3 дзвінки несподіваним, якщо умова не виконується. Тепер у нас є очікування / 4, а також розраховувати / 3. Для очікування / 4, а також розраховувати / 3, перші й останні аргументи очікується стан і повідомлення про помилку, відповідно, але з очікувати / 4, є два аргументи в середині, щоб вказати місце розташування помилки (зазвичай ім'я модуля і предиката відповідно). Ми також додали expect_not / 3 і expect_not / 4, які, як очікують, / 3 і чекати / 4 відповідно, за винятком, що вони очікують умова була * брехня *, не відповідає дійсності.
Що нового у версії 10.04.2:
- Цей реліз реліз помилка-фікс. Ряд проблем, які призвели до компілятору перервати були виправлені, деякі зламані операції RTTI в Java класі були виправлені, і ми додали обхідний шлях для проблеми з GCC версії 4.4.
Обмеження
- Поточна реалізація ще не повністю реалізувати мову ртуті. Основні обмеження поточної реалізації є наступні:
- Ми не дозволяємо певні поєднання імен в системі режиму. Без цього, частково втілені режими непридатними, і так вкладені унікальних режимів.
- компілятор ще не використовувати структури повторного використання або під час компіляції збірки сміття, щоб використовувати унікальні режими.
- Тип і режим виведення є трохи недосконала.
- Предикати функції можуть мати щонайбільше близько 1000 аргументів.
- вищого порядку може мати не більше близько 500 аргументів.
<Клас Li = "bbli"> Крім того, дизайнерські рішення в цій реалізації зовнішніх були накладені наступні обмеження:
Умови
Коментар не знайдено