本文書は、Michael T. Barry作のソフトウェア「VTLC02」 ソースコード中のコメントを日本語に翻訳したものです。
また見出しは、Markdownに整形するにあたり翻訳者が便宜上つけたものです。
原文リポジトリのURL https://github.com/barrym95838/6502-Assembly/blob/main/VTLC02
import {Pair, State} from "./state" | |
// ---------------------- | |
// 自動販売機の実装 | |
enum Input { | |
Coin, | |
Turn | |
} |
<?php | |
declare(strict_types=1); | |
interface Monoid | |
{ | |
public function canBeInstance($a): bool; | |
public function append($a1, $a2); | |
public function zero(); | |
} |
from typing import Optional | |
def maybe(func): | |
def fn(*args, **kwargs): | |
try: | |
ret = func(*args, **kwargs) | |
if ret: | |
return [ret] | |
else: | |
return[] |
from typing import List | |
def parseInt(input: str) -> List[int]: | |
try: | |
return [int(input)] | |
except ValueError: | |
return [] | |
def findUser(code: int) -> List[dict]: | |
users = { |
本文書は、Michael T. Barry作のソフトウェア「VTLC02」 ソースコード中のコメントを日本語に翻訳したものです。
また見出しは、Markdownに整形するにあたり翻訳者が便宜上つけたものです。
原文リポジトリのURL https://github.com/barrym95838/6502-Assembly/blob/main/VTLC02
100 ?="start address? "; | |
110 A=? | |
120 ?="end arress? "; | |
130 E=? | |
150 :1)=# | |
160 ?=A | |
170 ?=": "; | |
180 I=0 | |
190 :2)=# | |
200 <=A+I |
CALL$EA00 | |
==02000 | |
&=0 | |
10 F=50 | |
20 Y=-12 | |
30 X=-39 | |
40 C=X*229/100 | |
50 D=Y*416/100 | |
60 A=C |
パーサーの定義の最後にある (input)
の文法的な意味を教えてください
Rustでは、関数は値を返すことができますが、その返り値は最後に評価された式です。この特性を利用して、関数の本体を括弧で囲むことで、その関数が別の関数に引数として渡されることを可能にします。このパターンは、高階関数(他の関数を引数として取る関数)を使用する際によく見られます。
ここでの (input) は、nom パーサーコンビネータの一部で、これは関数を返します。この関数は、入力文字列(ここでは input)を引数として取り、パース結果を返します。つまり、 (input) はパーサー関数を実行しています。
例えば、以下のコードを見てみましょう: