Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Branch: master
Commits on Mar 10, 2015
  1. Switch to Unlicense

    authored
  2. Create LICENSE

    authored
Commits on Jun 18, 2013
  1. Bump version

    authored
  2. Ignore gift-generated tar balls

    authored
  3. Add library(tap) tests

    authored
    These small tests cover those situations described and modeled in the
    documentation.  I want to be sure that our publicly advertised
    examples work correctly.
  4. Explicitly import lists:append/3

    authored
    Without the import, SWI-Prolog occasionally produced errors like:
    
        PROLOG SYSTEM ERROR:  Thread 1 trapUndefined(): undefined:
        function_expansion:append/3
    
    Explicitly importing the predicate solves the problem.  I assume this
    has something to do with autoloading during term/goal expansion.  That
    environment is somewhat fragile.
Commits on Jun 12, 2013
  1. Modernize pack layout

    authored
  2. Bump version

    authored
  3. Explicitly import exclude/3

    authored
    I sometimes get the following error:
    
        [PROLOG SYSTEM ERROR:  Thread 1
            trapUndefined(): undefined: function_expansion:exclude/3
    
        PROLOG STACK:
    
    So make sure that exclude/3 is properly defined in the function_expansion
    module.
Commits on Jan 22, 2013
  1. Correct a small comment typo

    authored
Commits on Jan 18, 2013
  1. Point README at full docs

    authored
  2. Add module documentation

    authored
  3. Move manual_test.pl so it's not documented

    authored
    This file is strictly for my own testing purposes.  It shouldn't be
    documented by PlDoc.
  4. Omit guards which are always true

    authored
    function_expansion can be used to expand mathematical constants in
    place.  In that scenario, there's no need for a guard, so one should
    use =true= as the guard.  There's no reason to include that guard in
    the macro expansion, so it's omitted.  Other non-trivial guards are
    retained.
  5. Clean up module code

    authored
    Remove some dead code that wasn't used at all anymore.  Move some
    manual testing code to a separate file.
  6. Add some documentation

    authored
    While documenting how function_expansion behaves, I wrote a small
    example and that example didn't work.  The old code tried to expand
    double(X) which has a variable inside so ground/1 failed.  I want
    nonvar/1 which allows for internal variables.  Those internal
    variables will often be matched by the function_expansion rule.  See
    ex below for an example.
Commits on Jan 12, 2013
  1. Working prototype

    authored
    This version correctly expands functions nested inside a goal.  I need
    to clean up this code and see if there's a way to substantially
    simplify it.  It seems like there must be.
    
    One place to start would be to create change_args(F, Term0, Term) which
    encapsulates this pattern:
    
        Term0 =.. [Functor|Args0],
        call(F, Args0, Args),
        Term =.. [Functor|Args],
    
    I use that pattern at least twice here.
Commits on Jan 11, 2013
  1. Explain xfy_list to myself

    authored
    The entire prototype is still very rough since it doesn't expand
    functions nested inside terms that are inside goals.
  2. First prototype

    authored
Something went wrong with that request. Please try again.