簡體   English   中英

將函數映射到Haskell 2元素中的列表一次

[英]mapping a function to a list in Haskell 2 elements a time

我在Haskell嘗試了一些問題(在Spoj ),我偶然發現了一些有輸入形式的問題:

testcase_1
testcase_1_continued
testcase_2 
testcase_2_continued

要么

testcase_1 testcase_1_continued
...

正如您所看到的,只能通過在輸入上使用wordslines來解決這個問題,然后映射求解器函數以獲得類似

[solver test1, solver test2, ...]

一個人應該使用一個帶有兩個參數的函數,它們是兩個列表元素,一個接着一個,並得到:

[solver test1 test1continued, solver test2 test2continued, ...]

所以我很高興找到一個類似的map函數,它一次應用一個函數2參數。我一直無法在Hoogle上找到任何東西,但是編寫這樣的函數很容易,我正在尋找一個問題的更一般方法。或者,如果我的方法(堅持map )肯定是錯誤的,那么我也可以指出正確的方向。

編輯:

我實際上發現實現一個函數map2非常有用,它將一個函數映射到一個列表,一次只能處理兩個參數:

map2 f [a,b,c,d] ==> [f a b, f c d]

使用chunksOf

> map (\[x, y] -> x + y) . chunksOf 2 $ [1..30]
[3,7,11,15,19,23,27,31,35,39,43,47,51,55,59]

map是一個很好的方法,如果你的數據是這樣的結構,你可能想稍微改變它以更好地適應語義。 要做到這一點的方法之一將是“對了”的結果lines ,讓你得到[(line1, line2),(line3, line4),...] map的第一個參數將是一個適用於這些元組的函數。

編輯:要進行擴展,通常的方法是讀取輸入,將其格式化為語義上有意義的格式,然后在結果上映射或折疊求解函數。 確切的解決方案取決於輸入數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM