関数コンストラクト

バージョン 2.0 以降、ユーザーは関数コンストラクトを使い独自のNML関数を定義できます。関数は、 ブロックと同じように定義します。

 function: function_name;
 inputs: list of comma separated inputs;
 outputs: list of comma separated outputs;
 defs: suite;

Suite は、関数呼び出し、代入ステートメント、条件、またはループを指定できる一連のステートメントを表します。関数定義内の各ステートメントは、改行またはキャリッジ リターンで終わります。セミコロン ";" は、関数定義の終わりを示すために使用されます。

例:

function: lossfunc
  inputs:  y_true ;
  outputs: y_pred ;
  defs:

  y_true = y_true ^ 2
  y_pred = y_true ;

関数呼び出し:

ユーザー定義関数は、他の関数と同様に呼び出されます。

lossfunc: [in, out]

代入ステートメント:

variable = value

例:

c = [[2,3],"hi",[3,4,5]]
y = 2 ^ 2
p = range:[len: [c]]

条件:

if,elif, else は、すべての開始と終了を括弧{}でブロックします。ただし、指定した場合、ブロックには少なくとも 1 つの suite ステートメントを含める必要があります。 if、elif、elseブロック内での入れ子になった if ステートメント、またはループステートメントは許可されています。

Syntax:

if condition:
{
suite
}
elif condition:
{
suite
}
else:
{
suite
}

Suite は、関数呼び出し、代入ステートメント、条件、またはループを指定できる一連のステートメントを表します。elif ステートメントと else ステートメントはオプションです。

Example:

if k==4:
{
k=k+1
}
elif k <= 3:
{
k=k^2
}
else:
{
print:[k]
}

While Loop

while と else は、すべての開始と終了を括弧{}で囲んでブロックします。ただし、指定した場合、ブロックには少なくとも 1 つの suite ステートメントを含める必要があります。入れ子になったループまたは条件は使用できます。 構文:

while condition:
{
suite
}
else:
{
suite
}

Suite は、関数呼び出し、代入ステートメント、条件、またはループとして指定できる一連のステートメントを表します。else ステートメントは省略可能です。

例:

while True:
{
print:["Condition Satisfied"]
}
else:
{
print: ["Condition Not Satisfied"]
}

For Loop

構文:

for variable in list:
{
suite
}
else:
{
suite
}

Suite は、関数呼び出し、代入ステートメント、条件、またはループを指定できる一連のステートメントを表します。else ステートメントは省略可能です。

Example:

for a in [1,3,4]:
{
h=h+a
}