标签: functional-programming

如何在 Haskell 中查找输入字符串中 char 的出现次数

我正在尝试编写一个函数,它将接受 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)

请帮助我,我正在努力理解哈斯克尔。

haskell functional-programming

-2
推荐指数
1
解决办法
5873
查看次数

数组中的 Swift 数组。使用compactMap/map代替嵌套循环

我正在尝试创建一个方法的功能实现,该方法使用嵌套循环迭代数组数组......非常不迅速。

新的实现用于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)

arrays functional-programming ios swift

-2
推荐指数
1
解决办法
6085
查看次数

变量不在 Haskell 的范围内。这是什么意思?

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 如此陌生,这就是我所管理的,但我仍然遇到错误。我用谷歌搜索但我找不到解决方案

haskell functional-programming higher-order-functions

-2
推荐指数
1
解决办法
82
查看次数

Haskell,如何将ADT转换为String?

这是我的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

haskell functional-programming

-3
推荐指数
1
解决办法
445
查看次数

func的零值

给定一个结构:

type foo struct {
  bar func(int) int
}
Run Code Online (Sandbox Code Playgroud)

当我 var x foo

什么是初始值x.bar

functional-programming go

-3
推荐指数
1
解决办法
68
查看次数

Haskell:使用展开定义地图功能

我有以下 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 方法。

haskell functional-programming haskell-platform

-3
推荐指数
1
解决办法
1015
查看次数

如何从Haskell中的列表中编写LaTeX文件?

好的,所以我有一些看起来像这样的东西:

[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)

monads latex haskell functional-programming file-writing

-3
推荐指数
1
解决办法
109
查看次数

函数式编程、OOP 和数据隐藏

每个人都说函数式编程可能比 OOP 更好,因为它具有不变性。好的,但是 FP 如何比 OOP 更好地隐藏或组织数据?如果我知道 OOP 被引入来解决这个问题,因为过程范式做得不够好。FP 有什么用?

如果您以良好的方式使用 OOP 并且不编写贫血风格的类和可变对象,那么 FP 是否仍然是比 OOP 更好的日常编程任务选择?

oop functional-programming

-3
推荐指数
1
解决办法
1002
查看次数

使用列表推导将对列表转换为列表对

哈斯克尔

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)

请问如何使用列表理解来做到这一点?谢谢

haskell functional-programming

-3
推荐指数
1
解决办法
95
查看次数

Kleisli 类别中的 Monads 有什么特别之处?

相关的问题是

  1. Monads 有什么特别之处?

  2. bind 可以由 fmap 和 join 组成,那么我们是否必须使用 monadic 函数 a -> mb?

在第一个问题中:

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 …

javascript monads haskell functional-programming

-3
推荐指数
1
解决办法
857
查看次数