2015-03-31 1 views
-1

Je suis tenu de faire un mouvement wireworld et je veux mettre une fonction dans une autre fonction ("help1") mais je ne peux pas le faire fonctionner, il y a plusieurs fichiers voici ce que j'aiwireworld haskell aide nécessaire

module Transitions.For_List_2D (
    transition_world -- :: List_2D Cell -> List_2D Cell 
) where 

import Data.Cell (Cell) 
import Data.Cell (Cell (Head, Tail, Conductor, Empty)) 
import Data.Coordinates 
import Data.Coordinates (Distance,X_Coord,Y_Coord,Coord,Element_w_Coord,) 
import Data.List_2D 
-- Replace this function with something more meaningful: 

transition_world :: List_2D Cell -> List_2D Cell 
transition_world w = case w of 
         [] -> [] 
         x:xs -> transition_cell x : transition_world xs 


transition_cell :: Element_w_Coord Cell -> Element_w_Coord Cell 
transition_cell a = case a of 
         (Head,(x_coord,y_coord)) -> (Tail, (x_coord,y_coord)) 
         (Tail,(x_coord,y_coord)) -> (Conductor, (x_coord,y_coord)) 
         (Empty,(x_coord,y_coord))-> (Empty, (x_coord, y_coord)) 
         (Conductor,(x_coord,y_coord)) -> (i want to put working function here) 


help1 :: Coord -> List_2D Cell -> List_2D Cell 
help1 a = case a of 
     x:xs 
     (Conductor, (x_e, y_e))-> List_2D.local_elements(element, (x_e, y_e)): help1 xs 

la local_element est une fonction sur un autre fichier que je veux utiliser aussi si vous avez besoin pour voir les tous d'il d'autres fichiers, il suffit de demander grâce toute aide est grandement appréciée

+0

Je pense que vous avez probablement juste la syntaxe 'case ... of' et la fonction foiré, et nous ne voyons pas toutes vos définitions (par exemple je pense que' Conductor, ..' sera une cellule 'Element_w_Coord' mais vous essayez de l'utiliser (?) à la place d'un 'List_2D Cell' qui échouera) - de toute façon essayez' help (x: xs) (Conductor ...) = ... 'au lieu de' help1 a = case a de x: xs ... 'pour commencer – Carsten

+0

Dans tous les cas s'il vous plaît nous donner les erreurs qui vous sont signalés et pointez sur la ligne où il montre l'erreur (s) – Carsten

Répondre

0

Votre help1 fonction attend deux arguments, mais vous ne lui en donnez qu'un.

essayer quelque chose comme

help1 coord world = case world of 

Essayez de faire votre laboratoire sur récursion sur les listes, et cesser de poster des questions d'affectation débordement de la pile, en particulier avec votre vrai nom.

+0

s'il vous plaît rester amical et peut-être vous devriez développer votre répondez un peu - maintenant ce n'est pas vraiment plus qu'un commentaire – Carsten

+0

Ma réponse n'était peut-être pas la plus civile, mais pour être honnête, je veux juste que cela s'arrête avant que l'étudiant ne risque d'échouer (ou pire) pour le plagiat. Ce n'est pas une question qui peut raisonnablement être répondu avec ce qui est donné, et soit l'étudiant demande pourquoi leur fonction "help1" ne fonctionne pas (auquel cas j'ai répondu à leur question) ou ils demandent une solution à leur affectation, ce qui est problématique. – Probie

+0

Je comprends et mon commentaire n'a pas été conçu comme une infraction - et oui, le PO a probablement perdu tout intérêt parce qu'il ne pouvait pas résoudre son problème en quelques secondes. Mais les problèmes de "devoirs" se présentent très souvent (voir http://meta.stackoverflow.com/questions/253792/stack-overflow-and-homework-questions) et ce que je comprends c'est que les devoirs-questions sont ok, nous seulement devrait prendre soin et donner plus de conseils que de réponses complètes (d'abord) - nous ne sommes pas des enseignants ou des parents ici, ce n'est pas notre responsabilité s'ils vont tricher - nous sommes là pour aider – Carsten