Arantium Maestum

プログラミング、囲碁、読書の話題

2021-04-01から1ヶ月間の記事一覧

PythonでリテラルなしIfなし変数束縛なしFizzBuzzワンライナー〜ラムダの力を讃えよ〜

前回こう書いた通り: 追記:前回の記事に書き忘れたが、walrus operatorことAssignment Expressionsを多用しているのでPython3.8以降が必要。 これまで見てきたワンライナーはPython3.8から導入された変数束縛式:=を使っていて、そのせいで最近のPythonバー…

PythonでリテラルなしIfなしFizzBuzzワンライナー

前回の記事のFizzBuzzコードをちょこっといじってこんな感じで満足していた: リテラルを使わず簡潔な高可読性FizzBuzzが書けるプログラマです(f:=lambda *a,A=id,Fizz=id,Buzz=id:len(a) or (k:=sorted(f.__kwdefaults__)) and print(A if (x:=A%f(f,f,f))*…

PythonでリテラルなしFizzBuzzワンライナー

ツイッターでこういう話が出ていた(@nishio さん、面白いお題をありがとうございます!): リテラル禁止FizzBuzz大会、開幕!(待て https://t.co/zpIirtNpmO— nishio hirokazu (@nishio) April 16, 2021 リテラルなしでFizzBuzz?出来らぁ! class Fizz: d…

Coqの演習問題、あるいはifとapplyについて

Coq

Logical Foundationsを進めがてら、基礎固め的に簡単な命題論理の命題を証明してみたいと思ってググったらこんなスレに遭遇した: coq.discourse.group このうちの最初の問題が簡単ながらもいくつか面白い点があったのでメモ。 証明する命題: Lemma a1 : fo…

OCamlのGADTでVariadic Function(Stack Overflowより)

このStack Overflow問答が大変面白かったのでメモ: stackoverflow.com サンプルコードは少し(自分にとっては)わかりやすいように変えてある。 何をしたいか 第一引数によって、それ以降幾つの引数をとるかが変化するような可変長引数関数を書きたい。 例…

OCaml Batteries IncludedのLazyList/Seq/Enumについて

OCamlの標準ライブラリは貧弱なことで知られている。 OCamlコミュニティの間でも「あれはOCamlコンパイラを書くためのライブラリだ」と言われていて、実際INRIAで必要最低限(つまりコンパイラを書くのに必要な分だけ)提供している側面がある。 基本的なデ…

Logical Foundationsの2章まで読んだ&Coqこと始め雑感

Coqでソフトウェア工学の基礎をいろいろ証明するよという趣旨(多分?)のSoftware Foundationsというウェブ上で読める教科書シリーズがある。 softwarefoundations.cis.upenn.edu 第1巻Logical FoundationsはそのままCoqの教科書になっている。これを読み進…