Аватар для persej
4 / 4 / 3
Регистрация: 26.11.2014
Сообщений: 89

SWI Prolog " ERROR: Type error: `dict' expected, found `s140_1' (an atom)"

15.09.2017, 05:32. Показов 3961. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В SWI Prolog выскакивает ошибка " ERROR: Type error: `dict' expected, found `s140_1' (an atom)".
А должно выводится в терминале:
dd.
ddf.
dfdfd.
dfdf.
dd.

в s140_1.pl уберал точки, результат тотже. Писал что вроде p(1). , ошибка не исчезла.

Вводил в терминале и выход:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
?- chdir('/home/persej/АлгоритмыИскусственногоИнтеллектаНаЯзыкеPROLOG').
true.
 
?- [s140].
true.
 
?- findterm.
ERROR: Type error: `dict' expected, found `s140_1' (an atom)
ERROR: In:
ERROR:   [11] throw(error(type_error(dict,s140_1),_6718))
ERROR:    [9] '$dicts':'.'(s140_1,pl,_6758) at /usr/lib/swi-prolog/boot/dicts.pl:46
ERROR:    [8] findterm at /home/persej/АлгоритмыИскусственногоИнтеллектаНаЯзыкеPROLOG/s140.pl:2
ERROR:    [7] <user>
ERROR: 
ERROR: Note: some frames are missing due to last-call optimization.
ERROR: Re-run your program in debug mode (:- debug.) to get more detail.
?-
s140.pl
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
findterm:-
    see(s140_1.pl),
    processfile,
    see(user). 
 
processfile:-
    read(Term),nl,% Чтение, при условии, что Term - не переменная
    write(Term),nl,
    processfile.
    %process( Term).
 
/*
process( end_of_file) :- !. % Вся работа выполнена
process(Term) :-
    treat( Term),% Обработать текущий элемент
    processfile.% Обработать остальную часть файла
*/
s140_1.pl
Prolog
1
2
3
4
5
6
gg.
dd.
ddf.
dfdfd.
dfdf.
dd.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.09.2017, 05:32
Ответы с готовыми решениями:

Ошибка error: ./SDK/SDK.h:11:37: error: expected constructor, destructor, or type conversion before '(' token
Возникает такая ошибка при компиляции, в коде особо не разбираюсь, прошу помочь, вот код: //============== Copyright © 2010 IV:MP...

Пишет source.pas(6,94) Fatal: Syntax error, ")" expected but "," found Error: /usr/bin/ppcx
uses crt; const a:array of string=('Хорошо','Плохо'); const b:array of string=('Что-нибудь нарядное', 'Что-то удобное'); const...

Syntax error: Operator priority clash SWI-Prolog
Здравствуйте все, Пишу мини экспертную систему по комбинированию костюма рубашки и галстука.использую для этого SWI-Prolog. ВО время...

6
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
15.09.2017, 07:02
persej,
Prolog
1
    see('s140_1.pl'),
Но в таком усечённом виде лучше не запускать - убил только вместе с прологом.
Бесконечно гонит end_of_file.
0
 Аватар для persej
4 / 4 / 3
Регистрация: 26.11.2014
Сообщений: 89
15.09.2017, 07:39  [ТС]
А что делать?

Добавлено через 7 минут
Переделал s140.pl:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
findterm:-
    see(s140_1.pl),
    processfile,
    see(user). 
 
processfile:-
    read(Term),nl,% Чтение, при условии, что Term - не переменная
    %write(Term),nl,
    %processfile.
    process( Term).
 
 
process( end_of_file) :- !. % Вся работа выполнена
process(Term) :-
    write( Term),nl,% Обработать текущий элемент
    processfile.% Обработать остальную часть файла
Работа в консоли:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
?- [s140].
true.
 
?- findterm.
ERROR: Type error: `dict' expected, found `s140_1' (an atom)
ERROR: In:
ERROR:   [11] throw(error(type_error(dict,s140_1),_7750))
ERROR:    [8] findterm at /home/persej/АлгоритмыИскусственногоИнтеллектаНаЯзыкеPROLOG/s140.pl:2
ERROR:    [7] <user>
ERROR: 
ERROR: Note: some frames are missing due to last-call optimization.
ERROR: Re-run your program in debug mode (:- debug.) to get more detail.
?-
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
15.09.2017, 08:34
Лучший ответ Сообщение было отмечено persej как решение

Решение

Разница между Вашим кодом и той строчкой, которую Вам написал я
Цитата Сообщение от Black Fregat Посмотреть сообщение
Prolog
1
    see('s140_1.pl'),
состоит в наличии апострофов вокруг имени файла.

И вместо see(user) лучше поставьте seen()
0
 Аватар для persej
4 / 4 / 3
Регистрация: 26.11.2014
Сообщений: 89
15.09.2017, 10:11  [ТС]
Изменил на see('s140_1.pl'),

Консоль:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
?- [s140].
true.
 
?- findterm.
 
gg
 
dd
 
ddf
 
dfdfd
 
dfdf
 
dd
 
true.
 
?-
все заработало!!.

Но второй и третий запуск дали:

Bash
1
2
3
4
5
6
7
8
?- [s140].
true.
 
?- findterm.
 
true.
 
?-
и никаких термов...

когда заменил на seen().

терминал:
Bash
1
2
3
4
5
6
7
8
[s140].
true.
 
?- findterm.
 
true.
 
?-
все равно не печатаются термы.

Добавлено через 5 минут
Через некоторое время повторные команды дали нужный результат.
Консоль:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
?- [s140].
true.
 
?- findterm.
 
gg
 
dd
 
ddf
 
dfdfd
 
dfdf
 
dd
 
true.
 
?- findterm.
 
gg
 
dd
 
ddf
 
dfdfd
 
dfdf
 
dd
 
true.
 
?-
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
15.09.2017, 10:15
Терпения не хватило Второй запуск с seen() должен пройти успешно.

Смысл происходящего: без seen() файл не закрывается, соответственно, каждый следующий запуск в пределах одного сеанса пытается читать с той точки, где остановился в прошлый раз. То есть, в нашем случае, второй и все последующие запуски - прямо с конца файла.

После того, как поставили seen(), произойдёт тоже самое, а только потом, в конце, отработает seen(). И дальше будет нормально.
0
 Аватар для persej
4 / 4 / 3
Регистрация: 26.11.2014
Сообщений: 89
15.09.2017, 11:24  [ТС]
Спасибо, все работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.09.2017, 11:24
Помогаю со студенческими работами здесь

[Error] Unit1.pas(1280): '.' expected but ';' found
подскажите что не так в этой функции function SHRegGetPath(hkey:HKEY; pszSubKey:PChar; pszValue:PChar; pszPath:PChar;...

[C++ Error] LikarnyaClass.h(28): E2303 Type name expected
Здравствуйте не могу понять как это исправить, может кто помочь и обьяснить что бы потом не было таких ошибок. Вот код:

[C++ Error] Unit7.h(26): E2303 Type name expected
.h #ifndef Unit7H #define Unit7H //--------------------------------------------------------------------------- #include...

[C++ Error] Unit2.h(11): E2303 Type name expected
Добрый день, помогите решить проблему, вечная ошибка с которой у меня проблемы( Unit2.h(11): E2303 Type name expected Unit2.h(11):...

[Error] Unit6.pas(73): Statement expected but 'PROCEDURE' found
Как исправить ошибку? unit Unit6; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Batch Transform и Batch Gizmo Drawing API в Unity
GameUnited 20.04.2025
В мире разработки игр и приложений на Unity производительность всегда была критическим фактором успеха. Создатели игр постоянно балансируют между визуальной привлекательностью и плавностью работы. . .
Звук в Unity: Рандомизация с Audio Random Container
GameUnited 20.04.2025
В современных играх звуковое оформление часто становится элементом, который либо полностью погружает игрока в виртуальный мир, либо разрушает атмосферу за считанные минуты. Представьте: вы исследуете. . .
Максимальная производительность C#: Советы, тестирование и заключение
stackOverflow 20.04.2025
Погружение в мир микрооптимизаций C# открывает перед разработчиком целый арсенал мощных техник. Но как определить, где и когда их применять? Ответ начинается с точных измерений и профилирования. . . .
Максимальная производительность C#: Предсказание ветвлений
stackOverflow 20.04.2025
Третий ключевой аспект низкоуровневой оптимизации — предсказание ветвлений. Эта тема менее известна среди разработчиков, но её влияние на производительность может быть колоссальным. Чтобы понять. . .
Максимальная производительность C#: Векторизация (SIMD)
stackOverflow 20.04.2025
Помимо работы с кэшем, другим ключевым аспектом низкоуровневой оптимизации является векторизация вычислений. SIMD (Single Instruction, Multiple Data) позволяет обрабатывать несколько элементов данных. . .
Максимальная производительность C#: Процессорный кэш
stackOverflow 20.04.2025
Знакомство с внутренним устройством процессорного кэша — ключевой шаг в написании по-настоящему быстрого кода на C#. Этот слой архитектуры компьютера часто ускользает от внимания разработчиков, но. . .
Максимальная производительность C#: Введение в микрооптимизации
stackOverflow 20.04.2025
В мире разработки на C# многие привыкли полагаться на . NET Runtime, который "магическим образом" сам оптимизирует код. И часто это работает - современные JIT-компиляторы творят чудеса. Но когда речь. . .
MVC фреймворк в PHP
Jason-Webb 19.04.2025
Архитектурный паттерн Model-View-Controller (MVC) – это не просто модный термин из мира веб-разработки. Для PHP-программистов это фундаментальный подход к организации кода, который радикально меняет. . .
Dictionary Comprehensions в Python
py-thonny 19.04.2025
Python славится своей выразительностью и лаконичностью, что позволяет писать чистый и понятный код. Среди множества синтаксических конструкций языка особое место занимают словарные включения. . .
Шаблоны и протоколы для создания устойчивых микросервисов
ArchitectMsa 19.04.2025
Микросервисы — архитектурный подход, разбивающий сложные приложения на небольшие, независимые компоненты. Вместо монолитного гиганта, система превращается в созвездие небольших взаимодействующих. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru