小编zer*_*ing的帖子

财产没有显示价值

我在类中定义了一个属性,如:

type Customer() =
    let mutable _lastName = String.Empty
    member val LastName = _lastName with get
Run Code Online (Sandbox Code Playgroud)

在方法QueryData中,我为_lastName赋值:

member self.QueryData () =

            // CODE
            let addressData = bp.GetStructure("PE_PERSONALDATA")
            _lastName <- addressData.GetString("LASTNAME")
            null
        | RfcCommunication ex ->
            let basedComm = ex :> Exception
            basedComm
        | RfcLogon ex ->
            let basedLogon = ex :> Exception
            basedLogon
        | RfcAbapRuntime ex ->
            let basedAbap = ex :> Exception
            basedAbap
Run Code Online (Sandbox Code Playgroud)

在main函数中,我创建了一个Customer()实例并读取LastName属性:

[<EntryPoint>]
let main argv = 

    let customer = CustomerBapi.Customer()
    let ex = customer.QueryData()

    if ex …
Run Code Online (Sandbox Code Playgroud)

f#

1
推荐指数
1
解决办法
74
查看次数

Char列出了代码点原子

当我在iex中写这个

iex> 'he??o'  
Run Code Online (Sandbox Code Playgroud)

它向我展示了代码点

[104, 101, 322, 322, 111]  
Run Code Online (Sandbox Code Playgroud)

我知道因为单引号字符串代表char列表.但是当我在iex中输入带有上述数字的列表时,它会显示一个带有数字的列表,而不是hełło

iex(13)> [104, 101, 322, 322, 111] 
[104, 101, 322, 322, 111]
Run Code Online (Sandbox Code Playgroud)

为什么它没有给我看人物?
当我输入

iex(3)> a = [67,55,44]
Run Code Online (Sandbox Code Playgroud)

进入iex,我有以下角色

'C7,'
Run Code Online (Sandbox Code Playgroud)

什么,当我想要iex显示数字而不是字符?
为什么我可以在这里传递一个原子作为arity?

iex> to_string :hello
"hello"
Run Code Online (Sandbox Code Playgroud)

elixir

1
推荐指数
1
解决办法
1173
查看次数

溶解lambda演算

我有以下lambda演算:

(?x. + (- x 1)) 9 3
Run Code Online (Sandbox Code Playgroud)

正确的beta减少是:

+ (- 9 1) 3
Run Code Online (Sandbox Code Playgroud)

我犯了一个错误,取而代之的是9号码:

+ (- 3 1) 9
Run Code Online (Sandbox Code Playgroud)

而且我得到了相同的结果.

在与解决方案进行比较之前,我没有意识到这是错误的.

我是否必须采取最接近的替代,在这种情况下是9?

haskell lambda-calculus

1
推荐指数
1
解决办法
157
查看次数

怎么mod计算

我有以下操作:

Prelude> mod (3 - 12) 7
Run Code Online (Sandbox Code Playgroud)

结果我有5个.

为什么结果是5?

当我尝试这样的事情时:

Prelude> mod -9 7
Run Code Online (Sandbox Code Playgroud)

然后我有错误:

<interactive>:6:1: error:
    • Non type-variable argument
        in the constraint: Num (t -> a -> a -> a)
      (Use FlexibleContexts to permit this)
    • When checking the inferred type
        it :: forall a t.
              (Num (t -> a -> a -> a), Num (a -> a -> a), Num t, Integral a) =>
              a -> a -> a
Run Code Online (Sandbox Code Playgroud)

为什么?

我忘了提,我刚开始学习哈斯克尔.

haskell

1
推荐指数
1
解决办法
116
查看次数

为什么我会得到一个异常循环

我在前奏中尝试了以下表达式:

let x = x in x
Run Code Online (Sandbox Code Playgroud)

我有以下例外

Exception: <<loop>>
Run Code Online (Sandbox Code Playgroud)

为什么表达式是递归的?

haskell

1
推荐指数
1
解决办法
106
查看次数

构造一个类型

我有很多类型声明:

module SumProduct where


  data GuessWhat = Chickenbutt deriving (Eq, Show)

  data Id a = MkId a deriving (Eq, Show)

  data Product a b = Product a b deriving (Eq, Show)

  data Sum a b = First a
                | Second b
                deriving (Eq, Show)

  data RecordProduct a b = RecordProduct { pfirst :: a , psecond :: b }
                          deriving (Eq, Show)


  newtype NumCow = NumCow Int deriving (Eq, Show)

  newtype NumPig = NumPig Int deriving (Eq, Show)

  data Farmhouse …
Run Code Online (Sandbox Code Playgroud)

haskell

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

无法将预期类型`a`与实际类型`Integer`匹配

我有一个treeBuild函数没有得到编译,因为where子句中的签名:

unfold :: (a -> Maybe (a,b,a)) -> a -> BinaryTree b
unfold f x = case f x of Nothing -> Leaf
                         Just (s,t,u) -> Node (unfold f s) t (unfold f u)

treeBuild :: Integer -> BinaryTree Integer
treeBuild n = unfold f 0
    where f :: a -> Maybe (a,b,a)
          f x
              | x == n = Nothing
              | otherwise = Just (x+1, x, x+1)        
Run Code Online (Sandbox Code Playgroud)

我有以下编译器错误:

* Couldn't match expected type `a' with actual type …
Run Code Online (Sandbox Code Playgroud)

haskell types

1
推荐指数
1
解决办法
1626
查看次数

大型幺半群

我正在努力学习haskell并阅读haskellbook.

在书中,作者提到了更大的类型如下:

instance Monoid b => Monoid (a -> b)
instance (Monoid a, Monoid b) => Monoid (a, b)
instance (Monoid a, Monoid b, Monoid c) => Monoid (a, b, c)
Run Code Online (Sandbox Code Playgroud)

这些Monoids的共同之处在于它们通过重用代表较大类型组件的类型的Monoid实例,为更大的类型提供了一个新的Monoid.

对于更大的数据类型,他的意思是什么?

haskell

1
推荐指数
1
解决办法
74
查看次数

具有错误类型参数的Functor

我有以下数据类型并已应用于Functor实例:

data Company a b c = 
    DeepBlue a c
  | Something b

instance Functor (Company a b) where 
  fmap f (Something b) = Something b
  fmap f (DeepBlue a c) = DeepBlue a (f c)
Run Code Online (Sandbox Code Playgroud)

它编译没有任何抱怨.

然后我玩了一下(我知道它不起作用),因为初学者的好奇心:

data Company a b c = 
    DeepBlue a c
  | Something b

instance Functor (Company a b) where 
  fmap f (Something b) = Something (f b)
  fmap f (DeepBlue a c) = DeepBlue a (f c) 
Run Code Online (Sandbox Code Playgroud)

然后编译器抱怨:

D:\haskell\chapter16\src\ChapterExercises.hs:18:26: error:
    * …
Run Code Online (Sandbox Code Playgroud)

haskell

1
推荐指数
1
解决办法
99
查看次数

为什么它适用第二个参数?

我试图理解应用仿函数的交换法则:

u <*> pure y = pure ($ y) <*> u
Run Code Online (Sandbox Code Playgroud)

让我困惑的是,函数应用程序$ y,请考虑以下示例:

($ 2) :: (a -> b) -> b 
Run Code Online (Sandbox Code Playgroud)

为什么第二个参数不应用于第一个?

haskell

1
推荐指数
1
解决办法
125
查看次数

标签 统计

haskell ×8

elixir ×1

f# ×1

lambda-calculus ×1

types ×1