昨日からなんか違和感あるなぁって思ってたけど、今朝頭の中でこのツイート読んでて気づいた。 参照「等価」性じゃなくて、参照「透過」性だわ。 #プログラミング #Haskell twitter.com/opaupafz2/stat…
昨日からなんか違和感あるなぁって思ってたけど、今朝頭の中でこのツイート読んでて気づいた。 参照「等価」性じゃなくて、参照「透過」性だわ。 #プログラミング #Haskell twitter.com/opaupafz2/stat…
Haskellの型クラス、思っていた以上にRustのトレイトだなぁ。型クラスを継承(と言って良いのかはわからんが)したら基底のインスタンスも必要になるし。 #プログラミング #Haskell #Rust
強いて違うところを挙げるとすれば、同名の関数(Rustでいうメソッド)を定義するのがそもそも不可能である、ということぐらいか。
うーん、今ふと思ったのだが、Rust、混同しやすい名前つけすぎでは。 まず参照、次にトレイト、最後にクロージャ。 特にクロージャに関してはクロージャ(環境キャプチャ)でクロージャ(関数閉包)を作ることもできるので、本当に紛らわしい。
参照はC++やC#の参照と似てはいるけど、再代入とかはできないので、違うものとして扱っています。
学習難易度の高さはこの混同しやすい名前が多いことも関係していると思う。現に、俺はRustの参照を最初C++の参照と同じだと思ったしな。
たとえば、「RustのトレイトはSchärli氏の提唱したトレイトとは違います」みたいな注意書きがあれば、混同する確率はぐっと下がると思うんだけど、それすらないからな。PHPのオーバーロードはちゃんと「他言語のオーバーロードとは違います」って説明してくれているのに。不親切だよね。
@kawamineka PythonモジュールはCで実装されていることが多いので(randomはまさにそれです)、モジュールは極力活用したほうが良いです。
知らなかった・・・Python、3.8で:=演算子によって条件文の中でも代入できるようになってたんか・・・
というか、本来の代入の記号って:=だからなぁ・・・代入の演算子で:=を使っているプログラミング言語は少ない印象だけど・・・。