Plaster
New
List
Login
text
apl
aspx
asterisk
brainfuck
c
c++hdr
c++src
cassandra
ceylon
clojure
clojurescript
cmake
cobol
coffeescript
common-lisp
crystal
csharp
css
cypher-query
cython
d
dart
diff
django
dockerfile
dylan
ebnf
ecl
ecmascript
edn
eiffel
ejs
elm
erb
erlang
ez80
factor
fcl
feature
forth
fortran
fragment
gfm
go
gql
groovy
gss
haml
handlebars-template
haskell
haxe
hive
html
http
httpd-php
httpd-php-open
hxml
ini
java
javascript
json
jsp
jsx
julia
kotlin
latex
less
literate-haskell
lua
mariadb
markdown
mbox
mirc
mscgen
msgenny
mssql
mumps
mysql
n-triples
nesc
nginx-conf
nsis
objectivec
octave
oz
pascal
perl
pgp
pgp-keys
pgp-signature
pgsql
php
pig
plsql
properties
protobuf
puppet
python
q
rpm-changes
rpm-spec
rsrc
ruby
rustsrc
sas
sass
scala
scheme
scss
sieve
slim
smarty
solr
soy
sparql-query
spreadsheet
sql
squirrel
stex
styl
swift
systemverilog
tcl
textile
tiddlywiki
tiki
tlv
tornado
ttcn-asn
ttcn-cfg
turtle
twig
typescript
typescript-jsx
vb
vbscript
velocity
verilog
vertex
vhdl
vue
webidl
xml
xml-dtd
xquery
xu
yaml
z80
default
Visibility:
public
unlisted
private
(defun compose-sorting-predicates (predicate &rest more-predicates) (if (null more-predicates) predicate (let ((later< (apply #'compose-sorting-predicates more-predicates))) (lambda (a b) (cond ((funcall predicate a b) t) ((funcall predicate b a) nil) (t (funcall later< a b))))))) (defparameter *l* (list (cons 1 2) (cons 0 4) (cons 1 0) (cons 1 4) (cons 5 0) (cons 3 4))) (defun car< (a b) (< (car a) (car b))) (defun cdr< (a b) (< (cdr a) (cdr b))) (print (sort (copy-list *l*) (compose-sorting-predicates #'car< #'cdr<))) (defun keypose (function key) (lambda (&rest args) (apply function (mapcar key args)))) (defun keypose2 (function key) (lambda (a b) (funcall function (funcall key a) (funcall key b)))) (print (sort (copy-list *l*) (compose-sorting-predicates (keypose #'< #'cdr) (keypose #'< #'car)))) (defpackage a (:export :a :b :c)) (defpackage b (:export :a :b :c)) (print (sort (list 'a:a 'b:b 'a:c 'b:a) (compose-sorting-predicates (keypose2 #'string< (alexandria:compose #'package-name #'symbol-package)) (keypose2 #'string< #'symbol-name))))