Thanks for your hint! The reason for the re-declaration is: Without that
line, the compiler yields the following error message. My re-declaration
line was not well-founded, I just try-n-error'ed it out. Is is a
record-thing, do I call the RuleTest constructor in a wrong way? Do you
have an explanation for that compiler error without the rule=rule line? Or
a pointer in a direction how I can figure it out?
Many thanks
Code chunk adapted to:
apply : String -> Rule -> RuleTest
apply input rule =
let
output = replace rule.regex rule.substitute input
matched = input /= output
in
RuleTest rule input output True
==== error in test.elm:55:5: ====
The 1st argument to function `RuleTest` is causing a mismatch.
Function `RuleTest` is expecting the 1st argument to be:
{ ..., substitution : ... }
But it is:
{ a | ..., substitute : ... }
----
[Finished in 0.1s with exit code 1]
[Elm says]: To highlight build errors: Install with Package Control:
Highlight Build Errors
Am Dienstag, 19. Juli 2016 09:07:11 UTC+2 schrieb Ian Mackenzie:
>
> The issue is likely with the rule = rule line, as Elm sees that as a
> recursive variable definition which has known bugs (
> https://github.com/elm-lang/elm-compiler/issues/873). You should just be
> able to take that line out, there's no need to re-declare a variable with
> the same name as an argument.
>
> On Tuesday, 19 July 2016 16:59:04 UTC+10, Andreas Kobler wrote:
>>
>> Hi all
>>
>> Just started to play around with elm and very eager to get more fluid. I
>> picked a silly POC scenario of a rule composer: basically you have regex
>> rules and want to edit/test them in a form. When applying a regex and
>> showing the replace output in an input field, I face an "undefined". Below
>> you see the isolated part forcing my observation while applying the rule
>> directly in init.
>>
>> Unfortunately I could really not trace down to the root of this
>> happening. Is somebody able to tell me:
>> - What I am doing wrong? Why does there an "undefined" appear? (wenn
>> executing my own "replace" function in the REPL it works fine as expected)
>> - How do you guys debug such behaviour?
>>
>> Here my silly example:
>>
>>
>> module RuleTest exposing (..)
>>
>>
>> import Html.App
>> import Html exposing (..)
>> import Html.Attributes exposing (..)
>> import Regex
>>
>>
>> main : Platform.Program Basics.Never
>> main =
>> Html.App.program
>> { init = init
>> , view = viewRuleTest
>> , update = update
>> , subscriptions = \_ -> Sub.none
>> }
>>
>>
>> type alias Rule =
>> { regex : String
>> , substitution : String
>> }
>>
>>
>> type alias RuleTest =
>> { rule : Rule
>> , input : String
>> , output : String
>> , matched : Bool
>> }
>>
>>
>> type Msg
>> = StartTest String
>>
>>
>>
>>
>> -- init
>> init : (RuleTest, Cmd Msg)
>> init =
>> ( apply "reg1" (Rule "reg1" "sub1")
>> , Cmd.none
>> )
>>
>>
>> -- update
>> update : Msg -> RuleTest -> (RuleTest, Cmd Msg)
>> update msg ruleTest =
>> case msg of
>>
>>
>> StartTest input ->
>> ( apply input ruleTest.rule, Cmd.none )
>>
>>
>>
>>
>> apply : String -> Rule -> RuleTest
>> apply input rule =
>> let
>> output = replace rule.regex rule.substitute input
>> matched = input /= output
>> rule = rule
>> in
>> RuleTest rule input output True
>>
>>
>> replace : String -> String -> String -> String
>> replace regex substitute input =
>> Regex.replace Regex.All (Regex.regex regex) (\_ -> substitute) input
>>
>>
>> viewRuleTest : RuleTest -> Html Msg
>> viewRuleTest ruleTest =
>> div []
>> [ label [] [ text "Pattern" ]
>> , input [ Html.Attributes.value ruleTest.rule.regex, disabled True ]
>> []
>> , label [] [ text "Substitution" ]
>> , input [ Html.Attributes.value ruleTest.rule.substitution, disabled
>> True ] []
>> , label [] [ text "Input" ]
>> , input [ Html.Attributes.value ruleTest.input, disabled True ] []
>> , label [] [ text "Output" ]
>> , input [ Html.Attributes.value ruleTest.output, disabled True ] []
>> , label [] [ text "matched" ]
>> , input [ type' "checkbox", checked ruleTest.matched ] []
>> ]
>>
>>
>> Environment:
>> elm repl --version
>> 0.17.1
>> OSX 10.11.3
>>
>> {
>> "version": "1.0.0",
>> "summary": "helpful summary of your project, less than 80 characters",
>> "repository": "https://github.com/user/project.git",
>> "license": "BSD3",
>> "source-directories": [
>> "."
>> ],
>> "exposed-modules": [],
>> "dependencies": {
>> "elm-lang/core": "4.0.1 <= v < 5.0.0",
>> "elm-lang/html": "1.1.0 <= v < 2.0.0"
>> },
>> "elm-version": "0.17.1 <= v < 0.18.0"
>> }
>>
>>
>> Thanks for any advice!
>>
>> Best, Andi
>>
>>
>>
--
You received this message because you are subscribed to the Google Groups "Elm
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.