Created
May 14, 2017 17:25
-
-
Save psmolak/4e2c5b7e33f35a61bdc11ab8c38ecfed to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- Wymagamy, by moduł zawierał tylko bezpieczne funkcje | |
{-# LANGUAGE Safe #-} | |
-- Definiujemy moduł zawierający rozwiązanie. | |
-- Należy zmienić nazwę modułu na {Imie}{Nazwisko} gdzie za {Imie} | |
-- i {Nazwisko} należy podstawić odpowiednio swoje imię i nazwisko | |
-- zaczynające się wielką literą oraz bez znaków diakrytycznych. | |
module ImieNazwisko (typecheck, eval) where | |
-- Importujemy moduły z definicją języka oraz typami potrzebnymi w zadaniu | |
import AST | |
import DataTypes | |
-- Funkcja sprawdzająca typy | |
-- Dla wywołania typecheck vars e zakładamy, że zmienne występujące | |
-- w vars są już zdefiniowane i mają typ int, i oczekujemy by wyrażenia e | |
-- miało typ int | |
-- UWAGA: to nie jest jeszcze rozwiązanie; należy zmienić jej definicję. | |
typecheck :: [Var] -> Expr p -> TypeCheckResult p | |
typecheck _ _ = Ok | |
-- Funkcja obliczająca wyrażenia | |
-- Dla wywołania eval input e przyjmujemy, że dla każdej pary (x, v) | |
-- znajdującej się w input, wartość zmiennej x wynosi v. | |
-- Możemy założyć, że wyrażenie e jest dobrze typowane, tzn. | |
-- typecheck (map fst input) e = Ok | |
-- UWAGA: to nie jest jeszcze rozwiązanie; należy zmienić jej definicję. | |
eval :: [(Var,Integer)] -> Expr p -> EvalResult | |
eval _ _ = RuntimeError |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment