Jump to content

Yorick (programming language)

From Wikipedia, the free encyclopedia
Yorick
Designed byDavid H. Munro
First appeared1996; 29 years ago (1996)
Stable release
2.2.04 / May 2015; 9 years ago (2015-05)
OSUnix-like systems including macOS, Microsoft Windows
LicenseBSD
Filename extensions.i
Websitegithub.com/LLNL/yorick

Yorick is an interpretedprogramming language designed for numerics, graph plotting, and steering large scientific simulation codes. It is quite fast due to array syntax, and extensible via C or Fortran routines. It was created in 1996 by David H. Munro of Lawrence Livermore National Laboratory.

Features

[edit]

Indexing

[edit]

Yorick is good at manipulating elements in N-dimensional arrays conveniently with its powerful syntax.

Several elements can be accessed all at once:

> x=[1,2,3,4,5,6];> x[1,2,3,4,5,6]> x(3:6)[3,4,5,6]> x(3:6:2)[3,5]> x(6:3:-2)[6,4]
Arbitrary elements
> x=[[1,2,3],[4,5,6]]> x[[1,2,3],[4,5,6]]> x([2,1],[1,2])[[2,1],[5,4]]> list=where(1<x)> list[2,3,4,5,6]> y=x(list)> y[2,3,4,5,6]
Pseudo-index

Like "theading" in PDL and "broadcasting" in Numpy, Yorick has a mechanism to do this:

> x=[1,2,3]> x[1,2,3]> y=[[1,2,3],[4,5,6]]> y[[1,2,3],[4,5,6]]> y(-,)[[[1],[2],[3]],[[4],[5],[6]]]> x(-,)[[1],[2],[3]]> x(,-)[[1,2,3]]> x(,-)/y[[1,1,1],[0,0,0]]> y=[[1.,2,3],[4,5,6]]> x(,-)/y[[1,1,1],[0.25,0.4,0.5]]
Rubber index

".." is a rubber-index to represent zero or more dimensions of the array.

> x=[[1,2,3],[4,5,6]]> x[[1,2,3],[4,5,6]]> x(..,1)[1,2,3]> x(1,..)[1,4]> x(2,..,2)5

"*" is a kind of rubber-index to reshape a slice(sub-array) of array to a vector.

> x(*)[1,2,3,4,5,6]
Tensor multiplication

Tensor multiplication is done as follows in Yorick:

P(,+, )*Q(, +) 

means

> x=[[1,2,3],[4,5,6]]> x[[1,2,3],[4,5,6]]> y=[[7,8],[9,10],[11,12]]> x(,+)*y(+,)[[39,54,69],[49,68,87],[59,82,105]]> x(+,)*y(,+)[[58,139],[64,154]]
[edit]
close