1

私はプロローグが初めてです。Prolog は宣言型言語ですが、C と同じように汎用プログラミング言語として使用できることを学びました。したがって、C で解決できる問題はすべて、Prolog でも実行可能であっても解決できます。時間はあまり良くないかもしれません。プロローグには (私が知る限り) ポインターがないため、C で記述された次のコードに対してプロローグで同等のプログラムを記述できるかどうか疑問に思っています:-

#include <stdio.h>

int main()
{
    int a = 5;
    int *p;
    p = &a;
    printf("The address of a is %d.", p);
    return 0;
}
4

3 に答える 3

1

というタグを付けたので、Qt GUI オブジェクト (ポインターだけですよね...) を Prolog エンジンと交換するために使用したコードを示すことができます。

/** get back an object passed by pointer to Prolog */
template<typename Obj> Obj* pq_cast(T ptr) {
  return static_cast<Obj*>(static_cast<void*>(ptr));
}

たとえばswipl-winで使用されます。ここで、_read_fは実際には C コールバックです。

/** fill the buffer */
ssize_t Swipl_IO::_read_f(void *handle, char *buf, size_t bufsize) {
    auto e = pq_cast<Swipl_IO>(handle);
    return e->_read_(buf, bufsize);

swipl-win は、SWI-Prolog の新しいコンソールとしての道を見つけました。

于 2013-08-30T16:09:40.617 に答える