我正在尝试定义一个匿名函数来做一个点积,我可以将它编码为私有函数而没有任何问题,但我正在努力使用匿名函数语法.我知道我可以以不同的方式实现它,但我试图了解如何使用模式匹配和递归来定义匿名函数.这是我目前的实施
dot = fn
[i|input],[w|weights], acc -> dot.(input,weights,i*w+acc)
[],[bias],acc -> acc + bias
end
Run Code Online (Sandbox Code Playgroud)
我在编译时遇到这个错误:
function dot/0 undefined
Run Code Online (Sandbox Code Playgroud)
任何提示?这不可能吗?
我想在榆树的记录中硬编码日期.记录签名是
type alias Record = { .., startDate : Date, .. }
Run Code Online (Sandbox Code Playgroud)
在我的代码我正在做
record = { .., startDate = Date.fromString "2011/1/1", .. }
Run Code Online (Sandbox Code Playgroud)
问题是Record类型需要Date类型但Date.fromString签名是
String -> Result.Result String Date.Date
Run Code Online (Sandbox Code Playgroud)
如何创建要在记录类型上使用的日期?
有没有更简洁的方法来转换true - > 1和false - > 0而不是求助于
if boolean_variable do
1
else
0
end
Run Code Online (Sandbox Code Playgroud) 我在Elixir中写了一个简单的例子,虽然它有效但我真的不明白怎么做.
defmodule MyList do
def sum([],acc \\ 0), do: acc
def sum([head | tail], acc), do: sum(tail,acc + head)
end
Run Code Online (Sandbox Code Playgroud)
当我调用MyList.sum时,我得到了预期的结果
sum([]) => 0
sum([1,2,3]) => 6
Run Code Online (Sandbox Code Playgroud)
我无法在第二个和中添加默认参数,因为编译器会抛出错误
def sum/2 has default values and multiple clauses, use a separate clause for declaring defaults
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,sum([1,2,3])如何运作?它与任何定义都不匹配.该函数仍然是尾递归的吗?
我正在创建一个elixir项目来搜索文件中的模式.我想将这些模式存储为配置文件,以便在应用程序中轻松更改.我的第一个想法是将这些文件作为exs文件存储在mix项目的config文件夹中.所以,问题是:
我看到有像File这样的模块来读取文件,但是没有标准方法来解析elixir中的关键字列表吗?我在想与Rails中的yml文件类似的东西.
我有一个像这样的aeson对象列表
[object ["key1" .= "value1"], object ["key2" .= "value2"]]
Run Code Online (Sandbox Code Playgroud)
我想将它们合并为像这样的单个aeson对象
object ["key1" .= "value1", "key2" .= "value2"]
Run Code Online (Sandbox Code Playgroud)
当使用其他语言的JSON数据(合并操作)时,这是非常标准的,但我在Aeson库中看不到任何类似的东西.
我只是遗漏了一些东西,可以用一些标准的haskell功能来完成吗?我试过使用,sequence但似乎JSON Value不是monad所以我不能这样做.
我不需要处理深度合并或重复键,我只想生成类似的东西
{
"key1": value1,
"key2": value2
}
Run Code Online (Sandbox Code Playgroud)
从
[{ "key1": value1 }, { "key2": value2 }]
Run Code Online (Sandbox Code Playgroud) 我正在尝试一个简单的操作
rem(-1, 25)
Run Code Online (Sandbox Code Playgroud)
我希望它能够提醒整数除法并返回24(与Ruby中相同),但它返回-1.难道我做错了什么?长生不老药的行为被打破了吗?
假设我有一个monoid定义为:
data TotalLine = TotalLine { totalQuantity :: Int, orderTotal :: Float }
instance Monoid TotalLine where
mempty = zero
mappend = add
Run Code Online (Sandbox Code Playgroud)
由于totalQuantity和orderTotal都是数字,它们也在(+)下形成一个monoid 有没有任何方法可以定义
add :: TotalLine -> TotalLine -> TotalLine
Run Code Online (Sandbox Code Playgroud)
所以,我可以只在每个字段上传播mappend调用,而不必手动定义类似的东西
add line1 line2 =
TotalLine {
totalQuantity = totalQuantity line1 + totalQuantity line2,
orderTotal = orderTotal line1 + orderTotal line2
}
Run Code Online (Sandbox Code Playgroud)