Skip to content

Releases: tfeb/tfeb-lisp-hax

Vector accumulators

11 Jul 09:58
v10.6.0
Compare
Choose a tag to compare

This adds with-vector-accumulators to collecting.

Fix a typo in 10.5.0

24 Jun 11:48
v10.5.1
Compare
Choose a tag to compare
v10.5.1

Bug fix to 10.5.0 (typo)

Some enhancements to collectors

23 Jun 09:45
v10.5.0
Compare
Choose a tag to compare

There is now collector-empty-p and pop-collector: these enable collectors to be used as queues.

let-values: allow fallback cases

09 Jun 09:04
v10.4.0
Compare
Choose a tag to compare

Previously let-values didn't allow cases which looked like plain let: now it does. There's no point in not allowing them and they might save indentation.

Utilities: symbolify

28 Feb 13:11
v10.3.0
Compare
Choose a tag to compare

symbolify makes symbols from concatenated string designators. It avoids the nightmare of (make-symbol (concatenate 'string (symbol-name s) "-P")) and (intern (make-symbol (concatenate 'string (symbol-name s) "-P"))) which tends to pervade complicated macros.

object-accessors: named array element access

06 Feb 14:16
v10.2.0
Compare
Choose a tag to compare

with-named-array-references provides a way of giving names to elements of an array. This is a substrate on which you can map 'structures' onto chunks of an array, which is useful for fast but readable floating-point code.

parse-docstring-body from the utilities is also now correct, or less incorrect.

let-values is better, process-declarations has a macro

08 Jan 14:43
v10.1.0
Compare
Choose a tag to compare

let-values now avoids rebinding in sequential forms, which can avoid unused variables in cases like

(let*-values (((a b) ...)
              ((c d) (f a b)))
  ... don't use a and b ...)

process-declarations has a new processing-declaration-specifier macro which makes things a little nicer. It is still unstable. let-values uses process-declarations for its declaration processing now.

A possibly-unstable process-declarations hack

25 Dec 14:48
v10.0.0
Compare
Choose a tag to compare

I'm just adding this now so other things can depend on it. The interface may be OK but I'm not sure.

let-values

20 Dec 09:00
v9.0.0
Compare
Choose a tag to compare

let-values provides four let-style macros which work with multiple values.

  • let-values and let*-values are like let and let* respectively
  • let-values* and let*-values* have semantics like multiple-value-call: they take all the values from a number of initforms and use them, in parallel and sequentially respectively.

As an example of let-values*

> (let-values* (((a b c) (values 1 2) 3))
    (+ a b c))
6

There are also improvements to valid-type-specifier-p: it now works by checking that typep can't signal an error, which I think can't be evaded the way SBCL evades things with subtypep.

Utilities: valid-type-specifier-p

13 Dec 12:25
v8.8.0
Compare
Choose a tag to compare

There's a function, valid-type-specifier-p which attempts (and perhaps actually does) answer the question 'is something a valid type specifier?'. It is as horrible as you would expect.