Отобразите значение сигнала с другим текстом

Я только начинаю изучать Элм. В этой программе я хотел бы обновить экран с помощью координат мыши и состояния клавиши со стрелкой, отформатированных в некотором выводе.

Мой план состоял в том, чтобы создать запись под названием «Ввод» и установить ее с сигналами по входу функции. Затем showGameInputs будет использовать запись Input для получения значений и объединения их с некоторым текстом, чтобы вернуть элемент в main.

import Mouse
import Keyboard
-- Create a record named Input
type Input = { mouseX:Int, mouseY:Int, arrowUpdown:Int, arrowLeftRight:Int }

-- Combine Signals into Input type
input: Signal Input
input = Input <~ Mouse.x ~ Mouse.y ~ lift .y Keyboard.arrows ~ lift .x Keyboard.arrows

showGameInputs: Input -> Element
showGameInputs { mouseX, mouseY, arrowUpdown, arrowLeftRight } = plainText ("asdf" ++ show mouseX)


main: Signal Element
main = showGameInputs input

Вот ошибка:

[1 из 1] Компиляция Main ( Functions.elm ) Ошибка типа в строке 19, столбцы с 23 по 28: ввод

Ожидаемый тип: сигнальный вход Фактический тип: вход

Очень новичок в Elm и функциональном программировании, поэтому я подозреваю, что здесь мне не хватает чего-то фундаментального.

Спасибо за любую помощь.


elm
person Yadrif    schedule 17.12.2014    source источник


Ответы (1)


Ты почти там. Сообщение об ошибке немного запутанно отформатировано (известная проблема), но в нем говорится, что тип input на самом деле должен быть Input. Причина, по которой это сказано, в том, что вы подаете заявку showGameInputs: Input -> Element на input: Signal Input. Все, что вам нужно, это изменить main на:

main = showGameInputs <~ input
person Apanatshka    schedule 17.12.2014