こういうふうにすれば、いい。
➜ ~ zip -P パスワード -e hoge.zip hoge.html Enter password: Verify password: updating: hoge.html (deflated 37%)
なお、この方法で圧縮したファイルは7zipで解凍が可能。
大半は7shiさんの協力によるものです。ありがとうございます。ぐっちゃけ、polish notation scalaなどでググると出てくると思うんですけどね。というか、逆ポーランド記法については、ググるとあった。
いずれの記法にしても、まずはsplitでリストに分割するのがキモ。
dropRightを駆使してあれするのもいいですし、:+を使ってもいいです。後者はスタックに数値を積みながら、演算子が来たらスタックの中身を計算する、という方法。前者はfoldLeftを使って畳み込みで計算しています。ちなみに、畳み込みによる計算はすごいH本にもありました。
Scala関数型デザインの本に乱数のくだりがあるけど、あれに似ている。状態を保持しながら計算してる。ちなみに、
値と状態を関数の戻り値として保持している方法はStateモナドにもありますが。
3 * (1 + 2)みたいなやつの構文解析は、正直言ってかなりつらい。7shiさんの協力がなければ…ダメでした。
途中までンところ。
想像以上に難しい。あと、こういうプログラミングは、慣れが重要です。本当に慣れが。
Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear)