Clojure Core Audit for PTC-Lisp

Copy Markdown View Source

Warning: This file is auto-generated by mix ptc.gen_docs from priv/function_audit.exs. Manual edits will be overwritten. Edit priv/function_audit.exs instead.

Comparison of clojure.core vars against PTC-Lisp builtins.

See also: Function Reference | Namespace Coverage | Clojure String Audit | Clojure Set Audit | Clojure Walk Audit | Java Math Audit | Java Boolean Audit | Java Double Audit | Java Float Audit | Java Integer Audit | Java Long Audit | Java String Audit | Java System Audit | Java LocalDate Audit | Java Instant Audit | Java Duration Audit | Java Period Audit | Java Date Audit

Summary

Coverage excludes not_relevant entries: supported / (supported + candidate + not_classified).

StatusCount
Supported235
Candidate14
Not Relevant286
Not Classified0
Relevant Target249
Coverage235/249 (94.4%)
Total535

Details

VarStatusDescriptionNotes
*✅ supportedMultiplies numbers; returns 1 with no args
*'✅ supportedMultiplies numbers with arbitrary precisionalias for *; BEAM integers are already arbitrary precision
+✅ supportedAdds numbers; returns 0 with no args
+'✅ supportedAdds numbers with arbitrary precisionalias for +; BEAM integers are already arbitrary precision
-✅ supportedSubtracts numbers or negates single argument
-'✅ supportedSubtracts numbers with arbitrary precisionalias for -; BEAM integers are already arbitrary precision
->✅ supportedThreads expression as second argument through formsGAP-S128 fixed: nil thread targets raise as not callable
->>✅ supportedThreads expression as last argument through formsGAP-S128 fixed: nil thread targets raise as not callable
.❌ not_relevantJava member access and method callsJava interop
..❌ not_relevantChains member access operationsJava interop
/✅ supportedDivides numbers
<✅ supportedReturns true if numbers monotonically increaseDIV-30: ordering predicates use PTC's recoverable total term ordering
<=✅ supportedReturns true if numbers non-decreasingDIV-30: ordering predicates use PTC's recoverable total term ordering
=✅ supportedEquality comparisonDIV-32: numeric equality is type-independent. BUG GAP-S120: character literals compare equal to one-character strings
==✅ supportedType-independent numeric equalityalias for numeric equality; BUG GAP-S120: character literals compare equal to strings
>✅ supportedReturns true if numbers monotonically decreaseDIV-30: ordering predicates use PTC's recoverable total term ordering
>=✅ supportedReturns true if numbers non-increasingDIV-30: ordering predicates use PTC's recoverable total term ordering
NaN?✅ supportedReturns true if number is NaNDIV-31: returns false for nil/non-numeric inputs instead of raising
abs✅ supportedReturns absolute value of numberDIV-37: uses PTC-Lisp arbitrary-precision integers instead of JVM Long/MIN_VALUE overflow
accessor❌ not_relevantReturns function accessing structmap value at keylegacy structmap helper; structmaps are not supported
aclone❌ not_relevantReturns clone of Java arrayJava array manipulation
add-tap❌ not_relevantAdds function to receive tap> valuesI/O and global state side effects
add-watch❌ not_relevantAdds watch function to referencemutable state and referencing
agent❌ not_relevantCreates agent with initial valueconcurrency primitive (mutable state)
agent-error❌ not_relevantReturns exception from failed agentdepends on agent state and exception handling
aget❌ not_relevantReturns value at Java array indexJava interop (Java array access)
alength❌ not_relevantReturns length of Java arrayJava interop (Java array length)
alias❌ not_relevantAdds namespace aliasnamespace manipulation
all-ns❌ not_relevantReturns all namespacesnamespace system
alter❌ not_relevantSets ref value in transactionconcurrency primitive (ref mutation)
alter-meta!❌ not_relevantAtomically sets metadata via functionmetadata and mutability
alter-var-root❌ not_relevantAtomically alters var root bindingvar root mutation
amap❌ not_relevantMaps expression across Java arrayJava interop (Java array iteration)
ancestors❌ not_relevantReturns parents of tag via hierarchyrelies on Clojure's global hierarchy/multimethod system
and✅ supportedShort-circuit logical AND
any?🔲 candidateReturns true for any argumentpure predicate function
apply✅ supportedApplies function to argument sequenceBUG GAP-S33: nil and string final arguments currently raise instead of acting seqable. A nil function position raises (not callable), matching Clojure. BUG GAP-S13: vector function position is rejected
areduce❌ not_relevantReduces expression across Java arrayrelies on Java array interoperability
array-map✅ supportedConstructs array-map from key-value pairsalias for hash-map; no separate small-map representation
as->✅ supportedBinds name to expr, threads through formsBUG GAP-S130: character literals are treated as one-character strings instead of raising
aset❌ not_relevantSets value in Java array at indexperforms mutable operations on Java arrays
assert❌ not_relevantThrows AssertionError if expr falserelies on exception handling/throwing
assoc✅ supportedReturns map/vector with added key-value pairsThe one-arity form raises (assoc requires key/value pairs), matching Clojure
assoc!❌ not_relevantSets value in transient collectionrelies on transient collections (mutability)
assoc-in✅ supportedAssociates value in nested structureAn empty or nil path associates the value at the nil key, matching Clojure's recursive assoc-in definition
associative?✅ supportedReturns true if coll implements AssociativeBUG GAP-S130: character literals are treated as one-character strings instead of raising
atom❌ not_relevantCreates atom with initial valuerelies on mutable state
await❌ not_relevantBlocks until agent actions completerelies on agent state
await-for❌ not_relevantBlocks with timeout for agent actionsrelies on agent state
bases❌ not_relevantReturns immediate superclass and interfacesJava interop and class inspection
bean❌ not_relevantReturns map based on JavaBean propertiesJava interop (JavaBeans)
bigdec❌ not_relevantCoerces to BigDecimalBEAM runtime has no BigDecimal type in PTC-Lisp
bigint❌ not_relevantCoerces to BigIntBEAM integers are already arbitrary precision
biginteger❌ not_relevantCoerces to BigIntegerJVM-specific BigInteger coercion; BEAM integers are already arbitrary precision
binding❌ not_relevantBinds vars to new values for body durationrelies on thread-local var binding mechanism
bit-and✅ supportedBitwise ANDintegers only; unary forms raise (require at least two arguments), matching Clojure. BUG GAP-S142: BigInt operands are accepted instead of raising
bit-and-not✅ supportedBitwise AND with complementintegers only; unary forms raise (require at least two arguments), matching Clojure. BUG GAP-S142: BigInt operands are accepted instead of raising
bit-clear✅ supportedClears bit at indexintegers only; BUG GAP-S52: negative or >=64 indexes are not JVM-masked correctly. BUG GAP-S142: BigInt operands are accepted instead of raising
bit-flip✅ supportedFlips bit at indexintegers only; BUG GAP-S52: negative or >=64 indexes are not JVM-masked correctly. BUG GAP-S142: BigInt operands are accepted instead of raising
bit-not✅ supportedBitwise complementintegers only; BUG GAP-S142: BigInt operands are accepted instead of raising
bit-or✅ supportedBitwise ORintegers only; unary forms raise (require at least two arguments), matching Clojure. BUG GAP-S142: BigInt operands are accepted instead of raising
bit-set✅ supportedSets bit at indexintegers only; BUG GAP-S52: negative or >=64 indexes are not JVM-masked correctly. BUG GAP-S142: BigInt operands are accepted instead of raising
bit-shift-left✅ supportedBitwise left shiftintegers only; BUG GAP-S52: negative shift counts are rejected instead of JVM-masked. BUG GAP-S142: BigInt operands are accepted instead of raising
bit-shift-right✅ supportedBitwise right shiftintegers only; arithmetic (sign-extending) shift; BUG GAP-S52: negative shift counts are rejected instead of JVM-masked. BUG GAP-S142: BigInt operands are accepted instead of raising
bit-test✅ supportedTests bit at indexintegers only; BUG GAP-S52: negative or >=64 indexes are not JVM-masked correctly. BUG GAP-S142: BigInt operands are accepted instead of raising
bit-xor✅ supportedBitwise exclusive ORintegers only; unary forms raise (require at least two arguments), matching Clojure. BUG GAP-S142: BigInt operands are accepted instead of raising
boolean✅ supportedCoerces to boolean
boolean-array❌ not_relevantCreates boolean Java arraycreates Java array, incompatible with BEAM/non-JVM environments
boolean?✅ supportedReturns true if value is BooleanBUG GAP-S130: character literals are treated as one-character strings instead of raising
booleans❌ not_relevantCasts to boolean arrayJava array manipulation
bound-fn❌ not_relevantReturns function with call-site bindingsrelies on thread-local/dynamic scope bindings
bound-fn*❌ not_relevantReturns function applying creation-context bindingsrelies on thread-local/dynamic scope bindings
bound?❌ not_relevantReturns true if all vars have bound valuerelies on dynamic var binding state
bounded-count❌ not_relevantCounts up to n elementsdesigned for lazy sequences
butlast✅ supportedReturns all but last itemnil, empty, and singleton sequential/string inputs return nil (Clojure empty-seq punning). BUG GAP-S130: character literals are treated as one-character strings instead of raising
byte❌ not_relevantCoerces to byteJVM primitive width coercion
byte-array❌ not_relevantCreates byte Java arrayJava array creation
bytes❌ not_relevantCasts to byte arrayJava array casting
bytes?❌ not_relevantReturns true if value is byte arrayJava array type check
case✅ supportedConstant-time dispatch on expression valueBUG GAP-S37: no-match/no-default form currently returns nil instead of raising. BUG GAP-S72: duplicate constants are accepted and compound constants are rejected. BUG GAP-S120: character literals dispatch as equal to one-character strings. DIV-32: numeric dispatch follows PTC's type-independent numeric equality
cast❌ not_relevantThrows ClassCastException if not instancerelies on Java type system and exception handling
cat❌ not_relevantTransducer concatenating input collectionstransducers are not supported
char❌ not_relevantCoerces to charJVM character coercion; PTC-Lisp strings are UTF-8 binaries
char-array❌ not_relevantCreates char Java arraycreates Java array
char?✅ supportedReturns true if value is CharacterBUG GAP-S44: one-character strings currently return true
chars❌ not_relevantCasts to char arrayrelies on Java char array types
class❌ not_relevantReturns class of valuerelies on Java class introspection
class?❌ not_relevantReturns true if value is Class instancerelies on Java type system
clojure-version❌ not_relevantReturns Clojure version stringenvironment info irrelevant to pure data transformation
coll?✅ supportedReturns true if implements IPersistentCollection
comment❌ not_relevantIgnores body, yields nilREPL/source code construct
commute❌ not_relevantSets ref value via commutative functionmutable state primitive (refs)
comp✅ supportedComposes functions right-to-leftBUG GAP-S71: map/set/vector callables are rejected in composed function position. A nil composed function raises when called (not callable), matching Clojure
comparator🔲 candidateReturns Comparator from predicatepure function to create a comparison function
compare✅ supportedCompares values returning neg/zero/posDIV-30: uses PTC's recoverable total term ordering for nil, maps, and mixed values; DIV-33: NaN is unordered and raises
compare-and-set!❌ not_relevantAtomically sets atom if current equals oldoperates on mutable state (atoms)
compile❌ not_relevantCompiles namespace into classfilescompilation and class generation
complement✅ supportedReturns function with opposite truth valueBUG GAP-S71: map/set callables are rejected in predicate position
completing🔲 candidateReturns reducing function with completionpure function for reducing transformations
concat✅ supportedReturns lazy seq concatenating collectionsBUG GAP-S57: string inputs currently raise instead of being treated as seqable
cond✅ supportedMulti-way conditionalThe zero-clause form returns nil, matching Clojure
cond->✅ supportedThreads through forms where tests trueBUG GAP-S123: trailing unmatched test raises instead of acting as a no-op
cond->>✅ supportedThreads as last arg where tests trueBUG GAP-S123: trailing unmatched test raises instead of acting as a no-op
condp✅ supportedPredicate dispatch against expressionBUG GAP-S38: :>> result-function clauses are unsupported. BUG GAP-S103: no-match/no-default form currently returns nil instead of raising
conj✅ supportedReturns collection with items addedBUG GAP-S76: conjoining a map into a map currently raises instead of merging entries. The zero-arity form returns an empty vector (Clojure's conj identity). BUG GAP-S137: list pairs are treated as map entries instead of raising. DIV-25: nil/list targets use vector append semantics
conj!❌ not_relevantAdds item to transient collectionoperates on transient collections (mutable)
cons✅ supportedReturns seq with item prependedBUG GAP-S130: character literals are treated as one-character strings instead of raising
constantly✅ supportedReturns function ignoring args, returning value
contains?✅ supportedReturns true if key present in collectionDIV-27 for sequential collections and map entries; returns false for a nil collection (matching Clojure); BUG GAP-S35 on string indexes, including numeric indexes Clojure accepts
count✅ supportedReturns number of items in collectionDIV-36: string counts use Unicode graphemes instead of JVM UTF-16 code units. BUG GAP-S130: character literals are treated as one-character strings instead of raising
counted?✅ supportedReturns true if constant-time countBUG GAP-S70: strings currently return true but Clojure returns false
create-ns❌ not_relevantCreates or returns namespacerequires namespace system
create-struct❌ not_relevantReturns structure basis objectrelies on legacy fixed-key structure system
cycle❌ not_relevantReturns infinite lazy seq repeating collectionrelies on lazy sequences
dec✅ supportedReturns number minus one
dec'✅ supportedDecrements with arbitrary precisionalias for dec; BEAM integers are already arbitrary precision
decimal?✅ supportedReturns true if BigDecimalalways false; BigDecimal literals are unsupported, see DIV-20
declare❌ not_relevantDefines var names with no bindingsrelies on namespace/var system
dedupe✅ supportedRemoves consecutive duplicatesBUG GAP-S130: character literals are treated as one-character strings instead of raising
def✅ supportedCreates and interns global varBUG GAP-S140: no-init def raises instead of creating an unbound var. BUG GAP-S141: return value omits the user namespace
definterface❌ not_relevantCreates Java interfaceJava interop
defmacro❌ not_relevantDefines macromacro system
defmethod❌ not_relevantCreates multimethod implementationmultimethods
defmulti❌ not_relevantCreates multimethod with dispatch functionmultimethods
defn✅ supportedDefines named functionDIV-15: multi-arity defn is intentionally unsupported. BUG GAP-S118/GAP-S119: parameter destructuring misses associative vector sources and rest key/value coercion
defn-❌ not_relevantDefines private functionnamespacing/metadata
defonce✅ supportedDefines var only if not already definedBUG GAP-S141: return value omits the user namespace
defprotocol❌ not_relevantCreates protocol with method signaturesprotocols
defrecord❌ not_relevantCreates record type with fieldscustom types/Java-like classes
defstruct❌ not_relevantCreates structure typeobsolete type system
deftype❌ not_relevantCreates custom type with fieldscustom types/Java interop
delay❌ not_relevantDefers expression evaluationlazy evaluation/stateful caching
delay?❌ not_relevantReturns true if value is delayrelies on delay/concurrency which is not supported
deliver❌ not_relevantDelivers result to promiserelies on promise/mutable state
denominator❌ not_relevantReturns denominator of ratioratio values are not supported
deref❌ not_relevantDereferences ref/delay/future/promiserelies on mutable state/concurrency types
derive❌ not_relevantEstablishes hierarchical relationshiprelies on global namespace/hierarchy state
descendants❌ not_relevantReturns all descendants of tagrelies on global namespace/hierarchy state
disj✅ supportedReturns set with item removed
disj!❌ not_relevantRemoves from transient setrelies on transient/mutable data structures
dissoc✅ supportedReturns map with key removedBUG GAP-S19: nil map root currently raises instead of returning nil
dissoc!❌ not_relevantRemoves from transient maprelies on transient/mutable data structures
distinct✅ supportedReturns seq removing duplicatesBUG GAP-S20: nil input currently raises instead of returning an empty seq. BUG GAP-S134: direct map input returns entries instead of raising
distinct?✅ supportedReturns true if all args distinctBUG GAP-S64: zero-arity distinct? returns true instead of raising. BUG GAP-S101: repeated NaN values are treated as duplicates
do✅ supportedEvaluates expressions, returns last
doall❌ not_relevantRealizes entire lazy seqrelies on lazy sequences
dorun❌ not_relevantRealizes lazy seq, returns nilrelies on lazy sequences
doseq✅ supportedIterates over sequences for side effectsBUG GAP-S18: def side effects inside doseq are not visible after the loop
dosync❌ not_relevantExecutes body in STM transactionrelies on concurrency/STM primitives
dotimes❌ not_relevantExecutes body n times with counterrelies on side-effecting loops
doto❌ not_relevantCalls methods on object, returns objectrelies on Java interop
double✅ supportedCoerces to double
double-array❌ not_relevantCreates double Java arrayrelies on Java arrays
double?✅ supportedReturns true if DoubleBUG GAP-S127: special float literals return false instead of true
doubles❌ not_relevantCasts to double arrayrelies on Java arrays
drop✅ supportedReturns seq skipping first n itemsBUG GAP-S20: nil input currently raises instead of returning an empty seq; BUG GAP-S32: negative count drops from the end instead of returning the input; BUG GAP-S79: numeric count coercion rejects floats Clojure accepts
drop-last✅ supportedReturns seq without last n itemsBUG GAP-S130: character literals are treated as one-character strings instead of raising
drop-while✅ supportedDrops items while predicate trueBUG GAP-S71: map/vector callables are rejected in predicate position. BUG GAP-S130: character literals are treated as one-character strings instead of raising
eduction❌ not_relevantReturns reducible wrapper of transducerrelies on lazy/transducer abstractions
empty✅ supportedReturns empty collection of same typeBUG GAP-S56: string input returns an empty string instead of nil. BUG GAP-S88: non-collection inputs should return nil but currently raise or return an empty map
empty?✅ supportedReturns true if collection emptyBUG GAP-S130: character literals are treated as one-character strings instead of raising
ensure❌ not_relevantEnsures ref not written by other transactionrelies on software transactional memory (ref/transactional state)
ensure-reduced🔲 candidateWraps in reduced if not alreadypure utility for reduction flow control
enumeration-seq❌ not_relevantLazy seq from Java Enumerationrelies on lazy sequences and Java interop
error-handler❌ not_relevantReturns agent error handlerrelies on agent state
error-mode❌ not_relevantReturns agent error moderelies on agent state
eval❌ not_relevantEvaluates form in current namespacerequires runtime compilation and namespace support
even?✅ supportedReturns true if number is evenDIV-31: numeric predicates return false for non-numeric inputs
every-pred✅ supportedReturns combined predicate (all must be true)BUG GAP-S71: map/set/vector callables are rejected in predicate position
every?✅ supportedReturns true if pred true for all itemsBUG GAP-S71: map/vector callables are rejected in predicate position. BUG GAP-S130: character literals are treated as one-character strings instead of raising
ex-cause❌ not_relevantReturns cause of exceptionrelies on exception handling
ex-data❌ not_relevantReturns data map of exceptionrelies on exception handling
ex-info❌ not_relevantCreates exception with message and datarelies on exception handling
ex-message❌ not_relevantReturns exception message stringrelies on exception handling
extend❌ not_relevantAdds protocol implementations for typerelies on protocols
extend-protocol❌ not_relevantExtends protocol to typesrelies on protocols
extend-type❌ not_relevantExtends type to implement protocolrelies on protocols
extenders❌ not_relevantReturns types extending protocolrelies on protocols
extends?❌ not_relevantReturns true if type extends protocolrelies on protocols
false?✅ supportedReturns true if value is false
ffirst✅ supportedFirst of first itemnil input returns nil, matching Clojure
file-seq❌ not_relevantLazy seq of files in directory treerelies on lazy sequences and file I/O
filter✅ supportedReturns items where predicate trueBUG GAP-S71: map callables are rejected in predicate position. BUG GAP-S130: character literals are treated as one-character strings instead of raising
filterv✅ supportedReturns vector of items where pred trueBUG GAP-S71: map callables are rejected in predicate position. BUG GAP-S130: character literals are treated as one-character strings instead of raising
find✅ supportedReturns map entry for key or nilDIV-48: non-associative collections (sets, strings) return a recoverable :type_error signal where Clojure raises
find-keyword❌ not_relevantReturns keyword with ns and namerelies on namespaces
find-ns❌ not_relevantReturns namespace or nilrelies on namespace system
find-var❌ not_relevantReturns var or nilrelies on vars/namespace system
first✅ supportedReturns first itemDIV-29: direct map input raises; use seq/entries/keys/vals for ordered map views. BUG GAP-S130: character literals are treated as one-character strings instead of raising
flatten✅ supportedFlattens nested collectionsBUG GAP-S20: nil input currently raises instead of returning an empty seq. BUG GAP-S81: scalar/string/character/map roots raise instead of returning an empty seq
float✅ supportedCoerces to floatBUG GAP-S122: infinite inputs return infinities instead of raising
float-array❌ not_relevantCreates float Java arraycreates Java array
float?✅ supportedReturns true if FloatBUG GAP-S127: special float literals return false instead of true
floats❌ not_relevantCasts to float arrayhandles Java arrays
flush❌ not_relevantFlushes output writerI/O operation
fn✅ supportedDefines anonymous functionDIV-15: multi-arity fn is intentionally unsupported. BUG GAP-S39: vector destructuring :as patterns are unsupported in params. BUG GAP-S86: map destructuring :syms is unsupported in params. BUG GAP-S87: vector destructuring rejects string inputs in params. BUG GAP-S97: vector rest destructuring binds nil input rest as [] in params. BUG GAP-S118/GAP-S119: parameter destructuring misses associative vector sources and rest key/value coercion
fn?✅ supportedReturns true if value is function
fnext✅ supportedFirst of next itemnil input returns nil, matching Clojure
fnil✅ supportedReturns function with nil defaultsBUG GAP-S42: two- and three-default arities are unsupported. BUG GAP-S71: keyword/map/set/vector callables are rejected in function position
for✅ supportedList comprehension from nested iterationBUG GAP-S130: character literals are treated as one-character strings instead of raising
force❌ not_relevantForces evaluation of delayrelies on lazy evaluation/delays
format✅ supportedReturns formatted stringDIV-39: %s collection rendering uses deterministic PTC readable formatting. BUG GAP-S65: width/alignment/zero-padding and sign flags are currently ignored or rejected. BUG GAP-S89: boolean and newline conversions are currently rejected. BUG GAP-S96: several Java Formatter conversions and argument indexes are unsupported. BUG GAP-S117: supported numeric conversions reject nil instead of rendering null
frequencies✅ supportedReturns map of item frequenciesBUG GAP-S20: nil input currently raises instead of returning an empty frequency map; direct map input raises instead of counting map entries. BUG GAP-S130: character literals are treated as one-character strings instead of raising
future❌ not_relevantAsync computationconcurrency primitive
future-call❌ not_relevantCalls function asynchronouslyconcurrency primitive
future-cancel❌ not_relevantCancels futureconcurrency primitive
future-cancelled?❌ not_relevantReturns true if future cancelledconcurrency primitive
future-done?❌ not_relevantReturns true if future completeconcurrency primitive
future?❌ not_relevantReturns true if value is futureconcurrency primitive
gensym❌ not_relevantReturns unique symbolmacro system utility
get✅ supportedReturns value for key or nilBUG GAP-S12: string indexes and non-index keys currently raise. BUG GAP-S36: set lookup currently raises instead of returning value/default, including nil members
get-in✅ supportedReturns value at nested key pathBUG GAP-S19: nil map root currently raises instead of returning nil/default; BUG GAP-S12: string indexes currently raise; BUG GAP-S36: set roots currently raise instead of using set lookup. A nil path returns the root value, matching Clojure
get-method❌ not_relevantReturns multimethod implementationmultimethods not supported
get-proxy-class❌ not_relevantReturns proxy classJava interop
get-thread-bindings❌ not_relevantReturns thread-local bindingsconcurrency primitive / thread locals
get-validator❌ not_relevantReturns reference validatormutable state validator
group-by✅ supportedGroups items by function resultBUG GAP-S67: string inputs are rejected instead of treated as seqable. BUG GAP-S71: map/set/vector callables are rejected or misapplied as key functions
halt-when❌ not_relevantTransducer halting on predicaterelies on transducers which often involve stateful reduction and lazy-like sequence processing
hash❌ not_relevantReturns hash coderuntime-specific hash values are not stable across hosts
hash-map✅ supportedCreates hash map from pairs
hash-ordered-coll❌ not_relevantReturns hash of ordered collectionClojure hashing internals; not stable across PTC-Lisp hosts
hash-set✅ supportedCreates hash set from itemsconstructs a PTC-Lisp set from variadic arguments
hash-unordered-coll❌ not_relevantReturns hash of unordered collectionClojure hashing internals; not stable across PTC-Lisp hosts
ident?❌ not_relevantReturns true if keyword or symbolPTC-Lisp has keywords but no first-class symbol or namespaced identifier values
identical?❌ not_relevantReturns true if same objectrelies on object identity which is not meaningful for serializable data in a BEAM-based environment
identity✅ supportedReturns argument unchanged
if✅ supportedConditional branch
if-let✅ supportedConditional with bindingDIV-14: destructuring bindings are intentionally unsupported. BUG GAP-S115: no-else arity is unsupported. BUG GAP-S145: extra binding-vector forms are rejected instead of ignored
if-not✅ supportedNegated conditional
if-some✅ supportedBinds if not nilDIV-14: destructuring bindings are intentionally unsupported. BUG GAP-S115: no-else arity is unsupported. BUG GAP-S145: extra binding-vector forms are rejected instead of ignored
ifn?✅ supportedReturns true if invokableBUG GAP-S13: vectors are callable in Clojure but not in PTC-Lisp
import❌ not_relevantImports Java classesrelies on Java interop
in-ns❌ not_relevantChanges current namespacerelies on namespace support
inc✅ supportedReturns number plus one
inc'✅ supportedIncrements with arbitrary precisionalias for inc; BEAM integers are already arbitrary precision
indexed?✅ supportedReturns true if supports indexed accessBUG GAP-S70: strings currently return true but Clojure returns false
infinite?✅ supportedReturns true if number infiniteDIV-31: returns false for nil/non-numeric inputs instead of raising
inst-ms❌ not_relevantMilliseconds since epoch for instantcovered by existing temporal interop .getTime
inst?❌ not_relevantReturns true if instantClojure instant predicate; PTC-Lisp temporal interop uses host date structs
instance?❌ not_relevantReturns true if instance of classrelies on Java class system
int✅ supportedCoerces to int
int-array❌ not_relevantCreates int Java arrayrelies on Java array/mutability
int?✅ supportedReturns true if IntegerDIV-37: arbitrary-precision PTC integers have no distinct JVM int/long width
integer?✅ supportedReturns true if integer
interleave✅ supportedInterleaves items from collectionsVariadic (0/1/n arity) over lists. BUG GAP-S20: nil inputs currently raise instead of returning an empty seq. BUG GAP-S98: string inputs currently raise instead of being treated as seqable. DIV-29: direct map input raises; use seq/entries/keys/vals for ordered map views.
intern❌ not_relevantCreates or returns var in namespaceoperates on namespaces
interpose✅ supportedInserts separator between itemsStrings are seqable (interposed as characters). DIV-29: direct map input raises; use seq/entries/keys/vals for ordered map views.
into✅ supportedConjoins items from source into targetBUG GAP-S41: zero/one arities, string sources, and nil targets currently raise instead of following Clojure seq/list behavior
into-array❌ not_relevantCreates Java array from itemsJava interop
ints❌ not_relevantCasts to int arrayJava interop
isa?❌ not_relevantReturns true if child is parent instancerelies on hierarchy/multimethods system
iterate❌ not_relevantLazy seq of repeated function applicationcreates lazy sequences
iteration❌ not_relevantReducible wrapper of iteratorwraps Java iterators
iterator-seq❌ not_relevantLazy seq from Java Iteratorcreates lazy sequences from Java iterators
juxt✅ supportedApplies multiple functions, collects resultsBUG GAP-S58: resulting function currently supports only one call argument. Zero-arity juxt raises (requires at least one function), matching Clojure. BUG GAP-S71: map/set/vector callables are rejected in function position
keep✅ supportedKeeps non-nil results of functionBUG GAP-S71: map/vector callables are rejected in function position. BUG GAP-S130: character literals are treated as one-character strings instead of raising
keep-indexed✅ supportedKeeps non-nil results with indexBUG GAP-S71: map callables are rejected in function position. BUG GAP-S130: character literals are treated as one-character strings instead of raising
key✅ supportedReturns key of map entryBUG GAP-S17: currently accepts plain vectors/list pairs as map entries
keys✅ supportedReturns map keysDIV-38: map views are sorted by key instead of preserving Clojure map iteration order
keyword✅ supportedCoerces to keywordBUG GAP-S34: namespace/name arity is unsupported. BUG GAP-S63: keyword invocation matches string keys. BUG GAP-S78: non-string/non-keyword inputs raise instead of returning nil. DIV-13/DIV-34/DIV-35: namespaced, empty, and broad-character keywords are outside the PTC-Lisp data model.
keyword?✅ supportedReturns true if keyword
last✅ supportedReturns last itemnil input returns nil, matching Clojure. DIV-29: direct map input raises; use seq/entries/keys/vals for ordered map views. BUG GAP-S130: character literals are treated as one-character strings instead of raising
lazy-cat❌ not_relevantLazy concatenation of expressionsrelies on lazy sequences
lazy-seq❌ not_relevantCreates lazy sequence from expressionrelies on lazy sequences
let✅ supportedLocal variable bindingsBUG GAP-S39: vector destructuring :as patterns are unsupported, including after rest bindings. BUG GAP-S86: map destructuring :syms is unsupported. BUG GAP-S87: vector destructuring rejects string inputs. BUG GAP-S97: vector rest destructuring binds nil input rest as []. BUG GAP-S118/GAP-S119: map destructuring rejects associative vector sources and vector rest map destructuring misses key/value coercion
letfn❌ not_relevantBinds function names for mutual recursionmutual recursion binding form is outside PTC-Lisp's small evaluator surface
line-seq❌ not_relevantLazy seq of lines from readerrelies on lazy sequences and reader I/O
list✅ supportedAlias for vector (PTC-Lisp is vector-first)implemented as alias for vector
list*❌ not_relevantCreates list with seq appendedPTC-Lisp is vector-first and has no separate list runtime type
list?❌ not_relevantReturns true if listPTC-Lisp is vector-first and has no separate list runtime type
load❌ not_relevantLoads Clojure file from classpathrelies on file I/O and classpath
load-file❌ not_relevantLoads Clojure file from pathrelies on file I/O
load-reader❌ not_relevantLoads code from readerrelies on reader I/O
load-string❌ not_relevantLoads code from stringevaluates code/REPL feature
locking❌ not_relevantAcquires monitor lock, executes bodyconcurrency primitive/locking
long❌ not_relevantCoerces to longJVM primitive width coercion; use int for integer coercion
long-array❌ not_relevantCreates long Java arrayJava interop/primitive array
longs❌ not_relevantCasts to long arrayJava interop/primitive array
loop✅ supportedLoop with recur for tail recursionBodyless form returns nil, matching Clojure
macroexpand❌ not_relevantRecursively expands macromacro system
macroexpand-1❌ not_relevantExpands macro one levelmacro system
make-array❌ not_relevantCreates Java arrayJava interop/array creation
make-hierarchy❌ not_relevantReturns empty hierarchyrelies on multimethods system
map✅ supportedApplies function to each itemBUG GAP-S71: map/vector callables are rejected in function position. BUG GAP-S102: multi-collection arity rejects string inputs. BUG GAP-S130: character literals are treated as one-character strings instead of raising
map-entry?✅ supportedReturns true if map entryDIV-49: returns false for every value because PTC-Lisp has no distinct MapEntry type (a map seq entry is the same 2-element vector value as a literal vector)
map-indexed✅ supportedApplies function with index to itemsBUG GAP-S71: map callables are rejected in function position
map?✅ supportedReturns true if map
mapcat✅ supportedMaps then concatenates resultsBUG GAP-S49: multiple input collections, nil results, and string results currently raise. BUG GAP-S71: map callables are rejected in function position
mapv✅ supportedReturns vector from mapping functionBUG GAP-S71: map/vector callables are rejected in function position. BUG GAP-S130: character literals are treated as one-character strings instead of raising
max✅ supportedReturns greatest numberDIV-30: uses PTC's recoverable total term ordering for nil and mixed values
max-key✅ supportedReturns item with greatest function valueDIV-30: key comparison uses PTC's recoverable total term ordering for nil and mixed values. BUG GAP-S47: ties currently return the first maximum instead of the last. BUG GAP-S71: map/vector callables are rejected as key functions
memfn❌ not_relevantReturns function calling Java methodrelies on Java interop
memoize❌ not_relevantCaches function results by argumentsrelies on mutable state for caching
merge✅ supportedMerges mapsBUG GAP-S54: zero-arity and single nil forms return an empty map instead of nil; A single non-map collection is returned unchanged (Clojure semantics). BUG GAP-S90: vector targets are rejected. BUG GAP-S100: direct vector map-entry sources are rejected
merge-with✅ supportedMerges maps with combining functionBUG GAP-S54: no-map and single nil forms return an empty map instead of nil. A single non-map collection is returned unchanged (Clojure semantics). BUG GAP-S90: vector targets are rejected
meta❌ not_relevantReturns metadatarelies on metadata support
methods❌ not_relevantReturns multimethod implementationsrelies on multimethods
min✅ supportedReturns least numberDIV-30: uses PTC's recoverable total term ordering for nil and mixed values
min-key✅ supportedReturns item with least function valueDIV-30: key comparison uses PTC's recoverable total term ordering for nil and mixed values. BUG GAP-S47: ties currently return the first minimum instead of the last. BUG GAP-S71: map/vector callables are rejected as key functions
mod✅ supportedReturns moduloBUG GAP-S138: non-finite operands return NaN instead of matching Clojure/JVM behavior
name✅ supportedReturns name string of symbol/keywordDIV-19: quoted symbols are not supported as runtime values. BUG GAP-S129: character literals return strings instead of raising
namespace❌ not_relevantReturns namespace of symbol/keywordrelies on namespace support
nat-int?✅ supportedReturns true if non-negative integerDIV-37: arbitrary-precision PTC integers have no distinct JVM int/long width
neg-int?✅ supportedReturns true if negative integerDIV-37: arbitrary-precision PTC integers have no distinct JVM int/long width
neg?✅ supportedReturns true if number negativeDIV-31: returns false for nil/non-numeric inputs instead of raising
newline❌ not_relevantWrites newline to outputrelies on I/O
next✅ supportedReturns seq after first itemDIV-29: direct map input raises; use seq/entries/keys/vals for ordered map views. BUG GAP-S130: character literals are treated as one-character strings instead of raising
nfirst✅ supportedNext of first itemnil input returns nil, matching Clojure
nil?✅ supportedReturns true if nil
nnext✅ supportedNext of next itemnil input returns nil, matching Clojure
not✅ supportedLogical complement
not-any?✅ supportedReturns true if pred false for allBUG GAP-S71: map/vector callables are rejected in predicate position. BUG GAP-S130: character literals are treated as one-character strings instead of raising
not-empty✅ supportedReturns collection or nil if emptyBUG GAP-S130: character literals are treated as one-character strings instead of raising
not-every?✅ supportedReturns true if pred false for someBUG GAP-S130: character literals are treated as one-character strings instead of raising
not=✅ supportedReturns true if not equalDIV-32: numeric equality is type-independent. BUG GAP-S120: character literals compare equal to one-character strings
nth✅ supportedReturns item at indexDIV-26 for out-of-range signal values; DIV-36 for string grapheme indexing; nil input returns nil (2-arity) or the default (3-arity), matching Clojure; the 3-arity (nth coll idx not-found) returns the default for out-of-range/negative; BUG GAP-S10/GAP-S79. BUG GAP-S130: character literals are treated as one-character strings instead of raising
nthnext✅ supportedReturns nth nextimplemented as seq after nthrest. BUG GAP-S79: numeric count coercion rejects floats Clojure accepts. BUG GAP-S130: character literals are treated as one-character strings instead of raising
nthrest✅ supportedReturns rest after nth itemimplemented as drop alias with Clojure argument order. BUG GAP-S79: numeric count coercion rejects floats Clojure accepts. BUG GAP-S130: character literals are treated as one-character strings instead of raising
num❌ not_relevantCoerces to numberJVM Number coercion; parse-long/parse-double cover string parsing
number?✅ supportedReturns true if number
numerator❌ not_relevantReturns numerator of ratioratio values are not supported
object-array❌ not_relevantCreates object Java arrayrelies on Java interop and host arrays
odd?✅ supportedReturns true if number oddDIV-31: numeric predicates return false for non-numeric inputs
or✅ supportedShort-circuit logical OR
parents❌ not_relevantReturns immediate parents of tagmetadata/hierarchy manipulation not supported in PTC-Lisp
parse-boolean✅ supportedParses string to booleanreturns true, false, or nil
parse-double✅ supportedParses string to doubleBUG GAP-S61: surrounding whitespace and Java decimal spellings return nil instead of parsing
parse-long✅ supportedParses string to long
parse-uuid❌ not_relevantParses string to UUIDno UUID runtime type; keep UUIDs as strings
partial✅ supportedFixes supplied arguments to functionBUG GAP-S71: map/set/vector callables are rejected in function position
partition✅ supportedPartitions items into groups of nBUG GAP-S31: nil padding collection currently raises instead of acting empty. BUG GAP-S53: negative partition size raises instead of returning an empty seq. BUG GAP-S79: numeric size/step coercion rejects floats Clojure accepts.
partition-all✅ supportedPartitions without dropping partial groupBUG GAP-S79: numeric size/step coercion rejects floats Clojure accepts. BUG GAP-S130: character literals are treated as one-character strings instead of raising
partition-by✅ supportedPartitions by change in function valueBUG GAP-S71: map/vector callables are rejected in function position. BUG GAP-S130: character literals are treated as one-character strings instead of raising
pcalls✅ supportedParallel calls to zero-arity functions
peek✅ supportedReturns first/last without removingDIV-25 for list alias behavior
persistent!❌ not_relevantConverts transient to persistenttransients are unsupported
pmap✅ supportedParallel map over one or more collectionsMatches map's finite seqable contract: nil collections, string collections, and multiple collections (zip-truncate to shortest) are supported while keeping bounded parallel limits
pop✅ supportedReturns collection without first/lastDIV-25 for list alias behavior; DIV-26 for empty collection signal value
pop!❌ not_relevantRemoves from transient collectiontransients are unsupported
pos-int?✅ supportedReturns true if positive integerDIV-37: arbitrary-precision PTC integers have no distinct JVM int/long width
pos?✅ supportedReturns true if number positiveDIV-31: returns false for nil/non-numeric inputs instead of raising
pr❌ not_relevantPrints value in readable formI/O operation
pr-str✅ supportedReturns readable string of valueDIV-39: collection rendering is deterministic, key-sorted for maps, and space-separated. BUG GAP-S126: character literals print as strings instead of character syntax
prefer-method❌ not_relevantPrefers multimethod implementationmultimethods are unsupported
prefers❌ not_relevantReturns multimethod preferencesmultimethods are unsupported
print❌ not_relevantPrints value without quotingI/O operation
print-str❌ not_relevantReturns printed string of valuerelies on printing logic/I/O
printf❌ not_relevantPrints formatted outputperforms stdout I/O
println✅ supportedPrints with newline
promise❌ not_relevantCreates promiseconcurrency primitive
proxy❌ not_relevantCreates proxy implementing interfacesJava interop
push-thread-bindings❌ not_relevantInstalls thread-local bindingsthread-local mutability/state
qualified-ident?❌ not_relevantReturns true if ident has namespacenamespaced identifiers are not supported as runtime values
qualified-keyword?❌ not_relevantReturns true if keyword has namespacenamespaced keywords are not supported
qualified-symbol?❌ not_relevantReturns true if symbol has namespacesymbols are not supported as runtime values
quot✅ supportedReturns integer division quotientDIV-37: uses PTC-Lisp arbitrary-precision integers instead of JVM Long/MIN_VALUE overflow. BUG GAP-S138: non-finite operands return NaN instead of matching Clojure/JVM behavior
quote❌ not_relevantReturns form unevaluatedquote syntax is intentionally unsupported; use vectors and data literals directly
rand❌ not_relevantReturns random float 0-1non-deterministic randomness contradicts sandbox determinism
rand-int❌ not_relevantReturns random int less than argrelies on non-deterministic side effects/state
rand-nth❌ not_relevantReturns random item from seqrelies on non-deterministic side effects/state
random-sample❌ not_relevantReturns random sample of itemsrelies on non-deterministic side effects/state
random-uuid❌ not_relevantReturns random UUIDrelies on non-deterministic side effects
range✅ supportedReturns sequence of numbers
ratio?✅ supportedReturns true if ratioalways false; ratio literals are unsupported, see DIV-20
rational?✅ supportedReturns true if rational number
rationalize❌ not_relevantCoerces to ratioratio values are not supported
re-find✅ supportedReturns first regex matchBUG GAP-S92: optional unmatched capture groups are dropped instead of returned as nil slots. BUG GAP-S131: character inputs are accepted instead of raising
re-groups❌ not_relevantReturns regex match groupscapture groups are returned directly by re-find, re-matches, and re-seq
re-matcher❌ not_relevantReturns matcher for patternreturns an object maintaining mutable state/matcher position
re-matches✅ supportedReturns full regex match or nilBUG GAP-S92: optional unmatched capture groups are dropped instead of returned as nil slots. BUG GAP-S131: character inputs are accepted instead of raising
re-pattern✅ supportedReturns compiled regex patternBUG GAP-S66: existing regex patterns are rejected instead of returned. BUG GAP-S131: character patterns are accepted instead of raising
re-seq✅ supportedReturns seq of regex matchesBUG GAP-S82: no-match returns [] instead of nil. BUG GAP-S92: optional unmatched capture groups are dropped instead of returned as nil slots. BUG GAP-S131: character inputs are accepted instead of raising
read❌ not_relevantReads next form from readerimplies I/O and interaction with reader contexts
read-line❌ not_relevantReads line from inputI/O operation
read-string❌ not_relevantReads form from stringinvokes reader/eval capabilities not supported in sandbox
realized?❌ not_relevantReturns true if delay/future completerelies on concurrency/lazy primitives not supported
record?❌ not_relevantReturns true if recordrelies on class/type system not supported
recur✅ supportedRebinds loop vars and jumps to loop start
reduce✅ supportedReduces collection with functionBUG GAP-S21: empty/nil input without init returns nil instead of calling the reducing function's zero-arity identity. BUG GAP-S71: map callables are rejected in function position. BUG GAP-S130: character literals are treated as one-character strings instead of raising
reduce-kv✅ supportedReduces map with key-value functionBUG GAP-S59: vector input currently raises instead of reducing indexes and values
reduced🔲 candidateWraps value indicating reduction completepure control flow mechanism for reduction interruption
reduced?🔲 candidateReturns true if wrapped in reducedpure predicate for checking reduction status
reductions❌ not_relevantReturns intermediate reduction resultsreturns a lazy sequence
ref❌ not_relevantCreates STM referencemutable state/concurrency primitive
ref-set❌ not_relevantSets ref value in transactionmutable state/concurrency primitive
reify❌ not_relevantCreates instance implementing protocolsrelies on protocols and class generation
rem✅ supportedReturns remainder of divisionBUG GAP-S138: non-finite operands return NaN instead of matching Clojure/JVM behavior
remove✅ supportedReturns items where predicate falseBUG GAP-S130: character literals are treated as one-character strings instead of raising
remove-all-methods❌ not_relevantRemoves all multimethod implsrelies on multimethods
remove-method❌ not_relevantRemoves multimethod implrelies on multimethods
remove-ns❌ not_relevantRemoves namespacerelies on namespaces
remove-tap❌ not_relevantRemoves function from tap setrelies on global mutable state/taps
remove-watch❌ not_relevantRemoves watch from referencerelies on mutable state references
repeat❌ not_relevantReturns infinite seq repeating valuereturns lazy sequences
repeatedly❌ not_relevantReturns seq calling function repeatedlyreturns lazy sequences
replace✅ supportedReplaces values by map mappingArity-2 clojure.core seq replace (smap lookup over any seqable coll); arity-3 is the clojure.string/replace alias. 1-arity transducer form unsupported. Namespace collapse: (clojure.string/replace smap coll) runs the seq form instead of raising on arity.
require❌ not_relevantRequires namespacerelies on namespace/load system
requiring-resolve❌ not_relevantRequires ns and resolves symbolrelies on namespace/load system
reset!❌ not_relevantSets atom valuemutable state (atoms)
reset-meta!❌ not_relevantSets metadatametadata manipulation
reset-vals!❌ not_relevantSets atom, returns [old new]mutable state (atoms)
resolve❌ not_relevantResolves symbol in namespacenamespace/symbol resolution
rest✅ supportedReturns seq after first itemDIV-29: direct map input raises; use seq/entries/keys/vals for ordered map views. BUG GAP-S130: character literals are treated as one-character strings instead of raising
restart-agent❌ not_relevantRestarts failed agentconcurrency primitives (agents)
reverse✅ supportedReverses order of itemsDIV-29: direct map input raises; use seq/entries/keys/vals for ordered map views. BUG GAP-S20: nil input currently raises instead of returning an empty seq
reversible?✅ supportedReturns true if collection reversibleBUG GAP-S70: strings currently return true but Clojure returns false
rseq❌ not_relevantReturns reverse seq of sorted collectionrelies on lazy/sorted sequence implementation details
rsubseq❌ not_relevantReturns reverse subseq of sorted collrelies on lazy/sorted sequence implementation details
run!❌ not_relevantRuns side effects, returns nilrelies on side effects
satisfies?❌ not_relevantReturns true if type satisfies protocolprotocol/type system feature
second✅ supportedReturns second itemDIV-29: direct map input raises; use seq/entries/keys/vals for ordered map views. BUG GAP-S130: character literals are treated as one-character strings instead of raising
select-keys✅ supportedReturns map with only specified keysnil keyseq returns {} (matches Clojure). DIV-46: a string keyseq seqs to one-character strings that flex-match keyword keys, returning a populated map where Clojure returns {}. BUG GAP-S43: vector inputs currently raise instead of selecting indexes
send❌ not_relevantDispatches action to agentrelies on agent mutable state
send-off❌ not_relevantDispatches blocking action to agentrelies on agent mutable state
send-via❌ not_relevantSends action via executor to agentrelies on agent mutable state
seq✅ supportedReturns sequence or nil if emptyDIV-38: map views are sorted by key instead of preserving Clojure map iteration order. BUG GAP-S130: character literals are treated as one-character strings instead of raising
seq?✅ supportedReturns true if value is sequenceBUG GAP-S84: vectors currently return true instead of false
seqable?✅ supportedReturns true if implements SeqableBUG GAP-S125: character literals return true instead of false
sequence❌ not_relevantReturns seq applying transducerrelies on lazy sequences
sequential?✅ supportedReturns true if sequential
set✅ supportedCreates set from itemsBUG GAP-S30: nil and string inputs currently raise instead of producing sets
set!❌ not_relevantSets thread-local var valuerelies on mutable state
set?✅ supportedReturns true if set
short❌ not_relevantCoerces to shortJVM primitive width coercion
short-array❌ not_relevantCreates short Java arrayrelies on Java array instantiation
shorts❌ not_relevantCasts to short arrayrelies on Java array interaction
shuffle❌ not_relevantReturns items in random orderrelies on non-deterministic side effects (randomness)
shutdown-agents❌ not_relevantShuts down agent thread poolmanages thread pools which is unsupported
simple-ident?❌ not_relevantReturns true if ident has no namespacePTC-Lisp has keywords but no first-class symbol or namespaced identifier values
simple-keyword?❌ not_relevantReturns true if keyword has no nsnamespaced keywords are not supported
simple-symbol?❌ not_relevantReturns true if symbol has no nssymbols are not supported as runtime values
slurp❌ not_relevantReads entire contents of file/URLinvolves file/network I/O
some✅ supportedReturns first truthy result or nilBUG GAP-S71: map/vector callables are rejected in function position. BUG GAP-S130: character literals are treated as one-character strings instead of raising
some->✅ supportedThreads through forms while non-nilGAP-S128 fixed: nil thread targets raise once reached
some->>✅ supportedThreads as last arg while non-nilGAP-S128 fixed: nil thread targets raise once reached
some-fn✅ supportedReturns pred true if any fn truthyBUG GAP-S71: map/set/vector callables are rejected in predicate position
some?✅ supportedReturns true if not nil
sort✅ supportedReturns sorted sequenceDIV-30: uses PTC's recoverable total term ordering for nil and mixed values; BUG GAP-S20: nil input currently raises instead of returning an empty seq; BUG GAP-S46: nil comparator currently raises instead of using default compare; BUG GAP-S107: boolean comparator functions are not honored with Clojure ordering semantics
sort-by✅ supportedReturns seq sorted by function resultDIV-30: uses PTC's recoverable total term ordering for nil and mixed values; BUG GAP-S71: map/vector callables are rejected as key functions; BUG GAP-S107: boolean comparator functions are not honored with Clojure ordering semantics
sorted-map🔲 candidateCreates sorted map from pairspure collection construction
sorted-map-by🔲 candidateCreates sorted map with comparatorpure collection construction with custom comparator
sorted-set🔲 candidateCreates sorted set from itemspure collection construction
sorted-set-by🔲 candidateCreates sorted set with comparatorpure collection construction with custom comparator
sorted?✅ supportedReturns true if collection sorted
spit❌ not_relevantWrites content to filefile I/O
split-at✅ supportedSplits seq at indexBUG GAP-S79: numeric count coercion rejects floats Clojure accepts. BUG GAP-S130: character literals are treated as one-character strings instead of raising
split-with✅ supportedSplits seq by predicateDIV-36: string sequence predicates receive one-character strings. BUG GAP-S71: map/vector callables are rejected in predicate position. BUG GAP-S130: character literals are treated as one-character strings instead of raising
str✅ supportedConverts to stringBUG GAP-S93: regex patterns render as internal tuples instead of source pattern text
string?✅ supportedReturns true if stringBUG GAP-S133: character literals return true instead of false
struct❌ not_relevantCreates structure instancelegacy structure system, discouraged/deprecated
struct-map❌ not_relevantCreates structure map from basislegacy structure system, discouraged/deprecated
subs✅ supportedReturns substringDIV-22: returns signal values instead of raising on out-of-range indices; DIV-36: string indexes use Unicode graphemes; BUG GAP-S79: numeric index coercion rejects floats Clojure accepts
subseq🔲 candidateReturns subseq of sorted collectionpure operation on sorted collections
subvec✅ supportedReturns subvectorDIV-26: clamps out-of-range indices instead of raising. BUG GAP-S79: numeric index coercion rejects floats Clojure accepts
supers❌ not_relevantReturns all ancestors of classrelies on Java class hierarchy/interop
swap!❌ not_relevantUpdates atom with functionrequires mutable state (atom)
swap-vals!❌ not_relevantUpdates atom, returns [old new]requires mutable state (atom)
symbol🔲 candidateCoerces to symbolpure data coercion
symbol?✅ supportedReturns true if symbol
take✅ supportedReturns first n itemsBUG GAP-S20: nil input currently raises instead of returning an empty seq; BUG GAP-S32: negative count returns a tail instead of an empty seq; BUG GAP-S79: numeric count coercion rejects floats Clojure accepts
take-last✅ supportedReturns last n itemsnil input returns nil, matching Clojure. BUG GAP-S32: negative count returns an empty vector instead of nil
take-nth❌ not_relevantReturns every nth itemreturns a lazy sequence
take-while✅ supportedTakes items while predicate trueBUG GAP-S71: map/vector callables are rejected in predicate position. BUG GAP-S130: character literals are treated as one-character strings instead of raising
tap>❌ not_relevantSends value to tapsside-effecting I/O mechanism
test❌ not_relevantRuns tests for namespacebuilt-in testing framework/REPL tool
throw❌ not_relevantThrows exceptionexception handling
time❌ not_relevantEvaluates and prints elapsed timeside-effecting I/O and timing
to-array❌ not_relevantConverts to object arrayJava interop for array creation
to-array-2d❌ not_relevantConverts to 2D arrayJava interop for array creation
trampoline❌ not_relevantMutual recursion without stack overflowlazy/mutual-recursion utility outside PTC-Lisp's small evaluator surface
transduce🔲 candidateReduces with transducerPure data transformation utility
transient❌ not_relevantCreates transient collectionMutable state/transients are not supported
tree-seq✅ supportedDepth-first seq from rootBUG GAP-S77: string roots can recurse until heap limit
true?✅ supportedReturns true if value is true
try❌ not_relevantException handlingException handling is not supported
type✅ supportedReturns type of valueDIV-28: returns stable PTC type keywords instead of host JVM classes
unchecked-add❌ not_relevantAdds without overflow checkJava-specific math optimization
unchecked-add-int❌ not_relevantAdds ints without overflow checkJava-specific math optimization
unchecked-byte❌ not_relevantCasts to byte without checkJava-specific primitive casting
unchecked-char❌ not_relevantCasts to char without checkRelies on Java primitive casting/low-level JVM semantics
unchecked-dec❌ not_relevantDecrements without overflow checkRelies on Java primitive casting/low-level JVM semantics
unchecked-dec-int❌ not_relevantDecrements int without checkRelies on Java primitive casting/low-level JVM semantics
unchecked-divide-int❌ not_relevantDivides ints without checkRelies on Java primitive casting/low-level JVM semantics
unchecked-double❌ not_relevantCasts to double without checkRelies on Java primitive casting/low-level JVM semantics
unchecked-float❌ not_relevantCasts to float without checkRelies on Java primitive casting/low-level JVM semantics
unchecked-inc❌ not_relevantIncrements without overflow checkRelies on Java primitive casting/low-level JVM semantics
unchecked-inc-int❌ not_relevantIncrements int without checkRelies on Java primitive casting/low-level JVM semantics
unchecked-int❌ not_relevantCasts to int without checkRelies on Java primitive casting/low-level JVM semantics
unchecked-long❌ not_relevantCasts to long without checkRelies on Java primitive casting/low-level JVM semantics
unchecked-multiply❌ not_relevantMultiplies without overflow checkrelies on JVM-specific primitive behavior/overflow semantics
unchecked-multiply-int❌ not_relevantMultiplies ints without checkrelies on JVM-specific primitive behavior/overflow semantics
unchecked-negate❌ not_relevantNegates without overflow checkrelies on JVM-specific primitive behavior/overflow semantics
unchecked-negate-int❌ not_relevantNegates int without checkrelies on JVM-specific primitive behavior/overflow semantics
unchecked-remainder-int❌ not_relevantRemainder without checkrelies on JVM-specific primitive behavior/overflow semantics
unchecked-short❌ not_relevantCasts to short without checkrelies on Java type casting/interop
unchecked-subtract❌ not_relevantSubtracts without overflow checkrelies on JVM-specific primitive behavior/overflow semantics
unchecked-subtract-int❌ not_relevantSubtracts ints without checkrelies on JVM-specific primitive behavior/overflow semantics
underive❌ not_relevantRemoves hierarchical relationshiprequires global hierarchy/multimethod infrastructure
unreduced🔲 candidateUnwraps from reducedpure transformation used for handling reduced values in reductions
unsigned-bit-shift-right❌ not_relevantUnsigned right shiftno defined meaning on BEAM — integers are arbitrary-precision two's-complement with no fixed width to zero-fill from
update✅ supportedApplies function to map value at keyBUG GAP-S19: nil map root currently raises instead of building a map. BUG GAP-S83: vector append at count index raises instead of following assoc semantics
update-in✅ supportedApplies function to nested map valueAn empty or nil path updates the value at the nil key, matching Clojure's recursive update-in definition; BUG GAP-S83: vector append at count index raises instead of following assoc semantics
update-keys✅ supportedApplies function to map keysBUG GAP-S24: nil map currently returns nil instead of an empty map. BUG GAP-S71: map/set/vector callables are rejected as key transforms. BUG GAP-S75: vector inputs are rejected
update-proxy❌ not_relevantUpdates proxy method implementationsrelies on Java interop/proxy class system
update-vals✅ supportedApplies function to map valuesBUG GAP-S24: nil map currently returns nil instead of an empty map. BUG GAP-S71: map/set/vector callables are rejected as value transforms. BUG GAP-S75: vector inputs are rejected
val✅ supportedReturns value of map entryBUG GAP-S17: currently accepts plain vectors/list pairs as map entries
vals✅ supportedReturns map valuesDIV-38: map views are sorted by key instead of preserving Clojure map iteration order
var-get❌ not_relevantGets value of varrelies on specific var/namespace system
var-set❌ not_relevantSets var in thread-local bindingrelies on mutable thread-local bindings
var?❌ not_relevantReturns true if varrelies on var data structure absent in PTC-Lisp
vary-meta❌ not_relevantReturns value with transformed metadatarelies on metadata feature
vec✅ supportedConverts to vectorBUG GAP-S40: nil input currently returns nil instead of an empty vector. BUG GAP-S130: character literals are treated as one-character strings instead of raising
vector✅ supportedCreates vector from items
vector?✅ supportedReturns true if vectorDIV-25 for list alias behavior
volatile!❌ not_relevantCreates volatile with initial valuerelies on mutable state
volatile?❌ not_relevantReturns true if volatilerelies on mutable state
vreset!❌ not_relevantSets volatile valuerelies on mutable state
vswap!❌ not_relevantUpdates volatile with functioninvolves mutable state (volatiles)
when✅ supportedEvaluates body if test trueBodyless form returns nil, matching Clojure
when-first✅ supportedEvaluates body if seq non-emptyBUG GAP-S145: extra binding-vector forms are rejected instead of ignored
when-let✅ supportedBinds if truthy, evaluates bodyDIV-14: destructuring bindings are intentionally unsupported. BUG GAP-S145: extra binding-vector forms are rejected instead of ignored
when-not✅ supportedEvaluates body if test falseBodyless form returns nil, matching Clojure
when-some✅ supportedBinds if not nil, evaluates bodyDIV-14: destructuring bindings are intentionally unsupported. BUG GAP-S145: extra binding-vector forms are rejected instead of ignored
while❌ not_relevantRepeats body while test trueimperative looping construct typically relying on side effects
with-bindings❌ not_relevantExecutes body with thread-local bindingsrelies on thread-local state which is not supported in the BEAM model for PTC-Lisp
with-in-str❌ not_relevantEvaluates body with string as inputrelies on I/O streams
with-local-vars❌ not_relevantEvaluates body with local var bindingsrequires mutable local vars
with-meta❌ not_relevantReturns value with new metadatametadata is not supported
with-open❌ not_relevantOpens resources, closes on exitrelies on I/O and resource management
with-out-str❌ not_relevantCaptures output to stringrelies on capturing side-effecting I/O
with-precision❌ not_relevantSets decimal precision for bodyrelies on specific BigDecimal support and dynamic binding context not present in PTC-Lisp
with-redefs❌ not_relevantRedefines vars for body durationmodifies global var bindings, which is not supported in a functional, immutable sandbox
xml-seq❌ not_relevantLazy seq of XML elementsrelies on lazy sequences and I/O-related parsing
zero?✅ supportedReturns true if number is zeroDIV-31: returns false for nil/non-numeric inputs instead of raising
zipmap✅ supportedCreates map from keys and values seqsBUG GAP-S130: character literals are treated as one-character strings instead of raising