Comments (4)
How about creating an external scheme function (in .scm file) that takes optional arguments, and call the appropriate primitive as needed?
from atomspace.
William's solution is the easiest, by far. That is, write a very small scheme wrapper (only 3-6 lines of scheme code) that takes an optional number of arguments, have it supply defaults for the missing values, and then always call C++ with a fixed number of arguments.
Example in next post ...
We need a version of cog-bind
which takes an optional integer N for the number of solutions N to return. Currently, we have cog-bind
, which returns all solutions (and may take too long, e.g. for the genetic data) The 'cog-single` accepts N but is hardwired for N=1.
from atomspace.
So for example, use C++ to define cog-fc-full
, and the in the (opencog query)
module, add something like this:
(define* (cog-fc arg-a #:optional opt-arg-b)
(if (not opt-arg-b) ;;; it arg-b is #f i.e. if arg-b is missing ...
(cog-fc-full arg-a 42) ; default arg-b is 42
(cog-fc-full arg-a opt-arg-b) ;; user supplied arg-b
))
this way, cog-fc
can be called with one or two args.
See https://www.gnu.org/software/guile/manual/html_node/lambda_002a-and-define_002a.html for details
from atomspace.
I found the best solution is to define dedicated functions for each rule-based system. For instance in the scm config file of PLN the following 2 functions are defined
(pln-fc source)
(pln-bc target)
from atomspace.
Related Issues (20)
- compiling scheme atomese HOT 1
- Possible erroneous behavior of BindLink HOT 6
- Pattern matcher fails on a query involving disjunction of virtual clauses HOT 6
- SchemeEval run smoothly on x64 and i386 but it crashes on armv7-a HOT 58
- Compile *.scm files and install the *.go files HOT 2
- Compile error on persist-file.scm HOT 2
- Python import error when atomspace module is not loaded before a module with custom Atom types HOT 2
- sparse pattern query does not allow nested spare terms.
- sparse query pattern performance
- Android port issues
- IdenticalLink fails to find all permutations.
- Re-implement PostgresStorageNode to work like RocksStoragenode
- glob interval not supporting disjoint unions HOT 7
- FloatValue Example gives exception HOT 2
- Update README: package cmake3 is missing in Ubuntu 22.10 repository but package cmake is there HOT 1
- Another FloatValue example HOT 4
- In proxy agent example, cog server hangs when using proxy HOT 7
- Atomspace build broken for ubuntu with ocaml installed. HOT 4
- Broken python bindings HOT 10
- Suggestion: Table of Contents for ram-cpu.pdf HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from atomspace.