Source File
builtin_fn_pred.go
Belonging Package
src.elv.sh/pkg/eval
package evalimport// Basic predicate commands.//elvdoc:fn bool//// ```elvish// bool $value// ```//// Convert a value to boolean. In Elvish, only `$false` and errors are booleanly// false. Everything else, including 0, empty strings and empty lists, is booleanly// true://// ```elvish-transcript// ~> bool $true// ▶ $true// ~> bool $false// ▶ $false// ~> bool $ok// ▶ $true// ~> bool ?(fail haha)// ▶ $false// ~> bool ''// ▶ $true// ~> bool []// ▶ $true// ~> bool abc// ▶ $true// ```//// @cf notfunc () {addBuiltinFns(map[string]interface{}{"bool": vals.Bool,"not": not,"is": is,"eq": eq,"not-eq": notEq,})}//elvdoc:fn not//// ```elvish// not $value// ```//// Boolean negation. Examples://// ```elvish-transcript// ~> not $true// ▶ $false// ~> not $false// ▶ $true// ~> not $ok// ▶ $false// ~> not ?(fail error)// ▶ $true// ```//// **Note**: The related logical commands `and` and `or` are implemented as// [special commands](language.html#special-commands) instead, since they do not// always evaluate all their arguments. The `not` command always evaluates its// only argument, and is thus a normal command.//// @cf boolfunc ( interface{}) bool {return !vals.Bool()}//elvdoc:fn is//// ```elvish// is $values...// ```//// Determine whether all `$value`s have the same identity. Writes `$true` when// given no or one argument.//// The definition of identity is subject to change. Do not rely on its behavior.//// ```elvish-transcript// ~> is a a// ▶ $true// ~> is a b// ▶ $false// ~> is [] []// ▶ $true// ~> is [a] [a]// ▶ $false// ```//// @cf eq//// Etymology: [Python](https://docs.python.org/3/reference/expressions.html#is).func ( ...interface{}) bool {for := 0; +1 < len(); ++ {if [] != [+1] {return false}}return true}//elvdoc:fn eq//// ```elvish// eq $values...// ```//// Determine whether all `$value`s are structurally equivalent. Writes `$true` when// given no or one argument.//// ```elvish-transcript// ~> eq a a// ▶ $true// ~> eq [a] [a]// ▶ $true// ~> eq [&k=v] [&k=v]// ▶ $true// ~> eq a [b]// ▶ $false// ```//// @cf is not-eq//// Etymology: [Perl](https://perldoc.perl.org/perlop.html#Equality-Operators).func ( ...interface{}) bool {for := 0; +1 < len(); ++ {if !vals.Equal([], [+1]) {return false}}return true}//elvdoc:fn not-eq//// ```elvish// not-eq $values...// ```//// Determines whether every adjacent pair of `$value`s are not equal. Note that// this does not imply that `$value`s are all distinct. Examples://// ```elvish-transcript// ~> not-eq 1 2 3// ▶ $true// ~> not-eq 1 2 1// ▶ $true// ~> not-eq 1 1 2// ▶ $false// ```//// @cf eqfunc ( ...interface{}) bool {for := 0; +1 < len(); ++ {if vals.Equal([], [+1]) {return false}}return true}
The pages are generated with Golds v0.2.8-preview. (GOOS=darwin GOARCH=arm64)