Εργαστήριο Τεχνολογίας Λογισμικού
0 votes
201 views

'Εχω υποβάλλει την 1η ασκηση σε sml nj v110.79 . Στο output ολων των testcases
μου βγάζει το εξής μήνυμα:

**Error: Compiler bug: Contract: UsageMap on 633
****** pass1 ********

Το έψαξα στο διαδίκτυο αλλά δεν κατάφερα να βρω κάτι. Ξέρετε μήπως τι σημαίνει;
Το πρόγραμμα τρέχει σωστά στον υπολογιστή μου.

in pl1 by (370 points)
edited by | 201 views

1 Answer

+2 votes
Best answer

Το σφάλμα αυτό δεν εμφανίζεται στην v110.79, όπως γράφεις, αλλά στην v110.98 (που τρέχει στον grader). Επιβεβαιώνω ότι το κάνει και σε SML/NJ v110.99. Το παρακάτω πρόγραμμα (μία πολύ shrinked έκδοση του δικού σου) σκάει με το ίδιο internal error:

fun g (l, a, b, x, y, d0, d1 : real, d2 : real, d3 : real) = (
  x - Real.fromInt(Array.sub(l, a));
  y - Real.fromInt(Array.sub(l, b))
)

Αν αλλάξεις οτιδήποτε στο παραπάνω πρόγραμμα, το bug δεν εμφανίζεται. Εκτός του να αγοράσεις λαχείο, προτείνω να προσπαθήσεις να αλλάξεις κάτι στις παραμέτρους σου (χρειάζεσαι πραγματικά τόσες πολλές;), να βάλεις κάποια type annotations, μήπως και δεν εμφανιστεί.

Έκανα αναφορά για το σφάλμα στην SML/NJ αλλά δε νομίζω ότι θα διορθωθεί πριν να είναι πολύ αργά για σένα.

by (9.5k points)
selected by
0

Δεν θέλω να κάνω τον δικηγόρο του διαβόλου... αλλά σε εμένα τρέχει χωρίς κάποιο πρόβλημα (σε SML/NJ v110.99 και - καλώς ή κακώς - Windows 10):

Εννοείτε κάτι διαφορετικό από αυτό που έκανα ή πάει κάτι άλλο λάθος;

(Link σε περίπτωση που δεν φαίνεται καλά η εικόνα εδώ)

0

ευχαριστω πολυ για την απαντηση. Το προβλημα λυθηκε με το που αφαιρεσα μια μεταβλητη απο τα arguments. Γενικα ομως για να ξερω , μπορειτε να εξηγησετε λιγο περισσοτερο τo αλλο που αναφερατε για τα type annotations πως θα βοηθουσε;

301 questions

289 answers

288 comments

909 users