text:
enum Bool
Logical boolean
<False True>
An enum for boolean true/false decisions.
method ACCEPTS
method ACCEPTS(Bool: --> Bool)
Used for smartmatch comparison. When the right side is
True returns always
True, when the right side of the match is
False returns always
False. In particular,
ACCEPTS returns always the instance on which it is invoked, that is the right side of a smartmatch. As an example:
my = Bool.new( True );# when True on the right side returns# always TrueTrue ~~ ; # TrueFalse ~~ ; # True= Bool.new( False );# when False on the right side# returns always FalseFalse ~~ ; # FalseTrue ~~ ; # False
routine succ
method succ(--> Bool)
say True.succ; # OUTPUT: «True␤»say False.succ; # OUTPUT: «True␤»
succ is short for "successor"; it returns the next enum value. Bool is a special enum with only two values,
False and
True. When sorted,
False comes first, so
True is its successor. And since
True is the "highest" Bool enum value, its own successor is also
routine pred
method pred(--> Bool)
say True.pred; # OUTPUT: «False␤»say False.pred; # OUTPUT: «False␤»
pred is short for "predecessor"; it returns the previous enum value. Bool is a special enum with only two values,
False and
True. When sorted,
False comes first, so
False is the predecessor to
True. And since
False is the "lowest" Bool enum value, its own predecessor is also
routine enums
method enums(--> Hash)
Returns a Hash of enum-pairs. Works on both the
Bool type and any key.
say Bool.enums; # OUTPUT: «{False => 0, True => 1}␤»say False.enums; # OUTPUT: «{False => 0, True => 1}␤»
routine pick
multi method pick(Bool --> Bool)multi method pick(Bool --> Seq)
True or
False if called without any argument. Otherwise returns
$count elements chosen at random (without repetition) from the
enum. If
* is passed as
$count, or
$count is greater than or equal to two, then both elements are returned in random order.
say Bool.pick; # OUTPUT: «True␤»say Bool.pick(1); # OUTPUT: «(False)␤»say Bool.pick(*); # OUTPUT: «(False True)␤»
routine roll
multi method roll(Bool --> Bool)multi method roll(Bool --> Seq)
True or
False if called without any argument. Otherwise returns
$count elements chosen at random. Note that each random choice from the
enum is made independently, like a separate coin toss where each side of the coin represents one of the two values of the
enum. If
* is passed as
$count an infinite Seq of
Bools is returned.
say Bool.roll; # OUTPUT: «True␤»say Bool.roll(3); # OUTPUT: «(True False False)␤»say Bool.roll(*); # OUTPUT: «(...)␤»
routine Numeric
multi method Numeric(Bool --> Int)
Returns the value part of the
enum pair.
say False.Numeric; # OUTPUT: «0␤»say True.Numeric; # OUTPUT: «1␤»
prefix ?
multi sub prefix:<?>(Mu --> Bool)
Coerces its argument to
prefix so
multi sub prefix:<so>(Mu --> Bool)
Coerces its argument to
Bool, has looser precedence than
prefix:<?> .
Type Graph
Routines supplied by class Int
Bool inherits from class Int, which provides the following routines:
(Int) method Capture
Defined as:
method Capture()
(Int) routine chr
Defined as:
multi sub chr(Int --> Str)multi method chr(Int: --> Str)
Returns a one-character string, by interpreting the integer as a Unicode codepoint number and converting it to the corresponding character.
65.chr; # returns "A"196.chr; # returns "Ä"
(Int) routine expmod
Defined as:
multi sub expmod( , , --> Int)multi sub expmod(Int , Int , Int --> Int)multi method expmod(Int: Int , Int --> Int)
Returns the given
Int raised to the
$y power within modulus
$mod, that is gives the result of
($x ** $y) mod $mod. The subroutine form can accept non-
Int arguments, which will be coerced to
say expmod(4, 2, 5); # OUTPUT: «1␤»say 7.expmod(2, 5); # OUTPUT: «4␤»
(Int) method polymod
Defined as:
method polymod(Int: +)
Returns a sequence of mod results corresponding to the divisors in
@mods in the same order as they appear there. For the best effect, the divisors should be given from the smallest "unit" to the largest (e.g. 60 seconds per minute, 60 minutes per hour) and the results are returned in the same way: from smallest to the largest (5 seconds, 4 minutes). The last non-zero value will be the last remainder.
say 120.polymod(10); # OUTPUT: «(0 12)␤»say 120.polymod(10,10); # OUTPUT: «(0 2 1)␤»
In the first case, 120 is divided by 10 giving as a remainder 12, which is the last element. In the second, 120 is
divided by 10, giving 12, whose remainder once divided by 10 is 2; the result of the integer division of 12
div 10 is the last remainder. The number of remainders will be always one more item than the number of given divisors. If the divisors are given as a lazy list, runs until the remainder is 0 or the list of divisors is exhausted. All divisors must be
Ints, unless the method is called on a non-
Int number.
my = 1 * 60*60*24 # days+ 3 * 60*60 # hours+ 4 * 60 # minutes+ 5; # secondssay .polymod(60, 60); # OUTPUT: «(5 4 27)␤»say .polymod(60, 60, 24); # OUTPUT: «(5 4 3 1)␤»say 120.polymod: 1, 10, 10², 10³, 10⁴; # OUTPUT: «(0 0 12 0 0 0)␤»say 120.polymod: lazy 1, 10, 10², 10³, 10⁴; # OUTPUT: «(0 0 12)␤»say 120.polymod: 1, 10, 10² … ∞; # OUTPUT: «(0 0 12)␤»say ⅔.polymod(⅓); # OUTPUT: «(0 2)␤»say 5.Rat.polymod(.3, .2); # OUTPUT: «(0.2 0 80)␤»my = 9123607.polymod(37 xx *); # Base conversionsay .reverse # OUTPUT: «[4 32 4 15 36]␤»
To illustrate how the
Int, non-lazy version of polymod works, consider this code that implements it:
my = 2 * 60*60*24 # days+ 3 * 60*60 # hours+ 4 * 60 # minutes+ 5; # secondsmy ;for 60, 60, 24 ->.push: ;say ; # OUTPUT: «[5 4 3 2]␤»
For a more detailed discussion, see this blog post
(Int) routine is-prime
Defined as:
multi sub is-prime (Int --> Bool)multi method is-prime (Int: --> Bool)
True if this
Int is known to be a prime, or is likely to be a prime based on a probabilistic Miller-Rabin test.
False if this
Int is known not to be a prime.
say 2.is-prime; # OUTPUT: «True␤»say is-prime(9); # OUTPUT: «False␤»
(Int) routine lsb
Defined as:
multi method lsb(Int:)multi sub lsb(Int)
Short for "Least Significant Bit". Returns Nil if the number is 0. Otherwise returns the zero-based index from the right of the least significant (rightmost) 1 in the binary representation of the number.
say 0b01011.lsb; # OUTPUT: «0␤»say 0b01010.lsb; # OUTPUT: «1␤»say 0b10100.lsb; # OUTPUT: «2␤»say 0b01000.lsb; # OUTPUT: «3␤»say 0b10000.lsb; # OUTPUT: «4␤»
(Int) routine msb
Defined as:
multi method msb(Int:)multi sub msb(Int)
Short for "Most Significant Bit". Returns Nil if the number is 0. Otherwise returns the zero-based index from the right of the most significant (leftmost) 1 in the binary representation of the number.
say 0b00001.msb; # OUTPUT: «0␤»say 0b00011.msb; # OUTPUT: «1␤»say 0b00101.msb; # OUTPUT: «2␤»say 0b01010.msb; # OUTPUT: «3␤»say 0b10011.msb; # OUTPUT: «4␤»
(Int) routine unival
Defined as:
multi sub unival(Int --> Numeric)multi method unival(Int: --> Numeric)
Returns the number represented by the Unicode codepoint with the given integer number, or NaN if it does not represent a number.
say ord("¾").unival; # OUTPUT: «0.75␤»say 190.unival; # OUTPUT: «0.75␤»say unival(65); # OUTPUT: «NaN␤»
(Int) infix div
multi sub infix:<div>(Int, Int --> Int)
Does an integer division, rounded down.
Routines supplied by role Real
Bool inherits from class Int, which does role Real, which provides the following routines:
(Real) method Bridge
Defined as:
method Bridge(Real:)
Default implementation coerces the invocant to Num and that's the behavior of this method in core Real types. This method primarily exist to make it easy to implement custom Real types by users, with the
Bridge method returning one of the core
Real types (NOT necessarily a Num) that best represent the custom
Real type. In turn, this lets all the core operators and methods obtain a usable value they can work with.
As an example, we can implement a custom
Temperature type. It has a unit of measure and the value, which are given during instantiation. We can implement custom operators or conversion methods that work with this type. When it comes to regular mathematical operators, however, we can simply use the
.Bridge method to convert the
Temperature to Kelvin expressed in one of the core numeric types:
is Realsub postfix:<℃>sub postfix:<℉>sub postfix:<K>my := 36.6℃;my := 451℉;my := 5778K;say ; # OUTPUT: «36.6 degrees C␤»say + + ; # OUTPUT: «6593.677777777778␤»say 123K + 456K; # OUTPUT: «579␤»
As we can see from the last two lines of the output, the type of the bridged result is not forced to be any particular core type. It is a Rat, when we instantiated
Temperature with a
Rat or when conversion was involved, and it is an Int when we instantiated
Temperature with an Int.
(Real) method Complex
method Complex(Real: --> Complex)
Converts the number to a
Complex with the number converted to a
Num as its real part and 0e0 as the imaginary part.
(Real) method Rat
method Rat(Real: Real = 1e-6)
Converts the number to a
Rat with the precision
(Real) method Real
Defined as:
multi method Real(Real: --> Real)multi method Real(Real: --> Real)
:D variant simply returns the invocant. The
:U variant issues a warning about using an uninitialized value in numeric context and then returns
(Real) routine rand
sub term:<rand> (--> Num)method rand(Real: --> Real)
Returns a pseudo-random number between zero (inclusive) and the number (non-inclusive). The
Bridge method is used to coerce the
Real to a numeric that supports rand method.
The term form returns a pseudo-random
Num between 0e0 (inclusive) and 1e0 (non-inclusive.)
(Real) method sign
method sign(Real:)
-1 if the number is negative,
0 if it is zero and
1 otherwise.
(Real) method round
method round(Real: = 1)
Rounds the number to scale
$scale. If
$scale is 1, rounds to an integer. If scale is
0.1, rounds to one digit after the comma etc.
(Real) method floor
method floor(Real --> Int)
Return the largest integer not greater than the number.
(Real) method ceiling
method ceiling(Real --> Int)
Returns the smallest integer not less than the number.
(Real) method truncate
method truncate(Real --> Int)
Rounds the number towards zero.
(Real) method polymod
method polymod(Real: +)
Returns the remainders after applying sequentially all divisors in the
@mods argument; the last element of the array will be the last remainder.
say (1e8+1).polymod(10 xx 8); # OUTPUT: «(1 0 0 0 0 0 0 0 1)␤»
10 xx 8 is simply an array with eight number 10s; the first division by 10 will return
1 as a remainder, while the rest, up to the last, will return 0. With 8 divisors, as above, the result will have one more elements, in this case for the last remainder.
(Real) method base
method base(Real: Int where 2..36, ? --> Str)
Converts the number to a string, using
$base as base. For
$base larger than ten, capital Latin letters are used.
255.base(16); # 'FF'
The optional
$digits argument asks for that many digits of fraction (which may not be negative). If omitted, a reasonable default is chosen based on type. For Int this default is 0. For Num, the default is 8. For Rational, the number of places is scaled to the size of the denominator, with a minimum of 6.
A special value of
Whatever (
*) can be given as
$digits, which functions the same as when
$digits is not specified for all
Real types except the
Rationals. For
Rationals, the
Whatever indicates that you wish all of the possible digits of the fractional part, but use caution: since there's no detection of repeating fractional parts (the algorithm will eventually stop after generating 2**63 digits).
The final digit produced is always rounded.
say pi.base(10, 3); # OUTPUT: «3.142␤»say (1/128).base(10, *); # OUTPUT: «0.0078125␤»say (1/100).base(10, *); # OUTPUT: «0.01␤»say (1/3) .base(10, *); # WRONG: endlessly repeating fractional part
For reverse operation, see
Routines supplied by class Cool
Bool inherits from class Cool, which provides the following routines:
(Cool) routine abs
Defined as:
sub abs(Numeric() )method abs()
Coerces the invocant (or in the sub form, the argument) to Numeric and returns the absolute value (that is, a non-negative number).
say (-2).abs; # OUTPUT: «2␤»say abs "6+8i"; # OUTPUT: «10␤»
(Cool) method conj
Defined as:
method conj()
Coerces the invocant to Numeric and returns the complex conjugate (that is, the number with the sign of the imaginary part negated).
say (1+2i).conj; # OUTPUT: «1-2i␤»
(Cool) routine sqrt
Defined as:
sub sqrt(Numeric(Cool) )method sqrt()
Coerces the invocant to Numeric (or in the sub form, the argument) and returns the square root, that is, a non-negative number that, when multiplied with itself, produces the original number.
say 4.sqrt; # OUTPUT: «2␤»say sqrt(2); # OUTPUT: «1.4142135623731␤»
(Cool) method sign
Defined as:
method sign()
Coerces the invocant to Numeric and returns its sign, that is, 0 if the number is 0, 1 for positive and -1 for negative values.
say 6.sign; # OUTPUT: «1␤»say (-6).sign; # OUTPUT: «-1␤»say "0".sign; # OUTPUT: «0␤»
(Cool) method rand
Defined as:
method rand()
Coerces the invocant to Num and returns a pseudo-random value between zero and the number.
say 1e5.rand; # OUTPUT: «33128.495184283␤»
(Cool) routine sin
Defined as:
sub sin(Numeric(Cool))method sin()
Coerces the invocant (or in the sub form, the argument) to Numeric, interprets it as radians, returns its sine.
say sin(0); # OUTPUT: «0␤»say sin(pi/4); # OUTPUT: «0.707106781186547␤»say sin(pi/2); # OUTPUT: «1␤»
Note that Perl 6 is no computer algebra system, so
sin(pi) typically does not produce an exact 0, but rather a very small floating-point number.
(Cool) routine asin
Defined as:
sub asin(Numeric(Cool))method asin()
Coerces the invocant (or in the sub form, the argument) to Numeric, and returns its arc-sine in radians.
say 0.1.asin; # OUTPUT: «0.10016742116156␤»say asin(0.1); # OUTPUT: «0.10016742116156␤»
(Cool) routine cos
Defined as:
sub cos(Numeric(Cool))method cos()
Coerces the invocant (or in sub form, the argument) to Numeric, interprets it as radians, returns its cosine.
say 0.cos; # OUTPUT: «1␤»say pi.cos; # OUTPUT: «-1␤»say cos(pi/2); # OUTPUT: «6.12323399573677e-17␤»
(Cool) routine acos
Defined as:
sub acos(Numeric(Cool))method acos()
Coerces the invocant (or in sub form, the argument) to Numeric, and returns its arc-cosine in radians.
say 1.acos; # OUTPUT: «0␤»say acos(-1); # OUTPUT: «3.14159265358979␤»
(Cool) routine tan
Defined as:
sub tan(Numeric(Cool))method tan()
Coerces the invocant (or in sub form, the argument) to Numeric, interprets it as radians, returns its tangent.
say tan(3); # OUTPUT: «-0.142546543074278␤»say 3.tan; # OUTPUT: «-0.142546543074278␤»
(Cool) routine atan
Defined as:
sub atan(Numeric(Cool))method atan()
Coerces the invocant (or in sub form, the argument) to Numeric, and returns its arc-tangent in radians.
say atan(3); # OUTPUT: «1.24904577239825␤»say 3.atan; # OUTPUT: «1.24904577239825␤»
(Cool) routine atan2
Defined as:
method atan2( = 1e0)
Coerces self and argument to Numeric, using them to compute the two-argument arc-tangent in radians.
say 3.atan2; # OUTPUT: «1.24904577239825␤»say ⅔.atan2(⅓); # OUTPUT: «1.1071487177940904␤»
The first argument defaults to 1, so in the first case the function will return the angle θ in radians between a vector that goes from origin to the point (3, 1) and the x axis.
(Cool) routine sec
Defined as:
sub sec(Numeric(Cool))method sec()
Coerces the invocant (or in sub form, its argument) to Numeric, interprets it as radians, returns its secant, that is, the reciprocal of its cosine.
say 45.sec; # OUTPUT: «1.90359440740442␤»say sec(45); # OUTPUT: «1.90359440740442␤»
(Cool) routine asec
Defined as:
sub asec(Numeric(Cool))method asec()
Coerces the invocant (or in sub form, its argument) to Numeric, and returns its arc-secant in radians.
say 1.asec; # OUTPUT: «0␤»say sqrt(2).asec; # OUTPUT: «0.785398163397448␤»
(Cool) routine cosec
Defined as:
sub cosec(Numeric(Cool))method cosec()
Coerces the invocant (or in sub form, its argument) to Numeric, interprets it as radians, returns its cosecant, that is, the reciprocal of its sine.
say 0.45.cosec; # OUTPUT: «2.29903273150897␤»say cosec(0.45); # OUTPUT: «2.29903273150897␤»
(Cool) routine acosec
Defined as:
sub acosec(Numeric(Cool))method acosec()
Coerces the invocant (or in sub form, its argument) to Numeric, and returns its arc-cosecant in radians.
say 45.acosec; # OUTPUT: «0.0222240516182672␤»say acosec(45) # OUTPUT: «0.0222240516182672␤»
(Cool) routine cotan
Defined as:
sub cotan(Numeric(Cool))method cotan()
Coerces the invocant (or in sub form, its argument) to Numeric, interprets it as radians, returns its cotangent, that is, the reciprocal of its tangent.
say 45.cotan; # OUTPUT: «0.617369623783555␤»say cotan(45); # OUTPUT: «0.617369623783555␤»
(Cool) routine acotan
Defined as:
sub acotan(Numeric(Cool))method acotan()
Coerces the invocant (or in sub form, its argument) to Numeric, and returns its arc-cotangent in radians.
say 45.acotan; # OUTPUT: «0.0222185653267191␤»say acotan(45) # OUTPUT: «0.0222185653267191␤»
(Cool) routine sinh
Defined as:
sub sinh(Numeric(Cool))method sinh()
Coerces the invocant (or in method form, its argument) to Numeric, and returns its Sine hyperbolicus.
say 1.sinh; # OUTPUT: «1.1752011936438␤»say sinh(1); # OUTPUT: «1.1752011936438␤»
(Cool) routine asinh
Defined as:
sub asinh(Numeric(Cool))method asinh()
Coerces the invocant (or in sub form, its argument) to Numeric, and returns its Inverse Sine hyperbolicus.
say 1.asinh; # OUTPUT: «0.881373587019543␤»say asinh(1); # OUTPUT: «0.881373587019543␤»
(Cool) routine cosh
Defined as:
sub cosh(Numeric(Cool))method cosh()
Coerces the invocant (or in sub form, its argument) to Numeric, and returns its Cosine hyperbolicus.
say cosh(0.5); # OUTPUT: «1.12762596520638␤»
(Cool) routine acosh
Defined as:
sub acosh(Numeric(Cool))method acosh()
Coerces the invocant (or in sub form, its argument) to Numeric, and returns its Inverse Cosine hyperbolicus.
say acosh(45); # OUTPUT: «4.4996861906715␤»
(Cool) routine tanh
Defined as:
sub tanh(Numeric(Cool))method tanh()
Coerces the invocant (or in sub form, its argument) to Numeric, interprets it as radians and returns its Tangent hyperbolicus.
say tanh(0.5); # OUTPUT: «0.46211715726001␤»say tanh(atanh(0.5)); # OUTPUT: «0.5␤»
(Cool) routine atanh
Defined as:
sub atanh(Numeric(Cool))method atanh()
Coerces the invocant (or in sub form, its argument) to Numeric, and returns its Inverse tangent hyperbolicus.
say atanh(0.5); # OUTPUT: «0.549306144334055␤»
(Cool) routine sech
Defined as:
sub sech(Numeric(Cool))method sech()
Coerces the invocant (or in sub form, its argument) to Numeric, and returns its Secant hyperbolicus.
say 0.sech; # OUTPUT: «1␤»
(Cool) routine asech
Defined as:
sub asech(Numeric(Cool))method asech()
Coerces the invocant (or in sub form, its argument) to Numeric, and returns its Inverse hyperbolic secant.
say 0.8.asech; # OUTPUT: «0.693147180559945␤»
(Cool) routine cosech
Defined as:
sub cosech(Numeric(Cool))method cosech()
Coerces the invocant (or in sub form, its argument) to Numeric, and returns its Hyperbolic cosecant.
say cosech(pi/2); # OUTPUT: «0.434537208094696␤»
(Cool) routine acosech
Defined as:
sub acosech(Numeric(Cool))method acosech()
Coerces the invocant (or in sub form, its argument) to Numeric, and returns its Inverse hyperbolic cosecant.
say acosech(4.5); # OUTPUT: «0.220432720979802␤»
(Cool) routine cotanh
Defined as:
sub cotanh(Numeric(Cool))method cotanh()
Coerces the invocant (or in sub form, its argument) to Numeric, and returns its Hyperbolic cotangent.
say cotanh(pi); # OUTPUT: «1.00374187319732␤»
(Cool) routine acotanh
Defined as:
sub acotanh(Numeric(Cool))method acotanh()
Coerces the invocant (or in sub form, its argument) to Numeric, and returns its Inverse hyperbolic cotangent.
say acotanh(2.5); # OUTPUT: «0.423648930193602␤»
(Cool) routine cis
Defined as:
sub cis(Numeric(Cool))method cis()
Coerces the invocant (or in sub form, its argument) to Numeric, and returns cos(argument) + i*sin(argument).
say cis(pi/4); # OUTPUT: «0.707106781186548+0.707106781186547i␤»
(Cool) routine log
Defined as:
multi sub log(Numeric(Cool) , Numeric(Cool) ?)multi method log(Cool: Cool ?)
Coerces the arguments (including the invocant in the method form) to Numeric, and returns its Logarithm to base
$base, or to base
e (Euler's Number) if no base was supplied (Natural logarithm). Returns
NaN if
$base is negative. Throws an exception if
$base is
say (e*e).log; # OUTPUT: «2␤»
(Cool) routine log10
Defined as:
multi sub log10(Cool(Numeric))multi method log10()
Coerces the invocant (or in the sub form, the invocant) to Numeric, and returns its Logarithm to base 10, that is, a number that approximately produces the original number when raised to the power of 10. Returns
NaN for negative arguments and
-Inf for
say log10(1001); # OUTPUT: «3.00043407747932␤»
(Cool) routine exp
Defined as:
multi sub exp(Cool , Cool ?)multi method exp(Cool: Cool ?)
Coerces the arguments (including the invocant in the method from) to Numeric, and returns
$base raised to the power of the first number. If no
$base is supplied,
e (Euler's Number) is used.
say 0.exp; # OUTPUT: «1␤»say 1.exp; # OUTPUT: «2.71828182845905␤»say 10.exp; # OUTPUT: «22026.4657948067␤»
(Cool) method unpolar
Defined as:
method unpolar(Numeric(Cool))
Coerces the arguments (including the invocant in the method form) to Numeric, and returns a complex number from the given polar coordinates. The invocant (or the first argument in sub form) is the magnitude while the argument (i.e. the second argument in sub form) is the angle. The angle is assumed to be in radians.
say sqrt(2).unpolar(pi/4); # OUTPUT: «1+1i␤»
(Cool) routine round
Defined as:
multi sub round(Numeric(Cool))multi method round(Cool: = 1)
Coerces the invocant (or in sub form, its argument) to Numeric, and rounds it to the unit of
$unit. If
$unit is 1, rounds to the nearest integer.
say 1.7.round; # OUTPUT: «2␤»say 1.07.round(0.1); # OUTPUT: «1.1␤»say 21.round(10); # OUTPUT: «20␤»
Always rounds up if the number is at mid-point:
say (−.5 ).round; # OUTPUT: «0␤»say ( .5 ).round; # OUTPUT: «1␤»say (−.55).round(.1); # OUTPUT: «-0.5␤»say ( .55).round(.1); # OUTPUT: «0.6␤»
Pay attention to types when using this method, as ending up with the wrong type may affect the precision you seek to achieve. For Real types, the type of the result is the type of the argument (Complex argument gets coerced to Real, ending up a Num). If rounding a Complex, the result is Complex as well, regardless of the type of the argument.
9930972392403501.round(1) .perl.say; # OUTPUT: «9930972392403501␤»9930972392403501.round(1e0) .perl.say; # OUTPUT: «9.9309723924035e+15␤»9930972392403501.round(1e0).Int.perl.say; # OUTPUT: «9930972392403500␤»
(Cool) routine floor
Defined as:
multi sub floor(Numeric(Cool))multi method floor
Coerces the invocant (or in sub form, its argument) to Numeric, and rounds it downwards to the nearest integer.
say "1.99".floor; # OUTPUT: «1␤»say "-1.9".floor; # OUTPUT: «-2␤»say 0.floor; # OUTPUT: «0␤»
(Cool) method fmt
Defined as:
method fmt( = '%s')
Equivalent to calling sprintf with
$format as format and the invocant as the second argument. The
$format will be coerced to Stringy and defaults to
(Cool) routine ceiling
Defined as:
multi sub ceiling(Numeric(Cool))multi method ceiling
Coerces the invocant (or in sub form, its argument) to Numeric, and rounds it upwards to the nearest integer.
say "1".ceiling; # OUTPUT: «1␤»say "-0.9".ceiling; # OUTPUT: «0␤»say "42.1".ceiling; # OUTPUT: «43␤»
(Cool) routine truncate
Defined as:
multi sub truncate(Numeric(Cool))multi method truncate()
Coerces the invocant (or in sub form, its argument) to Numeric, and rounds it towards zero.
say 1.2.truncate; # OUTPUT: «1␤»say truncate -1.2; # OUTPUT: «-1␤»
(Cool) routine ord
Defined as:
sub ord(Str(Cool))method ord()
Coerces the invocant (or in sub form, its argument) to Str, and returns the Unicode code point number of the first code point.
say 'a'.ord; # OUTPUT: «97␤»
The inverse operation is chr.
Mnemonic: returns an ordinal number
(Cool) method path
Defined as:
method path()
DEPRECATED. Existed only in the Rakudo implementation and isn't part of any language released. Will issue deprecation warnings in future language versions and eventually will be removed entirely.
Stringifies the invocant and converts it to IO::Path object. Use the
.IO method instead.
(Cool) routine chr
Defined as:
sub chr(Int(Cool))method chr()
Coerces the invocant (or in sub form, its argument) to Int, interprets it as a Unicode code points, and returns a string made of that code point.
say '65'.chr; # OUTPUT: «A␤»
The inverse operation is ord.
Mnemonic: turns an integer into a character.
(Cool) routine chars
Defined as:
sub chars(Str(Cool))method chars()
Coerces the invocant (or in sub form, its argument) to Str, and returns the number of characters in the string. Please note that on the JVM, you currently get codepoints instead of graphemes.
say 'møp'.chars; # OUTPUT: «3␤»say 'ã̷̠̬̊'.chars; # OUTPUT: «1␤»say '👨👩👧👦🏿'.chars; # OUTPUT: «1␤»
Graphemes are user visible characters. That is, this is what the user thinks of as a "character".
Graphemes can contain more than one codepoint. Typically the number of graphemes and codepoints differs when
Prepend or
Extend characters are involved (also known as Combining characters), but there are many other cases when this may happen. Another example is
\c[ZWJ] (Zero-width joiner).
You can check
Grapheme_Cluster_Break property of a character in order to see how it is going to behave:
say 'ã̷̠̬̊'.uniprops('Grapheme_Cluster_Break'); # OUTPUT: «(Other Extend Extend Extend Extend)␤»say '👨👩👧👦🏿'.uniprops('Grapheme_Cluster_Break'); # OUTPUT: «(E_Base_GAZ ZWJ E_Base_GAZ ZWJ E_Base_GAZ ZWJ E_Base_GAZ E_Modifier)␤»
You can read more about graphemes in the Unicode Standard, which Perl 6 tightly follows, using a method called NFG, normal form graphemes for efficiently representing them.
(Cool) routine codes
Defined as:
sub codes(Str(Cool))method codes()
Coerces the invocant (or in sub form, its argument) to Str, and returns the number of Unicode code points.
say 'møp'.codes; # OUTPUT: «3␤»
The same result will be obtained with
say +'møp'.ords; # OUTPUT: «3␤»
ords first obtains the actual codepoints, so there might be a difference in speed.
(Cool) routine flip
Defined as:
sub flip(Str(Cool))method flip()
Coerces the invocant (or in sub form, its argument) to Str, and returns a reversed version.
say 421.flip; # OUTPUT: «124␤»
(Cool) routine trim
Defined as:
sub trim(Str(Cool))method trim()
Coerces the invocant (or in sub form, its argument) to Str, and returns the string with both leading and trailing whitespace stripped.
my = ' abc '.trim;say "<$stripped>"; # OUTPUT: «<abc>␤»
(Cool) routine trim-leading
Defined as:
sub trim-leading(Str(Cool))method trim-leading()
Coerces the invocant (or in sub form, its argument) to Str, and returns the string with leading whitespace stripped.
my = ' abc '.trim-leading;say "<$stripped>"; # OUTPUT: «<abc >␤»
(Cool) routine trim-trailing
Defined as:
sub trim-trailing(Str(Cool))method trim-trailing()
Coerces the invocant (or in sub form, its argument) to Str, and returns the string with trailing whitespace stripped.
my = ' abc '.trim-trailing;say "<$stripped>"; # OUTPUT: «< abc>␤»
(Cool) routine lc
Defined as:
sub lc(Str(Cool))method lc()
Coerces the invocant (or in sub form, its argument) to Str, and returns it case-folded to lower case.
say "ABC".lc; # OUTPUT: «abc␤»
(Cool) routine uc
Defined as:
sub uc(Str(Cool))method uc()
Coerces the invocant (or in sub form, its argument) to Str, and returns it case-folded to upper case (capital letters).
say "Abc".uc; # OUTPUT: «ABC␤»
(Cool) routine fc
Defined as:
sub fc(Str(Cool))method fc()
Coerces the invocant (or in sub form, its argument) to Str, and returns the result a Unicode "case fold" operation suitable for doing caseless string comparisons. (In general, the returned string is unlikely to be useful for any purpose other than comparison.)
say "groß".fc; # OUTPUT: «gross␤»
(Cool) routine tc
Defined as:
sub tc(Str(Cool))method tc()
Coerces the invocant (or in sub form, its argument) to Str, and returns it with the first letter case-folded to title case (or where not available, upper case).
say "abC".tc; # OUTPUT: «AbC␤»
(Cool) routine tclc
Defined as:
sub tclc(Str(Cool))method tclc()
Coerces the invocant (or in sub form, its argument) to Str, and returns it with the first letter case-folded to title case (or where not available, upper case), and the rest of the string case-folded to lower case.
say 'abC'.tclc; # OUTPUT: «Abc␤»
(Cool) routine wordcase
Defined as:
sub wordcase(Str(Cool) , : = , Mu : = True)method wordcase(: = , Mu : = True)
Coerces the invocant (or in sub form, the first argument) to Str, and filters each word that smartmatches against
$where through the
&filter. With the default filter (first character to upper case, rest to lower) and matcher (which accepts everything), this title-cases each word:
say "perl 6 programming".wordcase; # OUTPUT: «Perl 6 Programming␤»
With a matcher:
say "have fun working on perl".wordcase(:where());# Have fun Working on Perl
With a customer filter too:
say "have fun working on perl".wordcase(:filter(), :where());# HAVE fun WORKING on PERL
(Cool) routine samecase
Defined as:
sub samecase(Cool , Cool )method samecase(Cool: Cool )
Coerces the invocant (or in sub form, the first argument) to Str, and returns a copy of
$string with case information for each individual character changed according to
Note: The pattern string can contain three types of characters, i.e. uppercase, lowercase and caseless. For a given character in
$pattern its case information determines the case of the corresponding character in the result.
$string is longer than
$pattern, the case information from the last character of
$pattern is applied to the remaining characters of
say "perL 6".samecase("A__a__"); # OUTPUT: «Perl 6␤»say "pERL 6".samecase("Ab"); # OUTPUT: «Perl 6␤»
(Cool) routine uniprop
Defined as:
multi sub uniprop(Str, |c)multi sub uniprop(Int )multi sub uniprop(Int , Stringy )multi method uniprop(|c)
Returns the unicode property of the first character. If no property is specified returns the General Category. Returns a Bool for Boolean properties.
say 'a'.uniprop; # OUTPUT: «Ll␤»say '1'.uniprop; # OUTPUT: «Nd␤»say 'a'.uniprop('Alphabetic'); # OUTPUT: «True␤»say '1'.uniprop('Alphabetic'); # OUTPUT: «False␤»
(Cool) sub uniprops
Defined as:
sub uniprops(Str , Stringy = "General_Category")
Interprets the invocant as a Str, and returns the unicode property for each character as a Seq. If no property is specified returns the General Category. Returns a Bool for Boolean properties. Similar to uniprop
(Cool) routine uniname
Defined as:
sub uniname(Str(Cool) --> Str)method uniname(--> Str)
Interprets the invocant or first argument as a Str, and returns the Unicode codepoint name of the first codepoint of the first character. See uninames for a routine that works with multiple codepoints, and uniparse for the opposite direction.
# Camelia in Unicodesay '»ö«'.uniname;# OUTPUT: «"RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK"␤»say "Ḍ̇".uniname; # Note, doesn't show "COMBINING DOT ABOVE"# OUTPUT: «"LATIN CAPITAL LETTER D WITH DOT BELOW"␤»# Find the char with the longest Unicode name.say (0..0x1FFFF).sort(*.uniname.chars)[].chr.uniname;# OUTPUT: ««ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM␤»␤»
(Cool) routine uninames
Defined as:
sub uninames(Str)method uninames()
Returns of a Seq of Unicode names for the all the codepoints in the Str provided.
say '»ö«'.uninames.perl;# OUTPUT: «("RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK", "LATIN SMALL LETTER O WITH DIAERESIS", "LEFT-POINTING DOUBLE ANGLE QUOTATION MARK").Seq␤»
Note this example, which gets a Seq where each element is a Seq of all the codepoints in that character.
say "Ḍ̇'oh".comb>>.uninames.perl;# OUTPUT: «(("LATIN CAPITAL LETTER D WITH DOT BELOW", "COMBINING DOT ABOVE").Seq, ("APOSTROPHE",).Seq, ("LATIN SMALL LETTER O",).Seq, ("LATIN SMALL LETTER H",).Seq)␤»
See uniparse for the opposite direction.
(Cool) routine unimatch
Defined as:
multi sub unimatch(Str , |c)multi unimatch(Int , Stringy , Stringy = )
Checks if the given integer codepoint or the first letter of the string given have a unicode property equal to the value you give. If you supply the Unicode property to be checked it will only return True if that property matches the given value.
say unimatch 'A', 'Latin'; # OUTPUT: «True␤»say unimatch 'A', 'Latin', 'Script'; # OUTPUT: «True␤»say unimatch 'A', 'Ll'; # OUTPUT: «True␤»
(Cool) routine chop
Defined as:
sub chop(Str(Cool))method chop()
Coerces the invocant (or in sub form, its argument) to Str, and returns it with the last character removed.
say 'perl'.chop; # OUTPUT: «per␤»
(Cool) routine chomp
Defined as:
sub chomp(Str(Cool))method chomp()
Coerces the invocant (or in sub form, its argument) to Str, and returns it with the last character removed, if it is a logical newline.
say 'ab'.chomp.chars; # OUTPUT: «2␤»say "a\n".chomp.chars; # OUTPUT: «1␤»
(Cool) routine substr
Defined as:
sub substr(Str(Cool) , |c)method substr(|c)
Coerces the invocant (or in the sub form, the first argument) to Str, and calls Str.substr with the arguments.
(Cool) routine substr-rw
Defined as:
multi method substr-rw(|) is rwmulti sub substr-rw(|) is rw
Coerces the invocant (or in the sub form, the first argument) to Str, and calls Str.substr-rw with the arguments.
(Cool) routine ords
Defined as:
sub ords(Str(Cool) )method ords()
Coerces the invocant (or in the sub form, the first argument) to Str, and returns a list of Unicode codepoints for each character.
say "Camelia".ords; # OUTPUT: «67 97 109 101 108 105 97␤»say ords 10; # OUTPUT: «49 48␤»
This is the list-returning version of ord. The inverse operation in chrs. If you are only interested in the number of codepoints, codes is a possibly faster option.
(Cool) routine chrs
Defined as:
sub chrs(* --> Str)method chrs()
Coerces the invocant (or in the sub form, the argument list) to a list of integers, and returns the string created by interpreting each integer as a Unicode codepoint, and joining the characters.
say <67 97 109 101 108 105 97>.chrs; # OUTPUT: «Camelia␤»
This is the list-input version of chr. The inverse operation is ords.
(Cool) routine split
Defined as:
multi sub split( Str , Str(Cool) , = Inf, :, :, :, :, :)multi sub split(Regex , Str(Cool) , = Inf, :, :, :, :, :)multi sub split(, Str(Cool) , = Inf, :, :, :, :, :)multi method split( Str , = Inf, :, :, :, :, :)multi method split(Regex , = Inf, :, :, :, :, :)multi method split(, = Inf, :, :, :, :, :)
Coerces the invocant (or in the sub form, the second argument) to Str, and splits it into pieces based on delimiters found in the string.
$delimiter is a string, it is searched for literally and not treated as a regex. You can also provide multiple delimiters by specifying them as a list; mixing Cool and Regex objects is OK.
say split(';', "a;b;c").perl; # OUTPUT: «("a", "b", "c")␤»say split(';', "a;b;c", 2).perl; # OUTPUT: «("a", "b;c").Seq␤»say split(';', "a;b;c,d").perl; # OUTPUT: «("a", "b", "c,d")␤»say split(/\;/, "a;b;c,d").perl; # OUTPUT: «("a", "b", "c,d")␤»say split(//, "a;b;c,d").perl; # OUTPUT: «("a", "b", "c", "d")␤»say split(['a', /b+/, 4], '1a2bb345').perl; # OUTPUT: «("1", "2", "3", "5")␤»
By default, split omits the matches, and returns a list of only those parts of the string that did not match. Specifying one of the
:k, :v, :kv, :p adverbs changes that. Think of the matches as a list that is interleaved with the non-matching parts.
:v interleaves the values of that list, which will be either Match objects, if a Regex was used as a matcher in the split, or Str objects, if a Cool was used as matcher. If multiple delimiters are specified, Match objects will be generated for all of them, unless all of the delimiters are Cool.
say 'abc'.split(/b/, :v); # OUTPUT: «(a 「b」 c)␤»say 'abc'.split('b', :v); # OUTPUT: «(a b c)␤»
:k interleaves the keys, that is, the indexes:
say 'abc'.split(/b/, :k); # OUTPUT: «(a 0 c)␤»
:kv adds both indexes and matches:
say 'abc'.split(/b/, :kv); # OUTPUT: «(a 0 「b」 c)␤»
:p adds them as Pairs, using the same types for values as
:v does:
say 'abc'.split(/b/, :p); # OUTPUT: «(a 0 => 「b」 c)␤»say 'abc'.split('b', :p); # OUTPUT: «(a 0 => b c)␤»
You can only use one of the
:k, :v, :kv, :p adverbs in a single call to
Note that empty chunks are not removed from the result list. For that behavior, use the
:skip-empty named argument:
say ("f,,b,c,d".split: /","/ ).perl; # OUTPUT: «("f", "", "b", "c", "d")␤»say ("f,,b,c,d".split: /","/, :skip-empty).perl; # OUTPUT: «("f", "b", "c", "d")␤»
(Cool) routine lines
Defined as:
sub lines(Str(Cool))method lines()
Coerces the invocant (and in sub form, the argument) to Str, decomposes it into lines (with the newline characters stripped), and returns the list of lines.
say lines("a\nb\n").join('|'); # OUTPUT: «a|b␤»say "some\nmore\nlines".lines.elems; # OUTPUT: «3␤»
This method can be used as part of an
IO::Path to process a file line-by-line, since
IO::Path objects inherit from
Cool, e.g.:
for 'huge-csv'.IO.lines -># or if you'll be processing latermy = 'huge-csv'.IO.lines;
Without any arguments, sub
lines operates on
$*ARGFILES, which defaults to
$*IN in the absence of any filenames.
To modify values in place use
is copy to force a writable container.
for .lines -> is copy
(Cool) method words
Defined as:
method words(Cool: |c)
Coerces the invocant (or first argument, if it is called as a subroutine) to Str, and returns a list of words that make up the string. Check
Str.words for additional arguments and its meaning.
say <The quick brown fox>.words.join('|'); # OUTPUT: «The|quick|brown|fox␤»say <The quick brown fox>.words(2).join('|'); # OUTPUT: «The|quick␤»
Cool is the base class for many other classes, and some of them, like Match, can be converted to a string. This is what happens in this case:
say ( "easy come, easy goes" ~~ m:g/(ea\w+)/).words(Inf);# OUTPUT: «(easy easy)␤»say words( "easy come, easy goes" ~~ m:g/(ea\w+)/ , ∞);# OUTPUT: «(easy easy)␤»
The example above illustrates two of the ways
words can be invoked, with the first argument turned into invocant by its signature. Of course,
Inf is the default value of the second argument, so in both cases (and forms) it can be simply omitted.
Only whitespace (including no-break space) counts as word boundaries
say <Don't we ♥ Perl 6>.words.join('|'); # OUTPUT: «Don't|we|♥|Perl|6␤»
In this case, Perl 6 includes an (visible only in the source) no-break space;
words still splits the (resulting)
Str on it, even if the original array only had 4 elements:
say <Don't we ♥ Perl 6>.join("|"); # OUTPUT: «Don't|we|♥|Perl 6␤»
Please see
Str.words for more examples and ways to invoke it.
(Cool) routine comb
Defined as:
multi sub comb(Regex , Cool , = *)multi sub comb(Str , Cool , = *)multi sub comb(Int , Cool , = *)multi method comb(|c)
Returns a list of all (or if supplied, at most
$limit) matches of the invocant (method form) or the second argument (sub form) against the Regex, string or defined number.
say "6 or 12".comb(/\d+/).join(", "); # OUTPUT: «6, 12␤»say comb(/\d /,(11..30)).join("--");# OUTPUT:# «11--12--13--14--15--16--17--18--19--21--22--23--24--25--26--27--28--29␤»
The second statement exemplifies the first form of
comb, with a
Regex that excludes multiples of ten, and a
Range (which is
Cool) as
comb stringifies the
Range before applying
.comb on the resulting string. Check
Str.comb for its effect on different kind of input strings. When the first argument is an integer, it indicates the (maximum) size of the chunks the input is going to be divided in
say comb(3,[3,33,333,3333]).join("*"); # OUTPUT: «3 3*3 3*33 *333*3␤»
In this case the input is a list, which after transformation to
Str (which includes the spaces) is divided in chunks of size 3.
(Cool) method contains
Defined as:
method contains(Cool: |c)
Coerces the invocant
Str, and calls
Str.contains on it. Please refer to that version of the method for arguments and general syntax.
say 123.contains("2")# OUTPUT: «True␤»
Since Int is a subclass of
123 is coerced to a
Str and then
contains is called on it.
say (1,1, * + * … * > 250).contains(233)# OUTPUT: «True␤»
Seqs are also subclasses of
Cool, and they are stringified to a comma-separated form. In this case we are also using an
Int, which is going to be stringified also;
"233" is included in that sequence, so it returns
True. Please note that this sequence is not lazy; the stringification of lazy sequences does not include each and every one of their components for obvious reasons.
(Cool) routine index
Defined as:
multi sub index(Cool , Cool , Cool = 0)method index(Cool: |c)
Coerces the first two arguments (in method form, also counting the invocant) to a Str, and searches for
$needle in the string
$s starting from
$startpos. It returns the offset into the string where
$needle was found, and an undefined value if it was not found.
See the documentation in type Str for examples.
(Cool) routine rindex
Defined as:
multi sub rindex(Str(Cool) , Str(Cool) , Int(Cool) = .chars)multi method rindex(Str(Cool) : Str(Cool) , Int(Cool) = .chars)
Coerces the first two arguments (including the invocant in method form) to Str and
$startpos to Int, and returns the last position of
$needle in
$haystack not after
$startpos. Returns an undefined value if
$needle wasn't found.
See the documentation in type Str for examples.
(Cool) method match
Defined as:
multi method match(Cool: , *)
Coerces the invocant to Str and calls the method match on it.
(Cool) method fmt
Defined as:
method fmt( = '%s' --> Str)
$format to return a formatted representation of the invocant.
For more information about formats strings, see sprintf.
say 11.fmt('This Int equals %03d'); # OUTPUT: «This Int equals 011␤»say '16'.fmt('Hexadecimal %x'); # OUTPUT: «Hexadecimal 10␤»
(Cool) routine roots
Defined as:
multi sub roots(Numeric(Cool) , Int(Cool) )multi method roots(Int(Cool) )
Coerces the first argument (and in method form, the invocant) to Numeric and the second (
$n) to Int, and produces a list of
$n Complex
$n-roots, which means numbers that, raised to the
$nth power, approximately produce the original number.
For example
my = 16;my = .roots(4);say ;for -># OUTPUT:«2+0i 1.22464679914735e-16+2i -2+2.44929359829471e-16i -3.67394039744206e-16-2i␤»# OUTPUT:«1.77635683940025e-15␤»# OUTPUT:«4.30267170434156e-15␤»# OUTPUT:«8.03651692704705e-15␤»# OUTPUT:«1.04441561648202e-14␤»
(Cool) method match
Defined as:
method match(|)
Coerces the invocant to Stringy and calls Str.match.
(Cool) method subst
Defined as:
method subst(|)
Coerces the invocant to Stringy and calls Str.subst.
(Cool) method trans
Defined as:
method trans(|)
Coerces the invocant to Str and calls Str.trans
(Cool) method IO
Defined as:
method IO(--> IO::Path)
Coerces the invocant to IO::Path.
.say for '.'.IO.dir; # gives a directory listing
(Cool) routine EVAL
Defined as:
method EVAL(*)
sub EVAL( where Cool|Blob, : = 'perl6')
If it is invoked as a method, it calls the subroutine form with invocant as the first argument,
$code, passing along named args, if any; this coerces Cool
$code to Str. If
$code is a Blob, it'll be processed using the same encoding as the
$lang compiler would: for
$lang, uses
utf-8; for
Perl5, processes using the same rules as
This works as-is with a literal string parameter. More complex input, such as a variable or string with embedded code, is illegal by default. This can be overridden in any of several ways:
use MONKEY-SEE-NO-EVAL; # Or...use MONKEY; # shortcut that turns on all MONKEY pragmasuse Test;# any of the above allows:EVAL "say "; # OUTPUT: «10␤»
In case the
MONKEY-SEE-NO-EVAL pragma is not activated, the compiler will complain with a
EVAL is a very dangerous function!!! exception. And it is essentially right, since that will run arbitrary code with the same permissions as the program. You should take care of cleaning the code that is going to pass through EVAL if you activate the
MONKEY-SEE-NO-EVAL pragma.
Please note that you can interpolate to create routine names using quotation, as can be seen in this example or other ways to interpolate to create identifier names. This only works, however, for already declared functions and other objects and is thus safer to use.
Symbols in the current lexical scope are visible to code in an
my = 42;EVAL 'say $answer;'; # OUTPUT: «42␤»
However, since the set of symbols in a lexical scope is immutable after compile time, an EVAL can never introduce symbols into the surrounding scope.
EVAL 'my $lives = 9'; say ; # error, $lives not declared
Furthermore, the
EVAL is evaluated in the current package:
say ::answer; # OUTPUT: «42␤»
And also in the current language, meaning any added syntax is available:
sub infix:<mean>(*) is assoc<list>EVAL 'say 2 mean 6 mean 4'; # OUTPUT: «4␤»
EVAL statement evaluates to the result of the last statement:
sub infix:<mean>(*) is assoc<list>say EVAL 'say 1; 2 mean 6 mean 4'; # OUTPUT: «1␤4␤»
EVAL is also a gateway for executing code in other languages:
EVAL "use v5.20; say 'Hello from perl5!'", :lang<Perl5>;
(Cool) sub EVALFILE
Defined as:
sub EVALFILE( where Blob|Cool, : = 'perl6')
Slurps the specified file and evaluates it. Behaves the same way as
EVAL with regard to Blob decoding, scoping, and the
$lang parameter. Evaluates to the value produced by the final statement in the file.
EVALFILE "foo.p6";
(Cool) routine unpolar
Defined as:
method unpolar(Real )multi sub unpolar(Real , Real )
Returns a
Complex with the coordinates corresponding to the angle in radians and magnitude corresponding to the object value or
$mag in the case it's being used as a
say 1.unpolar(⅓*pi);# OUTPUT: «0.5000000000000001+0.8660254037844386i␤»
(Cool) routine printf
Defined as:
method printf (*)multi sub printf(Cool , *)
As a method, takes the object as a format using the same language as
Str.sprintf; as a sub, its first argument will be the format string, and the rest of the arguments will be substituted in the format following the format conventions.
"%s is %s".printf("þor", "mighty"); # OUTPUT: «þor is mighty»printf( "%s is %s", "þor", "mighty"); # OUTPUT: «þor is mighty»
(Cool) routine sprintf
Defined as:
method sprintf(*)multi sub sprintf(Cool , *)
Formats and outputs a string, following the same language as
Str.sprintf, using as such format either the object (if called in method form) or the first argument (if called as a routine)
sprintf( "%s the %d%s", "þor", 1, "st").put; #OUTPUT: «þor the 1st␤»sprintf( "%s is %s", "þor", "mighty").put; # OUTPUT: «þor is mighty␤»"%s's weight is %.2f %s".sprintf( "Mjölnir", 3.3392, "kg").put;# OUTPUT: «Mjölnir's weight is 3.34 kg␤»


text:
Rover Mini - Product in Detail
Mini was designed in an era when legislation was scarcely more than compliance with Construction and Use Regulations; its 'A' Series engine had been designed even earlier. It is a tribute to all engineers involved then and now that the 1997 Mini has been able to meet the very demanding 'ECDII' emissions standards in addition to the new pass-by noise requirements. Significant engineering changes have been made to achieve these environmental standards, making the 1997 cars the most technically sophisticated production Minis ever.
The major change to the 1275cc Cooper engine, now standardised in both 1997 models, has been the adoption of multi-point fuel injection. The system is controlled by Rover's most powerful engine management computer, the MEMS 2J, (as developed for the 2.5 litre KV6 and the MGF 1.8i VVC engines) to give fully programmed sequential injection. Each injector is pulsed at the optimum time to independently fuel the two cylinders that it serves. This provides the ultra-precise control of fuel input and distribution needed to achieve very low emissions, whilst at the same time maintaining excellent performance.
Another contributory state-of-the-art feature is the fitment of a direct (distributor less) electronic ignition system. This uses quad dry-coil twin-spark technology, triggering each spark twice - once on the compression stroke and once on the exhaust stroke - so that the high tension voltage does not have to be switched between cylinders. The cylinder block has been modified to delete the distributor housing, redesign the oil galleries and also to re-locate the oil filter (deleting the external pipe work). This has allowed the radiator to be moved from its traditional side mounting to a more conventional position in front of the engine as part of the pass-by noise reduction programme. Other technical improvements under the bonnet include the replacement of the former 45 amp alternator with a 65 amp unit and the use of a modern poly-vee belt alternator/water pump drive for greater durability and reliability.
Despite being the 'cleanest' 'A' Series engine yet, the 1997 Mini engine matches the power and torque figures of the previous Cooper unit, doing so at lower engine speeds. For lower internal noise levels, a 2.76:1 final drive ratio raises the overall gearing by 16% compared to the previous Mini Cooper and this, coupled with an inevitable weight increase of around 3.5%, means a slight reduction in 'on paper' performance. The figures, however, remain very competitive and the subjective impression of the power delivery is excellent.
With fourth gear now equivalent to fifth gear on many other cars and a third gear high enough to virtually achieve the 90mph maximum speed, the driving characteristics are very different. The 'overdrive' fourth gear cuts engine speed at 70mph from 3,888 rpm to 3,333 rpm for more comfortable cruising, while third gear now provides the upper range acceleration and overtaking capability.
As a result of the significant power unit modifications, automatic transmission is no longer available.
Fuel Consumption
It must be stressed that the new figures cannot be compared in any way with the previous Urban/56mph/75mph figures, or any of their various 'composite' and 'Euro mix' derivatives.
The new tests are completely different and are intended to give a more realistic representation of normal car use. As before, however, they still only form the basis for comparison between different cars, as no standard test can possibly tell a given customer what fuel consumption he or she will achieve.
The fuel economy figures for the 1997 Minis are as follows:
Sector leading Safety
In keeping with the enhanced specifications of the 1997 Minis, a comprehensive new safety package has been standardised. This includes:
This now aligns the secondary safety features of Mini with those of many much larger vehicles and moves it ahead of many other cars in its size sector.
Anti-theft measures
In 1997 form, the Mini and Mini Cooper are even more desirable - so it is re-assuring that the standard security system is comprehensive. There is a full perimetric alarm system, plus an engine immobiliser, operated by a remote control. Even if the owner forgets or delays the setting of the system, the engine immobiliser will automatically activate after a few seconds to foil the opportunist thief. A facia warning light flashes once the system is activated to deter unwelcome attention.
Mini moves into a new and quieter age with the 1997 models. By combining engineering changes that meet stringent new 'pass-by' noise regulations with substantial improvements to cabin acoustic insulation, the latest Minis have become the most civilised yet.
The EC directive on pass-by noise (92/97/EEC) that all post-October 1996 registered cars must meet, demands a maximum of 74dB(A) measured by a special test procedure. Since the previous limit was 77dB(A), this may not seem a big reduction, but because decibels are plotted on a logarithmic scale, it actually represents a halving of the noise level. Reductions of up to 3dB(A) in the critical 3250-3500 rpm range mean that motorway cruising at the legal speed limit is twice as quiet!
In order to achieve this, the 1997 Minis feature higher gearing, a new front-mounted radiator with electric cooling fan, and a rear exhaust silencer box.
Interior sound deadening measures include damping pads in the roof, plus the extra absorption effect of the new foam-backed fabric headlining which help to tune out the 'boom' effect at higher engine speeds. Extra sound-path sealing around the top of the bulkhead and the A-post areas keeps engine noise out and there is new sound insulation around the fuel tank and boot area to eliminate any possibility of whine from the high pressure fuel pump. The rear seat bulkhead is now solid, without the former blanked-off central aperture. Improved acoustic insulation from road noise results from the new moulded one-piece floor carpet.

subset: commoncrawl


text:
Ahh, the MBA internship search. I wrote about this earlier in the quarter, and now that the Winter Quarter is ending I feel like I have more insight into the process. One thing my classmates and I are finding out quickly is to expect a lot of rejection, especially when you are a career changer. The above video does a great job of summing up the process of doing a lot of informational interviews and company research, applying for jobs, and then getting the rejection letter. It's times like this that I really appreciate my fellow classmates who are going through the same process. One nice thing about having a small class is that everyone knows each other and is genuinely happy to hear when classmates get that internship offer letter, but the downside is that word spreads pretty fast. Failure seems much more publicized in our small community, which amplifies social pressure and anxiety.
One thing I'm struggling with is trying not to follow the herd. I came into the Foster MBA program with certain career goals in mind, but it's really easy to get caught up in what your classmates are doing. It's a great time to re-read the letter of advice from Stanford. I didn't understand it in the Fall quarter, but I definitely feel the pressure in Winter Quarter. Here's the advice from the letter:
On Recruiting:
"Again, take it easy. Everyone who wanted a summer job got one. I ended up playing picky and landing my ideal job two weeks after the school was out. (Most others had jobs long before that.) If you want a non-traditional job or one that is very different from your past experiences, you may want to prepare yourself for a lot of rejections-something that you may not necessarily be used to. Summer jobs are much harder to find than permanent jobs, due to fewer spots. If you just keep in mind that you will eventually have a job, you can take chances and experiment with the summer job search. This could be a very valuable experience for the permanent job search."
By now, I'd say at least 33% of the Foster Full-time MBA class of 2016 have at least one internship offer. Due to the nature of MBA internship recruiting, consulting firms and large companies like Microsoft and Amazon tend to recruit much earlier…and they take a ton of MBAs. It's great to see so many classmates get picked up for these amazing opportunities, but you definitely feel the pressure if you're looking for something different, or you're failing where others are succeeding.
I see some classmates panic and start applying to every available opportunity that comes up. I feel the same pressure as well. Luckily, re-reading the letter seemed to help, and I'm extremely grateful to get a lot of advice and help from alumni, second years, and classmates. If you're struggling with this, I hope you re-read the letter and reach out.
Update 12/7/15: A few weeks after I wrote this, I accepted an offer to intern at Nike over the summer. That turned out to be the best possible result that I could have asked for.


text:
Baku. 19 January. REPORT.AZ/ Physical and legal persons will be fined by 100% of unpaid amount for non-payment of compulsory fee on currency operations by payment cards.
Report informs, new addition (Article 225.5) proposed to Administrative Offences Code was discussed at today's extraordinary plenary session of Milli Majlis.
Addition, proposed to the code put to vote and adopted.


text:
About the Campaign
Continuing Education and COSTA have teamed up with the River Campus and the Historical Association of Greater Cape Girardeau to provide Pumpkin Palooza. This community based event provides hands-on science learning experiences, storytelling, face-painting, pumpkin-carving, and crafts. Funds raised will support supplies and resources needed for this event. Pumpkin Palooza will take place on Sunday, October 28th from 2-5 p.m. at the Glenn House.


text:
Welcome to CrossFit The Point.
We are currently preparing for our open house which is planned for Saturday April 7, 2012. Equipment is arriving daily and construction of the gym has begun. We will post more information regarding the open house in the near future. Stay tuned for exciting pricing specials and updates.


text:
Contact Details
Stephen T. Greer
[email protected]
Practice Areas
- Accident
- Divorce
- Family Law
- Personal Injury
- Workers' Compensation
- Truck Accident
- Criminal Defense
Social Networks
Steve Greer has approximately 100 jury trials under his belt, so he understands how to prepare a case for trial. He has also helped thousands of clients resolve their legal issues, so chances are excellent he has handled a matter similar to yours. In addition, he has published legal articles and has taught select areas of the law to lawyers, judges and other legal professionals in CLE classes.
We believe our trial experience, reputation and work ethic leads to better results in your case. When you retain our services, you tell the other side that you are serious and willing to fight for your rights and entitlements.


text:
SIVASAGAR, Feb 17: Ali-aye-Ligang, the spring festival of Mishing ethnic community of Assam, was celebrated in Sivasagar on Wednesday in the traditiol spirit of brotherhood and harmony.
The festival is celebrated on the first Wednesday of the Assamese month Giinmur Polo (February-March). 'Ali' means root and seed, 'aye' is fruit and 'Ligang' is to sow. After the ceremonial sowing of the paddy seeds, the young boys and girls of the tribe danced 'Gumrag', 'Oi:nitom' to celebrate the occasion.
A cultural programme along with a grand feast was organized at Mishing Murong Ghar at Kangkan gar in Sivasagar as part of the celebrations, which also mark New Year (Anu Ditag) for the Mishings, with the partaking of delicacies prepared with dried fish and pork washed down with Poro Apong or rice beer.
During the festival the corps are respected with the people refraining from cutting them down and there is also no ploughing, fishing and burning of jungles.
To mark the occasion, people belonging to Mishing community of Sivasagar who achieved their superannuation successfully in 2016, were felicitated by the organizing committee of Sivasagar Bangke Mishing Dirbi Kebang, said yan Jyoti Yein, a member of the organizing committee.


text:
Particularly useful for health care and legal industry related records and agreements, Office 365 Message Encryption allows IT managers to now setup rules for when emails will be encrypted, via the GUI or the PowerShell. What's more is the encryption process is transparent to the user, and the encrypted email is "delivered directly to the recipient's inbox and not to a Web service." The new encryption feature also removes the need for certificate maintenance. Read the full details here.
Microsoft announced the release of their new Office 365 Message Encryption service, providing users with a new method to allow users to both send and receive encrypted email directly from their desktops.


text:
Psychological Access Plus Application Form
Before you begin your application
Thank you for your interest in becoming a provider for Psychological Access+ program.
Please note this application process will take between 10 - 15 minutes to complete and we suggest you gather all evidence required before starting the online application. We will require electronic copies of the following documents to be uploaded:
- Copy of current registration (AHPRA or other)
- Copy of Insurance (copy of professional and public liability insurance certificates of currency)
- Copy of Police Check (must be less than 3 months old from date of application)
- Copy of Working with Children Check (if applicable)
Please be assured, all information accessed and collected by PCCS is held and used in accordance with the Privacy and Personal Information Protection Act 1998 (PPIPA). For further information please visit the NSW Information and Privacy Commission website www.ipc.nsw.gov.au/ppip-act
Applications must be submitted online. If you encounter any problems using our site or need help with the online application form please contact PCCS on 02 9477 8700 or firstname.lastname@example.com.


text:
Help us improve our website!Close this box
Could you spare 3 minutes to give us your thoughts and help us improve this site?Not right now... Yes, I will help!
All the latest breaking news, press releases and comment from ActionAid UK's media team.
New research figures released by ActionAid reveal the top ten most generous UK areas based on the numbers of children in poor countries sponsored by local people.
Women's rights will not be negotiated away in any peace deal with insurgent groups.
The international community must seize the chance to put countries in the driving seat of their own development as the fourth High Level Forum on Aid Effectiveness opens in Busan, Korea.
ActionAid research has revealed that up to 86% of girls had reported some form of violence against them in the past 12 months, that parents are complicit in under-age marriage and that girls are all too frequently blamed for the violence they experience.
The Trans-African Caravan of Hope is an awareness-raising campaign organised by the Pan African Climate Justice Alliance (PACJA) which is travelling across 10 countries on a mission to tell the African story of climate change.
ActionAid has launched the world's first ever emergency music network, backed by music stars including The Wombats, Everything Everything, Chapel Club, Cancer Bats and Radio 1's Huw Stephens.
Clive Anderson, Jo Brand, Charles Dance, Nicholas Owen and James Purefoy became the sharpest of wine buffs and wine bluffers last night at ActionAid's celebrity fundraising event, Call My Wine Bluff - the lively wine lover's adaptation of the classic TV game show.
Important progress has been made in the battle against tax haven secrecy
World's second-richest man joins our calls for a Robin Hood Tax and urges the worlds' richest leaders to maintain their commitments to international aid.
Financial crisis: G20 must end tax haven secrecy, ActionAid says.
On Thursday 17 November, celebrities and guests will gather at the Renaissance Five Star Hotel to raise money at ActionAid's fundraising event for ending poverty, ensuring that children in poor countries have the chance to go to school and build a better life for themselves and their families.
Water now covers one third of Thailand's provinces. Many families are displaced and in need of basic facilities like food, water, sanitation and shelter. ActionAid is responding to the emergency.
ActionAid ambassador Emma Thompson meets Nobel laureate Aung San Suu Kyi against a backdrop of increasing change in the country.
Take our world tour and see where hunger is being tackled and where it is likely to get worse.
Emma Thompson discusses her visit to Burma (Myanmar) with ActionAid, and tells us how the country is changing, the difference ActionAid supporters are making, and what it was like to meet Aung San Suu Kyi
Uncover the secret tax haven life of 98 out of 100 biggest UK-listed companies.
Enrico Eminae, the man leading ActionAid's response to the crisis, travelled to five locations in the UK to thank supporters in person for their generosity
Pamela Chisanga is country director of ActionAid Zambia. From schools so old they threaten to collapse, to mining companies not paying their way, she explains some of the problems she deals with in the course of her work.
We polled 1000 women across Afghanistan to obtain a rare insight into their opinions about living through the last 10 years of war.
Celebrities gear up for a night of fine wine and laughs at ActionAid's showcase fundraiser
The most vulnerable people are the worst affected by the huge floods in India and Pakistan.
The earthquake in Haiti killed 250,000 people and shattered millions of lives. With the support of friends and families – and ActionAid child sponsors – the people of Haiti are rebuilding their lives.
As hunger turned to famine in east Africa, ActionAid's emergency response delivered life-saving food and water. But it is child sponsorship that has created the basis for this vital work.
A national competition to find the Young Ambassadors 2012 for the Global Campaign for Education is now open to schoolchildren in the UK. The winners will have the opportunity to visit Africa in February 2012 with the charity ActionAid and the Global Campaign for Education.
ActionAid's Real Aid 3 report reveals an increase in good quality aid which is helping to free countries from aid dependency.
On Saturday 3 September an item of clothing from the Hollywood heartthrob Robert Pattinson's wardrobe will be available in an online charity auction benefiting four international causes - World Child Cancer, Save the Children, UNICEF, and ActionAid.
Heavy monsoon rains have started to cause havoc across large parts of Bangladesh, Pakistan and India with Nepal now facing severe floods.
SABMiller has recently launched a hostile takeover bid for the Foster's group, which could lead to the Australian authorities losing out to tax dodging in a similar way to African nations.
To commemorate ActionAid's tenth anniversary of campaigning against poverty at Reading Festival, Radio 1 DJ Huw Stephens visited work run by young people in Kenya. This included a newspaper that combats corruption, and a radio station in the Korogocho slum.
Bollocks to Poverty, the youth arm of ActionAid, is staging a series of bespoke, unpublicised performances by big names in their cool and cosy tent to celebrate their 10th amazing year of standing up for the rights of people all over the world at Reading festival.
Coronation Street actress Sally Dynevor (aka Webster) served up ActionAid's sparkling rose wine, Millione, at a wine-tasting in Manchester
Women facing drought in Kenya are resorting to the potentially life-threatening practice of binding their stomachs with rope in order to stave off hunger.
Donations from the UK public to the DEC appeal to help people suffering from severe food shortages in East Africa have topped a milestone £20 million.
Donations from the UK public to the DEC's appeal, to help people suffering from severe food shortages in East Africa, have reached a milestone £15 million.
The worst drought in 60 years has devastated cattle and crops in parts of East Africa creating a humanitarian emergency, with problems expected to be compounded by a poor coming harvest. More than 10 million people in Ethiopia, Kenya, Somalia, and the newly-formed Republic of South Sudan have been left in need of food, water and emergency healthcare.
DEC agencies prepare to scale up work in Somalia. Member agencies of the Disasters Emergency Committee are preparing to scale up the work they are already doing in Somalia, as thousands continue to flee to Kenya and Ethiopia to escape drought and conflict. Nine of the 14 agencies that make up the DEC are working in the Somalia directly or through partners. The existing humanitarian crisis in the country caused by the conflict has been compounded by the severe drought affecting the region.
Donations are still flooding in from the UK public for the DEC Appeal to help people suffering from severe food shortages in East Africa, bringing the appeal total to £10 million. Parts of East Africa have been hit by the worst drought in 60 years, wiping out cattle and crops. This has left at least 10 million people in Ethiopia, Kenya, Somalia, and the newly-formed Republic of South Sudan in desperate need of food, water and emergency healthcare.
Businesses face the risk of seriously damaging their reputation if they do not make tax planning part of their corporate responsibility programmes, says anti-poverty charity ActionAid.
Mobile phone users donating to the DEC East Africa Crisis Appeal have raised a record sum by text, giving £400,000 so far.
The Disasters Emergency Committee (DEC) has announced details of the radio and television broadcasts to run today (Friday) to help more than 10 million people in the grip of the worst drought seen in parts of East Africa in over half a century.
LEADING UK humanitarian agencies are launching a joint appeal to help more than 10 million people in the grip of East Africa's worst drought in over half a century.
In the face of the worst drought in East Africa since the 1950's, the agencies of the Disasters Emergency Committee said today (Wednesday, 6.7.11) they face a funding shortfall of more than £85m for their emergency response in the region.
The drought has withered crops, killed cattle and led to massive increases in food prices. More than 10 million people are now affected over large areas of Kenya, Somalia, Ethiopia and the rest of the region.
ActionAid has launched a £1.5 million appeal to urgently step up its work in drought-affected East Africa.
The severe drought across Kenya, Ethiopia, Somalia, Uganda and Djibouti has left an estimated 10m people on the brink of starvation with some areas experiencing the driest conditions in 60 years.
Recurring droughts have taken parts of east Africa to the point of collapse. Hawa Halaile from Kenya tells us of closed waterholes, and children no longer able to go to school.
Seventeen-year-old Neela was attacked with acid when she was 14 years old. Horrific attacks in which corrosive acid is hurled in women's faces or forced down their throats – melting skin and bone and often resulting in blindness – are a near daily occurrence in Bangladesh.
Our sparkling wine with a heart, Millione, has now raised enough money to start work on two primary schools in Sierra Leone.
The East is East star will appear on Daybreak on ITV tomorrow (16 June) to talk about his sponsored child, and an amazing journey.
18-year-old Eshwaramma Nrayanappa – a quadriplegic former sponsored child – has won a Diana Award in recognition of her contribution to the rights of children living with disability in India.
ActionAid supporters meet their MPs in Westminster to campaign for tax justice and a commitment to aid.
ActionAid's youth arm are looking for one lucky winner to live the dream of being an intrepid backstage reporter interviewing bands like The Strokes, Muse, Pulp & My Chemical Romance.
Sir Paul McCartney took time out before hitting the stage in rocking Rio de Janeiro last week to meet with two young music students from the Mare community.
Mark witnessed the impact of child sponsorship first-hand on his recent visit to Senegal.
Workers at Asda's 'showcase' clothing factories, which are supposed to offer improved pay and conditions, report being slapped, having their hair pulled and regularly working 60 hour weeks.
Over 90% of people think supermarkets treat farmers and suppliers "unacceptably"
Life, Above All is the extraordinary story of one girl's struggle with HIV / AIDS stigmatisation in South Africa.
One of Britain's favourite Olympic champions, Sally Gunnell, is taking on the Great Ethiopian Run with anti-poverty charity ActionAid and is asking runners to get on their marks and join her on this 10K challenge.
Liam Fox has asked David Cameron to break his aid promise. This is ActionAid's response.
ActionAid today launched an innovative anti biofuels campaign targeting Transport Secretary Philip Hammond by using adverts on buses which stop outside his office.
Plans for a biofuels plantation in Kenya will violate the rights of an indigenous community of over 20,000 people.
The Independent Commission for Aid Impact has today published a work plan outlining its intended programme of activity for the next three years.
As the long sunny evenings draw out it's the perfect time to add Millione, a lightly sparkling rose frizzante, to any summer barbeque or picnic. Millione is the wine that not only tastes and looks good, but does good too.
Tax authorities in five African countries are to investigate giant brewer SABMiller following an ActionAid report which found that the multinational avoided millions of pounds of taxes in Africa every year.
On Sunday 17 April, twenty-four of ActionAid's intrepid runners pounded the streets of London to help raise £30,000 (so far!) to help end poverty.
The expanding humanitarian crisis caused by the fighting has created 120,000 refugees in Liberia, nearly half of whom are receiving little or no aid.
After an 18-month inquiry the Nuffield Council on Bioethics said that government biofuel targets in the UK and EU may do more harm than good
Corporate tax reforms to be announced in today's Budget could cost developing countries up to £4bn, ActionAid warns. The Treasury is relaxing a piece of anti-tax haven abuse legislation which could make it easier for UK companies to avoid tax in poor countries.
African biofuels destined for Europe will result in up to six times the carbon emissions of fossil fuels, according to a new study commissioned by ActionAid, the RSPB and Nature Kenya.
ActionAid will be presenting two films at this year's Human Rights Watch Film Festival
Today, ActionAid celebrated the centenary of International Women's Day by inviting four extraordinary female politicians from Afghanistan to share their achievements and the daily challenges they face as Afghan MPs.
ActionAid women are organising events in over 20 countries, and amazing pictures are already flooding in. Have a look at what our activists, supporters and partners are doing to end violence against women.
Nearly half of all women (47 per cent) in the UK do not believe they are treated equally to men
Habiba Sarobi has faced numerous threats to her life. Now she's in the UK, raising support on the 100th anniversary of International Women's Day.
Emma Thompson visited Liberia to discover how a country with Africa's first female elected head of state could also have such high levels of violence against women.
ActionAid today welcomed the government's aid review, particularly the focus on improving the lives of women and girls as well as the emphasis on transparency and accountability in the way aid money is spent.
Joanna Lumley, Kathy Burke, Sophie Ellis-Bextor, Beverley Knight, Annie Mac and Miranda Richardson get lippy for ActionAid.
An investigation by ActionAid reveals that half of all FTSE 100 companies do not appear to fulfil their legal obligations to list all their subsidiaries.
To celebrate the centenary of International Women's Day, EQUALS Live and Southbank Centre will bring together Annie Lennox, Kate Nash, Paloma Faith and V V Brown in a unique concert to celebrate the strength and unity of women across generations.
The government wants to treble the amount of biofeuls sold in the UK, despite evidence that they cause harmful emissions and push poor people off their land.
Annie Lennox and the EQUALS partnership of charities invite you to join the big inequality debate and celebrate the 100th anniversary of International Women's Day on 8 March 2011
ActionAid's sponsored children and their families in southern Pakistan are reported safe after the region was hit by an earthquake last night.
In the last twelve months, Haiti has been hit by a cholera outbreak, a hurricane, a tornado and one of the most devastating earthquakes in living memory. Your donations are helping people find their feet, but there is still a lot to be done.
"Until the government frees up the land needed, we are forced to spend donations on replacing tents and other piecemeal measures"
Unless the violence ends, the peace, economic and human security of neighbouring countries could also be put at risk as they struggle to help those fleeing Ivory Coast.
Could you spare 3 minutes to give us your thoughts and help us improve this site?Not right now... Yes, I will help!


text:
Accessibility Links
Go to main page content
Go to main menu
Go to vacancy search
Go to site search
By using this website you agree to the use of
Quick Send CV
Saved Jobs
About us
Knowledge centre
Work for us
Contact us
You are here:
> Law firms need to renew their focus on improving s...
Law firms need to renew their focus on improving social mobility
Posted by:
Laurence Simons
A number of leading UK law firms have demonstrated their commitment to improving social mobility in the profession. And with good reason, as our
last year showed that 44% of partners at Magic or Silver Circle firms studied at either Oxford or Cambridge and a further 34% attended one of the UK's 22 other Russell group universities.
However, a recent report from the Social Mobility Commission (SMC), suggests that lawyers from 'affluent backgrounds' stand to take on average £6,800 (17%) a year more than their peers from less affluent backgrounds. The report's findings draw upon almost 65,000 data samples taken from the UK Labour Force Survey (LFS), which covers a range of professions, including law. Worryingly, the report also found that when comparing colleagues with the same level of education, the same job role and the same level of experience, those from 'poorer' backgrounds still earn on average £2,242 (7%) less than their immediate peers.
In addition to revealing a concerning pay disparity, the report also noted that access to 'traditional professions' such as law, "remain dominated by those from advantaged backgrounds". In According to the SMC, just 13% of solicitors are working class, while almost two thirds (62%) come from 'professional and managerial' families.
The report notes that the upwardly mobile may be victims of 'demand-side' mechanisms of discrimination, being consciously or unconsciously given fewer rewards, for instance. It goes on to explain that "this may manifest as outright discrimination or snobbery, or it may have to do with more subtle processes of favouritism or "cultural matching", whereby elite employers misrecognise social and cultural traits rooted in middle-class backgrounds as signals of merit and talent."
Share article:
Add new comment
Your email


text:
It appears as though Philippine President Rodrigo Duterte's budding romance with Chinese President Xi Jinping may not be so steamy after all with the outspoken leader stressing that he was leaving his options open during a visit this week to Japan to meet with Japanese Prime Minister Shinzo Abe.
Last week, Duterte was in Beijing. Inside the Great Hall of the People he announced his "separation" from the United States and realignment with China and Russia, continuing with his aggressive stance against the Philippines' former principal ally, and frightening Washington's major ally in the region, Japan.
However, Duterte clarified himself in a speech to Japanese executives yesterday, repeating his threats to cut off military and economic ties with the US, but assuring his hosts that this did not mean that he planned to enter into a military alliance with China. Instead, Duterte cast the pivot as part of a new independent foreign policy that was all about the bottom line:
"I went to China for a visit and I would like to assure you that all there was, was economics," he said. "We did not talk about arms, we did not talk about stationing of troops, we avoided talking about alliances, military or otherwise."
Yet again, Duterte vowed to rid his country of all foreign troops within two years and threatened to cancel defense pacts with the US, insisting that the Philippines was not "a dog on a leash." Despite tough words on this matter in the past, Duterte has yet to actually take any concrete action beyond cancelling some joint naval patrol exercises.
While some worried that Duterte was ready to give up the Philippines' South China Sea claims in order to please Beijing, Duterte assured Japan that he would insist on ending the conflict via international rule of law, referring to a decision in July by UN-backed Permanent Court of Arbitration in The Hague which invalidated China's vast claims to the South China Sea. Calling Japan "closer than a brother," Duterte welcomed Japanese help in solving the matter.
During his visit to Beijing, Xi and Duterte agreed to "temporarily put aside" their differences in the South China Sea and work to improve bilateral ties. In Japan, Duterte noted that this arrangement couldn't last forever.
"Whether we like it or not, someday we'll have to talk about it and present our side and I said, in front of you, I cannot go out of the arbitral doctrine. I'm limited to what it says," Duterte said.
Last week, Reuters reported that a deal may be worked out to give Philippine fisherman access to the rich fishing waters off the disputed Scarborough Shoal, which China seized back in 2012. The Philippine Daily Inquirer reports that Manila rejected this kind of deal because it would "go against the ruling of an international tribunal that the common fishing ground did not belong to anyone."
Before visiting Beijing last week, Duterte declared that, "Only China can help us." But as the US has learned, it appears as though his affections are a bit fickle. When asked to choose sides between China and Japan, Duterte responded: "Between China and Japan, I think I love the Philippines more."


text:
The Feinstein Institute at Northwell Health is strongly committed to the humane care and use of animals in research, testing, and teaching. Any member of the faculty, staff, or public having reason to question the treatment of animals should report any suspected cases of animal abuse, misuses, mistreatment, and non-compliance with IACUC approved activities, institutional and program policies and guidelines.
Additionally, researchers are encouraged to self-report adverse events. Any abnormal values or adverse events not consistent with routine expected outcomes that results in any unexpected animal welfare issue or human health risks should be promptly reported. Reports are promptly evaluated ensuring animal welfare is maintained.
Acting on behalf of the Institutional Animal Care & Use Committee, all reports are investigated by the Animal Welfare Office. When a concern is reported, immediate steps are taken to ensure that the animal care and use in question is appropriate and that the highest animal welfare standards are maintained at all times.
Submit reports utilizing the Incident & Adverse Events Reporting Form to email@example.com.
Compliance or animal welfare concerns may also be reported via the Compliance Help Line or to the Office of Research Compliance. No facility employees, committee member or laboratory personnel shall be discriminated against or be subject to any reprisal for reporting violations of any regulations, standards or animal welfare concerns.
For anonymous reporting of compliance concerns:
- Compliance Help Line – 800-894-3226
- Office of Research Compliance (ORC) – 516-321-2101
- northwell.ethicspoint.com
* Anonymous reports are acceptable, and all are investigated. The identity of anyone making an anonymous report will be held in strict confidence. Federal laws prohibit discrimination or reprisal for reporting violations of standards and regulations promulgated under the Animal Welfare Act. NSLIJHS Policy 800.01: Non-Intimidation and Non-Retaliation Policy (insert hyperlink to the policy)
Questions about how animal welfare concerns are addressed should be directed to the Animal Welfare Office at (516) 465-2717 or email@example.com.


text:
What is "mCommerce" with Shopgate
by Jenny Nguyen
February 6, 2018
Welcome Shopgate to the ShipStation family!
These guys know mCommerce. No, that wasn't a typo. "mCommerce" stands for mobile commerce. While it's been around for awhile, it gets overshadowed by eCommerce. But, we all know that the mobile sales are up this year. In fact, Forbes estimated that 2017 mobile sales reached $107B in 2017. We can only expect these numbers to go up in 2018.
And this is where ShopGate comes in. Shopgate is a SaaS platform that allows retailers to launch, maintain, and optimize native apps for mobile (iOS & Android). They help you build and retain customer loyalty with this growing segment of eCommerce.
Here are some ways they do it:
Native iOS and Android apps
Advanced push notification engine, including user segmentation
Total design control with a suite of easy-to-use widgets
Simplified payment options such as Apple Pay and Google Wallet for faster checkout
Unlimited discounting, couponing and promotions options
Pre-built integrations with leading analytics platforms including Appsflyer and Facebook for Apps
Don't fall behind the market and miss out on mobile sales this year. ShipStation and Shopgate together will streamline the mobile shopping and shipping experience.
Learn more about ShipStation's partnership with Shopgate and click the link below to start your free ShipStation trial!


text:
We make impressions on the people we meet in the first three seconds. What does that usually cover? Introductions and handshakes. In the first three seconds you have the opportunity to make a good first impression or a bad one.
If someone taught you how to shake hands well, congratulations. Most of us just started doing it unconsciously and continue doing it well or badly. There has been a lot written on the importance of touch, the rituals of meeting, the anthropology of handshakes. Here are the Cliff Notes.
So, what makes a good first three seconds? Here are the eight parts.
- Look someone in the eye.
Here are the two common mistakes:
- Limp grip. Ever shake hands with someone who gives you two or three limp fingers? Very unsatisfying.
- Vertical instead of horizontal hands. Men sometimes do this when they shake women's hands. They hold the hand like they are going to kiss it. The woman should make the first move and put her hand out with the thumb straight up. That sends the message nonverbally, "I am not afraid and I'm coming in for a good handshake."
There are many variations of handshakes and it is fun to watch for them.
- The double handshake: one person puts the other in a hand sandwich. The effect is warm and sincere and the reason is you can get more palm contact that way. Sometimes both people make hand sandwiches—showing even more sincerity.
- Holding the hand after the shake. Usually this feels very intimate or like special meaning is intended.
- Looking down during the handshake: this communicates lack of confidence or you don't want to meet them.
- Looking around during the handshake: this communicates arrogance. You are too busy and are looking for a more important person to meet.
- Variations on the power lock: one person puts the non-shaking hand on the forearm, upper arm or shoulder. This can feel warm and friendly and it can feel like they are jockeying for power. In general, powerful people touch less powerful people much less than the reverse and it can feel like the power locker is pushing you around. Lyndon Johnson was said to be a master at this.
Still think handshakes are minor details? It could mean the difference between getting the job or not—and may say a lot about your personality.
So, what handshake variations have you observed? Did anyone ever teach you how to shake hands or was it do-it-yourself?


text:
Daniel Jackson, Marshall Hawkins and Chuck McPherson did an incredible job Saturday night. We had around 40 fans here that were totally impressed with the concert. These guys don't work together every night but, with a simple wink, nod or smile they each knew exactly what the other one wanted and what they were thinking. It is a pleasure to watch professionals do thier jobs. Jazz should always sound this good and Daniel's piano playing was perfect.
Saturday night was also a new adventure for us. We have never broadcast a performance before and decided to give it a try. Max from www.Maxisawesome.com was umable to be at the show so he walked me through the set up and it went perfectly. Of course if you go to www.PianoSD.com and click on "watch us live" it will take you to the broadcast. We will be doing more so keep your eye on us. We are located in Mission Valley in the heart of Sunny San Diego, Ca.
Drop by the store some time and say hello, we would love to meet you.


text:
If You Think You're in a Hurry, You Have No Idea How Fast You're Really Getting There
Have you been feeling a little rushed lately? Well, you might be surprised to find out how fast you're actually moving even when you think you're "standing still."
- Earth, at the latitude of Washington, D.C., is spinning at a rate of about 750 miles per hour [1].
- At the same time, the spinning Earth is rotating around the Sun at approximately 67,000 miles per hour [2].
- And the Sun around which we move so rapidly is itself rotating around the center of the Milky Way Galaxy at about 483,000 miles per hour [3].
- Finally, the whole universe is spinning and moving outward at about 1,339,200 miles per hour [4].
It's dizzying to consider our speed and motion: a spinning earth, rotating around a sun, which is rotating around a galaxy, which is rotating around a spinning universe. So, if you think you're standing still, think again; we are actually hurtling through space at mind-boggling speed.
Yes, you're on the move. You're moving so fast you met yourself coming back! Don't let anyone tell you you're loafing.
Here are some biblical "speed texts." Hurry up and read them!
- Look! The Lord advances like the clouds, his chariots come like a whirlwind, his horses are swifter than eagles (Jer 4:13).
- I will hasten and not delay to obey your commands, O Lord (Psalm 119:60).
- Hurry! Go quickly! Don't stop! (1 Sam 20:38)
- God has told me to hurry (2 Chron 35:21).
Comments (3)
Trackback URL | Comments RSS Feed
May you be in Heaven an hour before the devil knows your dead.
What is the meaning of all this motion? St. Thomas Aquinas tells us:
"We hold then that the movement of the heavens is for the completion of the number of the elect. For the rational soul is more excellent than any body whatsoever, even than the heavens: wherefore there is nothing unreasonable in supposing that the end of the heavenly movement is the multiplication of rational souls; not indeed indefinitely, since this could not result from the movement of the heavens; and it could in that case be moved to something that it could not obtain. Therefore it is a definite number of souls that is the end of the heavenly movement: and when this is reached the movement will cease."–from QUAESTIONES DISPUTATAE, DE POTENTIA DEI, ON THE POWER OF GOD, QUESTION V:
THE PRESERVATION OF THINGS BY GOD, ARTICLE V, Will the Heavenly Movement Cease At Any Time?
And ditto to what Robertlifelongcatholic said.
There's timing too. I recently saw a bumper sticker;
Some, who plan to seek God at the eleventh hour, die at 10:30.


text:
I hated salad and especially salad dressing as a kid and loathed them both straight on into adulthood. Then a wonderful thing happened. I got over it. I love creamy dressings especially – Caesar, ranch, and blue (bleu?) cheese chief among them. I'm still a little afraid of Thousand Island, but maybe I'll get over that in the future, too.
Some folks worry about blue (bleu?) cheese being gluten-free, as the penicillium mold that makes blue cheese blue was originally cultured on bread. We buy BelGioioso brand crumbly Gorgonzola as it … Continue reading Blue Cheese Dressing


text:
May 11 – 18, 2018 – Oceans Yoga Retreat
- Oceans Retreat
- 770 Casuarina Way Casuarina NSW 2487
- May 11 - 18, 2018 (8 days)
- AUD $3,400.00 - Single Room AUD $2,400.00 - Twin Share AUD $5,000.00 - Premium Package
About us
Giving time back to yourself is so important, our team at Oceans Retreat are here to ensure you are treated to 7 nights of bliss. Greeted with a fresh cold press juice and massage to put you in a mood of calmness as soon as you enter our beautiful space. Our Yoga specific week will have you floating daily with Meditation, Yoga sessions of Sunrise, Studio, Rooftop and Hot Yoga with delicious and healthy meals and snacks throughout the day. Our renowned chef can create to any dietary requirements. Finish the week off with our Oceans Signature Sunrise meditation and body mud ritual to create a lasting bond with the new friendships formed.
Take time between sessions to unwind in our Oceans Day Spa with relaxation massage, facials, scrubs and soothe yourself inside and out.
We take a special trip to a majestic mountain to catch the sun as it hits Australia for the first time of a morning and visit a farmers market to connect with the amazing flavours the area has to offer.
Choose a single stay room, share with a friend or create a new lasting one in a twin share. Our premium package will has you pampered daily with your own private treatment suite out the door of your ocean view room.
Let us take care of you and have you give time to the most important person, You.
ReviewsWrite a review - tell others about your experience.
Thank you!
We're glad you've joined our retreat community. See you around :)Return to my event ×