我正在尝试编写一个函数,它将接受 aString和 aChar并输出字符串中出现字符的索引。
stringCount str ch =
Input : "haskell is hard" `h`
Output:[0,11]
Input : "haskell is hard" `a`
Output:[1,12]
Run Code Online (Sandbox Code Playgroud)
请帮助我,我正在努力理解哈斯克尔。
我正在尝试创建一个方法的功能实现,该方法使用嵌套循环迭代数组数组......非常不迅速。
新的实现用于compactMap展平嵌套数组并map创建对象。
这是我得到的代码。我快到了,但还没有:
if !activeDeals.isEmpty {
let carSelectionViewItems: [CarSelectionViewItem] = activeDeals
.compactMap { $0.bookings }
.map {
let make = $0.vehicle?.make ?? ""
let model = $0.vehicle?.model ?? ""
let title = "\(make) \(model)"
return CarSelectionViewItem(icon: $0.vehicle?.carImage ?? "",
title: title,
description: String(format: "car_pending_booked_description".locale,
getNewDateStringFormat(string: $0.startDate)),
bookingStatus: .active,
dealStatus: .won,
dealId: $0.id ?? "",
showMoreFunc: {})
}
viewItems.append(contentsOf: carSelectionViewItems)
}
Run Code Online (Sandbox Code Playgroud)
我想完成每个预订并创建一个CarSelectionViewItem对象,然后将append其发送到viewItems.
模型的一些细节:
public struct Deal: Decodable {
public let id: …Run Code Online (Sandbox Code Playgroud) filter :: (a -> Bool) -> [a] -> [a]
filter = (\x -> x % 2 == 0) [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
运行时在 Haskell 中使用下面的代码我得到一个错误:'变量不在范围内:(%) :: [Integer] -> Bool -> (a -> Bool) -> [a] -> [a]'
这是什么意思 ?
我试图创建一个接受列表并返回偶数的函数。对 haskell 如此陌生,这就是我所管理的,但我仍然遇到错误。我用谷歌搜索但我找不到解决方案
这是我的ADT:
data Tree a = Val Integer
|Tree a
|Variable a
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
问题1:使用Tree String类型来表示一些树?
问题2:定义一个函数,用于将树,数据类型Tree String的元素转换为字符串:showTree :: Tree String - > String
给定一个结构:
type foo struct {
bar func(int) int
}
Run Code Online (Sandbox Code Playgroud)
当我 var x foo
什么是初始值x.bar?
我有以下 Haskell 方法
unfold :: (a -> Bool) -> (a -> b) -> (a -> a) -> a -> [b]
unfold p h t x
| p x = []
| otherwise = (h x):(unfold p h t (t x))
Run Code Online (Sandbox Code Playgroud)
我如何使用这个给定的展开方法定义常规的前奏图 fx 方法。
好的,所以我有一些看起来像这样的东西:
[Just [["Value1"],["","",""]],Just [["Value2"],["","","","","","","","","","","","","","","","","","","","","","","","","","","Value3",""]],Just [["Value4","",""]],Just [["Value5"],["","",""]],Just [["Value6"],["","",""]],Just []]
Run Code Online (Sandbox Code Playgroud)
我需要将所有这些值写入LaTeX文件,忽略空字符串(可能成对,每对一行).
我该怎么做呢?
谢谢
编辑:我的文件应如下所示:
Value1 Value2
Value3 Value4
Value5 Value6
Run Code Online (Sandbox Code Playgroud) 每个人都说函数式编程可能比 OOP 更好,因为它具有不变性。好的,但是 FP 如何比 OOP 更好地隐藏或组织数据?如果我知道 OOP 被引入来解决这个问题,因为过程范式做得不够好。FP 有什么用?
如果您以良好的方式使用 OOP 并且不编写贫血风格的类和可变对象,那么 FP 是否仍然是比 OOP 更好的日常编程任务选择?
哈斯克尔
split:: [(a,b)] -> ([a],[b])
Run Code Online (Sandbox Code Playgroud)
功能应该返回
split [(1,’a’), (2,’b’), (3,’c’)] = ([1,2,3], "abc")
Run Code Online (Sandbox Code Playgroud)
请问如何使用列表理解来做到这一点?谢谢
相关的问题是
在第一个问题中:
Monads 有什么特别之处?
monad 是一种数学结构,在(纯)函数式编程中大量使用,基本上是 Haskell。但是,还有许多其他数学结构可用,例如应用函子、强单子或幺半群。有些更具体,有些更通用。然而,单子更受欢迎。这是为什么?
回答问题的评论:
在我的记忆中,monads 是由 Wadler 普及的,当时没有繁琐的 CPS 进行 IO 和没有显式状态传递的解析的想法是巨大的卖点;这是一个非常激动人心的时刻。AFAIR,Haskell 没有做构造函数类,但是 Gofer(Hugs 之父)做了。Wadler 建议为 monad 重载列表理解,所以后来出现了 do 符号。一旦 IO 成为 monadic,monads 就成为初学者的大事,将它们巩固为一个重要的东西。Applicative 在你可以的时候更好,Arrows 更通用,但它们来得较晚,而且 IO 很难卖 monad。– AndrewC 2013 年 5 月 9 日 1:34
@Conal 的回答是:
我怀疑对这一特定类型类 (
Monad) 的过多关注主要是历史上的侥幸。人们经常将 与 联系IO起来Monad,尽管这两个是独立有用的想法(列表反转和香蕉也是如此)。因为IO是神奇的(有实现但没有外延)并且Monad通常与 相关联IO,所以很容易陷入神奇的思考中Monad。
首先,我同意他们的观点,我认为Monads的用处主要来自Functors,我们可以在结构中嵌入许多函数,而Monads是通过join …
haskell ×7
monads ×2
arrays ×1
file-writing ×1
go ×1
ios ×1
javascript ×1
latex ×1
oop ×1
swift ×1