[解決済み] Haskell takeWhile + 1
2022-03-01 11:43:38
質問
条件にマッチしない最初の要素を保持するtakeWhileはどのように書けばいいのでしょうか?
例(明らかに私の例はこれよりトリッキーです):
の代わりに
takeWhile (\× - > x! = 3) [1..10]
を返すように
[1,2]
必要なのは
[1,2,3]
.
私が考えたのは
(takeWhile myFunc myList) ++ [find myFunc myList]
しかし、これではリストを2回見直すことになる...。
何かアイデアはありますか?
解決方法は?
自分で転がすことができる。
takeWhileOneMore :: (a -> Bool) -> [a] -> [a]
takeWhileOneMore p = foldr (\x ys -> if p x then x:ys else [x]) []
と比較します。
takeWhile :: (a -> Bool) -> [a] -> [a]
takeWhile p = foldr (\x ys -> if p x then x:ys else []) []
明示的な再帰も問題ないでしょう。
takeWhileOneMore :: (a -> Bool) -> [a] -> [a]
takeWhileOneMore p [] = []
takeWhileOneMore p (x:xs) =
if p x
then x : takeWhileOneMore p xs
else [x]
関連
-
[解決済み] Haskell takeWhile + 1
-
[解決済み] Project Eulerとの速度比較。CとPythonとErlangとHaskellの比較
-
[解決済み】Weak Head Normal Formとは何ですか?
-
[解決済み】Haskellの宣言におけるエクスクラメーションマークの意味とは?
-
[解決済み】Template Haskellの何がそんなに悪いのか?
-
[解決済み】Haskell: リスト、配列、ベクトル、シーケンス
-
[解決済み】-XAllowAmbiguousTypesはいつが適切ですか?
-
[解決済み】一般的なHaskellの演算子で発音可能な名前はありますか?[クローズド]
-
[解決済み】Haskellの入門編
-
[解決済み】Haskell/GHCの`forall`キーワードは何をするのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] haskellでCharからIntに変換する
-
[解決済み] Haskellの[]と':'とは何ですか?
-
[解決済み] HaskellでIntからsqrtを取得する
-
[解決済み】Haskellの宣言におけるエクスクラメーションマークの意味とは?
-
[解決済み】Not a Functor/Functor/Applicative/Monadの良い例?
-
[解決済み】-XAllowAmbiguousTypesはいつが適切ですか?
-
[解決済み】一般的なHaskellの演算子で発音可能な名前はありますか?[クローズド]
-
[解決済み】なぜモナドが必要なのか?
-
[解決済み】Haskell の `data` と `newtype` の違いについて
-
[解決済み】Haskell/GHCの`forall`キーワードは何をするのですか?