<commit_before>; necessary bits of the language that aren't implemented by the interpreter
(intern-set 'define
  (syntax-rules ()
    ((_ mutable (funcname args ...) body ...)
     (intern-set mutable 'funcname
                    (lambda (args ...) body ...)))

    ((_ (funcname args ...) body ...)
     (intern-set 'funcname
                    (lambda (args ...) body ...)))

    ((_ mutable (funcname) body ...)
     (intern-set mutable 'funcname
                    (lambda () body ...)))

    ((_ (funcname) body ...)
     (intern-set 'funcname
                    (lambda () body ...)))

    ((_ mutable sym def)
     (intern-set mutable 'sym def))

    ((_ sym def)
     (intern-set 'sym def))

    ((_ sym)
     (intern-set 'sym 0))))

(define define-syntax define)

(define-syntax if
  (syntax-rules ()
    ((_ condition a else b)
     ((condition (lambda () a)
                 (lambda () b))))
    ((_ condition a b)
     ((condition (lambda () a)
                 (lambda () b))))))

(define help "To see the gojira scheme tutorial, visit https://example.com. To see the currently defined variables, try (stacktrace).")

(define not
  (lambda (x)
    (if x
      #f
      #t)))

; TODO: Fix symbol clashes between procedures and macro expansion
(define-syntax or
  (syntax-rules ()
    ((_ _op1_ _op2_)
     (if _op1_
       #t
       (if _op2_
         #t
         #f)))))

(define-syntax and
  (syntax-rules ()<commit_msg>Making 'or' and 'and' macros work with more than two arguments<commit_after>; necessary bits of the language that aren't implemented by the interpreter
(intern-set 'define
  (syntax-rules ()
    ((_ mutable (funcname args ...) body ...)
     (intern-set mutable 'funcname
                    (lambda (args ...) body ...)))

    ((_ (funcname args ...) body ...)
     (intern-set 'funcname
                    (lambda (args ...) body ...)))

    ((_ mutable (funcname) body ...)
     (intern-set mutable 'funcname
                    (lambda () body ...)))

    ((_ (funcname) body ...)
     (intern-set 'funcname
                    (lambda () body ...)))

    ((_ mutable sym def)
     (intern-set mutable 'sym def))

    ((_ sym def)
     (intern-set 'sym def))

    ((_ sym)
     (intern-set 'sym 0))))

(define define-syntax define)

(define-syntax if
  (syntax-rules ()
    ((_ condition a else b)
     ((condition (lambda () a)
                 (lambda () b))))
    ((_ condition a b)
     ((condition (lambda () a)
                 (lambda () b))))))

(define help "To see the gojira scheme tutorial, visit https://example.com. To see the currently defined variables, try (stacktrace).")

(define not
  (lambda (x)
    (if x
      #f
      #t)))

; TODO: Fix symbol clashes between procedures and macro expansion
(define-syntax or
  (syntax-rules ()
    ((_ _op1_ _op2_ more ...)
     (if _op1_
       #f
       (or _op2_ more ...)))

    ((_ _op1_ _op2_)
     (if _op1_
       #t
       (if _op2_
         #t
         #f)))))

(define-syntax and
  (syntax-rules ()
    ((_ _op1_ _op2_ more ...)
     (if _op1_
       (and _op2_ more ...)
       #f))

{'fraction_non_alphanumeric': 0.15568475452196381, 'fraction_numerical': 0.005813953488372093, 'mean_word_length': 1.8334858188472096, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5848987', 'n_tokens_mistral': 1008, 'n_tokens_neox': 941, 'n_words': 300}