
Security News
Another Round of TEA Protocol Spam Floods npm, But It’s Not a Worm
Recent coverage mislabels the latest TEA protocol spam as a worm. Here’s what’s actually happening.
ramda-suggest
Advanced tools
A library to suggest functions to use given some input and a desired output
Usage | Non-Primitive Inputs | Functions as Outputs
This is a library inspired
by suggest.el and the
constant (valid) feedback I get from people new
to Ramda...
"How do you know what the Ramda function is called?!" - 🤔
"I know what I want to do, but how do I do it?!" - 😫
"Why do the arguments for compose go right to left...?" - 🙃
So this tool will (hopefully) suggest a function in Ramda, you can use to produce your desired output! For example,
// Given: [1, 2, 3, 4, 5]
// Desired: 15
R.sum([1, 2, 3, 4, 5]) = 15
Install this package in the typical way;
npm install -g ramda-suggest
ramda-suggest true
# T [type:Function] : R.T() → true
#
# A function that always returns `true`. Any passed in parameters are ignored.
#
# param 1: {*}
# returns: {Boolean}
ramda-suggest 42 41
# dec [type:Math] : R.dec(42) → 41
#
# Decrements its argument.
#
# param 1: {Number} n
# returns: {Number} n - 1
The easiest way allow inputs of things other that just primitive
JavaScript data types (i.e. Arrays, Objects, Functions) was to
use eval.
This will cast Strings that look like Arrays into Arrays! However,
bear in mind that eval will just evaluate whatever you pass in
in the following formats;
ramda-suggest foo bar foobar
# concat [type:List] : R.concat("foo", "bar") → foobar
#
# Returns the result of concatenating the given lists or strings.
# Note: `R.concat` expects both arguments to be of the same type,
# unlike the native `Array.prototype.concat` method. It will throw
# an error if you `concat` an Array with a non-Array value.
# Dispatches to the `concat` method of the first argument, if present.
#
# param 1: {Array|String} firstList The first list, param 2: {Array|String} secondList...
# returns: {Array|String} A list consisting of the elements of `firstList` followed by...
ramda-suggest a '{a:1,b:2,c:3}' '{b:2,c3:}'
# dissoc [category:Object]
#
# R: R.dissoc("a", {"a":1,"b":2,"c":3}) → {"b":2,"c":3}
# λ: String → {k: v} → {k: v}
#
# Returns a new object that does not contain a prop property.
#
# param 1: {String} prop The name of the property to dissociate
# param 2: {Object} obj The object to clone
# returns: {Object} A new object equivalent to the original but without the specified property
Note that Objects must be wrapped in single quotes - This is a limitation of how Node parses command line args.
ramda-suggest [1,2,3,4,5] 15
ramda-suggest '[1, 2, 3, 4, 5]' 15
# sum [type:Math] : R.sum([1,2,3,4,5]) → 15
#
# Adds together all the elements of a list.
#
# param 1: {Array} list An array of numbers
# returns: {Number} The sum of all the numbers in the list.
Functions must be placed inside strings
ramda-suggest '(a, b) => a + b' 0 [1,2,3,4] 10
# reduce [type:List] : R.reduce((a, b) => a + b, 0, [1,2,3,4]) → 10
#
# /*
# ...docs...
# */
#
# param 1: {Function} fn The iterator function. Receives two values, the accumulator and the, param 2: {*} acc The accumulator value., param 3: {Array} list The list to iterate over.
# returns: {*} The final, accumulated value.
A lot of the time, Ramda will return a function rather than actual output - You can also test these in the same way you would pass in functions as arguments! e.g.
ramda-suggest '(a) => a + 5' '() => 10' '() => 15'
# compose [category:Function]
#
# R: R.compose((a) => a + 5, () => 10) → () => 15
# λ: ((y → z), (x → y), ..., (o → p), ((a, b, ..., n) → o)) → ((a, b, ..., n) → z)
#
# Performs right-to-left function composition. The rightmost function may have
# any arity; the remaining functions must be unary.
#
# param 1: {...Function} ...functions The functions to compose
# returns: {Function}
For output functions which take arguments, you should pass them in using the following format;
("value_1", "value_2") => "return_string"
This will define an output function which when called with the 2
arguments, "value_1" & "value_2" (both strings) expects the
return to be "return_string".
ramda-suggest '(a) => a + 2' '(a) => a * 2' '(5) => 12'
# compose [category:Function]
#
# R: R.compose((a) => a + 2, (a) => a * 2) → (a: 5) => 12
# λ: ((y → z), (x → y), ..., (o → p), ((a, b, ..., n) → o)) → ((a, b, ..., n) → z)
#
# Performs right-to-left function composition. The rightmost function may have
# any arity; the remaining functions must be unary.
#
# param 1: {...Function} ...functions The functions to compose
# returns: {Function}
In the above example, you have two functions which take arguments, and
when composed together basiaclly perform (a) => (a * 2) + 2, in this
case, we would expect that when we call the returned function with a
value of 5, we should get 12 out.
This would also work with the following examples
ramda-suggest '(a) => a + 2' '(a) => a * 2' '(10) => 22'ramda-suggest '(a) => a + 2' '(a) => a * 2' '(100) => 202'ramda-suggest '(a) => a + 2' '(a) => a * 2' '(2) => 6'You can also use other primtive types as return values from your output functions, for example
ramda-suggest '(a) => [a, 2]' '(a) => a * 2' '(100) => [200, 2]'
# compose [category:Function]
#
# R: R.compose((a) => [a, 2], (a) => a * 2) → (a: 100) => [200,2]
# λ: ((y → z), (x → y), ..., (o → p), ((a, b, ..., n) → o)) → ((a, b, ..., n) → z)
#
# Performs right-to-left function composition. The rightmost function may have
# any arity; the remaining functions must be unary.
#
# param 1: {...Function} ...functions The functions to compose
# returns: {Function}
FAQs
A library to suggest functions to use given some input and a desired output
We found that ramda-suggest demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Recent coverage mislabels the latest TEA protocol spam as a worm. Here’s what’s actually happening.

Security News
PyPI adds Trusted Publishing support for GitLab Self-Managed as adoption reaches 25% of uploads

Research
/Security News
A malicious Chrome extension posing as an Ethereum wallet steals seed phrases by encoding them into Sui transactions, enabling full wallet takeover.