Имена схема: Получить имена шаблонов схемы (Схема сети)—ArcGIS Pro
Получить имена шаблонов схемы (Схема сети)—ArcGIS Pro
В этом разделе
- Краткая информация
- Использование
- Параметры
- Параметры среды
- Информация о лицензиях
Краткая информация
Возвращает имена шаблонов схемы, связанные с сетью.
Использование
Этот инструмент не поддерживается при работе с сервисом инженерной сети или сети трассировки. Вы должны работать с инженерной сетью или с сетью трассировки в файловой или мобильной базе геоданных, либо с подключением базы данных к инженерной сети или сети трассировки в многопользовательской базе геоданных. При работе с многопользовательской базой геоданных необходимо соблюдать следующие требования:
- Значение параметра Входная сеть должно быть из подключения к базе данных, установленного от имени владельца базы данных инженерной сети или владельца базы данных сети трассировки.
- Учетная запись подключенного портала ArcGIS Enterprise должна быть записью владельца инженерной сети портала или владельца сети трассировки портала.
- Этот инструмент должен быть подключен к версии по умолчанию, которая скорее всего будет общедоступной и незащищенной.
Этот инструмент, в основном, используется для работы с шаблонами схем в ModelBuilder или Python.
Параметры
Подпись | Описание | Тип данных |
Входная сеть | инженерная сеть или сеть трассировки, с которыми связаны имена шаблонов схемы. | Utility Network; Trace Network |
Производные выходные данные
Подпись | Описание | Тип данных |
Выходные шаблоны схемы | Выходные имена шаблонов схемы. | String |
arcpy.nd.GetDiagramTemplateNames(in_utility_network)
Имя | Описание | Тип данных |
in_utility_network | инженерная сеть или сеть трассировки, с которыми связаны имена шаблонов схемы. | Utility Network; Trace Network |
Производные выходные данные
Имя | Описание | Тип данных |
out_template_names | Выходные имена шаблонов схемы. | String |
Пример кода
Пример GetDiagramTemplateNames (рабочий процесс)
Экспорт определений всех шаблонов схем, связанных с заданной сетью.
Следующий инструмент-скрипт получает список шаблонов схем, связанных с сетью, и экспортирует определения для каждого шаблона в файлы . ndbd и .ndld в данную папку.
Для добавления и настройки этого инструмента-скрипта выполните следующие шаги:
- Скопируйте следующий скрипт в любой Python IDE и сохраните его с расширением .py.
- Запустите ArcGIS Pro с новым чистым проектом или с любым имеющимся проектом.
- Добавьте новый набор инструментов или на панели Каталог щелкните Проект и используйте набор инструментов по умолчанию в разделе Наборы инструментов.
- Щелкните правой кнопкой мыши набор инструментов и выберите Новый > Скрипт.
- Заполните вкладку Общие, как показано ниже:
- Имя – введите ExportAllDiagramTemplateDefinitions.
- Надпись – введите Экспорт всех определений шаблонов схем.
- Файл скрипта – Найдите его и выберите файл .py, созданный в шаге 1.
- Заполните вкладку Параметры, как показано ниже:
- Первый параметр
- Надпись – введите Входная сеть.
- Имя — сохраните имя по умолчанию Input_Network.
- Тип данных – Выберите Инженерная сеть и Трассировка сети.
- Тип – выберите Обязательный.
- Направление — выберите Входное.
- Второй параметр
- Подпись — введите Папка экспорта файлов определения.
- Имя — сохраните имя по умолчанию Definition_Files_Export_Folder.
- Тип данных – выберите Папка.
- Тип – выберите Обязательный.
- Направление — выберите Входное.
- Первый параметр
- Нажмите OK. Диалоговое окно Инструмента-скрипта закрывается.
Для запуска инструмента выполните следующие шаги:
- Разверните набор инструментов и дважды щелкните на инструмент, чтобы открыть его.
- Укажите параметр Входная сеть, а именно — найдите и выберите файл подключения к базе данных или файловую или мобильную базу геоданных, которые ссылаются на сеть, из которой вы хотели бы экспортировать все определения шаблонов
- Укажите параметр Выходная папка – перейдите и выберите выходную папку, куда вы хотите экспортировать файлы определения шаблонов.
- Щелкните Запустить.
# Name: ExportAllDiagramTemplateDefinitions.py # Description: Export definitions of all diagram templates related to a given network. # Import system modules import arcpy import os import re # Initialize variables msgInputsErr = "Invalid arguments." msgScriptErr = "Error during script operation." ndbd_ext = ".ndbd" ndld_ext = ".ndld" # Set overwrite option arcpy.env.overwriteOutput = True # Decodes parameters try: input_Network = arcpy.GetParameterAsText(0) input_Folder = arcpy.GetParameterAsText(1) if input_Network == "" or input_Folder == "" : raise Exception() except Exception: arcpy.AddError(msgInputsErr) raise # Main code try: arcpy.AddMessage("Retrieving the templates list...") output_TemplateNames = arcpy.GetDiagramTemplateNames_nd(input_Network) templateNamesList = re.split(';', str(output_TemplateNames)) arcpy.AddMessage("Looping on each template...") for template in templateNamesList: message = "Exporting template: {}". format(template) arcpy.AddMessage(message) arcpy.ExportDiagramTemplateDefinitions_nd(input_Network, template, os.path.join(input_Folder, template + ndbd_ext), os.path.join(input_Folder, template + ndld_ext)) except Exception: arcpy.AddError(msgScriptErr) raise
Параметры среды
Этот инструмент не использует параметры среды геообработки
Информация о лицензиях
- Basic: Нет
- Standard: Да
- Advanced: Да
Связанные разделы
Отзыв по этому разделу?
Божественные имена — Схемы и пособия
Невозможно описать Бога всецело и адекватно Его совершенствам (именно поэтому христианское богословие не ограничивает количество имён Бога каким-либо определённым числом).
Например, называя Бога Добром, мы должны понимать, что Бог не есть добро в нашем ограниченном понимании, что Божественное Добро абсолютно. Поэтому ко всем именам, отражающим Божественное совершенство, уместно прилагать приставку «сверх»: сверхдобро, сверхсправедливость…
Имена: в Ветхом Завете * в Новом Завете * Прочие имена
См. также:
- «Божественные имена» в Словаре «Азбуки веры».
- «О Божественных именах» Дионисий Ареопагит.
Имена Божии в книгах Ветхого Завета
Благий | Пс.24:8, 85:5, 99:5, 118:68, 144:17, 2Пар.30:18. Пс.144:17 | טּ֖וֹב тов חָסִ֗יד хасид |
Благодатель, Благодетель | Пс.118:68. | מֵטִ֗יב мэтив |
Благословенный | Пс.17:47, 67:36. | בָר֣וּךְ барух |
Благотворящий | Исх.20:6, Иер.32:18. | עֹ֤שֶׂה חֶ֨סֶד осэ хэсэд |
Близкий | Пс.34:19, 145:18. | קָר֣וֹב карив |
Бог | Быт.1:1, Пс.49:3, Втор.32:15, Авв. 3:3. | אֱלֹהִ֑ים элоhим |
Великий | Пс.49:2, 144:3, Неем.9:32, Иер.32:18. | גָּדוֹל гадол |
Великий в советах | Иер.32:19. | גְּדֹל֙ הָֽעֵצָ֔ה гадол hаэца |
Величественный | Пс.8:2, Исх.15:11. | אַדִּ֣יר адир |
Верный | Пс.30:6. | אֱמֶֽת эмэт |
Ветхий днями | Дан.7:9, 22. | עַתִּ֥יק יוֹמִ֖ין аттик йамин |
Вечно живущий | Ис.57:15. | שֹׁכֵ֥ן עַד шохэн ад |
Вечный | Ис.40:28. | עוֹלָ֚ם олам |
Великий Великий силой | Иов.36:26, 37:23 | שַׂ֖גִּיא саги שַׂגִּיא־כֹ֑חַ саги коах |
Владыка | Быт.15:2, 34:9, Чис.14:17, Пс.85:9, Пс.113:7, Ис.1:24 | אֲדֹנָ֔י адонай |
Владыка | Дан.2:47, 5:23. | מָרֵ֥א марэ |
Воздающий | Пс.30:24. Иер.32:18. | מְשַׁלֵּם мэшалэм |
Врачующий | Исх.15:26. Втор.32:39. | רֹֽפְאֶ рофэ |
Всеведущий | 1Цар.2:3. | דֵּעוֹת даот |
Всевышний | Быт.14:18. Пс.56:3, 9:3, 20:8. | עֶלְיֽוֹן элйон |
Всемогущий | Быт.17:1. Чис.24:4. Иов.5:17. Пс.90:1. | שַׁדַּ֔י шаддай |
Высокий | Пс.98:2. Ис.57:15. | רָ֥ם рам |
Далекий от грешников | Притч.15:29. | רָח֣וֹק מֵרְשָׁעִ֑ים рахок мэрэшаим |
Дающий жизнь, Оживляющий | 1Цар.2:6. Неем.9:6. Втор.32:39. | מְחַיֶּ֑ה мэхаййе |
Державный, Крепкий, Сильный | Втор.10:17. Пс.23:8, Иер.32:18. Неем.9:32. | גִּבֹּר֙ гиббор |
Дивный, Страшный | Втор.10:17. Пс.67:36, 75:8, 13. Неем.9:32. | נוֹרָ֔א нора |
Долготерпеливый, Медленный на гнев | Пс. 102:8. | אֶ֖רֶךְ אַפַּ֣יִם эрэх аппайим |
Достопоклоняемый, Препрославленный | Пс.17:4, 47:2. | מְהֻלָּ֣ל мэhуллал מְהֻלָּ֣ל מְאֹ֑ד мэhуллал мэод |
Древний | Втор.33:27. | קֶ֔דֶם кэдэм |
Единый | Втор.6:4. | אֶחָֽד эхад |
Живый | Ос.2:1, Дан.6:21, Иер.10:10, 1Цар.17:26. | חָֽי хай |
Заступник, Судия | 1Цар.24:16. Пс.67:6. | דַיָּ֔ן дайан |
Знающий тайны сердца | Пс.43:22. | יֹ֜דֵ֗עַ תַּֽעֲלֻמ֥וֹת לֵֽב йодэа таалумот лэв |
Избавитель | Пс.17:3, 69:6 | מְפַלֵּט мэфалэт |
Искупитель | Пс.18:15. Ис.63:16. | גֹֽאֲל гоэл |
Испытующий сердца и утробы | Пс.7:10. | בֹחֵ֣ן לִ֖בּוֹת וּכְלָי֗וֹת вохэн либбот ухлайот |
Истинный | Ис.65:16. | אָמֵ֔ן амэн |
Каратель, Поражающий | Иез. 7:9. | מַכֶּֽה махэ |
Крепость, Твердыня | Пс.93:22. | מִשְׂגָּ֑ב мисгав |
Милосердный, Милующий, Щедрый | Пс.85:15, 111:4, 144:8. | רַח֣וּם рахум חַנּ֖וּן ханун |
Мир | Суд.6:24. | שָׁל֥וֹם шалом |
Многомилостивый | Пс.85:5, 144:8. | רַב־חֶ֥סֶד рав хэсэд גְדָל־חָֽסֶד гадол хасэд |
Многомощный | Пс.146:5. | רַב־כֹּ֑חַ рав коах |
Могучий, Сильный | Пс.88:9. | חֲסִ֥ין хасин |
Могучий силою | Иов.9:4. | אַמִּ֣יץ כֹּ֑חַ аммиц коах |
Мощный | Быт.49:24. Пс.131:2. Ис.1:24. | אֲבִ֣יר авир |
Наказывающий за вину | Исх.20:5. | פֹּ֠קֵד עֲוֹ֨ן покэд он |
Обогащающий | 1Цар.2:7. | מַעֲשִׁ֑יר маашир |
Огонь поедающий | Втор. 4:24. | אֵ֥שׁ אֹֽכְלָ֖ה эш охла |
Отец | Втор.32:6. Пс.67:6, 88:27. Ис.63:16. | אָב ав |
Пастырь | Пс.79:2. | רֹ֘עֵ֚ה роэ |
Первый | Ис.44:6, 48:12. | רִאשׁוֹן ришон |
Покров, Покровитель | Пс.31:7, 118:114. | סֵ֥תֶר сэтэр |
Помощник | Пс.29:11 | עֹזֵ֬ר озэр |
Последний | Ис.44:6, 48:12. | אַֽחֲר֔וֹן ахарон |
Правдивый | Втор.32:4. Пс.91:16. | אֱמוּנָה эмуна |
Праведный, Справедливый | Пс.7:10, 111:4, 118:137, 144:17. Неем.9:33. | צַדִּֽיק цаддик |
Превознесенный | Пс.45:11. | אָר֥וּם арум |
Превозносимый | Ис.57:15. | נִשָּׂ֗א нисса |
Премудрый сердцем | Иов.9:4. | חֲכַ֣ם לֵ֖בָב хахам лэвав |
Прибежище | Пс. 45:2. | מַֽחֲסֶ֣ה махасэ |
Прибежище, Обитель | Пс.89:2. | מָע֣וֹן маон |
Присносущий | Дан.6:26. | קַיָּם֙ לְעָ֣לְמִ֔ין кайам лэалмин |
Прощающий | Пс.85:5. | סַלָּ֑ח салах |
Ревнитель | Исх.20:5, 34:14. | קַנָּ֔א канна |
Саваоф | 1Цар.4:4. 3Цар.18:15. Ис.6:3. | צְבָא֑וֹת цэваот |
Святый | Лев.11:44-45. Пс.21:4. Ис.1:4-5, Ис.1:16, Ис.40:25, Ис.25:15 | קָד֖וֹשׁ кадош |
Сила | Исх.15:2, Пс.139:8. | עֹ֣ז оз |
Слава | Пс.105:20. | כְּבוֹד кэвод |
Создатель | Пс.149:2 | עֹ֤שֶׂה осэ |
Сокровенный | Ис.45:15. | מִסְתַּתֵּ֑ר мистаттэр |
Сокрушающий | Втор.32:39. Пс.67:22. | מָחַ֙צְתִּי֙ махацти יִמְחַץ֘ йимхац |
Солнце | Пс. 83:12 | שֶׁ֨מֶשׁ шэмэш |
Спаситель | Пс.7:11. Ис.45:15. | מ֜וֹשִׁ֗יעַ мошийа |
Судия | Быт.18:25, Суд.11:27, Пс.7:12, Пс.9:5, Пс.74:8. | שֹׁפֵט֙ шофэт |
Сущий, Сый | Исх.3:14. | אֶֽהְיֶ֖ה эhйэ |
Твердыня | Втор.32:4. 1Цар.2:2. | צוּר цур |
Творец | Ис.40:28. | בּוֹרֵא борэ |
Убожащий, Обедняющий, Делающий бедным | 1Цар.2:7. | מוֹרִ֣ישׁ мориш |
Ум | Притч.8:14. | בִ֜ינָ֗ה вина |
Умерщвляющий, Посылающий смерть | 1Цар.2:6. Втор.32:39. | מֵמִ֣ית мэмит |
Унижающий и Возвышающий | 1Цар.2:7 | מַשְׁפִּ֖יל אַף־מְרוֹמֵֽם машпил аф мэромэм |
Хранитель, Страж | Иов.7:20. Пс.30:24. | נֹצֵ֪ר ноцэр |
Царь | Пс.5:3, 9:37, 23:10, 144:1. | מֶלֶךְ мэлэх |
Щит | Быт. 15:1. Втор.33:29. Пс.3:4, Пс.7:11, Пс.17:3, 31, Пс.83:10. | מָגֵן֘ магэн |
Имена Божии в книгах Нового Завета
Альфа и Омега | τὸ Ἄλφα καὶ τὸ ὦ | Откр.1:8, 21:6, 22:13. |
Благий | ὁ Ἀγαθός | Мф.19:17. Мк.10:18. |
Благословенный во веки | ὁ Εὐλογητὸς εἰς τοὺς αἰῶνας | 2Кор.11:31. |
Блаженный | ὁ Μακάριος | 1Тим.6:15. |
Блюститель | ὁ Ἐπίσκοπος | 1Пет.2:25. |
Бог есть Дух | Πνεῦμα ὁ Θεός | Ин.4:24. |
Бог мира | ὁ Θεὸς τῆς εἰρήνης | Рим.15:33, 16:20. Евр.13:20. 2Сол.3:16. |
Богатый | ὁ Πλούσιος | Еф.2:4. |
Великий | ὁ Ποιμήν | 1Тим.2:13. |
Верный | ὁ Πιστὸς | 1Сол.5:24, 1Ин.1:9 |
Владыка | ὁ Δεσπότης | Деян. 4:24. |
Всевышний | ὁ Ὑψίστος | Лк.1:32, 76. |
Вседержитель | ὁ Παντοκράτωρ | Откр.1:8. |
Господь | ὁ Κύριος | Деян.4:24, 1:24. |
Господь неба и земли | ὁ Κύριος τοῦ οὐρανοῦ καὶ τῆς γῆς | Мф.11:25. |
Господь господствующих | ὁ Κύριος τῶν κυριευόντων | 1Тим.6:15. |
Единый | ὁ Εἷς | 1Кор.8:5. Гал.3:20. 1Тим.2:5. |
Единый имеющий бессмертие | ὁ Μόνος ἔχων ἀθανασίαν | 1Тим.6:16 |
Единый истинный Бог | ὁ Μόνος ἀληθινὸς Θεὸς | Ин.17:3. |
Живущий во веки веков | ὁ Ζῶν εἰς τοὺς αἰῶνας τῶν αἰώνων | Откр.10:6 |
Живый | ὁ Ζῶν | Деян.14:15. 1Тим.3:15, 4:10, 6:17. Евр.9:14 |
Законодатель | ὁ Νομοθέτης | Иак.4:12. |
Избавитель | ὁ Ῥυόμενος | Рим. 11:26. |
Истинный | ὁ Ἀληθής | Рим.3:4, Ин.17:3, 1Сол.1:9. |
Любовь | ἡ Ἀγάπη | 1Ин.4:8. 2Кор.13:11. |
Мессия | ὁ Μεσσίας | Ин.1:41, 4:25. |
Милосердный | ὁ Οἰκτίρμως | Лк.6:36. |
Многомилостивый | ὁ Πολύσπλαγχνός | Иак.5:11. |
Могущественный | ὁ Δυνάστης | 1Тим.6:15. |
Мститель | ὁ Ἔκδικος | 1Сол.4:6. |
Невидимый | ὁ Ἀόρατος | 1Тим.1:17, 1:18, 6:16. Ин.1:18, 6:48. |
Нелживый [в обетованиях] | ὁ Ἀψευδής | Тит.1:2 |
Нетленный | ὁ Ἀφθάρτος | Рим.1:23. 1Тим.1:17. |
Обитающий в неприступном свете | ὁ φῶς Οἰκῶν ἀπρόσιτον | 1Тим.6:16 |
Оживотворящий всё | ὁ Ζῳογονῶν | 1Тим.6:13. |
Отец | ὁ Πατὴρ | Мф. 5:48, 6:9. |
Отец духов | ὁ Πατὴρ τῶν πνευμάτων | Евр.12:9. |
Отец милосердия, Бог всякого утешения | ὁ Πατὴρ τῶν οἰκτιρμῶν καὶ Θεὸς πάσης παρακλήσεως | 2Кор.1:3. |
Пастырь | ὁ Ποιμήν | Ин.10:11. |
Первоначальный | ὁ Ἀπ᾿ ἀρχῆς | 1Ин.2:13-14. |
Праведный | ὁ Δίκαιος | Ин.17:25, 1Ин.1:9 |
Премудрый | ὁ Σοφός | Рим.16:27 (критическое издание) |
Свет | ὁ Φῶς | 1Ин.1:5. |
Святый | ὁ Ἅγιος | Ин.17:11. |
Сердцеведец | ὁ Καρδιογνῶστος | Деян.1:24, 15:8. |
Сильный | ὁ Δυνατός | Лк.1:49. |
Слово | ὁ Λόγος | Ин.1:1. |
Совершенный | ὁ Τέλειος | Мф.5:48. |
Спаситель | ὁ Σωτήρ | Лк.1:47, 2:11. Ин.4:42. Иуд.1:25, 1Тим.2:3, 4:10 |
Судия | ὁ Κριτής | 1Пет.2:23. 2Тим.4:8. |
Царь веков | ὁ Βασιλεὺς τῶν αἰώνων | 1Тим.1:17. |
Царь царствующих | ὁ Βασιλεὺς τῶν βασιλευόντων | 1Тим.6:15. |
Чистый | ὁ Ἁγνός | 1Ин.3:3. |
Прочие имена,
из церковной гимнографии и святоотеческой письменности
- Пожертвовать
- 11 тыс. 0
-
0
Размер шрифта:
A-
15
A+
Тёмная тема:
Цвета
Цвет фона:
Цвет текста:
Цвет ссылок:
Цвет акцентов
Цвет полей
Фон подложек
Заголовки:
Прямой (Lucida)С засечками (Times)GeorgiaМоноширинныйСжатыйРукописныйIBM Plex SerifVollkornOranienbaum
Текст:
Прямой (Arial)С засечками (Times)GeorgiaМоноширинныйСжатыйРукописныйIBM Plex SerifVollkornOranienbaum
Выравнивание:
Боковая панель:
Сбросить настройки
Схемы именования
Из схем именования
Перейти к навигацииПерейти к поиску
Чем вы пользуетесь?[edit | править код]Хорошая схема именования масштабируема, уникальна и легко запоминается. Целью этих схем именования является присвоение имен сетевым серверам, беспроводным точкам доступа или клиентским компьютерам, но их также можно использовать для присвоения имен проектам, продуктам, переменным, улицам, домашним животным, детям или любым другим проектам, в которых используются уникальные имена и запоминающиеся имена. необходимый.
|
Введение
Введение
Концентрические кольца из протоплитки в форме полумесяца.
Scheme — это язык программирования общего назначения.
Это язык высокого уровня, поддерживающий операции над структурированными данными.
данные, такие как строки, списки и векторы, а также операции над
более традиционные данные, такие как числа и символы.
Хотя Схема часто отождествляется с символическим
приложения, его богатый набор типов данных и гибкие
управляющие структуры делают его действительно универсальным языком.
Схема использовалась для написания текстовых редакторов, оптимизирующих
компиляторы, операционные системы, графические пакеты, экспертные системы,
числовые приложения, пакеты финансового анализа,
и практически любой другой тип приложения, который только можно вообразить.
Scheme — довольно простой язык для изучения, так как он основан на
на нескольких синтаксических формах и семантических понятиях и
поскольку интерактивный характер большинства реализаций поощряет
эксперименты.
Однако язык Scheme сложен для полного понимания;
развитие способности использовать весь свой потенциал требует тщательного изучения
и практика.
Программы-схемы обладают высокой переносимостью между реализациями
одна и та же схема системы на разных машинах, т.к. машина
зависимости практически полностью скрыты от программиста.
Кроме того, из-за двух связанных усилий по стандартизации Схемы,
можно использовать стандартный диалект Scheme
для написания программ, переносимых между различными реализациями Scheme.
Стандартный диалект определяется стандартом ANSI/IEEE, описанным
в «Стандарте IEEE для языка схемного программирования» [15].
Стандарт ANSI/IEEE вырос из постоянных усилий группы Scheme
дизайнеры, опубликовавшие серию менее формальных отчетов,
«Пересмотренные отчеты» по схеме.
Самый последний пересмотренный отчет,
«Пересмотрено 4 Report» [4], описывает диалект, очень близкий к
стандартный диалект,
отличаясь, прежде всего, добавлением нескольких примитивов.
Ожидается, что в ближайшее время появится «Пересмотренный отчет 5 ».
путем добавления высокоуровневой системы синтаксического расширения,
eval и несколько возвращаемых значений.
Хотя некоторые ранние системы Scheme были неэффективными и медленными,
многие новые реализации на основе компилятора работают быстро, с программами
работает наравне с эквивалентными программами, написанными на
языки нижнего уровня.
Относительная неэффективность, которая иногда сохраняется, является результатом времени выполнения.
проверки, которые помогают программисту обнаруживать и исправлять различные распространенные
ошибки программирования.
Эти проверки могут быть отключены в большинстве реализаций.
Схема обрабатывает значения данных совершенно иначе, чем большинство языков.
Значения данных, или объектов , являются
динамически размещается в куче
где они сохраняются до тех пор, пока они больше не понадобятся, а затем автоматически
освобожден.
Объектами являются первоклассных значений данных ;
потому что они
распределяются в куче и сохраняются неопределенно долго, они могут свободно передаваться
в качестве аргументов для процедур, возвращаемых как значения из процедур, и
объединяются, образуя новые объекты.
Это отличается от большинства других языков, где составные данные
такие значения, как массивы, либо размещаются статически, либо никогда
освобождается, выделяется при входе в блок кода и безусловно
освобождается при выходе из блока или явно выделяется и
освобождается программистом.
Схема поддерживает множество типов объектов, в том числе
числа, символы, строки, символы и списки или векторы
объекты.
Полный набор числовых типов данных, включая комплексные, действительные и
рациональные числа произвольной точности, позволяет Scheme поддерживать
многие числовые приложения обычно закодированы на более низком уровне
языки.
В основе языка Scheme лежит
маленькое ядро синтаксических форм, из которого строятся все остальные формы.
Эти основные формы, набор расширенных синтаксических форм, производных от
их и библиотеку примитивных процедур
составляют полный язык схемы.
Интерпретатор или компилятор для Scheme
может быть довольно небольшим, потенциально быстрым и очень надежным.
Расширенные синтаксические формы и многие примитивные процедуры могут быть
определены в самой схеме, упрощая реализацию и
повышение надежности.
Программы Scheme имеют общее печатное представление со Scheme.
структуры данных.
В результате любая программа Scheme имеет естественную и очевидную внутреннюю структуру.
представление в виде объекта Scheme.
Например, переменные и синтаксические ключевые слова соответствуют
символы, а структурированные синтаксические формы соответствуют спискам.
Это представление является основой для синтаксического расширения
удобства
предоставляется большинством систем Scheme для определения новых синтаксических
формы с точки зрения существующих синтаксических форм и процедур.
Это также облегчает реализацию интерпретаторов, компиляторов и
другие инструменты преобразования программы для Схемы непосредственно в Схеме, как
а также инструменты преобразования программ для других языков в Scheme.
Переменные схемы и ключевые слова
с лексической областью видимости и
Программы-схемы
блочный .
Идентификаторы могут быть связаны на верхнем уровне (как и имена
примитивных процедур Scheme и синтаксических форм) или локально,
внутри заданного блока кода.
Локальная привязка видна только лексически, т.е. в тексте программы
который составляет конкретный блок кода.
Появление одноименного идентификатора за пределами этого блока
относится к другой привязке; если нет привязки к идентификатору
существует вне
блока, то ссылка недействительна.
Блоки могут быть вложенными, а привязка в
один блок 9 мая1637 тень привязка для идентификатора
того же имени в окружающем блоке.
Область привязки — это блок, в котором связанный идентификатор
виден
минус любые части блока, в которых находится идентификатор
затененный.
Блочная структура и лексическая область видимости помогают создавать
программы, которые
модульный, легко читаемый, простой в обслуживании и надежный.
Эффективный код для лексической области видимости возможен, потому что компилятор
может определить перед оценкой программы область действия всех привязок
и привязка, к которой разрешается каждая ссылка на идентификатор.
Это не означает, конечно, что компилятор может определить
значения всех переменных, так как фактические значения не вычисляются
в большинстве случаев до тех пор, пока программа не запустится.
В большинстве языков определение процедуры — это просто ассоциация
имени с блоком кода.
Некоторые переменные, локальные для блока, являются параметрами
процедура.
В некоторых языках определение процедуры может находиться внутри другого.
блока или процедуры до тех пор, пока процедура вызывается только во время
выполнение ограждающего блока.
В других процедурах можно определить только на верхнем уровне.
В схеме определение процедуры может находиться в другом блоке или в другом блоке.
процедура, и процедура может быть вызвана в любое время после этого,
даже если объемлющий блок завершил свое выполнение.
Для поддержки лексической области видимости процедура содержит лексический контекст.
(окружение) вместе с его кодом.
Кроме того, процедуры Scheme не всегда имеют имена.
Вместо этого процедуры являются первоклассными данными.
объекты, такие как строки
или числа, а переменные привязываются к процедурам так же, как они
привязаны к другим объектам.
Как и процедуры в большинстве других языков, процедуры Scheme могут
быть рекурсивным.
То есть любая процедура может вызывать себя прямо или косвенно.
Многие алгоритмы наиболее элегантно или эффективно задаются рекурсивно.
Частный случай рекурсии, называемый хвостовой рекурсией, используется для
экспресс-итерация или цикл.
А хвостовой вызов происходит, когда одна процедура напрямую возвращает результат
вызов другой процедуры; хвостовая рекурсия происходит, когда
процедура рекурсивно вызывает саму себя, прямо или косвенно.
Реализации схемы необходимы для реализации хвостовых вызовов как
переходы (gotos), поэтому накладные расходы на хранение, обычно связанные с рекурсией
избегают.
В результате программистам Scheme нужно освоить только простые вызовы процедур.
и рекурсией и не нужно обременяться обычным ассортиментом
цикличных конструкций.
Схема поддерживает определение произвольных управляющих структур с
продолжений .
Продолжение — это процедура, воплощающая в себе оставшуюся часть программы.
в заданный момент программы.
Когда вызывается продолжение, программа немедленно продолжается с
эта точка.
Продолжение может быть получено в любой момент во время исполнения
программа.
Как и в случае с другими процедурами, продолжение является первоклассным объектом и
может быть вызван в любое время после его создания.
Продолжения позволяют реализовать сложные механизмы управления
включая явный возврат, многопоточность и сопрограммы.
Многие реализации Scheme поддерживают
синтаксические правила система синтаксического расширения (макро), принятая для
включение в пересмотренный отчет 5 по схеме.
Эта система позволяет программистам определять расширенные синтаксические
формы с точки зрения существующих синтаксических форм с использованием удобного
язык шаблонов высокого уровня.
Из тех реализаций, которые не поддерживают правила синтаксиса,
практически все предоставляют какой-либо другой механизм для определения расширенного
синтаксические формы.
Синтаксические расширения полезны для определения новых языковых конструкций,
для эмуляции языковых конструкций, найденных в других языках, для
достижения эффектов встроенного расширения кода, и даже для
эмуляция целых языков в Scheme.
Большинство больших программ Scheme построены из смеси
синтаксические расширения и определения процедур.
Схема возникла из языка Лисп и считается
диалект Лиспа.
Схема унаследовала от Лиспа обработку значений как первоклассную.
объекты, несколько важных типов данных, включая символы и списки,
и представление программ как объектов, среди прочего.
Лексическая область видимости и блочная структура взяты из
Алгол 60 [18].
Scheme был первым диалектом Лиспа, который принял лексическую область видимости и блокировку.
строение, понятие о первоклассных процедурах, обработка хвоста
вызовы как прыжков, так и продолжений.
Common Lisp [22] и Scheme являются современными версиями Lisp.
языков, и на развитие одного из них повлиял другой.
Подобно Scheme, но в отличие от более ранних языков Lisp, Common Lisp
принята лексическая область видимости и первоклассные процедуры.
Правила вычисления Common Lisp для процедур отличаются
однако из правил оценки для других объектов, и он поддерживает
отдельное пространство имен для процедурных переменных, тем самым препятствуя
использование процедур как объектов первого класса.
Кроме того, Common Lisp не поддерживает продолжения и не требует надлежащего
обработка хвостовых вызовов,
но он поддерживает несколько менее общих структур управления, которые не найдены
в схеме.
Хотя эти два языка похожи, общий
Lisp включает более специализированные операторы, а Scheme включает
более универсальные строительные блоки, из которых такие операторы (и
другие) могут быть построены.
Оставшаяся часть этой главы описывает синтаксис и наименование Scheme.
соглашения и типографские соглашения, используемые в этом
книга.
Раздел 1.1. Синтаксис схемы
Программы-схемы состоят из ключевых слов, переменных, структурированных форм,
постоянные данные (числа, символы, строки, векторы в кавычках, кавычки
списки, символы в кавычках и т. д.), пробелы и комментарии.
Ключевые слова, переменные и символы вместе называются
идентификаторы.
Идентификаторы могут быть сформированы из следующего набора символов:
9& _ ~.
Идентификаторы обычно не могут начинаться ни с одного символа, который может начинаться
число, т. е. цифра, знак плюс ( + ), знак минус ( — ) или
десятичная точка ( . ).
Исключениями являются +, — и …, которые являются допустимыми идентификаторами.
Например, привет, привет, n, x, x3 и ?$&*!!! все
идентификаторы.
Идентификаторы должны быть разделены пробелами, круглыми скобками, строкой
(двойная) кавычка ( » ) или символ комментария ( ; ).
Все реализации должны распознавать в качестве идентификаторов любые последовательности
персонажей, которые придерживаются этих правил.
Другие последовательности символов, такие как -1234a, которые не представляют
числа или другие синтаксические объекты могут быть распознаны как идентификаторы
в некоторых реализациях, хотя лучше избегать таких
идентификаторы в коде, который может потребоваться для запуска более чем в одной схеме
система.
Не существует внутреннего ограничения на длину идентификатора Схемы;
программисты могут использовать столько символов, сколько необходимо.
Однако длинные идентификаторы не заменяют комментарии, и
частое использование длинных идентификаторов может затруднить работу с программой.
формат и, следовательно, трудно читать.
Идентификаторы могут быть написаны любым сочетанием прописных и
строчные буквы.
Регистр значения не имеет, в том, что два идентификатора, отличающиеся только
случае идентичны.
Например, abcde, Abcde, AbCdE и ABCDE.
все относятся к одному и тому же идентификатору.
Системы схемы обычно печатают идентификатор либо в верхнем регистре,
или все строчные буквы независимо от способа ввода.
Структурированные формы и константы списка прилагаются
в круглых скобках, например, (a b c) или (* (- x 2) y).
Пустой список пишется().
Некоторые реализации позволяют использовать
скобки ( [ ] ) вместо
круглые скобки и квадратные скобки иногда используются для выделения конкретных
подвыражения для удобства чтения.
Логические значения, представляющие true и false
записываются как #t и #f.
Условные выражения схемы на самом деле интерпретируют #f как ложное и все
другие объекты как истинные.
Стандарт ANSI/IEEE требует, чтобы () и #f были
различные объекты, но пересмотренный отчет 4 позволяет им быть одинаковыми.
Если они одинаковы, () считается, естественно, ложным;
в противном случае это считается правдой.
Реализации схемы, в которых () и #f являются
один и тот же объект всегда выбирает тот или иной способ записи объекта, когда
он напечатан, что может привести к некоторой путанице.
В этой книге всегда используется () для пустого списка и #f
для ложного.
Векторы записываются так же, как списки, за исключением того, что они
предшествует # (и заканчивается ), например,
#(это вектор символов).
Строки заключаются в двойные кавычки, например,
«Я струна».
Символам предшествует #\, например, #\a.
Регистр важен в символьных и строковых константах, в отличие от
идентификаторы.
Числа могут быть записаны как целые числа, например, -123, как отношения, например, 1/2,
в числах с плавающей запятой или экспоненциальном представлении,
например, 1,3 или 1e23, или как комплексные числа в прямоугольной или полярной
обозначение, например, 1.3-2.7i или -1.2@73.
Подробная информация о синтаксисе для каждого типа
постоянных данных приведены в отдельных
разделы главы 6 и в формальном синтаксисе
Схема дана в конце книги.
Выражения схемы могут занимать несколько строк, и никакие явные
нужен терминатор.
Поскольку количество пробельных символов (пробелов и новых строк)
между выражениями нет
важно, программы Scheme обычно имеют отступ, чтобы показать структуру
кода так, как это удобно автору программы.
Комментарии могут появляться в любой строке программы Scheme между
точка с запятой ( ; ) и конец строки.
Комментарии, поясняющие конкретное выражение Схемы, обычно помещаются
на том же уровне отступа, что и выражение, на строке перед
выражение.
Комментарии, поясняющие процедуру или группу процедур, обычно
размещаются перед процедурами, без отступов.
Несколько символов комментария часто используются, чтобы выделить последний тип
комментарий, например, ;;; Следующие процедуры….
Раздел 1.2. Соглашения об именах схем
Соглашения об именах Scheme предназначены для обеспечения высокой степени
регулярности.
Ниже приведен список этих соглашений об именах:
- Имена предикатов заканчиваются на
вопросительный знак ( ? ).
Предикаты — это процедуры, возвращающие значение true или false.
ответ, например, eq?, zero? и string=?.
Общие числовые компараторы =, <, >, <=, и >= являются исключениями из этого правила. - Предикаты типа, такие как пара?, создаются из
имя типа, в данном случае пара, и вопросительный знак. - Имена большинства символов, строк и векторов
процедуры начинаются с префикса char-, string- и
вектор-, например, добавление строки.
(Имена некоторых списковых процедур начинаются с list-, но большинство
не.) - Имена процедур, преобразующих объект
одного типа в объект другого типа записываются как
тип 1 -> тип 2 ,
например, вектор->список. - Имена процедур и синтаксические формы
которые вызывают побочные эффекты, заканчивающиеся
восклицательный знак ( ! ).
К ним относятся комплект! и набор векторов!.
Процедуры, выполняющие ввод или вывод, технически вызывают побочные эффекты,
но их имена являются исключениями из этого правила.
Раздел 1.3. Типографские и условные обозначения
Часто говорят, что значение процедуры или синтаксической формы
быть неуказанный .
Это означает, что реализация может возвращать любой объект Scheme.
как значение процедуры или синтаксической формы.
Не рассчитывайте на то, что это значение будет одинаковым для разных реализаций, т.к.
одинакова в разных версиях одной и той же реализации или даже одинакова в разных версиях
два использования процедуры или синтаксической формы.
Некоторые системы Scheme обычно используют специальный объект для представления
неуказанные значения.
Печать этого объекта часто подавляется интерактивной схемой.
системы, чтобы значения выражений, возвращающих неуказанные значения,
не печатаются.
Выражения схемы обычно дают одно значение,
Хотя
механизм множественных значений, описанный в Разделе 5.8, позволяет
выражение для вычисления нуля или более чем одного значения.
Для упрощения изложения в этой книге обычно упоминается результат
выражение как отдельное значение, даже если выражение может фактически
оцениваются нулем или более чем одним значением.
В этой книге иногда говорится: «это ошибка» или «ошибка будет
просигнализировано» при описании обстоятельства, нарушающего правила
схемы.
То, что является ошибкой, недопустимо в схеме,
и поведение реализации Схемы в таком случае не
указано.
Сообщенная ошибка приводит к вызову зависящего от реализации
обработчик ошибок, который обычно приводит к выводу сообщения об ошибке
сброс системы интерактивного программирования или вход в
подсистема отладки.
Типографские соглашения, используемые в этой книге, просты.
Все объекты Схемы печатаются шрифтом пишущей машинки точно так же, как они
должны быть набраны на клавиатуре.
Сюда входят синтаксические ключевые слова, переменные, константы
объекты, выражения Scheme и примеры программ.
Шрифт курсив используется для выделения синтаксических переменных в
описания синтаксических форм и аргументов в описаниях
процедуры.
Курсив также используется для выделения технических терминов в первый раз.
появляться.
В общем, имена, написанные на машинке
шрифт никогда не пишется с заглавной буквы (даже в начале предложения).
То же верно и для синтаксических переменных, написанных курсивом.
В описании синтаксической формы или процедуры образец показывает
синтаксическая форма или применение процедуры.
Ключевое слово синтаксиса или имя процедуры дается шрифтом пишущей машинки,
как и скобки.
Остальные части синтаксиса или аргументы показаны курсивом,
используя имя, которое подразумевает тип ожидаемого выражения или аргумента
по синтаксической форме или процедуре.
Эллипсы используются для обозначения
ноль или более вхождений подвыражения или аргумента.
Например, (или exp .