31

リストを取得したので、n 番目の項目が必要です。Haskell では を使用!!しますが、その elm バリアントが見つかりません。

4

3 に答える 3

41

Elm は0.12.1で配列を追加し、実装は 0.19 で大幅にオーバーホールされ、正確性とパフォーマンスが向上しました。

import Array

myArray = Array.fromList [1..5]

myItem = Array.get 2 myArray

配列のインデックスはゼロです。負のインデックスは現在サポートされていません (残念なことに、私は知っています)。

注意してくださいmyItem : Maybe Int。Elm は実行時エラーを回避するためにできる限りのことを行うため、範囲外のアクセスは明示的な を返しますNothing

先頭と末尾を取得するのではなく、リストにインデックスを付けようとしていることに気付いた場合は、配列の使用を検討する必要があります。

アレイのドキュメント

于 2014-10-07T01:16:41.700 に答える
14

Elm にはこれに相当するものはありません。もちろん、自分で実装することもできます。

(注: これは「合計」関数ではないため、インデックスが範囲外の場合に例外が作成されます)。

infixl 9 !!
(!!) : [a] -> Int -> a
xs !! n  = head (drop n xs)

より良い方法は、Maybe データ型を使用して合計関数を定義することです。

infixl 9 !!
(!!) : [a] -> Int -> Maybe a
xs !! n  = 
  if | n < 0     -> Nothing
     | otherwise -> case (xs,n) of
         ([],_)    -> Nothing
         (x::xs,0) -> Just x
         (_::xs,n) -> xs !! (n-1)
于 2014-04-21T16:43:17.733 に答える