首先,我是在 Haskell 中使用 cabal 和外部包的新手。
我正在尝试使用 MyLib 中的 Graphics.Gloss 包。如果我gloss同时包含build-dependsoflibrary和executable.
这是 cabal 文件的相关部分:
library
exposed-modules: MyLib
build-depends: base ^>=4.13.0.0,
gloss ^>=1.13.1.1
default-language: Haskell2010
executable ray-tracer
main-is: Main.hs
other-modules: MyLib
build-depends: base ^>=4.13.0.0, ray-tracer,
haskell-say ^>=1.0.0.0,
gloss ^>=1.13.1.1
Run Code Online (Sandbox Code Playgroud)
MyLib.hs
module MyLib (someFunc) where
import Graphics.Gloss
someFunc :: IO ()
someFunc = display (InWindow "My Window" (200,200) (10,10)) white (Circle 80)
Run Code Online (Sandbox Code Playgroud)
主文件
module Main where
import qualified MyLib (someFunc)
import HaskellSay (haskellSay)
main :: …Run Code Online (Sandbox Code Playgroud) 在编写一个小型日期程序作为练习在 Haskell 中处理 monad 的练习时,我想出了localDate下面的辅助函数。我更喜欢绑定链接语法而不是 do 块 - 请提供有关一种语法是否更符合 Haskell 标准的任何输入。
我的主要问题与简化localDate. 是否可以在没有两个绑定操作的情况下将 getCurrentTimeZone 和 getCurrentTime 都传递给 utcToLocalTime?
localDate :: IO(Day)
localDate = localDay <$> zoneNow where
zoneNow = getCurrentTimeZone >>= \z -> getCurrentTime >>= \t -> return $ utcToLocalTime z t
localDate' :: IO(Day)
localDate' = do
z <- getCurrentTimeZone
t <- getCurrentTime
let zoneNow = utcToLocalTime z t
return $ localDay zoneNow
Run Code Online (Sandbox Code Playgroud) 我目前正在从一个useEffect挂钩中的 CSV 文件加载 2000 多个对象。每次searchTerm更改时,CSV 文件中的所有数据都会重新加载和过滤。详情请参考以下代码:
useEffect( () => {
const asyncLoadWords = async () => {
const dnd_words = await d3.csv(data_csv);
const results = dnd_words.filter(wordObject => {
return wordObject.??.toLowerCase().includes(searchTerm);
});
setSearchResults(results);
}
asyncLoadWords();
},[searchTerm]);
Run Code Online (Sandbox Code Playgroud)
有没有办法在渲染之间保留 CSV 数据?我一直在考虑的一种可能的解决方案是创建一个子组件,它将 CSV 数据作为道具并通过useEffect.
任何投入将不胜感激。