Thanks a lot!
Bad typo... was not really awake this morning :-/ Now it works as expected!

2016-07-19 10:58 GMT+02:00 Ian Mackenzie <[email protected]>:

> Try 'rule.substitution' instead of 'rule.substitute'. It looks like the
> compiler sees the 'rule.substitute' line and assumes that the 'rule'
> variable is something that has a 'substitute' field (and then gets confused
> when you try to pass such an object to the RuleTest constructor), instead
> of checking it first against your 'apply' type annotation that says that
> the second argument is of type Rule.
>
> On Tuesday, 19 July 2016 18:15:16 UTC+10, Andreas Kobler wrote:
>>
>> 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 a topic in the
> Google Groups "Elm Discuss" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/elm-discuss/-zSBcLpbWo0/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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.

Reply via email to