Haskell
https://gyazo.com/31a11dac911049f1fc0fced343ad4175
https://www.haskell.org/
APIドキュメント
Hoogle
めっちゃサイトが重い
splitAt
指定されたインデックスでリストを2つの部分に分割すること
https://hackage.haskell.org/package/base-4.21.0.0/docs/Prelude.html#v:splitAt
halve xs = splitAt (length xs div 2) xs
これは配列を渡して2のリストのタプルを返す関数
tail
https://hackage.haskell.org/package/base-4.21.0.0/docs/Prelude.html#v:tail
Haskellでtail関数を使用すると、リストが空の場合に実行時エラーが発生する可能性があり、これを避けるためにdrop関数の使用が推奨されることがあります。
tail関数の問題点
tail関数は、リストの先頭要素を除いたリストを返しますが、空のリストに対して使用するとエラーが発生します。
tail [] -- エラー: Prelude.tail: empty list
drop関数による代替
drop関数は、リストの先頭から指定した数の要素を削除したリストを返します。空のリストに対しても安全に動作します。
safeTail :: a -> a
safeTail xs = drop 1 xs
このsafeTail関数は、リストが空の場合でもエラーを発生させず、空のリストを返します。
safeTail [] -- 結果: []
safeTail 1, 2, 3 -- 結果: 2, 3
パターンマッチによる安全な実装
さらに、パターンマッチを使用して、リストが空の場合とそうでない場合を明示的に処理する方法もあります。
safeTail :: a -> a
safeTail [] = []
safeTail (_:xs) = xs
この実装では、リストが空の場合は空のリストを返し、そうでない場合は先頭要素を除いたリストを返します。
まとめ
tail関数は空のリストに対して使用するとエラーが発生するため、drop 1を使用するか、パターンマッチを用いて安全にリストの先頭要素を除去する方法が推奨されます。
dropかパターンマッチング使ってくれとのこと
x <- 1..n はリスト内包表記でリストから要素を取り出すために使用されます。
-> は関数の型宣言やラムダ式で引数と戻り値、または関数本体を分けるために使用されます。
理解
isLower
小文字
空白区切り文字で入力を受け入れる
Haskellで空白区切りの入力を受け取る - お布団宇宙ねこ
Haskell の四捨五入 : tnomuraのブログ
roundとかする時注意