let在某些浏览器中不起作用.也不在他们的互操作/网络控制台中.为什么?
(最初我认为浏览器插件和jsFiddle存在不一致,但事实证明并非如此,只是我的测试结果不好.)
我正在尝试编写一个计划程序,这是Dijkstra的最短算法.在我放松边缘的过程中,我得到了错误
形成不良的特殊形式:(让(...)())
我的程序代码是,
(define relax-over-edge
(lambda (distlist edge min-pair)
( if (null? distlist)
()
(if (equal? (cadr edge) (caar distlist))
(if (> (cdar distlist) (+(cdr min-pair) (cddr edge)))
(let (((cdar distlist) (+ (cdr min-pair) (cddr edge)) )) ())
()
)
(relax-over-edge (cdr distlist) edge min-pair)
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
非常感谢你.
我有以下程序:
mnr = [0,1,2,3,4,5,6] :: [Int]
name = "Max Mustermann" :: String
kzn = "e53X" :: String
t1 = ("p1",(take 2.tail)mnr, (take 3.words.(let no n= name;in no))"No");
{-result: t1 == ("p1",[1,2],["Max","Mustermann"]) -}
Run Code Online (Sandbox Code Playgroud)
为什么忽略"否",做let no n= name;in no什么?
在本声明的最后:
let (a,b,c) = (1,2,3) in printfn "%i,%i" a b;;
Run Code Online (Sandbox Code Playgroud)
, 有
a b;;
Run Code Online (Sandbox Code Playgroud)
结尾"a"和"b"的用法是什么,它们是某些函数调用的参数,还是它们是前一个函数的返回值(元组)?如果是这样,let(a,b,c)的用法是什么,我想它应该定义一个由3个元素组成的元组,但是printfn在语句中做了什么?
换句话说,我如何将这个复杂的语句拆分成几个更容易理解的简短语句?我不退出得到"让......进入"语义.有什么解释吗?
谢谢.
我试图定义一个特定类型的值,如"Int",但似乎Prelude不支持它?
Prelude> let c::Int = 4
Prelude|
<interactive>:49:8:
Illegal type signature: ‘Int’
Perhaps you intended to use ScopedTypeVariables
In a pattern type-signature
Prelude> let [Int]c=4
Prelude|
<interactive>:51:5: Parse error in pattern: [Int]
Run Code Online (Sandbox Code Playgroud)
怎么纠正呢?
我正在阅读这篇关于用Scotty在Haskell中编写API的博客文章,我看到了关于monad变换器的部分.我理解monad变换器的概念,但我无法理解这里发生的事情:
let r m = runReaderT (runConfigM m) c
Run Code Online (Sandbox Code Playgroud)
如何表达的参考m,当m在同一声明let使用它体现在哪里?这里发生了什么?什么是m?
有没有一种方法可以通过let绑定方式在SML中定义常量。因此,基本上,我要问的是例如如何通过以下方式执行constant x = 5:
let
....
in
...
end
Run Code Online (Sandbox Code Playgroud) 我想将用C编写的一些代码更改为Ocaml
这是一个C代码
int a, b;
if(m > n)
{
a = n;
b = m;
}
else
{
a = m;
b = n;
}
Run Code Online (Sandbox Code Playgroud)
我试图将其更改为Ocaml,但不知怎的,我在第二行遇到语法错误.
let rec gcd m n =
if m > n then begin let a = n in; let b = m in end
else begin let a = m in; let b = n in end
Run Code Online (Sandbox Code Playgroud)
有什么问题,我该如何解决?
得到一些代码来完成.但我不知道如何处理这个禁止的表达.这是代码:
data Zutat = Tomate | Fleisch | Salat
data Bun = Weizen | Roggen
data Sosse = Ketchup Sosse | Mayo Sosse | Keine
data Burger = Burger Bun [Zutat] Sosse
Run Code Online (Sandbox Code Playgroud)
我需要完成代码:
let zt = in -- Zutat
let so = in -- Sosse
let dw =
Run Code Online (Sandbox Code Playgroud)
dw 必须像 dw = Weizen [Tomate,Fleisch,Fleisch] (Mayo (Ketchup Keine))
明白啦:
zt = [Tomate,Fleisch,Fleisch]
so = Mayo (Ketchup Keine)
dw = Burger Weizen zt so
Run Code Online (Sandbox Code Playgroud)
但是我如何将它构建到let in表达式中呢?
在阅读了Swift的懒惰变量之后,我有以下问题:
class MainViewController: UIViewController {
lazy var heavyClass = HeavyClass()
func buttonPressed () {
//Use heavyClass here
self.heavyClass.doStuff()
}
}
Run Code Online (Sandbox Code Playgroud)
因此,您使用上面的lazy var来优化代码,以便不会立即分配heavyClass.因此,在启动时,这将是最佳的,因为在启动时不会分配heavyClass.
但是,这不会与上面相同吗?
class MainViewController: UIViewController {
var heavyClass : HeavyClass?
func buttonPressed () {
//Use heavyClass here
self.heavyClass = HeavyClass()
self.heavyClass!.doStuff()
}
}
Run Code Online (Sandbox Code Playgroud) let ×10
haskell ×4
arguments ×1
dijkstra ×1
f# ×1
if-statement ×1
ios ×1
javascript ×1
lazy-loading ×1
ml ×1
ocaml ×1
parsing ×1
scheme ×1
sml ×1
swift ×1
syntax ×1
syntax-error ×1
var ×1