GithubHelp home page GithubHelp logo

hexstream / place-modifiers Goto Github PK

View Code? Open in Web Editor NEW
6.0 4.0 0.0 68 KB

place-modifiers essentially gives access to hundreds of modify-macros through one single macro: MODIFY.

Home Page: https://www.hexstreamsoft.com/libraries/place-modifiers/

License: The Unlicense

Common Lisp 100.00%
common-lisp library macro public-domain

place-modifiers's Introduction

place-modifiers's People

Contributors

hexstream avatar

Stargazers

YoungChief avatar  avatar Anton Vodonosov avatar Mark Safronov avatar Juanito Fatas avatar  avatar

Watchers

 avatar Sergey Katrevich avatar James Cloos avatar  avatar

place-modifiers's Issues

Support sort function

This does not work:

POFTHEDAY> (place-modifiers:modify
            (sort (gethash :some (slot-value obj 'bar))
                  #'<))
; Debugger entered on #<SB-PCL::NO-APPLICABLE-METHOD-ERROR {1009FAE2D3}>

backtrace:

There is no applicable method for the generic function
  #<STANDARD-GENERIC-FUNCTION PLACE-MODIFIERS:INCONCEIVABLE-PLACE-P (1)>
when called with arguments
  (NIL).
   [Condition of type SB-PCL::NO-APPLICABLE-METHOD-ERROR]

Restarts:
 0: [RETRY] Retry calling the generic function.
 1: [RETRY] Retry SLY mREPL evaluation request.
 2: [*ABORT] Return to SLY's top level.
 3: [ABORT] abort thread (#<THREAD "sly-channel-1-mrepl-remote-1" RUNNING {100357CD53}>)

Backtrace:
 0: ((:METHOD NO-APPLICABLE-METHOD (T)) #<STANDARD-GENERIC-FUNCTION PLACE-MODIFIERS:INCONCEIVABLE-PLACE-P (1)> NIL) [fast-method]
 1: (SB-PCL::CALL-NO-APPLICABLE-METHOD #<STANDARD-GENERIC-FUNCTION PLACE-MODIFIERS:INCONCEIVABLE-PLACE-P (1)> (NIL))
 2: (PLACE-MODIFIERS::%ANALYZE (SORT (GETHASH :SOME (SLOT-VALUE OBJ #)) (FUNCTION <)) :ON-PME #<CLOSURE (LAMBDA (PLACE-MODIFIERS::PME &REST PLACE-MODIFIERS::OTHER-ARGS) :IN PLACE-MODIFIERS::%EXPAND) {100B..
      Locals:
        #:.DEFAULTING-TEMP. = #<CLOSURE (LAMBDA (PLACE-MODIFIERS::PME &REST PLACE-MODIFIERS::OTHER-ARGS) :IN PLACE-MODIFIERS::%EXPAND) {100B04C77B}>
        #:.DEFAULTING-TEMP.#1 = #<FUNCTION (LAMBDA (PLACE-MODIFIERS::PLACE) :IN PLACE-MODIFIERS::%EXPAND) {22650B4B}>
        #:.DEFAULTING-TEMP.#2 = #<CLOSURE (LAMBDA (PLACE-MODIFIERS::AMBIGUOUS PLACE-MODIFIERS::PM-INFO PLACE-MODIFIERS::VARIANT) :IN PLACE-MODIFIERS::%EXPAND) {100B04C79B}>
        #:.DEFAULTING-TEMP.#3 = #<FUNCTION (LAMBDA (PLACE-MODIFIERS::PLACE) :IN PLACE-MODIFIERS::%EXPAND) {22650B4B}>
        #:N-SUPPLIED-0 = 1
        #:N-SUPPLIED-1 = 1
        #:N-SUPPLIED-2 = 1
        #:N-SUPPLIED-3 = 1
        PM-INFO = NIL
        PME-OR-PLACE = (SORT (GETHASH :SOME (SLOT-VALUE OBJ 'BAR)) #'<)
        VARIANT = 0
 3: ((MACRO-FUNCTION PLACE-MODIFIERS:MODIFY) (PLACE-MODIFIERS:MODIFY (SORT (GETHASH :SOME #) (FUNCTION <))) #<NULL-LEXENV>)
 4: ((FLET SB-IMPL::PERFORM-EXPANSION :IN MACROEXPAND-1) #<FUNCTION (MACRO-FUNCTION PLACE-MODIFIERS:MODIFY) {22650E3B}> NIL)
 5: (MACROEXPAND (PLACE-MODIFIERS:MODIFY (SORT (GETHASH :SOME #) (FUNCTION <))) #<NULL-LEXENV>)
 6: (SB-INT:SIMPLE-EVAL-IN-LEXENV (PLACE-MODIFIERS:MODIFY (SORT (GETHASH :SOME #) (FUNCTION <))) #<NULL-LEXENV>)
 7: (EVAL (PLACE-MODIFIERS:MODIFY (SORT (GETHASH :SOME #) (FUNCTION <))))
 8: ((LAMBDA NIL :IN SLYNK-MREPL::MREPL-EVAL-1))

Full code to reproduce:

POFTHEDAY> (defclass foo ()
             ((bar :initarg :bar)))

POFTHEDAY> (defparameter obj
             (make-instance 'foo
                            :bar (make-hash-table)))
OBJ

POFTHEDAY> (setf (gethash :some (slot-value obj 'bar))
                 '(1 7 3 6))
(1 7 3 6)

POFTHEDAY> (place-modifiers:modify
            (sort (gethash :some (slot-value obj 'bar))
                  #'<))

#1=#<STANDARD-DEFINITION (* + - /) h1 :INCONCEIVABLE-PLACE> is not a suitable definition for system #<DEFINITIONS-SYSTEM MODIFY>

I get this error only when using Ultralisp distribution.

CL-USER> (ql:quickload :place-modifiers)
To load "place-modifiers":
  Install 3 Quicklisp releases:
    Hexstream-definitions-systems Hexstream-map-bind
    Hexstream-place-modifiers
; Fetching #<URL "http://dist.ultralisp.org/ultralisp/archive/H/Hexstream-map-bind-20200509135506.tgz">
; 4.05KB
==================================================
4,150 bytes in 0.00 seconds (0.00KB/sec)
; Fetching #<URL "http://dist.ultralisp.org/ultralisp/archive/H/Hexstream-definitions-systems-20200510004213.tgz">
; 15.31KB
==================================================
15,682 bytes in 0.06 seconds (243.09KB/sec)
; Fetching #<URL "http://dist.ultralisp.org/ultralisp/archive/H/Hexstream-place-modifiers-20200510141358.tgz">
; 12.94KB
==================================================
13,252 bytes in 0.02 seconds (647.07KB/sec)
; Loading "place-modifiers"
[package definitions-systems].....................
[package map-bind]................................
[package place-modifiers]...
; Debugger entered on #<DEFINITIONS-SYSTEMS:UNSUITABLE-DEFINITION-ERROR {10026DF1E3}>

; 
; compilation unit aborted
;   caught 1 fatal ERROR condition
#1=#<STANDARD-DEFINITION (* + - /) h1 :INCONCEIVABLE-PLACE> is not a suitable definition for system #<DEFINITIONS-SYSTEM MODIFY> 
Details: #<TYPE-ERROR expected-type:
                      #<STANDARD-CLASS DEFINITIONS-SYSTEMS:DEFINITION>

                      datum: #1#>
   [Condition of type DEFINITIONS-SYSTEMS:UNSUITABLE-DEFINITION-ERROR]

Restarts:
 0: [TRY-RECOMPILING] Recompile definitions and try loading it again
 1: [RETRY] Retry loading FASL for #<CL-SOURCE-FILE "place-modifiers" "definitions">.
 2: [ACCEPT] Continue, treating loading FASL for #<CL-SOURCE-FILE "place-modifiers" "definitions"> as having been successful.
 3: [RETRY] Retry ASDF operation.
 4: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the configuration.
 5: [RETRY] Retry ASDF operation.
 --more--

Backtrace:
 0: ((:METHOD DEFINITIONS-SYSTEMS:CHECK-DEFINITION (DEFINITIONS-SYSTEMS:BASE-DEFINITION-CLASS-MIXIN T)) #<DEFINITIONS-SYSTEM MODIFY> #<STANDARD-DEFINITION (* + - /) h1 :INCONCEIVABLE-PLACE>) [fast-method]
      Locals:
        DEFINITIONS-SYSTEMS:DEFINITION = #<STANDARD-DEFINITION (* + - /) h1 :INCONCEIVABLE-PLACE>
        DEFINITIONS-SYSTEMS:SYSTEM = #<DEFINITIONS-SYSTEM MODIFY>
 1: ((SB-PCL::EMF (SETF DEFINITIONS-SYSTEMS:LOCATE)) #<unused argument> #<unused argument> #<STANDARD-DEFINITION (* + - /) h1 :INCONCEIVABLE-PLACE> #<DEFINITIONS-SYSTEM MODIFY> *)
      Locals:
        SB-PCL::.ARG0. = #<STANDARD-DEFINITION (* + - /) h1 :INCONCEIVABLE-PLACE>
        SB-PCL::.ARG1. = #<DEFINITIONS-SYSTEM MODIFY>
        SB-PCL::.ARG2. = *
        SB-DEBUG::MORE = NIL
 2: (%ENSURE (* + - /) T :DEFAULT-SPOT-INDEX 1 :SPOT-INDEX-FORMAT :HUMAN)
      Locals:
        DEFAULT-SPOT-INDEX = 1
        INCONCEIVABLE-PLACE-P = T
        NAMES = (* + - /)
        SPOT-INDEX-FORMAT = :HUMAN
 3: (SB-FASL::LOAD-FASL-GROUP #S(SB-FASL::FASL-INPUT :STREAM #<SB-SYS:FD-STREAM for "file /Users/art/.cache/common-lisp/sbcl-2.0.8-macosx-x64/Users/art/projects/lisp/lisp-project-of-the-day/.qlot/dists/ul..
 4: (SB-FASL::LOAD-AS-FASL #<SB-SYS:FD-STREAM for "file /Users/art/.cache/common-lisp/sbcl-2.0.8-macosx-x64/Users/art/projects/lisp/lisp-project-of-the-day/.qlot/dists/ultralisp/software/Hexstream-place-m..
 5: ((FLET SB-FASL::THUNK :IN LOAD))
 6: (SB-FASL::CALL-WITH-LOAD-BINDINGS #<CLOSURE (FLET SB-FASL::THUNK :IN LOAD) {656F96B}> #<SB-SYS:FD-STREAM for "file /Users/art/.cache/common-lisp/sbcl-2.0.8-macosx-x64/Users/art/projects/lisp/lisp-proj..
 7: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) #<SB-SYS:FD-STREAM for "file /Users/art/.cache/common-lisp/sbcl-2.0.8-macosx-x64/Users/art/projects/lisp/lisp-project-of-the-day/.qlot/dists/ultralisp/software/He..
 8: (LOAD #P"/Users/art/.cache/common-lisp/sbcl-2.0.8-macosx-x64/Users/art/projects/lisp/lisp-project-of-the-day/.qlot/dists/ultralisp/software/Hexstream-place-modifiers-20200510141358/definitions.fasl" :..
 9: (UIOP/UTILITY:CALL-WITH-MUFFLED-CONDITIONS #<CLOSURE (LAMBDA NIL :IN UIOP/LISP-BUILD:LOAD*) {1002E7FCEB}> ("Overwriting already existing readtable ~S." #(#:FINALIZERS-OFF-WARNING :ASDF-FINALIZERS)))
10: ((SB-PCL::EMF ASDF/ACTION:PERFORM) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "place-modifiers" "definitions">)
11: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
12: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS (ASDF/LISP-ACTION:LOAD-OP ASDF/LISP-ACTION:CL-SOURCE-FILE)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "place-modifiers" "definitions">)..
13: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "place-modifiers" "definitions">) [fast-method]
14: ((:METHOD ASDF/PLAN:PERFORM-PLAN (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {1002DD50C3}>) [fast-method]
15: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
16: ((:METHOD ASDF/PLAN:PERFORM-PLAN :AROUND (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {1002DD50C3}>) [fast-method]
17: ((:METHOD ASDF/OPERATE:OPERATE (ASDF/OPERATION:OPERATION ASDF/COMPONENT:COMPONENT)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "place-modifiers"> :PLAN-CLASS NIL :PLAN-OPTIONS NIL) [fast-method..
18: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "place-modifiers"> :VERBOSE NIL)
19: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))

This is on OSX and SBCL 2.0.8.

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.