我不确定是什么导致了这个问题,但在一个项目中,我正在构建,编译器花费数小时来编译模块.我的代码库总大小为352KB,但没有一个模块超过10KB.我使用的是Native端口,但它非常简单; 我只是Date.now()拿着它.
是否有任何众所周知的会导致elm编译器永远编译?我没有很多依赖项,但我经常使用Html.我真的很感激任何会导致这种情况的提示.
因此事实证明,大型案例表达式将导致优化器花费很长时间,从0.16开始.以下是关于提出问题的Elm-Discuss的讨论,以及讨厌的案例匹配的要点.
我想要冗长并且保留胡萝卜,为什么elm的编译器会采用这种方式进行大小写匹配?这里的底层机器是什么?为什么编译器需要花费超过一个小时来优化案例陈述中的60多个模式匹配?
在榆树,当我想不通type的是适当的关键字对type alias.文档似乎没有对此进行解释,也无法在发行说明中找到.这是在某处记录的吗?
在下面的代码取自Elm Form Example,第122行,<<运算符是什么意思?
Field.field Field.defaultStyle (Signal.send updateChan << toUpdate) "" content
Run Code Online (Sandbox Code Playgroud)
在Elm语法参考中找不到它.
这是否意味着,当磁场变化,而不是发送其content至updateChan,发送toUpdate到updateChan?
来自反应,我正在学习理解榆树.
在Todomvc示例代码中,有以下代码段:
-- How we update our Model on a given Msg?
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
NoOp ->
model ! [] <-- What is this?
Run Code Online (Sandbox Code Playgroud)
我(我想)理解的是,该update函数接受一个msg类型Msg和一个model类型Model,并返回一个包含a Model和a 的元组Cmd Msg.
但是我应该如何阅读return语句?
model ! []
Run Code Online (Sandbox Code Playgroud)
这句话是什么意思?返回"模型[某事]空列表"?
我在文档中遗漏了哪些内容?(谷歌搜索"榆树!"没有让我走得远:)
我期待到在浏览器中做一些反应式编程和比较angular.js(http://angularjs.org/与榆树()http://elm-lang.org/).
每个相对的好处/问题是什么?
在过去的几天里,我学习了榆树,这是一次令人耳目一新的体验.这么多,我不想回到JS土地,:-(.
我的问题是我仍然没有看到用榆树制作网络应用程序的方法,我希望得到一些指导和建议:
evancz/start-app非常适合组织应用程序的结构.与elmfire一起使用
evancz/effects可以处理与Firebase的对话.
但是我如何构建和设计UI?
让我们举一个具体的例子:来自Semantic-UI的样式化选择小部件.
它被实现为div的列表,以及一些JS来处理下拉列表和多选.
到目前为止我找到的替代方案是:
是否还有其他替代方案,或者可以重复使用的小工具,我错过了?
该TheSeamau5/TabbedPages容器肯定是恐吓.其他小部件需要这么多工作吗?
再一次,我喜欢将Elm用于我的项目,但我自己也没有知识也没有时间自己编写所有小部件.
对于上下文,我使用Semantic的小部件是:
再次感谢您为榆树所做的工作,以及您可以给我的任何建议.
PS:我也在elm的邮件列表中发布了这个问题.
我已经到了使用Backbone.js面向对象的MVC模式的GUI编码变得非常复杂并且环顾其他范例的程度.MDV,FRP,ECS,哦,我的.
榆树与ClojureScript相比如何?它们在哪里重叠?
两者都是与编译为JS的JS非常不同的语言.我知道Elm是一种功能性反应式编程(FRP)语言.ClojureScript不一定是FRP,但你可以用它来做FRP.Elm使用JVM编译Haskell和ClojureScript,因此这些都是Node商店的额外要求.
也许它只是归结为Clojure vs Haskell.
如何将焦点设置在Elm中的Html元素上?我试图在元素上设置autofocus属性,它只将焦点设置在页面加载上.
我需要使用自定义"data-*"属性标记我的Elm.Http元素,例如:
<tr data-row="1">...</tr>
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方法:
import Html exposing (..)
import Html.Attributes exposing (..)
import Json.Encode as JsEncode
view ... =
tr [ property "data-row" (JsEncode.string (toString 1)) ]
Run Code Online (Sandbox Code Playgroud)
但这没有任何作用.有人知道吗?
我认为问题是Elm实际上是在设置JavaScript DOM属性,所以我真的想以某种方式调用element.dataset.row ="1".
背景是我需要为我的事件处理程序向jQuery公开一些数据,因为Elm事件库缺少一些我需要的功能,例如条件化的preventDefault和表单序列化.还有其他方法可以通过DOM提供数据,但data-*属性是迄今为止最简单的.
我最近一直在研究Elm中的一个API,其中一个主要类型是逆变.所以,我已经用Google搜索了解逆变类型可以做什么,并发现Haskell中的Contravariant包定义了Divisible类类.
它的定义如下:
class Contravariant f => Divisible f where
divide :: (a -> (b, c)) -> f b -> f c -> f a
conquer :: f a
Run Code Online (Sandbox Code Playgroud)
事实证明,我的特定类型适合Divisible类型的定义.虽然Elm不支持类型类,但我会不时地查看Haskell以获得一些灵感.
我的问题:这种类型有任何实际用途吗?Haskell(或其他语言)中是否存在受益于这种分治模式的已知API?我应该注意哪些问题?
非常感谢您的帮助.