mirror of
				https://github.com/janet-lang/janet
				synced 2025-11-04 09:33:02 +00:00 
			
		
		
		
	rework keys, values, pairs
				
					
				
			This commit is contained in:
		@@ -1566,31 +1566,31 @@
 | 
			
		||||
(defn keys
 | 
			
		||||
  "Get the keys of an associative data structure."
 | 
			
		||||
  [x]
 | 
			
		||||
  (def arr @[])
 | 
			
		||||
  (var k (next x nil))
 | 
			
		||||
  (while (not= nil k)
 | 
			
		||||
    (array/push arr k)
 | 
			
		||||
    (set k (next x k)))
 | 
			
		||||
  (def arr (array/new-filled (length x)))
 | 
			
		||||
  (var i 0)
 | 
			
		||||
  (eachk k x
 | 
			
		||||
    (put arr i k)
 | 
			
		||||
    (++ i))
 | 
			
		||||
  arr)
 | 
			
		||||
 | 
			
		||||
(defn values
 | 
			
		||||
  "Get the values of an associative data structure."
 | 
			
		||||
  [x]
 | 
			
		||||
  (def arr @[])
 | 
			
		||||
  (var k (next x nil))
 | 
			
		||||
  (while (not= nil k)
 | 
			
		||||
    (array/push arr (in x k))
 | 
			
		||||
    (set k (next x k)))
 | 
			
		||||
  (def arr (array/new-filled (length x)))
 | 
			
		||||
  (var i 0)
 | 
			
		||||
  (each v x
 | 
			
		||||
    (put arr i v)
 | 
			
		||||
    (++ i))
 | 
			
		||||
  arr)
 | 
			
		||||
 | 
			
		||||
(defn pairs
 | 
			
		||||
  "Get the key-value pairs of an associative data structure."
 | 
			
		||||
  [x]
 | 
			
		||||
  (def arr @[])
 | 
			
		||||
  (var k (next x nil))
 | 
			
		||||
  (while (not= nil k)
 | 
			
		||||
    (array/push arr (tuple k (in x k)))
 | 
			
		||||
    (set k (next x k)))
 | 
			
		||||
  (def arr (array/new-filled (length x)))
 | 
			
		||||
  (var i 0)
 | 
			
		||||
  (eachp p x
 | 
			
		||||
    (put arr i p)
 | 
			
		||||
    (++ i))
 | 
			
		||||
  arr)
 | 
			
		||||
 | 
			
		||||
(defn frequencies
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user