我只想在通过的第一项上映射条件函数。
map (>5) [1,2,3,4,5,6,7,8,9]
Run Code Online (Sandbox Code Playgroud)
会导致
[False,False,False,False,False,True,True,True,True]
Run Code Online (Sandbox Code Playgroud)
我正在寻找会导致
[False,False,False,False,False,True,False,False,False]
Run Code Online (Sandbox Code Playgroud)
所以只有第一次出现大于 5 的结果为 True。我尝试了扫描,各种折叠,并尝试滚动我自己的 mapUntil 之类的东西。似乎是一个简单的问题,但我正在画一个空白。
我在 Raspberry Pi 上用 Haskell 编写了一个测试程序,该程序在连接到 GPIO 引脚的蜂鸣器上播放令人愉悦的曲调。
这是我使用的进口:
import qualified Control.Concurrent as C
import qualified Control.Monad as M
import System.IO
import qualified System.Posix.Unistd as P
Run Code Online (Sandbox Code Playgroud)
以下是通过写入 /sys/class/gpio/gpio16/value 文件来切换引脚的函数:
changePin2 :: Handle -> String -> Int -> IO ()
changePin2 handle onOff delay = do
pos <- hGetPosn handle
hPutStr handle (onOff ++ "\n")
hFlush handle
hSetPosn pos
P.usleep delay
--C.threadDelay delay
blinkOn2 :: Handle -> Int -> IO ()
blinkOn2 handle delay = do
changePin2 handle "1" delay
changePin2 …Run Code Online (Sandbox Code Playgroud)