Как я могу преобразовать «Возможно» в значение?

#purescript

#purescript

Вопрос:

У меня проблема с моим кодом, я пытаюсь его скомпилировать, но он выдает, что не удалось сопоставить элемент Maybe с элементом

Почему? как работает Maybe?, как мне преобразовать его в значение? почему так сложно понять монады и функторы, и почему не существует простой библиотеки, позволяющей новичку начать работу с purescript? 😛

(для тех, кто не понял, я просто задал первые 3)

 module Main where

import Prelude --(Unit, bind, pure,  ($), (<$>))
import Effect (Effect)
import Data.Maybe --(Just,Maybe,fromJust, fromMaybe)
import Data.Foldable (traverse_)
import Effect.Console (log)

import Web.HTML (window)
import Web.HTML.Window (document)
import Web.HTML.HTMLDocument (toNonElementParentNode)
import Web.Event.Event (Event, target)
import Web.HTML.HTMLInputElement (value, fromEventTarget)

import Web.DOM.NonElementParentNode (NonElementParentNode,getElementById)
import Web.DOM.Node (setTextContent)
import Web.DOM.Element (Element,toNode)
import Web.Event.EventTarget (addEventListener)

pname = "#inputName" :: String
bname = "#badgeName" :: String

main :: Effect Unit
main = do
  nod1 <- returnNonElementParentNode
--querySelector :: QuerySelector -> ParentNode -> Effect (Maybe Element)
  elementTarget <- getElementById pname nod1
--addEventListener :: EventType -> EventListener -> Boolean -> EventTarget
  addEventListener "input" updateBadge false elementTarget

updateBadge :: Event -> Unit
updateBadge event = do
  nod2 <- returnNonElementParentNode
  elementTarget <- getElementById bname nod2

  tget <- target event
  inml <- fromEventTarget tget
  input <- value inml

  badge <- toNode (pure elementTarget)

  if not(badge == Nothing) 
    then setTextContent input (toNode badge) 
    else Nothing

returnNonElementParentNode :: Effect NonElementParentNode
returnNonElementParentNode = do 
  win <- window
  doc <- document win
  --let nd  = toNonElementParentNode doc
  let 
      nod = toNonElementParentNode doc
  pure nod
  

Я просто хочу понять, как получить входное значение из HTMLInputElement и передать его в textContent другого HTMLElement

в значительной степени, как преобразовать возможно в значение для передачи функции toNode

Комментарии:

1. Разве в purescript нет соответствия шаблону? Если он имеет то же значение, что и Haskell, вы могли бы просто заменить это if на case , и тогда внутри Just стороны у вас было бы чистое значение.

Ответ №1: