• Places
    • Home
    • Graphs
    • Prefixes
  • Amalgame
    • Alignment interface
    • Vocabulary browser
  • Admin
    • Users
    • Settings
    • Plugins
    • Statistics
  • Repository
    • Load local file
    • Load from HTTP
    • Load from library
    • Remove triples
    • Clear repository
  • Query
    • YASGUI SPARQL Editor
    • Simple Form
  • Help
    • Documentation
    • Tutorial
    • Roadmap
    • HTTP Services
  • Login

A.49 library(terms): Term manipulation
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
      • The SWI-Prolog library
        • library(terms): Term manipulation
          • term_size/2
          • variant/2
          • subsumes_chk/2
          • subsumes/2
          • term_subsumer/3
          • term_factorized/3
          • mapargs/3
          • mapsubterms/3
          • same_functor/2
          • same_functor/3
          • same_functor/4
    • Packages
Availability::- use_module(library(terms)).(can be autoloaded)
Source[det]mapsubterms(:Goal, +Term1, -Term2)
Recursively map sub terms of Term1 into subterms of Term2 for every pair for which call(Goal, ST1, ST2) succeeds. Procedurably, the mapping for each (sub) term pair T1/T2 is defined as:

  • If T1 is a variable, Unify T2 with T1.
  • If call(Goal, T1, T2) succeeds we are done. Note that the mapping does not continue in T2. If this is desired, Goal must call mapsubterms/3 explicitly as part of it conversion.
  • If T1 is a dict, map all values, i.e., the tag and keys are left untouched.
  • If T1 is a list, map all elements, i.e., the list structure is left untouched.
  • If T1 is a compound, use same_functor/3 to instantiate T2 and recurse over the term arguments left to right.
  • Otherwise T2 is unified with T1.
ClioPatria (version no GIT?)