Skip to content

Instantly share code, notes, and snippets.

Q

パーサーの定義の最後にある (input) の文法的な意味を教えてください

A

Rustでは、関数は値を返すことができますが、その返り値は最後に評価された式です。この特性を利用して、関数の本体を括弧で囲むことで、その関数が別の関数に引数として渡されることを可能にします。このパターンは、高階関数(他の関数を引数として取る関数)を使用する際によく見られます。

ここでの (input) は、nom パーサーコンビネータの一部で、これは関数を返します。この関数は、入力文字列(ここでは input)を引数として取り、パース結果を返します。つまり、 (input) はパーサー関数を実行しています。

例えば、以下のコードを見てみましょう:

@kkismd
kkismd / Compiler Transcript
Created May 13, 2023 11:04
EMUZ80-6502RAM VTLC02-GM ASCIIART Compile sample
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
@kkismd
kkismd / dump.vtl
Last active February 21, 2023 02:14
100 ?="start address? ";
110 A=?
120 ?="end arress? ";
130 E=?
150 :1)=#
160 ?=A
170 ?=": ";
180 I=0
190 :2)=#
200 <=A+I

VTL-2 for the65c02(VTLC02)

本文書は、Michael T. Barry作のソフトウェア「VTLC02」 ソースコード中のコメントを日本語に翻訳したものです。

また見出しは、Markdownに整形するにあたり翻訳者が便宜上つけたものです。

原文リポジトリのURL https://github.com/barrym95838/6502-Assembly/blob/main/VTLC02

from typing import List
def parseInt(input: str) -> List[int]:
try:
return [int(input)]
except ValueError:
return []
def findUser(code: int) -> List[dict]:
users = {
@kkismd
kkismd / deco.py
Last active August 23, 2019 10:19
from typing import Optional
def maybe(func):
def fn(*args, **kwargs):
try:
ret = func(*args, **kwargs)
if ret:
return [ret]
else:
return[]
@kkismd
kkismd / monoid.php
Last active February 15, 2019 01:33
<?php
declare(strict_types=1);
interface Monoid
{
public function canBeInstance($a): bool;
public function append($a1, $a2);
public function zero();
}
import {Pair, State} from "./state"
// ----------------------
// 自動販売機の実装
enum Input {
Coin,
Turn
}
using System;
using System.Collections;
using UnityEngine;
// TODO: UnityEngineへの依存を消したい
/// <summary>
/// コマンドのインターフェイス
/// TODO: インターフェイスいらないかもしれない?
/// </summary>
@kkismd
kkismd / shift_zero_to_underscore.json
Created July 10, 2018 11:15
Karabiner-ElementsでShift+ゼロをアンダースコアへ変換
{
"title": "Left-Shift + '0' to '_' ",
"rules": [
{
"description": "Left-Shift + '0' to '_' ",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "0",