Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Как это будет выглядет на VIP 6.X
Ответ
 
Опции темы Опции просмотра
  (#16 (permalink)) Старый
Сергей Пеньков Сергей Пеньков вне форума
Member
 
Сообщений: 351
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.06.2003
По умолчанию 11.10.2005, 23:04

Странная у Вас коммерция - находитесь в тупике больше недели и обсуждаете этот тупик.
Я понимаю стремление к красоте, однако красоту можно наводить, когда прототип работает и получено финансирование на продолжение.
Обычная прокладка на С работает всегда. Мне в свое время это потребовалось - заказал в PDC и с тех пор пользуюсь, как только возникает необходимоть общаться с COM (слва богу - не часто).
Того же и вам советую - напишите спеку, закажите, оплатите, получите (может быть даже и в течении часа) - и все дела.
Ведь проект-то (насколько я понимаю) коммерческий и предполагает различные расходы. Так что затраты в 100 долларов для будущего коммерческого продукта - я думаю, чепуха. Подумать только - какие-то 100 долларов - и коммерческий успех!
В PDC с этим спокойно справятся - я имею ввиду прокладку.
Ответить с цитированием
  (#17 (permalink)) Старый
imported_Black_Dragon imported_Black_Dragon вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.10.2005
По умолчанию 12.10.2005, 10:55

Всем привет.
раншье изал Турбо пролог 2.0
но вот юзаю VIP 6.2-6.3 (доки по нему нету)
но никак не могу компильнуть.
так как ругается на 631 ошибку:
т.е. предикат run явлеятеся детерминированым/и т.п., а не процедурой, а в run стоит вызов моего предиката, который методом возврата ищет решение
создовалось как консольное по умолчанию, добавил свое и поставил вызов.
а как справится с ошибкой никак не пойму, на сколько могу понять, нfljо поменять/переопределить тип run?

Код:
class predicates
    all function & procedure - nondeterm anyflow.
    start: ().

clauses
    start() :-... all function & procedure
         start().

    run():-
       console::init(),
       start().

...............

predicates
    run : core::runnable.
Ответить с цитированием
  (#18 (permalink)) Старый
HeiHeShang HeiHeShang вне форума
Member
 
Сообщений: 75
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.03.2005
По умолчанию Не спешу никуда. - 12.10.2005, 13:20

Цитата:
Originally posted by Сергей Пеньков
[b]Странная у Вас коммерция - находитесь в тупике больше недели и обсуждаете этот тупик.
Я понимаю стремление к красоте, однако красоту можно наводить, когда прототип работает и получено финансирование на продолжение.
Обычная прокладка на С работает всегда. Мне в свое время это потребовалось - заказал в PDC и с тех пор пользуюсь, как только возникает необходимоть общаться с COM (слва богу - не часто).
Того же и вам советую - напишите спеку, закажите, оплатите, получите (может быть даже и в течении часа) - и все дела.
Ведь проект-то (насколько я понимаю) коммерческий и предполагает различные расходы. Так что затраты в 100 долларов для будущего коммерческого продукта - я думаю, чепуха. Подумать только - какие-то 100 долларов - и коммерческий успех!
В PDC с этим спокойно справятся - я имею ввиду прокладку.
Пока спешить некуда, изучаю возможности, есть другие проекты, которые приносят деньги, а этот я финансирую из собственного кармана, поэтому и могу недельку другую поразбираться.
Ответить с цитированием
  (#19 (permalink)) Старый
VictorY VictorY вне форума
Member
 
Аватар для VictorY
 
Сообщений: 973
Сказал(а) спасибо: 0
Поблагодарили 43 раз(а) в 43 сообщениях
Регистрация: 10.02.2005
По умолчанию 12.10.2005, 13:54

Цитата:
Originally posted by Black_Dragon
[b]ругается на 631 ошибку:
т.е. предикат run явлеятеся детерминированым/и т.п., а не процедурой, а в run стоит вызов моего предиката, который методом возврата ищет решение

Код:
class predicates
    all function & procedure - nondeterm anyflow.
    start: ().

clauses
    start() :-... all function & procedure
         start().

    run():-
       console::init(),
       start().

...............

predicates
    run : core::runnable.
Run переопределять не надо. Надо, чтобы start стал бы процедурой.
проверьте, очевидно, по крайней мере один предикат, который вызывается в start, является детерминированным (может иметь значание fail).

Если Вы незнакомы с типами предикатов, то почитайте в Help
Predicate Mode (можно получить сюда доступ через поиск в Help, например слова "determ"). Если не читаете по-английски, то найдите книгу Адеменко и Кучукова по VIP5, там про это написано (по крайней мере, про признаки процедурности и детерминизма).
Ответить с цитированием
  (#20 (permalink)) Старый
imported_Black_Dragon imported_Black_Dragon вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.10.2005
По умолчанию 12.10.2005, 14:19

Цитата:
Originally posted by VictorY
[b]Run переопределять не надо. Надо, чтобы start стал бы процедурой.
проверьте, очевидно, по крайней мере один предикат, который вызывается в start, является детерминированным (может иметь значание fail).
Про пролог то я знаю

в том то и дело, что алгоритм детерменированый (бэктрейтинг используется для решения), т.е. конечные предикаты детерменированные.
а если их вызывает другой предикат (выше уровнем), то он может быть только детерменированым получается.
т.е. для run надо что start была процедрой, чтоб start была процедурой, надо чтоб и вызываемые ею предикаты тоже были процедурами, и т.д.
и в каком месте мне потом вклинить детерменированые предикаты то?

т.е. у меня напряг с типизацией, турбо у меня все ок работает.
Ответить с цитированием
Ads.
  (#21 (permalink)) Старый
VictorY VictorY вне форума
Member
 
Аватар для VictorY
 
Сообщений: 973
Сказал(а) спасибо: 0
Поблагодарили 43 раз(а) в 43 сообщениях
Регистрация: 10.02.2005
По умолчанию 12.10.2005, 14:58

Цитата:
Originally posted by Black_Dragon
[b]...т.е. для run надо что start была процедрой, чтоб start была процедурой, надо чтоб и вызываемые ею предикаты тоже были процедурами, и т.д.
и в каком месте мне потом вклинить детерменированые предикаты то?

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

Для VIP6 задачи условием нормального завершения является успешное завершение выполнения предиката run. Поэтому Ваш предикат start может иметь вид:

Код:
predicates
  неПораСпать:() determ ().
clauses 
   start() :-
        неПораСпать(),
        ...  %all function & procedure 
        !,
        start(). 
   start().
Ответить с цитированием
  (#22 (permalink)) Старый
imported_Black_Dragon imported_Black_Dragon вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.10.2005
По умолчанию 12.10.2005, 15:09

Цитата:
Originally posted by VictorY
[b]Для VIP6 задачи условием нормального завершения является успешное завершение выполнения предиката run. Поэтому Ваш предикат start может иметь вид:

Код:
predicates
  неПораСпать:() determ ().
clauses 
   start() :-
        неПораСпать(),
        ...  %all function & procedure 
        !,
        start(). 
   start().
у вас получилось:
start():- ....,!,start(). --- ???
start().
test1.pro(76,18) : error c631: The predicate 'test1::start/0', which is declared as 'procedure', is actually 'multi'

multi = {Succeed, BacktrackPoint}
Код:
clauses
  start() :-
        listi(5,Цвет),
        listi(5,Нац),
        listi(5,Напит),
        listi(5,Сигар),
        listi(5,Животн),
        compare(Цвет,Нац,Напит,Сигар,Животн),
        console::write(Цвет),
        console::write(Нац),
        console::write(Напит),
        console::write(Сигар),
        console::write(Животн).
  start().
кроме встроеных, все процедуры - nondeterm anyflow.
Ответить с цитированием
  (#23 (permalink)) Старый
VictorY VictorY вне форума
Member
 
Аватар для VictorY
 
Сообщений: 973
Сказал(а) спасибо: 0
Поблагодарили 43 раз(а) в 43 сообщениях
Регистрация: 10.02.2005
По умолчанию 12.10.2005, 17:00

Цитата:
у вас получилось:

Код:
start():- ....,!,start(). --- ???
start().
test1.pro(76,18) : error c631: The predicate 'test1::start/0', which is declared as 'procedure', is actually 'multi'
А что, кроме рекурсивного вызова, можно предположить, глядя на

Код:
clauses 
   start() :-... all function & procedure 
         start().
???

Цитата:
Код:
clauses
  start() :-
        listi(5,Цвет),
        listi(5,Нац),
        listi(5,Напит),
        listi(5,Сигар),
        listi(5,Животн),
        compare(Цвет,Нац,Напит,Сигар,Животн),
        console::write(Цвет),
        console::write(Нац),
        console::write(Напит),
        console::write(Сигар),
        console::write(Животн).
  start().
кроме встроеных, все процедуры - nondeterm anyflow.
Извините, к особенностям VIP6 это не относится.
Как организовать поиск всех решений и чтобы start был бы процедурой - здесь, я думаю, Аlison или Винитарх вам лучше подскажут.
Ответить с цитированием
  (#24 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,864
Сказал(а) спасибо: 2
Поблагодарили 287 раз(а) в 287 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 13.10.2005, 01:24

VictorY пишет:
Цитата:
Извините, к особенностям VIP6 это не относится.
По моему, обязательная "процедурность" цели как раз и является особенностью VIP6 по отношению к ранним версиям.

VictorY пишет:
Цитата:
Как организовать поиск всех решений и чтобы start был бы процедурой - здесь, я думаю, Аlison или Винитарх вам лучше подскажут.
Некисло Вы стрелку перевели. Вот скорая помощь (см. последнее сообщение): http://www.progz.ru/forum/viewtopic.php?t=...=11193&start=15
Ответить с цитированием
Ads
  (#25 (permalink)) Старый
imported_Black_Dragon imported_Black_Dragon вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.10.2005
По умолчанию 13.10.2005, 07:24

Цитата:
Originally posted by Винитарх
[b]Вот скорая помощь (см. последнее сообщение): http://www.progz.ru/forum/viewtopic.php?t=...=11193&start=15
Спасибо
т.е. в любом случае надо делать так:
start(...) :- ....,!.
start(...).
?

А чего это они в 6.х такую фишку замутили то?

ЗЫ: моя прога в 6.2 вызывала сбой при компиляции (компиляция застривала и начиналось огромное поедание памяти, рубил на 2гигах) , отправил им баг репорт, с 6.3 этого уже нет
Ответить с цитированием
  (#26 (permalink)) Старый
VictorY VictorY вне форума
Member
 
Аватар для VictorY
 
Сообщений: 973
Сказал(а) спасибо: 0
Поблагодарили 43 раз(а) в 43 сообщениях
Регистрация: 10.02.2005
По умолчанию 13.10.2005, 12:03

Цитата:
Originally posted by Винитарх
[b]По моему, обязательная "процедурность" цели как раз и является особенностью VIP6 по отношению к ранним версиям. Некисло Вы стрелку перевели.
Согласен


Цитата:
Originally posted by Black_Dragon
[b]Спасибо
т.е. в любом случае надо делать так:
start(...) :- ....,!.
start(...).
?
Да нет, лучше уж вот так (если не вдаваться в подробности по части оптимизации и изящности кода):

Код:
clauses 
  start() :- 
        listi(5,Цвет), 
        listi(5,Нац), 
        listi(5,Напит), 
        listi(5,Сигар), 
        listi(5,Животн), 
        compare(Цвет,Нац,Напит,Сигар,Животн), 
        console::write(Цвет), 
        console::write(Нац), 
        console::write(Напит), 
        console::write(Сигар), 
        console::write(Животн),
        fail. 
  start().
Ответить с цитированием
  (#27 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,771
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 13.10.2005, 12:07

Цитата:
Некисло Вы стрелку перевели. Вот скорая помощь (см. последнее сообщение):http://www.progz.ru/forum/viewtopic....11193&start=15
Винитарх, спасибо за всегда полезные сведения.
Но, по-моему, VictorY имел в виду советы вроде того, что надо собрать все решения findall'ом и проч.

Пока писала, VictorY уже ответил.
Ответить с цитированием
  (#28 (permalink)) Старый
imported_Black_Dragon imported_Black_Dragon вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.10.2005
По умолчанию 13.10.2005, 12:12

Цитата:
Originally posted by VictorY
[b]Да нет, лучше уж вот так (если не вдаваться в подробности по части оптимизации и изящности кода):
а смысл?
Ответить с цитированием
  (#29 (permalink)) Старый
VictorY VictorY вне форума
Member
 
Аватар для VictorY
 
Сообщений: 973
Сказал(а) спасибо: 0
Поблагодарили 43 раз(а) в 43 сообщениях
Регистрация: 10.02.2005
По умолчанию 13.10.2005, 13:00

Цитата:
Originally posted by Black_Dragon+-->
Цитата:
<!--QuoteBegin-VictorY
Цитата:
[b]Да нет, лучше уж вот так (если не вдаваться в подробности по части оптимизации и изящности кода):
а смысл?
Перебор и распечатка всех вариантов решений (если уж они у Вас недетерминированные).
Ответить с цитированием
  (#30 (permalink)) Старый
imported_Black_Dragon imported_Black_Dragon вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.10.2005
По умолчанию 13.10.2005, 13:13

Цитата:
Originally posted by VictorY
[b]Перебор и распечатка всех вариантов решений (если уж они у Вас недетерминированные).
Ааа, эт я и так знал, думал для чего-то особенного
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Blu Ray читать будет? f17 Периферия 3 17.01.2012 22:31
Будет ли 120Гц? RITSU Мониторы 2 20.12.2011 21:30
будет ли все нормально??? Пархоменко Вадим Память 3 22.08.2011 14:17
Будет ли работать?) Lifehacker Подбор комплектующих 1 29.06.2011 22:06
Будет ли работать? Lucky Системный блок 9 04.06.2011 13:55
Будет ли работать? Петька Системный блок 14 09.02.2011 15:59
Что будет лучше? IVladJ Любые вопросы от новичков 7 05.11.2010 14:41
Будет ли работать ? витёк Оценка конфигурации 0 04.10.2010 18:14
Будет ли это работать ? и если будет то как ? Александр3 Любые вопросы от новичков 3 22.09.2010 19:21
что будет если..... Redrik Shuhart Моддинг 4 28.02.2009 22:57
Netscape'а не будет! Кошмар Новости 0 29.12.2007 22:58



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов