我想使用Threepenny-gui开发一个新的 Haskell 项目。
\n我做的第一件事是通过创建一个堆栈项目$ stack new threepennydemo。从这里,这里,我做了以下事情:
#\xc2\xa0extra-deps: []\nRun Code Online (Sandbox Code Playgroud)\n到
\nextra-deps:\n - threepenny-gui-0.9.0.0\nRun Code Online (Sandbox Code Playgroud)\nlibrary\n exposed-modules:\n Lib\n other-modules:\n Paths_threepennydemo\n hs-source-dirs:\n src\n build-depends:\n base >=4.7 && <5\n default-language: Haskell2010\n\nexecutable threepennydemo-exe\n main-is: Main.hs\n other-modules:\n Paths_threepennydemo\n hs-source-dirs:\n app\n ghc-options: -threaded -rtsopts -with-rtsopts=-N\n build-depends:\n base >=4.7 && <5\n , threepennydemo\n default-language: Haskell2010\n\ntest-suite threepennydemo-test\n type: exitcode-stdio-1.0\n main-is: Spec.hs\n other-modules:\n Paths_threepennydemo\n hs-source-dirs:\n test\n ghc-options: …Run Code Online (Sandbox Code Playgroud) 我写了一个 Haskell 函数来生成一个元组列表。
defineIndices :: Int -> Int -> [(Int,Int)]
defineIndices n m = [(i,j) | i <- [1..n], j <- [1..m]]
Run Code Online (Sandbox Code Playgroud)
该函数具有以下行为。
?> defineIndices 2 3
[(1,1),(1,2),(1,3),(2,1),(2,2),(2,3)]
Run Code Online (Sandbox Code Playgroud)
事实证明,我需要的功能如下:
?> defineIndices2D 2 3
[[(1,1),(1,2),(1,3)],[(2,1),(2,2),(2,3)]]
Run Code Online (Sandbox Code Playgroud)
其中,defineIndices2D 返回维度为 n*m 的 (Int,Int) 列表。我有点卡在这里,我想知道如何更改我现有的解决方案以生成更高阶的列表。
我的最终目标是生成一个 x,y 索引列表,用作 Data.Map Map 中值的键。
比较以下内容。
示例 1:装饰器之前的文档字符串。
@app.route("/")
"""
summary
"""
def hello() -> str:
return "Hello World"
Run Code Online (Sandbox Code Playgroud)
对比示例 2:装饰器后的文档字符串:
"""
summary
"""
@app.route("/")
def hello() -> str:
return "Hello World"
Run Code Online (Sandbox Code Playgroud) 两者似乎都表示私有函数,类似于大多数 OOP 语言中的私有函数。是否存在功能差异或者只是语法糖?
我见过 defn ^:private 在环应用程序的处理程序上下文中使用。
鉴于我的类型定义:
data Tile = Revealed | Covered deriving (Eq, Show)
data MinePit = Clean | Unsafe deriving (Eq, Show)
data Flag = Flagged | Unflagged deriving (Eq, Show)
type Square = (Tile, MinePit, Flag)
type Board = [[Square]]
Run Code Online (Sandbox Code Playgroud)
我创建了两个函数:
createBoard :: Int -> Int -> Board
createBoard 0 _ = [[]]
createBoard _ 0 = [[]]
createBoard 1 1 = [[(Covered, Clean, Unflagged)]]
createBoard n m = take n (repeat (take m …Run Code Online (Sandbox Code Playgroud)