haskell-jp / beginners #6

よかった。しばらく勉強を進めると、代数的データ型/algebraic data type/ data というのに出会うと思うので、そうしたらもっと良く理解できると思います。
ありがとうございます.長いお時間お取りしてしまいすみません.
@gksato san のおかげで理解が進みました.ありがとうございました.
代数的データ型の定義はこんな感じですね(実際は`List a`ではなく`[a]`って書きますが)
data List a = []
            | (:) a (List a)

: はただのコンストラクタ
補足ありがとうございます.代数関係はまだ自分理解できていないですが.定義的にはそうなっているのですね.
代数的データ型って名前だけどあんまり代数関係ない(全く無いわけではないけど別に覚える必要はない)ので身構えなくて大丈夫ですよ〜(僕も初心者なのであんまり信用しないで><)
そうなんですね.難しそうなイメージがあったので.勉強進めるうちに理解できたらと思います.
data MyList a = Nil
              | Cons a (MyList a)
といった感じに自分で定義していろいろ触ってみると理解が深まるかも
ありがとうございます.
@Izawa has joined the channel
@Kuroda has joined the channel
@ has joined the channel
初めてHaskell IDE Engine というやつを使うことができた!!!!  要は、vscode と docker を併用すること。  すごく嬉しい:smile:  ちなみに、環境は Windows 10 (Surface Book) です
@ has joined the channel
@teruchi has joined the channel
この記事中々分かり易かったのですけど(分からないところもたくさんありましたが:sweat_smile:)
正しい内容だと思いますか?
Polymorphism の解説


https://dev.to/jvanbruegge/what-the-heck-is-polymorphism-nmh
@ has joined the channel
@shinichi has joined the channel
オブジェクト指向の人はポリモーフィズム=Subtyping polymorphismだと思っているので、「Genericsはポリモーフィズムだよ」とか口走ったら「お前は分かってない!」って説教部屋送りにされそうですね:sweat_smile:

Haskellではこれらもポリモーフィズムに含める立場が主流かと思います
@wshito has joined the channel
@kanimum has joined the channel
@n_odoki has joined the channel
@solzard has joined the channel
@shinichi has left the channel
@ has joined the channel
遅ればせながらようやく読めました。
Row PolymorphismってOCamlとかもありましたよね?
それ以外特におかしな点はなかったように思います(ので、元記事にもコメントしておきました)。
@shimbaco has joined the channel
@cutsea110 has joined the channel
オオツカケンタロウ
@オオツカケンタロウ has joined the channel
@hangedman has joined the channel
皆さまご回答ありがとうございます。どうも私のslackからnotificatjonが来なくて気付きませんでした。
さっきTelegramにあるとあるHaskellチャンネル https://t.me/haskell_en でも聞いたのですが ...
v' の型を Integer ではなく、Num p => p にするにはどうすればよいのでしょうか?
修正して試してから回答したいので、
画像ではなく、直接ソースコードを```などで囲って張っていただけると助かります :pray:
あと、 instance の行の後の v などの定義は慣習上インデントしたほうが読みやすいです。
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE UndecidableInstances #-}

--------------------
class C a where
  f :: a -> a
  f x = x

instance C Int

v = f (3 :: Int)


--------------------
class C' a where
  f' ::  a -> a
  f' x = x

instance Num a => C' a

v' = f' 3
すみません、読み違えてました。
vv' はメソッドだと思ってました。
で、解決方法ですが、単純に
v' :: Num p => p
v' = f' 3

と、 v' に型注釈を入れる方法が確実でおすすめです。
NoMonomophismRestriction という言語拡張を有効にする、というてもありますが。
Reminder:
beginnersチャンネルは、新しい人がスムーズにHaskellに慣れるための質問を歓迎するチャンネルです。
Haskell-Beginners ML や IRCの#haskell-beginners や RedditのMonthly Hask Anythingのような位置づけを意図しています。

beginnersチャンネルでの回答側は、以下の左側のような応答を厳禁とする運用です。
• それはくだらない質問だ → くだらない質問など無い
• その質問は以前にもあった → 質問者はそんなこと知らない
• Google検索せよ → 検索できないから質問している
beginnersチャンネルでは、例えば以下のレベルの質問から歓迎します。
: とは何のことですか。
• タプルとは何ですか。
@igrep ありがとうございます。そういうことなんですね。おかげで、 とかも分かって、大変ありがたいです。:grinning:
@ has joined the channel
@ has joined the channel
@hexirp has joined the channel
@fumi has joined the channel
@ has joined the channel
@syocy has joined the channel
@ has joined the channel
@statiolake has joined the channel
@ has joined the channel