Giter Club home page Giter Club logo

abap_scheme's People

Contributors

larshp avatar nomssi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

abap_scheme's Issues

Implement apply

from R6RS
(apply proc arg1 . . . rest-args)

Rest-args must be a list. Proc should accept n arguments, where n is number of args plus the length of rest-args. The apply procedure calls proc with the elements of the list
(append (list arg1 . . . ) rest-args )
as the actual arguments.

Internal declarations

in R7RS, a body is made of 0 or more declarations followed by expressions, so

  • internal defines must be placed before any expression
  • multiple define for the same variable are not allowed.

So the following programs should be wrong:

  (define (foo)
    (display 1)       ; not allowed before define
    (define bar 1)
    bar)

  (define (foo)
    (define bar 1)
    (define bar 2)   ; redefinition not allowe
    bar)

Top-level definitions do not have this restriction.

Input / Output

ports, input, output
Create classes implementing different input/output port:

  • from file
  • from CL_DEMO_OUTPUT

Enable selection/switch between console implementations - to be extended to accept opt. parameter

(display obj)
(display obj port)

(write obj)
(write obj port)

(newline)
(newline port)

(input-port? obj)
(output-port? obj)
(textal-port? obj)
(binary-port? obj)
(port? obj)

(input-port-open? obj)
(output-port-open? obj)

(current-input-port)
(current-output-port)
(current-error-port)

(close-port port)
(close-input-port port)
(close-output-port port)

(open-input-string string)
(open-output-string)
(get-output-string port)

;; deferred to new issue
(parameterize
((current-output-port
(open-output-string)))
(display "piece")
(display " by piece ")
(display "by piece.")
(newline)
(get-output-string (current-output-port)))
=โ‡’ "piece by piece by piece.\n"

(read)
(read port)

(read-char)
(read-char port)

(peek-char)
(peek-char port)

(char-ready?)
(char-rea

implement do special form

Iterations are already possible with named let,
TO DO: do special form

    (do (( <variable1> <init1> <step1>) 
    . . . )
    (<testi> <expressioni> . . . )
    <commandi> . . . )

Scheme Identifier

||
|HelloWorld| are valid identifier that are not recognized by the parser yet

Implement named let

(let ''name'' (''bindings'') ''body'')

e.g.

  (let sum ((lst (list 1 2 3))
            (s 0))
    (if (null? lst)
        s
        (sum (cdr lst) (+ s (car lst)))))

quasiquoting

TO DO:

  • quasiquote ` (currently works as quote ')
  • unquote ,
  • unquote-splicing ,@

Limit execution time of Evaluation

The developer should be able to define a maximal execution time for any ABAP Scheme Evaluation. If the time needed is larger, a TIME_OUT should occurs within the Workbench without ABAP Short Dump

ABAP Unit can also Limit the execution time of an ABAP Unit test. This is the functionality to replicate

Class CL_AUNIT_CLASSTEST_SESSIONFE
Method __CANCEL_RFC

Missing TCO

Tail Cail Optimization is not supported yet

Parameter Objects

(parameterize
((current-output-port
(open-output-string)))
(display "piece")
(display " by piece ")
(display "by piece.")
(newline)
(get-output-string (current-output-port)))
=โ‡’ "piece by piece by piece.\n"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.