Skip to content

stackoverflow/wally

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

wally

Wally is a library to find functions by structure (inputs and outputs) and not by name or documentation like doc or find-doc. Wally is aimed at beginners but it can be useful to seasoned clojure programmers too.

Install

Leiningen:

[wally "0.1.1"]

Maven:

<dependency>
    <groupId>wally</groupId>
    <artifactId>wally</artifactId>
    <version>0.1.1</version>
</dependency>

Usage

The main function in the lib is find-by-sample. It'll try to find functions that satisfy the supplied output and inputs and will print the doc for every matching function. find-by-sample will only search for functions on namespaces listed on white-list-namespaces:

#{"clojure.core"
  "clojure.set"
  "clojure.uuid"
  "clojure.walk"
  "clojure.repl"
  "clojure.string"}

If you want to supply your own namespaces you can use find-by-sample-for-namespaces but take care as this function will execute every function in the supplied namespaces (except for functions terminated on !).

Some examples:

user=> (use 'wally.core)
nil
user=> (find-by-sample {1 1, 2 3, 3 1, 4 2} [1 2 3 4 4 2 2])
-------------------------
clojure.core/frequencies
([coll])
  Returns a map from distinct items in coll to the number of times
  they appear.
user=> (find-by-sample #{4} #{1 2 3 4} #{4 5 6 7})
-------------------------
clojure.set/select
([pred xset])
  Returns a set of the elements for which pred is true
-------------------------
clojure.set/intersection
([s1] [s1 s2] [s1 s2 & sets])
  Return a set that is the intersection of the input sets
user=> (find-by-sample 4 2 2)
-------------------------
clojure.core/unchecked-multiply
([x y])
  Returns the product of x and y, both long.
  Note - uses a primitive operator subject to overflow.
-------------------------
clojure.core/+
([] [x] [x y] [x y & more])
  Returns the sum of nums. (+) returns 0. Does not auto-promote
  longs, will throw on overflow. See also: +'
-------------------------
clojure.core/*
([] [x] [x y] [x y & more])
  Returns the product of nums. (*) returns 1. Does not auto-promote
  longs, will throw on overflow. See also: *'
-------------------------
clojure.core/unchecked-add
([x y])
  Returns the sum of x and y, both long.
  Note - uses a primitive operator subject to overflow.
-------------------------
clojure.core/+'
([] [x] [x y] [x y & more])
  Returns the sum of nums. (+) returns 0. Supports arbitrary precision.
  See also: +
-------------------------
clojure.core/unchecked-multiply-int
([x y])
  Returns the product of x and y, both int.
  Note - uses a primitive operator subject to overflow.
-------------------------
clojure.core/*'
([] [x] [x y] [x y & more])
  Returns the product of nums. (*) returns 1. Supports arbitrary precision.
  See also: *
-------------------------
clojure.core/unchecked-add-int
([x y])
  Returns the sum of x and y, both int.
  Note - uses a primitive operator subject to overflow.

License

Copyright © 2013 Islon Scherer

Distributed under the Eclipse Public License, the same as Clojure.

About

a structural function finder for clojure

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published